Source code for pyrfu.pyrf.extend_tint

#!/usr/bin/env python
# -*- coding: utf-8 -*-

# 3rd party imports
import numpy as np

from .datetime642iso8601 import datetime642iso8601

# Local imports
from .iso86012datetime64 import iso86012datetime64

__author__ = "Louis Richard"
__email__ = "louisr@irfu.se"
__copyright__ = "Copyright 2020-2023"
__license__ = "MIT"
__version__ = "2.4.2"
__status__ = "Prototype"


[docs]def extend_tint(tint, ext: list = None): r"""Extends time interval. Parameters ---------- tint : list of str Reference time interval to extend. ext : list of float or list of float Number of seconds to extend time interval [left extend, right extend]. Returns ------- tint_new : list of str Extended time interval. Examples -------- >>> from pyrfu import pyrf Time interval >>> tints = ["2015-10-30T05:15:42.000", "2015-10-30T05:15:54.000"] Load spacecraft position >>> tints_long = pyrf.extend_tint(tint, [-100, 100]) """ # Set default extension if ext is None: ext = [-60.0, 60.0] # Make sure tint and ext are 2 elements array_like message = "must be array_like with 2 elements" assert isinstance(tint, (np.ndarray, list)) and len(tint) == 2, f"tint {message}" assert isinstance(ext, (np.ndarray, list)) and len(ext) == 2, f"ext {message}" # Convert extension to timedelta64[ns] ext = (np.array(ext) * 1e9).astype("timedelta64[ns]") # Original time interval to datetime64[ns] if isinstance(tint[0], np.datetime64): tint_ori = tint elif isinstance(tint[0], str): tint_ori = iso86012datetime64(np.array(tint)) else: raise TypeError("Invalid time format!! Must be datetime64 or str!!") # New time interval in iso 8601 format tint_new = list(datetime642iso8601(tint_ori + ext)) return tint_new