Source code for gravity_toolkit.time_series.fit

#!/usr/bin/env python
u"""
fit.py
Written by Tyler Sutterley (06/2023)
Utilities for fitting time-series data with regression models

PYTHON DEPENDENCIES:
    numpy: Scientific Computing Tools For Python (https://numpy.org)

UPDATE HISTORY:
    Updated 06/2023: made the tidal aliasing period an option
    Written 05/2023
"""
from __future__ import annotations
import numpy as np

# PURPOSE: build a list of tidal aliasing terms for regression fit
[docs] def aliasing_terms(t_in: np.ndarray, period=161.0): """ Create a list of custom design-matrix terms to account for tidal aliasing during the GRACE and GRACE-FO periods Parameters ---------- t_in: float input time array period: float tidal aliasing period for a constituent Returns ------- TERMS: list tidal aliasing terms for GRACE and GRACE-FO missions """ # create output list of fit terms TERMS = [] # number of time points nmax = len(t_in) # create custom terms for tidal aliasing during GRACE period ii, = np.nonzero(t_in[0:nmax] < 2018.0) SIN = np.zeros((nmax)) COS = np.zeros((nmax)) SIN[ii] = np.sin(np.pi*t_in[ii]*730.50/period) COS[ii] = np.cos(np.pi*t_in[ii]*730.50/period) TERMS.append(SIN) TERMS.append(COS) # create custom terms for tidal aliasing during GRACE-FO period ii, = np.nonzero(t_in[0:nmax] >= 2018.0) SIN = np.zeros((nmax)) COS = np.zeros((nmax)) SIN[ii] = np.sin(np.pi*t_in[ii]*730.50/period) COS[ii] = np.cos(np.pi*t_in[ii]*730.50/period) TERMS.append(SIN) TERMS.append(COS) # return the fit terms return TERMS