Skip to content

Instantly share code, notes, and snippets.

@pukpr
Created October 23, 2025 14:50
Show Gist options
  • Select an option

  • Save pukpr/7d256e5595ff435421431d48d1df8d19 to your computer and use it in GitHub Desktop.

Select an option

Save pukpr/7d256e5595ff435421431d48d1df8d19 to your computer and use it in GitHub Desktop.
Descent optimized LTE annual time-series, Python
#!/usr/bin/env python3
"""
timeseries_modeler.py
Read a two-column CSV (time, value). Read a JSON file with the same filename
appended by ".p" (e.g. data.csv.p) into a data dictionary. Create a clone of the
time-series and run a loop that steps through timestamps, calling a user-
customizable model-step function to produce a modeled series. At the end the
script computes Pearson's correlation coefficient and the variance of the
squared errors (and also MSE), using library routines.
Usage:
python timeseries_modeler.py data.csv [--out fitted.csv] [--plot]
python3 timeseries_modeler.py 11a.csv --plot
Notes:
- The CSV must have at least two columns (time, value). Header is tolerated.
- Model is:
- impulse every Imp_Stride rows
- C_t = Imp_Amp * impulse_mask * sum_k PeriodsAmp[k] * sin(2*pi*time/Period_k + PeriodsPhase_k)
- D_t = (1-Hold)*D_{t-1} + Hold*C_t
- E_t = LTE_Amp * sin(D_t*LTE_Freq + LTE_Phase)
Provide model parameters via --params as a JSON string (see defaults below).
- The implementation loops over timestamps (explicit for-loop) so the model can
be stateful (sample-and-hold needs previous D).
- Pearson correlation computed using scipy.stats.pearsonr if available,
otherwise a fallback via numpy.corrcoef is used.
- Outputs:
- CSV with columns: time, observed, model, residual
- JSON .p file updated with metadata (metrics, parameters used)
Dependencies:
numpy, pandas, scipy (optional but recommended for Pearson), matplotlib (optional for plotting)
"""
from __future__ import annotations
import argparse
import json
import math
import os
from typing import Any, Dict, List, Tuple, Callable, Optional
import copy
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from scipy.stats import pearsonr
import random
TWOPI = 2.0 * math.pi
use_pearson = False
def read_two_column_csv(path: str) -> Tuple[np.ndarray, np.ndarray]:
"""Read CSV-like file with two columns: time, value. Tolerant to header rows."""
df = pd.read_csv(path, sep=r'[,\s]+', engine='python', header=0)
if df.shape[1] < 2:
raise ValueError("Input CSV must have at least two columns (time, value).")
t = pd.to_numeric(df.iloc[:, 0], errors='coerce')
y = pd.to_numeric(df.iloc[:, 1], errors='coerce')
mask = (~t.isna()) & (~y.isna())
t = t[mask].to_numpy(dtype=float)
y = y[mask].to_numpy(dtype=float)
return t, y
def read_json_p(path: str) -> Dict[str, Any]:
"""Read JSON file at path (if exists), else return empty dict."""
if not os.path.exists(path):
return {}
with open(path, 'r', encoding='utf-8') as fh:
return json.load(fh)
def write_json_p(path: str, data: Dict[str, Any]) -> None:
"""Write JSON dict to file path."""
with open(path, 'w', encoding='utf-8') as fh:
json.dump(data, fh, indent=2, sort_keys=True)
def clone_series(series: np.ndarray) -> np.ndarray:
"""Return a deep copy (clone) of the series."""
return np.array(series, copy=True)
def normalize_rms_y(ts: np.ndarray) -> np.ndarray:
"""
Return a copy of ts where the y-values (column 1) are scaled so their RMS == 1.0.
No error checking (assumes ts is a 2D numpy array with at least 2 columns).
"""
y = ts.copy()
rms = np.sqrt(np.mean(y * y))
return y / rms
# ---- Model-step interface ---------------------------------------------------
# A model-step function implements:
# model_value, state = model_step(i, t_i, clone_i, state, params)
# Where:
# i: integer time index (0..N-1)
# t_i: timestamp value (float)
# clone_i: cloned original series value at index i (float)
# state: dict carrying model internal state (mutable or replaced)
# params: dict of user parameters
#
# The runner will set up initial state = {} and call model_step for each i.
# ---------------------------------------------------------------------------
def model_step_algorithm(i: int, t_i: float, clone_i: float, state: Dict[str, Any],
Initial: float,
Year: float,
Imp_Stride: int,
Imp_Amp: float,
Periods: list,
PeriodsAmp: list,
PeriodsPhase: list,
Aliased: list,
AliasedAmp: list,
AliasedPhase: list,
Hold: float,
LTE_Amp: float,
LTE_Freq: float,
LTE_Phase: float):
"""
Implements the algorithm-style model described:
- Impulse mask every Imp_Stride rows (row numbering starts at 1)
- C_t = (Imp_Amp if (row_idx % Imp_Stride == 1) else 0) * SUM_k PeriodsAmp[k]*sin(2*pi * t / Period_k + PeriodsPhase[k])
- D_t = (1-Hold)*D_{t-1} + Hold*C_t (initialize D_0 = Hold*C_0)
- E_t = LTE_Amp * sin(D_t * LTE_Freq + LTE_Phase)
Required params (defaults provided):
- Imp_Stride: int (default 1)
- Imp_Amp: float (default 1.0)
- Periods: list of floats (default [1.0])
- PeriodsAmp: list of floats (len match Periods, default [1.0])
- PeriodsPhase: list of floats (len match Periods, default [0.0])
- Hold: float in [0,1] (default 0.5)
- LTE_Amp: float (default 1.0)
- LTE_Freq: float (default 1.0)
- LTE_Phase: float (default 0.0)
"""
# compute sum of sinusoids
ssum = 0.0
for amp, per, ph in zip(PeriodsAmp, Periods, PeriodsPhase):
per = float(per)
if per == 0.0:
continue
ssum += float(amp) * math.sin(TWOPI * float(t_i) * Year / per + float(ph))
# row index as 1..N (i is 0..N-1)
row_idx = i + 2
impulse = 1.0 if (row_idx % 12 == Imp_Stride) else 0.0
C_t = impulse * Imp_Amp * ssum
# stateful D
if 'D_prev' not in state:
# initialize as Hold * C_0 (algorithm initialization)
state['D_prev'] = Initial
D_prev = float(state['D_prev'])
D_t = (1.0 - Hold) * D_prev + Hold * C_t
state['D_prev'] = D_t
# compute sum of aliases
ssum = 0.0
for amp, freq, ph in zip(AliasedAmp, Aliased, AliasedPhase):
freq = float(freq)
ssum += float(amp) * math.sin(TWOPI * float(t_i) * freq + float(ph))
E_t = LTE_Amp * math.sin(D_t * LTE_Freq + LTE_Phase) + ssum
return float(E_t), state
# Runner that loops through timestamps and produces modeled series ----------------
def run_loop_time_series(time: np.ndarray,
observed: np.ndarray,
model_step_fn: Callable,
params: Dict[str, Any]) -> Tuple[np.ndarray, Dict[str, Any]]:
"""
Loop over timestamps and compute model values using model_step_fn.
Returns (model_array, final_state).
"""
# Prepare and normalize parameters
DeltaTime = float(params.get('DeltaTime', 0.0))
Initial = float(params.get('Initial', 0.04294))
Year = float(params.get('Year', 365.242))
Imp_Stride = int(params.get('Imp_Stride', 12))
Imp_Amp = float(params.get('Imp_Amp', 1.0))
Periods = list(params.get('Periods', [1.0]))
PeriodsAmp = list(params.get('PeriodsAmp', [1.0] * len(Periods)))
PeriodsPhase = list(params.get('PeriodsPhase', [0.0] * len(Periods)))
Aliased = list(params.get('Aliased', [1.0]))
AliasedAmp = list(params.get('AliasedAmp', [1.0] * len(Aliased)))
AliasedPhase = list(params.get('AliasedPhase', [0.0] * len(Aliased)))
Hold = float(params.get('Hold', 0.5))
LTE_Amp = float(params.get('LTE_Amp', 1.0))
LTE_Freq = float(params.get('LTE_Freq', 1.0))
LTE_Phase = float(params.get('LTE_Phase', 0.0))
N = time.size
clone = clone_series(observed)
state: Dict[str, Any] = {}
model = np.zeros_like(observed, dtype=float)
for i in range(N):
t_i = float(time[i]+DeltaTime*1000.0)
clone_i = float(clone[i])
v, state = model_step_fn(i, t_i, clone_i, state, Initial, Year, Imp_Stride,Imp_Amp, Periods, PeriodsAmp, PeriodsPhase,
Aliased, AliasedAmp, AliasedPhase, Hold, LTE_Amp, LTE_Freq, LTE_Phase)
model[i] = float(v)
return model, state
# Metrics -----------------------------------------------------------------------
def compute_metrics(observed: np.ndarray, model: np.ndarray) -> Dict[str, Any]:
"""Compute Pearson correlation, residuals, MSE, and variance of squared errors."""
residuals = model - observed
mse = float(np.mean(residuals ** 2))
# variance of squared errors (i.e., variance of residuals**2)
var_sq_err = float(np.var(residuals ** 2))
# Pearson r (use scipy if available else numpy)
try:
r_val, p_val = pearsonr(observed, model) # type: ignore
pearson_r = float(r_val)
pearson_p = float(p_val)
except Exception:
pearson_r = float(np.nan)
pearson_p = float(np.nan)
return {
'residuals': residuals,
'mse': mse,
'var_squared_error': var_sq_err,
'pearson_r': pearson_r,
'pearson_p': pearson_p
}
def compute_metrics_scalar(observed: np.ndarray, model: np.ndarray) -> Float:
if False:
"""Compute CC"""
r_val, p_val = pearsonr(observed, model) # type: ignore
pearson_r = 1.0-float(r_val)
return pearson_r
else:
"""Compute MSE"""
residuals = model - observed
mse = float(np.mean(residuals ** 2))
return mse
def compute_metrics_region(time: np.ndarray,
observed: np.ndarray,
model: np.ndarray,
Time_Low: Optional[float] = None,
Time_High: Optional[float] = None) -> float:
"""
Compute a scalar metric between observed and model. By default computes MSE.
If Time_Low and Time_High are provided, values with Time_Low <= time <= Time_High
are excluded from the calculation (useful for cross-validation / holdout).
Minimal behavior, no heavy validation:
- If both Time_Low and Time_High are None the full series is used.
- If only one is provided it is treated as an open bound (i.e. exclude
times >= Time_Low if Time_High is None, or <= Time_High if Time_Low is None).
- If Time_Low > Time_High they are swapped.
- If all points are excluded, returns float('nan').
Parameters
- time: 1D array of time values (same length as observed/model)
- observed: observed values
- model: model values
- Time_Low: lower bound (inclusive) of the excluded middle region, or None
- Time_High: upper bound (inclusive) of the excluded middle region, or None
Returns
- scalar metric (MSE by default)
"""
# Build mask for points to INCLUDE in the metric (True => include)
if Time_Low is None and Time_High is None:
mask = np.ones_like(time, dtype=bool)
else:
# If one bound is missing, treat it as open-ended
if Time_Low is None:
# exclude times <= Time_High
mask = time > float(Time_High)
elif Time_High is None:
# exclude times >= Time_Low
mask = time < float(Time_Low)
else:
# ensure bounds are ordered
tl = float(Time_Low)
th = float(Time_High)
if tl > th:
tl, th = th, tl
# include times strictly outside [tl, th]
mask = (time < tl) | (time > th)
# Select data
t_sel = time[mask]
obs_sel = observed[mask]
mod_sel = model[mask]
# If nothing remains, return NaN
if obs_sel.size == 0:
return float('nan')
# ---- choose metric ----
# The original snippet had an unused pearson branch; keep MSE as default.
# If you want Pearson-based metric, set use_pearson = True.
global use_pearson
if use_pearson:
from scipy.stats import pearsonr # type: ignore
r_val, _ = pearsonr(obs_sel, mod_sel)
pearson_r = 1.0 - float(r_val)
return pearson_r
else:
residuals = mod_sel - obs_sel
mse = float(np.mean(residuals ** 2))
return mse
# Opt ---------------------------------------------------------------------------
Monitored = [
"Imp_Stride",
"DeltaTime",
"Initial",
"Year",
"Imp_Amp",
"PeriodsAmp",
"PeriodsPhase",
"AliasedAmp",
"AliasedPhase",
"Hold",
"LTE_Amp",
"LTE_Freq",
"LTE_Phase",
]
def _is_list_param(name: str) -> bool:
return name in {
"Periods",
"PeriodsAmp",
"PeriodsPhase",
"Aliased",
"AliasedAmp",
"AliasedPhase",
}
def simple_descent(
time,
observed,
model_step_fn: Callable,
params: Dict[str, Any],
metric_fn: Callable[[Any, Any, Any, float, float], float],
step: float = 0.01,
max_iters: int = 100,
tol: float = 1e-12,
verbose: bool = False,
Time_Low: Float = 1920.0,
Time_High: Float = 1950
) -> Dict[str, Any]:
"""
Simple descent optimizer.
Args:
- time, observed, model_step_fn: as in run_loop_time_series
- params: dict with the monitored parameters (scalars and lists of floats)
- metric_fn: function(observed, model_array) -> scalar (smaller is better)
- step: base step size used for +/- changes (applied to scalars and list elements)
- max_iters: max number of outer passes over all parameters
- tol: minimum improvement to consider (metric must decrease by > tol)
- verbose: print progress
Returns dict:
- best_params: dict of accepted parameter values
- best_metric: scalar
- best_model: model array for best params
- best_state: final state from run_loop_time_series for best params
- history: list of evaluated candidates: dicts with keys
('param', 'index' (or None), 'candidate', 'metric', 'accepted')
- iterations: number of outer iterations performed
"""
# start from given params (copy to avoid mutating caller's dict)
best_params = copy.deepcopy(params)
# ensure list parameters are plain python lists of floats (if present)
for name in Monitored:
if _is_list_param(name) and name in best_params:
best_params[name] = [float(x) for x in best_params[name]]
# evaluate initial
model_vals, final_state = run_loop_time_series(time, observed, model_step_fn, best_params)
best_metric = float(metric_fn(time, observed, model_vals, Time_Low, Time_High))
history: List[Dict[str, Any]] = []
if verbose:
print(f"[simple_descent] start metric={best_metric:.6g}")
switched_to_rel = False
for iteration in range(1, max_iters + 1):
any_accepted = False
mode = "rel" if switched_to_rel else "abs"
if verbose:
print(f"[simple_descent] iteration {iteration} mode={mode} best_metric={best_metric:.6g}")
# iterate over monitored params in fixed order
for name in Monitored:
if name == "Imp_Stride":
max_val = 12
trials_per_iter = 4
# sample without replacement when possible
population = list(range(0, max_val + 1))
k = min(trials_per_iter, len(population))
sampled = random.sample(population, k) if k > 0 else []
for cand in sampled:
# skip if same as current
if int(best_params.get(name, 0)) == cand:
continue
candidate_params = copy.deepcopy(best_params)
candidate_params[name] = int(cand)
mvals_cand, _ = run_loop_time_series(time, observed, model_step_fn, candidate_params)
metric_cand = float(metric_fn(time, observed, mvals_cand, Time_Low, Time_High))
accepted = metric_cand + tol < best_metric
history.append({
"param": name,
"index": None,
"candidate": cand,
"metric": metric_cand,
"accepted": accepted,
"method": "discrete_random",
})
if accepted:
best_params = candidate_params
best_metric = metric_cand
model_vals = mvals_cand
any_accepted = True
if verbose:
print(f"[stride] accepted {name} = {cand} -> metric {best_metric:.6g}")
# keep sampling further candidates this iteration (could accept more)
continue
if _is_list_param(name):
# skip if param not present or empty
lst = best_params.get(name)
if not lst:
continue
# iterate elements
for idx in range(len(lst)):
cur = float(lst[idx])
accepted_this_element = False
for sign in (1.0, -1.0):
candidate_params = copy.deepcopy(best_params)
# candidate_params[name][idx] = cur + delta*cur
if not switched_to_rel:
# absolute candidate
candidate = cur + sign * step
else:
# relative candidate (fallback to additive if cur==0)
if abs(cur) > 0.0:
candidate = cur * (1.0 + sign * step/5.0)
else:
candidate = cur + sign * step
candidate_params[name][idx] = candidate
model_vals_cand, _ = run_loop_time_series(time, observed, model_step_fn, candidate_params)
metric_cand = float(metric_fn(time, observed, model_vals_cand, Time_Low, Time_High))
accepted = metric_cand + tol < best_metric
history.append({
"param": name,
"index": idx,
"candidate": candidate_params[name][idx],
"metric": metric_cand,
"accepted": accepted,
})
if accepted:
# keep the candidate
best_params = candidate_params
best_metric = metric_cand
model_vals = model_vals_cand
any_accepted = True
accepted_this_element = True
if verbose:
print(f"[simple_descent] accepted {name}[{idx}] = {best_params[name][idx]:.6g} -> metric {best_metric:.6g}")
# continue trying further +/- steps from the new value:
cur = float(best_params[name][idx])
break # stop trying other sign at this pass; move to try again from updated cur
# end +/- loop for this element
# Optionally attempt additional immediate steps in same direction until no improvement:
# (Keep this simple implementation: we will revisit in next outer iteration)
pass
else:
# scalar parameter
if name not in best_params:
continue
cur = float(best_params[name])
accepted_this_param = False
for sign in (1.0, -1.0):
candidate_params = copy.deepcopy(best_params)
# candidate_params[name] = cur + delta*cur
if not switched_to_rel:
# absolute candidate
candidate = cur + sign * step
else:
# relative candidate (fallback to additive if cur==0)
if abs(cur) > 0.0:
candidate = cur * (1.0 + sign * step/5.0)
else:
candidate = cur + sign * step
candidate_params[name] = candidate
model_vals_cand, _ = run_loop_time_series(time, observed, model_step_fn, candidate_params)
metric_cand = float(metric_fn(time, observed, model_vals_cand, Time_Low, Time_High))
history.append({
"param": name,
"index": None,
"candidate": candidate_params[name],
"metric": metric_cand,
"accepted": metric_cand + tol < best_metric,
})
if metric_cand + tol < best_metric:
best_params = candidate_params
best_metric = metric_cand
model_vals = model_vals_cand
any_accepted = True
accepted_this_param = True
if verbose:
print(f"[simple_descent] accepted {name} = {best_params[name]:.6g} -> metric {best_metric:.6g}")
# move on from this parameter (we'll potentially refine in the next iteration)
break
# end +/- for scalar
# end loop over parameters
if not any_accepted:
if not switched_to_rel:
# switch strategies and continue searching with relative updates
switched_to_rel = True
if verbose:
print("[add_then_rel] no acceptance with absolute steps; switching to relative steps")
# do not stop yet; continue with next iteration in relative mode
continue
else:
if verbose:
print(f"[simple_descent] no acceptance in iteration {iteration}; stopping early")
return {
"best_params": best_params,
"best_metric": best_metric,
"best_model": model_vals,
"best_state": final_state,
"history": history,
"iterations": iteration,
}
# max iters reached
if verbose:
print(f"[simple_descent] reached max_iters={max_iters}, best_metric={best_metric:.6g}")
return {
"best_params": best_params,
"best_metric": best_metric,
"best_model": model_vals,
"best_state": final_state,
"history": history,
"iterations": max_iters,
}
# Utilities ---------------------------------------------------------------------
def parse_json_like_arg(s: str | None) -> Dict[str, Any]:
"""Parse a JSON-like string from CLI --params. Returns dict."""
if s is None:
return {}
try:
return json.loads(s)
except Exception as e:
raise argparse.ArgumentTypeError(f"Invalid JSON for --params: {e}")
def main():
ap = argparse.ArgumentParser(description="Time-series modeler with per-timestamp loop and metrics.")
ap.add_argument('csv', help='Input CSV file (two columns: time, value).')
ap.add_argument('--out', default='fitted_out.csv', help='Output CSV file with time, observed, model, residual.')
ap.add_argument('--plot', action='store_true', help='Show plot of observed vs model (requires matplotlib).')
ap.add_argument('--low', default=0.0)
ap.add_argument('--high', default=3000.0)
ap.add_argument('--cc', action='store_true')
args = ap.parse_args()
global use_pearson
if args.cc:
use_pearson = True
print("using CC")
else:
use_pearson = False
# Read CSV
time, y = read_two_column_csv(args.csv)
if time.size == 0:
raise SystemExit("No data read from CSV.")
y = normalize_rms_y(y)
# Read JSON file with same name appended by ".p"
json_path = args.csv + '.p'
data_dict = read_json_p(json_path)
params = data_dict
model_fn = model_step_algorithm
Low = float(args.low)
High = float(args.high)
# Make a clone of the series (not strictly necessary but requested)
cloned = clone_series(y)
result = simple_descent(
time, y, model_fn, params,
metric_fn=compute_metrics_region,
step=0.05, max_iters=400, tol=1e-12, verbose=True, Time_Low=Low, Time_High=High
)
params = result["best_params"]
# Run the time-stepping loop (explicit loop per timestamp)
model_vals, final_state = run_loop_time_series(time, cloned, model_fn, params)
# Compute metrics
metrics = compute_metrics(y, model_vals)
# Prepare output DataFrame
out_df = pd.DataFrame({
'time': time,
'observed': y,
'model': model_vals,
'residual': metrics['residuals']
})
out_df.to_csv(args.out, index=False)
# Update data dictionary with metadata and save to .p file
data_dict_out = dict(params) # copy new
write_json_p(json_path, data_dict_out)
# Print summary
print(f"Processed {time.size} samples from: {args.csv}")
print(f"Output CSV: {args.out}")
print(f"Updated JSON data file: {json_path}")
print("Metrics:")
print(f" MSE = {metrics['mse']:.6e}")
print(f" Variance of squared errors = {metrics['var_squared_error']:.6e}")
print(f" Pearson r = {metrics['pearson_r']}, p-value = {metrics.get('pearson_p', None)}")
# Optional plotting
if args.plot:
mask = (time > Low) & (time < High)
plt.figure(figsize=(12, 6))
plt.plot(time, y, label='observed', lw=1)
plt.plot(time, model_vals, label='model', lw=1, color='red')
# plt.plot(time, metrics['residuals'], label='residual', lw=0.8, alpha=0.7)
plt.plot(time[mask], [0.0] * len(time[mask]), 'k--', label='cross-validation', linewidth=3)
plt.legend()
plt.xlabel('time')
plt.ylabel('value')
plt.title(f"Model: {args.csv} Pearson r={metrics['pearson_r']:.4g} MSE={metrics['mse']:.4g}")
# plt.grid(True)
plt.show()
if __name__ == '__main__':
main()
@pukpr
Copy link
Copy Markdown
Author

pukpr commented Oct 23, 2025

python3 ts_lte.py 65d.dat --plot --low 1930.0 --high 1960.0

{
"Aliased": [
0.422362756,
0.368617497,
0.255621397,
0.209019747,
0.322015847,
0.155274488,
0.262765007,
0.375761106,
0.05374526,
0.225992198,
0.172246939,
0.488757205,
0.112996099,
0.00714361,
0.10034691,
0.04660165,
0.481613596,
2.0,
1.0
],
"AliasedAmp": [
-0.17393725407674607,
0.12642715690383188,
0.1949827569849214,
0.2304294488746547,
-0.13321156438777482,
-0.07996225109392693,
-0.1517342694440159,
0.0910288389145477,
-0.4402154943805398,
0.15091585811246291,
-0.34856637009197583,
0.07274689811674001,
-0.15056992224712717,
-0.45278751555897145,
-0.3183612989827549,
0.4936801030925848,
0.021771689307045223,
-0.058102856799769544,
0.1042631465960338
],
"AliasedPhase": [
12.391492162500006,
10.655151982086986,
18.228715276073125,
7.610668851263877,
25.56666094689996,
16.468658023550468,
11.529194128263095,
15.049590385400032,
11.334959127133228,
9.023701961198283,
4.136442641443885,
20.04530389223759,
2.9257886062632004,
24.36894136450105,
6.301513321802799,
6.278230183427883,
10.031371976179079,
5.766353584000019,
2.476791589209313
],
"DeltaTime": 0.0,
"Hold": 0.001538141,
"Imp_Amp": 40.81771511999958,
"Imp_Stride": 10,
"Initial": 0.019500295726409787,
"LTE_Amp": 1.1925854500508217,
"LTE_Freq": 182.4319915000037,
"LTE_Phase": -0.40033153514144176,
"Periods": [
27.2122,
27.3216,
27.5545,
13.63339513,
13.69114014,
13.6061,
13.6608,
13.71877789,
6795.985773,
1616.215172,
2120.513853,
13.77725,
3232.430344,
9.132931547,
9.108450374,
9.120674533,
27.0926041
],
"PeriodsAmp": [
0.4314793373182475,
0.11036529575333755,
0.13870937877606934,
0.04172397047822836,
-0.2561268459330383,
0.11854454052354857,
0.13918935633404814,
0.02449309218634555,
0.04419078658890769,
0.14343856818928372,
0.16221236871908584,
-0.028372816391217637,
0.020164630254031254,
0.005409833883469155,
0.04763238354186368,
0.008352446230524946,
-0.14450012760004027
],
"PeriodsPhase": [
13.949781480000004,
6.4056158947520085,
18.729732370000026,
6.371274393267004,
20.998850680000004,
9.342972953999995,
6.551334822999998,
12.170340860469018,
9.117522079999999,
7.57083659,
6.258543069000001,
14.7935300849,
6.5502293745233295,
6.682567708000001,
0.9898748829695369,
4.927774305305427,
8.045674634
],
"Year": 365.2520198,
"final_state": {
"D_prev": 0.04294
}
}
65d-1930-1960

@pukpr
Copy link
Copy Markdown
Author

pukpr commented Oct 24, 2025

python\simple>python3 ts_lte.py 23d.dat --random --plot --low 1930 --high 1960
{
"Aliased": [
0.422362756,
0.368617497,
0.255621397,
0.209019747,
0.322015847,
0.155274488,
0.262765007,
0.375761106,
0.05374526,
0.225992198,
0.172246939,
0.488757205,
0.112996099,
0.00714361,
0.10034691,
0.04660165,
0.481613596,
2.0,
1.0
],
"AliasedAmp": [
0.12044129777286709,
-0.16450190629923359,
-0.077744867019627,
0.07465592036759264,
0.07706543882168904,
0.27442460869630214,
-0.138785865501292,
-0.14861470090140108,
-0.6070987238509902,
0.03911582193526672,
0.26072611271476365,
0.07949638800187915,
-0.26873251417175703,
-0.20066380157077637,
0.1695289507870913,
-0.15096631068987162,
0.11519549225454642,
-0.03893366081491435,
-0.1893326201487238
],
"AliasedPhase": [
13.983194323390721,
7.897355299084135,
15.568460627847724,
7.689820689156411,
23.70503421494507,
15.16978375934852,
10.355495992642327,
14.076508652852471,
11.06953903047771,
8.883760668892089,
3.2982041423623594,
18.662349293772262,
5.496146195049765,
24.97475574730905,
7.459801459468469,
6.055799294002658,
9.820230492013547,
3.6987402252300026,
1.9004445300818338
],
"DeltaTime": 0.0061096026238041425,
"Hold": 0.001538141,
"Imp_Amp": 43.30654964019078,
"Imp_Stride": 1,
"Initial": 0.02077209530675353,
"LTE_Amp": 1.006000442508684,
"LTE_Freq": 172.49624473292323,
"LTE_Phase": -3.004881066999834,
"Periods": [
27.2122,
27.3216,
27.5545,
13.63339513,
13.69114014,
13.6061,
13.6608,
13.71877789,
6795.985773,
1616.215172,
2120.513853,
13.77725,
3232.430344,
9.132931547,
9.108450374,
9.120674533,
27.0926041
],
"PeriodsAmp": [
0.15920767046989537,
0.11743123657345589,
0.07641424722220616,
0.07658317056963342,
-0.1853450948991782,
0.04390042593060531,
0.27824615262761343,
0.24770054509432257,
0.055356391746208274,
0.17889375888770578,
0.18651279729283457,
0.19878377934710204,
0.020191443932441044,
0.004767891588093174,
0.01654267685886226,
0.014764404918355843,
-0.1813805210524289
],
"PeriodsPhase": [
13.931425713566185,
8.170785020328164,
17.750395273335613,
7.40559534899272,
21.39269412942992,
12.65482194449827,
6.077863003024489,
9.696758612962372,
9.703058792035383,
6.616491105232,
6.78625108857208,
15.387264339942579,
6.099438495561559,
6.598446278312208,
-0.5471260966923112,
6.586211406172566,
8.300380962690795
],
"Year": 365.2520198,
"final_state": {
"D_prev": 0.04294
}
}

23d-1930-1960

@pukpr
Copy link
Copy Markdown
Author

pukpr commented Oct 24, 2025

Juneau

{
"Aliased": [
0.422362756,
0.368617497,
0.255621397,
0.209019747,
0.322015847,
0.155274488,
0.262765007,
0.375761106,
0.05374526,
0.225992198,
0.172246939,
0.488757205,
0.112996099,
0.00714361,
0.10034691,
0.04660165,
0.481613596,
2.0,
1.0
],
"AliasedAmp": [
0.042059442745152616,
-0.24691307177018465,
0.07947509711748779,
-0.6348492829534632,
-0.15076339091624608,
0.09033165959163378,
0.37175463174672313,
-0.35061617969277786,
-0.09740872638775039,
-0.2208239485899214,
0.4832274743372257,
-0.2998328385968226,
0.3092508674344725,
0.1968830942981964,
0.15262013369259936,
-0.45149108113055963,
-0.2012617528419868,
-0.03219943926664508,
-0.16461200622310285
],
"AliasedPhase": [
10.2471981700097,
10.799847815636888,
16.928274144982577,
8.390510303135072,
22.327068887580726,
13.47055734980354,
12.068425256755614,
12.54419926333548,
8.524382715468704,
8.209117731797848,
6.138501275432774,
20.736518177118747,
5.559144221743718,
23.290350284460892,
5.9080957115339645,
7.085767864090853,
11.402365714741956,
5.783805431730455,
2.2139707843219427
],
"DeltaTime": 0.0,
"Hold": 0.001538141,
"Imp_Amp": 37.641666669777905,
"Imp_Stride": 11,
"Initial": -0.04807207530428182,
"LTE_Amp": 1.1685043873747478,
"LTE_Freq": 184.14084271354653,
"LTE_Phase": -2.2862687654124105,
"Periods": [
27.2122,
27.3216,
27.5545,
13.63339513,
13.69114014,
13.6061,
13.6608,
13.71877789,
6795.985773,
1616.215172,
2120.513853,
13.77725,
3232.430344,
9.132931547,
9.108450374,
9.120674533,
27.0926041
],
"PeriodsAmp": [
0.3482019840434817,
0.03951502378522902,
0.05924893437649338,
0.0312014001110126,
-0.2344522678024117,
0.09247236298586356,
0.17608636515369464,
0.07504879916901912,
0.04632102432338462,
0.21134215374908247,
0.11939787427450892,
0.05185126942791637,
0.030172459140980608,
0.005465571729861118,
0.03944621600195322,
0.01162299853194167,
-0.05105651337033799
],
"PeriodsPhase": [
13.709120663697048,
6.919005029103506,
18.28640153669948,
6.8567069661606865,
21.4417022584624,
9.085970234238099,
5.978857976950828,
8.942668567869873,
9.340253071552285,
7.488600849903711,
6.365649741669403,
15.637830026273457,
6.4708218347671504,
8.39420684167697,
1.0516727824414904,
7.01719801526104,
7.6323704176200975
],
"Year": 365.2520198,
"final_state": {
"D_prev": 0.04294
}
}

python3 ts_lte.py 47d.dat --random --plot --low 1930 --high 1960

405d-1930-1960

@pukpr
Copy link
Copy Markdown
Author

pukpr commented Oct 26, 2025

Brest FRA

{
"Aliased": [
0.422362756,
0.368617497,
0.255621397,
0.209019747,
0.322015847,
0.155274488,
0.262765007,
0.375761106,
0.05374526,
0.225992198,
0.172246939,
0.488757205,
0.112996099,
0.00714361,
0.10034691,
0.04660165,
0.481613596,
2.0,
1.0
],
"AliasedAmp": [
0.08128291936662362,
0.11865831740952403,
0.16087826594104793,
0.08865147089229601,
0.06716670768220963,
0.053632137921369685,
-0.13326968748430956,
0.1388627961063085,
0.2573061975923226,
-0.05613998065382784,
0.0543775568003435,
-0.06820631139060604,
0.08408551063883363,
-0.11673995976894966,
-0.07553207047692995,
-0.14923775067013037,
-0.09476115345319061,
-0.04298586507349095,
-0.11424798658018757
],
"AliasedPhase": [
11.831192940727908,
8.752280591271823,
16.2628591441797,
8.349220017251715,
26.097607358917777,
15.54583898894695,
12.909047321450428,
14.751702159496368,
8.755293782239736,
8.323647746733077,
2.3683757907205374,
20.45235513231071,
4.435362771019799,
25.78885622687048,
7.153695764468234,
7.535715091861147,
12.194351838516123,
6.553360800586035,
2.308456976737037
],
"DeltaTime": 0.0,
"Hold": 0.001538141,
"Imp_Amp": 42.02447979968539,
"Imp_Stride": 1,
"Initial": 0.013706573234113669,
"LTE_Amp": 0.9043811505534546,
"LTE_Freq": 171.76990885085027,
"LTE_Phase": -0.8605834749684317,
"Periods": [
27.2122,
27.3216,
27.5545,
13.63339513,
13.69114014,
13.6061,
13.6608,
13.71877789,
6795.985773,
1616.215172,
2120.513853,
13.77725,
3232.430344,
9.132931547,
9.108450374,
9.120674533,
27.0926041
],
"PeriodsAmp": [
0.49177973865112906,
0.1346426101515645,
0.13279589242214795,
0.0913062862970234,
-0.17830234070404952,
0.1054031206647529,
0.12535745714286178,
0.1543422628745584,
-0.008690447702050274,
0.1461663546352262,
0.12550417273283324,
0.07003049439320502,
0.07331241628527117,
0.005284197930105334,
0.03739973708729294,
0.006333208672708126,
-0.17991844778458102
],
"PeriodsPhase": [
13.759711647870077,
7.739445832192203,
18.355389212707195,
7.409296801084049,
21.498865347796546,
9.569271934590832,
6.296336792184911,
10.175390407533516,
8.71912886369537,
6.655971773287914,
6.956570902679705,
16.491183591318194,
4.846501410736005,
6.160578896436495,
1.5767055612926841,
4.9144814686871054,
8.108945082562009
],
"Year": 365.2520198,
"final_state": {
"D_prev": 0.04294
}
}

1d-1930-1960

@pukpr
Copy link
Copy Markdown
Author

pukpr commented Nov 5, 2025

Brest FRA

{
"Aliased": [
0.422362756,
0.368617497,
0.255621397,
0.209019747,
0.322015847,
0.155274488,
0.262765007,
0.375761106,
0.05374526,
0.225992198,
0.172246939,
0.488757205,
0.112996099,
0.00714361,
0.10034691,
0.04660165,
0.481613596,
2.0,
1.0
],
"AliasedAmp": [
0.08128291936662362,
0.11865831740952403,
0.16087826594104793,
0.08865147089229601,
0.06716670768220963,
0.053632137921369685,
-0.13326968748430956,
0.1388627961063085,
0.2573061975923226,
-0.05613998065382784,
0.0543775568003435,
-0.06820631139060604,
0.08408551063883363,
-0.11673995976894966,
-0.07553207047692995,
-0.14923775067013037,
-0.09476115345319061,
-0.04298586507349095,
-0.11424798658018757
],
"AliasedPhase": [
11.831192940727908,
8.752280591271823,
16.2628591441797,
8.349220017251715,
26.097607358917777,
15.54583898894695,
12.909047321450428,
14.751702159496368,
8.755293782239736,
8.323647746733077,
2.3683757907205374,
20.45235513231071,
4.435362771019799,
25.78885622687048,
7.153695764468234,
7.535715091861147,
12.194351838516123,
6.553360800586035,
2.308456976737037
],
"DeltaTime": 0.0,
"Hold": 0.001538141,
"Imp_Amp": 42.02447979968539,
"Imp_Stride": 1,
"Initial": 0.013706573234113669,
"LTE_Amp": 0.9043811505534546,
"LTE_Freq": 171.76990885085027,
"LTE_Phase": -0.8605834749684317,
"Periods": [
27.2122,
27.3216,
27.5545,
13.63339513,
13.69114014,
13.6061,
13.6608,
13.71877789,
6795.985773,
1616.215172,
2120.513853,
13.77725,
3232.430344,
9.132931547,
9.108450374,
9.120674533,
27.0926041
],
"PeriodsAmp": [
0.49177973865112906,
0.1346426101515645,
0.13279589242214795,
0.0913062862970234,
-0.17830234070404952,
0.1054031206647529,
0.12535745714286178,
0.1543422628745584,
-0.008690447702050274,
0.1461663546352262,
0.12550417273283324,
0.07003049439320502,
0.07331241628527117,
0.005284197930105334,
0.03739973708729294,
0.006333208672708126,
-0.17991844778458102
],
"PeriodsPhase": [
13.759711647870077,
7.739445832192203,
18.355389212707195,
7.409296801084049,
21.498865347796546,
9.569271934590832,
6.296336792184911,
10.175390407533516,
8.71912886369537,
6.655971773287914,
6.956570902679705,
16.491183591318194,
4.846501410736005,
6.160578896436495,
1.5767055612926841,
4.9144814686871054,
8.108945082562009
],
"Year": 365.2520198,
"final_state": {
"D_prev": 0.04294
}
}

1d-1930-1960

@pukpr
Copy link
Copy Markdown
Author

pukpr commented Nov 5, 2025

#!/usr/bin/env python3
"""
timeseries_modeler.py

Read a two-column CSV (time, value). Read a JSON file with the same filename
appended by ".p" (e.g. data.csv.p) into a data dictionary. Create a clone of the
time-series and run a loop that steps through timestamps, calling a user-
customizable model-step function to produce a modeled series. At the end the
script computes Pearson's correlation coefficient and the variance of the
squared errors (and also MSE), using library routines.

Usage:
python timeseries_modeler.py data.csv [--out fitted.csv] [--plot]
python3 timeseries_modeler.py 11a.csv --plot

Notes:

  • The CSV must have at least two columns (time, value). Header is tolerated.
  • Model is:
    • impulse every Imp_Stride rows
    • C_t = Imp_Amp * impulse_mask * sum_k PeriodsAmp[k] * sin(2pitime/Period_k + PeriodsPhase_k)
    • D_t = (1-Hold)D_{t-1} + HoldC_t
    • E_t = LTE_Amp * sin(D_t*LTE_Freq + LTE_Phase)
      Provide model parameters via --params as a JSON string (see defaults below).
  • The implementation loops over timestamps (explicit for-loop) so the model can
    be stateful (sample-and-hold needs previous D).
  • Pearson correlation computed using scipy.stats.pearsonr if available,
    otherwise a fallback via numpy.corrcoef is used.
  • Outputs:
    • CSV with columns: time, observed, model, residual
    • JSON .p file updated with metadata (metrics, parameters used)

Dependencies:
numpy, pandas, scipy (optional but recommended for Pearson), matplotlib (optional for plotting)
"""

from future import annotations
import argparse
import json
import math
import os
from typing import Any, Dict, List, Tuple, Callable, Optional
import copy

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from scipy.stats import pearsonr
import random

TWOPI = 2.0 * math.pi
use_pearson = False
use_random = False
time_series_name = "none"

def read_two_column_csv(path: str) -> Tuple[np.ndarray, np.ndarray]:
"""Read CSV-like file with two columns: time, value. Tolerant to header rows."""
df = pd.read_csv(path, sep=r'[,\s]+', engine='python', header=0)
if df.shape[1] < 2:
raise ValueError("Input CSV must have at least two columns (time, value).")
t = pd.to_numeric(df.iloc[:, 0], errors='coerce')
y = pd.to_numeric(df.iloc[:, 1], errors='coerce')
mask = (~t.isna()) & (~y.isna())
t = t[mask].to_numpy(dtype=float)
y = y[mask].to_numpy(dtype=float)
return t, y

def read_json_p(path: str) -> Dict[str, Any]:
"""Read JSON file at path (if exists), else return empty dict."""
if not os.path.exists(path):
return {}
with open(path, 'r', encoding='utf-8') as fh:
return json.load(fh)

def write_json_p(path: str, data: Dict[str, Any]) -> None:
"""Write JSON dict to file path."""
with open(path, 'w', encoding='utf-8') as fh:
json.dump(data, fh, indent=2, sort_keys=True)

def clone_series(series: np.ndarray) -> np.ndarray:
"""Return a deep copy (clone) of the series."""
return np.array(series, copy=True)

def normalize_rms_y(ts: np.ndarray) -> np.ndarray:
"""
Return a copy of ts where the y-values (column 1) are scaled so their RMS == 1.0.
No error checking (assumes ts is a 2D numpy array with at least 2 columns).
"""
y = ts.copy()
rms = np.sqrt(np.mean(y * y))
return y / rms

---- Model-step interface ---------------------------------------------------

A model-step function implements:

model_value, state = model_step(i, t_i, clone_i, state, params)

Where:

i: integer time index (0..N-1)

t_i: timestamp value (float)

clone_i: cloned original series value at index i (float)

state: dict carrying model internal state (mutable or replaced)

params: dict of user parameters

The runner will set up initial state = {} and call model_step for each i.

---------------------------------------------------------------------------

def model_step_algorithm(i: int, t_i: float, clone_i: float, state: Dict[str, Any],
Initial: float,
Year: float,
Imp_Stride: int,
Imp_Amp: float,
Periods: list,
PeriodsAmp: list,
PeriodsPhase: list,
Aliased: list,
AliasedAmp: list,
AliasedPhase: list,
Hold: float,
LTE_Amp: float,
LTE_Freq: float,
LTE_Phase: float,
LTE_Zero: float,
Delta_Y: float,
Imp_Amp2: float,
DC: float,
Damp: Float,
LTE_Amp2: float,
LTE_Freq2: float,
LTE_Phase2: float):
"""
Implements the algorithm-style model described:
- Impulse mask every Imp_Stride rows (row numbering starts at 1)
- C_t = (Imp_Amp if (row_idx % Imp_Stride == 1) else 0) * SUM_k PeriodsAmp[k]sin(2pi * t / Period_k + PeriodsPhase[k])
- D_t = (1-Hold)D_{t-1} + HoldC_t (initialize D_0 = Hold*C_0)
- E_t = LTE_Amp * sin(D_t * LTE_Freq + LTE_Phase)

Required params (defaults provided):
  - Imp_Stride: int (default 1)
  - Imp_Amp: float (default 1.0)
  - Periods: list of floats (default [1.0])
  - PeriodsAmp: list of floats (len match Periods, default [1.0])
  - PeriodsPhase: list of floats (len match Periods, default [0.0])
  - Hold: float in [0,1] (default 0.5)
  - LTE_Amp: float (default 1.0)
  - LTE_Freq: float (default 1.0)
  - LTE_Phase: float (default 0.0)
"""

# compute sum of sinusoids
ssum = 0.0
for amp, per, ph in zip(PeriodsAmp, Periods, PeriodsPhase):
    per = float(per)
    if per == 0.0:
        continue
    ssum += float(amp) * math.sin(TWOPI * float(t_i) * (Year+Delta_Y) / per + float(ph))

if os.getenv('FORCING', '') == '1':
   state['D_prev'] = 0.0
   ssum = LTE_Amp * math.sin(ssum * LTE_Freq + LTE_Phase) + LTE_Zero*ssum + DC
   return ssum, state

# row index as 1..N (i is 0..N-1)
row_idx = i + 2
impulse = 1.0 if (row_idx % 12 == Imp_Stride) else 0.0
impulse2 = 1.0 if (row_idx % 12 + 6 == Imp_Stride) else 0.0
C_t = (impulse * Imp_Amp + impulse2 * Imp_Amp2) * ssum * math.exp(-Damp * abs(ssum))

# stateful D
if 'D_prev' not in state:
    # initialize as Hold * C_0 (algorithm initialization)
    state['D_prev'] = Initial

D_prev = float(state['D_prev'])
D_t = (1.0 - Hold) * D_prev + Hold * C_t
state['D_prev'] = D_t

# compute sum of aliases
ssum = 0.0
for amp, freq, ph in zip(AliasedAmp, Aliased, AliasedPhase):
    freq = float(freq)
    ssum += float(amp) * math.sin(TWOPI * float(t_i) * freq + float(ph))

if os.getenv('EXTRA', '') == '1':
    Mult = int(1.0/(0.01+LTE_Freq2))
    HiFreq = LTE_Amp2 * math.sin(D_t * LTE_Freq * Mult + LTE_Phase2)
else:
    HiFreq = 0.0

E_t = LTE_Amp * math.sin(D_t * LTE_Freq + LTE_Phase) + HiFreq + LTE_Zero*D_t + DC + ssum

return float(E_t), state

Runner that loops through timestamps and produces modeled series ----------------

def run_loop_time_series(time: np.ndarray,
observed: np.ndarray,
model_step_fn: Callable,
params: Dict[str, Any]) -> Tuple[np.ndarray, Dict[str, Any]]:
"""
Loop over timestamps and compute model values using model_step_fn.

Returns (model_array, final_state).
"""
# Prepare and normalize parameters
DeltaTime = float(params.get('DeltaTime', 0.0))
Initial = float(params.get('Initial', 0.04294))
Year = float(params.get('Year', 365.242))
Imp_Stride = int(params.get('Imp_Stride', 12))
Imp_Amp = float(params.get('Imp_Amp', 1.0))
Periods = list(params.get('Periods', [1.0]))
PeriodsAmp = list(params.get('PeriodsAmp', [1.0] * len(Periods)))
PeriodsPhase = list(params.get('PeriodsPhase', [0.0] * len(Periods)))
Aliased = list(params.get('Aliased', [1.0]))
AliasedAmp = list(params.get('AliasedAmp', [1.0] * len(Aliased)))
AliasedPhase = list(params.get('AliasedPhase', [0.0] * len(Aliased)))
Hold = float(params.get('Hold', 0.5))
LTE_Amp = float(params.get('LTE_Amp', 1.0))
LTE_Freq = float(params.get('LTE_Freq', 1.0))
LTE_Phase = float(params.get('LTE_Phase', 0.0))
LTE_Zero = float(params.get('LTE_Zero', 0.0))
Delta_Y = float(params.get('Delta_Y', 0.0))
Imp_Amp2 = float(params.get('Imp_Amp2', 0.0))
DC = float(params.get('DC', 0.0))
Damp = float(params.get('Damp', 0.0))
LTE_Amp2 = float(params.get('LTE_Amp2', 0.01))
LTE_Freq2 = float(params.get('LTE_Freq2', 0.0))
LTE_Phase2 = float(params.get('LTE_Phase2', 6.28))

N = time.size
clone = clone_series(observed)
state: Dict[str, Any] = {}
model = np.zeros_like(observed, dtype=float)
First_Time = True
Last_Time = 0.0
for i in range(N):
    t_i = float(time[i]+DeltaTime)
    clone_i = float(clone[i])
    # should be 1/12 but may be missing values
    N_Steps = int(round((t_i - Last_Time) * 12))
    N_Steps = 1 if First_Time else N_Steps
    First_Time = False
    j = 1
    while j <= N_Steps:  
        time_i = float(t_i - (N_Steps-j)/12.0)
        v, state = model_step_fn(i, time_i, clone_i, state, Initial, Year, Imp_Stride,Imp_Amp, Periods, PeriodsAmp, PeriodsPhase, 
                                 Aliased, AliasedAmp, AliasedPhase, Hold, LTE_Amp, LTE_Freq, LTE_Phase, LTE_Zero, Delta_Y,  Imp_Amp2, DC, Damp,
                                 LTE_Amp2, LTE_Freq2, LTE_Phase2)
        j = j + 1

    model[i] = float(v)
    Last_Time =  t_i
return model, state

Metrics -----------------------------------------------------------------------

def compute_metrics(time: np.ndarray, observed: np.ndarray, model: np.ndarray, low: float, high:float) -> Dict[str, Any]:
"""Compute Pearson correlation, residuals, MSE, and variance of squared errors."""
residuals = model - observed
mse = float(np.mean(residuals ** 2))
# variance of squared errors (i.e., variance of residuals**2)
var_sq_err = float(np.var(residuals ** 2))
# Pearson r (use scipy if available else numpy)

CV = 1.0 - compute_metrics_region(time, observed, model, low, high, False)

try:
    r_val, p_val = pearsonr(observed, model)  # type: ignore
    pearson_r = float(r_val)
    pearson_p = float(p_val)
except Exception:
    pearson_r = float(np.nan)
    pearson_p = float(np.nan)
return {
    'residuals': residuals,
    'mse': mse,
    'var_squared_error': var_sq_err,
    'pearson_r': pearson_r,
    'pearson_p': pearson_p,
    'CV': CV
}

def compute_metrics_scalar(observed: np.ndarray, model: np.ndarray) -> Float:
if False:
"""Compute CC"""
r_val, p_val = pearsonr(observed, model) # type: ignore
pearson_r = 1.0-float(r_val)
return pearson_r
else:
"""Compute MSE"""
residuals = model - observed
mse = float(np.mean(residuals ** 2))
return mse

def compute_metrics_region(time: np.ndarray,
observed: np.ndarray,
model: np.ndarray,
Time_Low: Optional[float] = None,
Time_High: Optional[float] = None,
Exclude: Optional[bool] = True) -> float:
"""
Compute a scalar metric between observed and model. By default computes MSE.
If Time_Low and Time_High are provided, values with Time_Low <= time <= Time_High
are excluded from the calculation (useful for cross-validation / holdout).

Minimal behavior, no heavy validation:
  - If both Time_Low and Time_High are None the full series is used.
  - If only one is provided it is treated as an open bound (i.e. exclude
    times >= Time_Low if Time_High is None, or <= Time_High if Time_Low is None).
  - If Time_Low > Time_High they are swapped.
  - If all points are excluded, returns float('nan').

Parameters
- time: 1D array of time values (same length as observed/model)
- observed: observed values
- model: model values
- Time_Low: lower bound (inclusive) of the excluded middle region, or None
- Time_High: upper bound (inclusive) of the excluded middle region, or None

Returns
- scalar metric (MSE by default)
"""
# Build mask for points to INCLUDE in the metric (True => include)
if Time_Low is None and Time_High is None:
    mask = np.ones_like(time, dtype=bool)
else:
    # If one bound is missing, treat it as open-ended
    if Time_Low is None:
        # exclude times <= Time_High
        mask = time > float(Time_High)
    elif Time_High is None:
        # exclude times >= Time_Low
        mask = time < float(Time_Low)
    else:
        # ensure bounds are ordered
        tl = float(Time_Low)
        th = float(Time_High)
        if tl > th:
            tl, th = th, tl
        # include times strictly outside [tl, th]
        if Exclude:
            mask = (time < tl) | (time > th)
        else:
            mask = (time > tl) & (time < th)

# Select data
t_sel = time[mask]
obs_sel = observed[mask]
mod_sel = model[mask]

# If nothing remains, return NaN
if obs_sel.size == 0:
    return float('nan')

# ---- choose metric ----
# The original snippet had an unused pearson branch; keep MSE as default.
# If you want Pearson-based metric, set use_pearson = True.
global use_pearson
if use_pearson:
    from scipy.stats import pearsonr  # type: ignore
    r_val, _ = pearsonr(obs_sel, mod_sel)
    pearson_r = 1.0 - float(r_val)
    return pearson_r
else:
    residuals = mod_sel - obs_sel
    mse = float(np.mean(residuals ** 2))
    return mse

Opt ---------------------------------------------------------------------------

Monitored = [
"Imp_Stride",
"DeltaTime",
"Initial",
"Year",
"Imp_Amp",
"Imp_Amp2",
"PeriodsAmp",
"PeriodsPhase",
"AliasedAmp",
"AliasedPhase",
"Hold",
"LTE_Amp",
"LTE_Freq",
"LTE_Phase",
"LTE_Zero",
"Delta_Y",
"DC",
"Damp",
"LTE_Amp2",
"LTE_Freq2",
"LTE_Phase2"
]

Monitored_Slide = [
"Imp_Stride",
"DeltaTime",
"Initial",
"PeriodsPhase",
"AliasedPhase",
"DC"
]

Monitored_Initial = [
"Imp_Stride",
"DeltaTime",
"Initial"
]

def _is_list_param(name: str) -> bool:
return name in {
"Periods",
"PeriodsAmp",
"PeriodsPhase",
"Aliased",
"AliasedAmp",
"AliasedPhase"
}

def simple_descent(
time,
observed,
model_step_fn: Callable,
params: Dict[str, Any],
metric_fn: Callable[[Any, Any, Any, float, float], float],
step: float = 0.01,
max_iters: int = 100,
tol: float = 1e-12,
verbose: bool = False,
Time_Low: Float = 1920.0,
Time_High: Float = 1950
) -> Dict[str, Any]:
"""
Simple descent optimizer.

Args:
  - time, observed, model_step_fn: as in run_loop_time_series
  - params: dict with the monitored parameters (scalars and lists of floats)
  - metric_fn: function(observed, model_array) -> scalar (smaller is better)
  - step: base step size used for +/- changes (applied to scalars and list elements)
  - max_iters: max number of outer passes over all parameters
  - tol: minimum improvement to consider (metric must decrease by > tol)
  - verbose: print progress

Returns dict:
  - best_params: dict of accepted parameter values
  - best_metric: scalar
  - best_model: model array for best params
  - best_state: final state from run_loop_time_series for best params
  - history: list of evaluated candidates: dicts with keys
             ('param', 'index' (or None), 'candidate', 'metric', 'accepted')
  - iterations: number of outer iterations performed
"""

if os.getenv('ALIGN', '') == '1':
    Monitored_Parameters = Monitored_Slide
    Magnify_Scalar = 10.0
elif os.getenv('ALIGN', '') == '-1':
    Monitored_Parameters = Monitored_Initial
    Magnify_Scalar = 1.0
else:
    Monitored_Parameters = Monitored
    Magnify_Scalar = 1.0

# start from given params (copy to avoid mutating caller's dict)
best_params = copy.deepcopy(params)
# ensure list parameters are plain python lists of floats (if present)
for name in Monitored_Parameters:
    if _is_list_param(name) and name in best_params:
        best_params[name] = [float(x) for x in best_params[name]]

# evaluate initial
model_vals, final_state = run_loop_time_series(time, observed, model_step_fn, best_params)
best_metric = float(metric_fn(time, observed, model_vals, Time_Low, Time_High))

history: List[Dict[str, Any]] = []
if verbose:
    print(f"[{time_series_name}] start metric={best_metric:.6g}")

switched_to_rel = os.getenv('RELATIVE', '') == '1'

for iteration in range(1, max_iters + 1):
    any_accepted = False
    mode = "rel" if switched_to_rel else "abs"
    if verbose:
        print(f"[{time_series_name}] iteration {iteration} mode={mode} best_metric={best_metric:.6g}")

    # iterate over monitored params in fixed order
    for name in Monitored_Parameters:
        if name == "Imp_Stride":
            max_val = 12
            trials_per_iter = 4
            # sample without replacement when possible
            population = list(range(0, max_val + 1))
            k = min(trials_per_iter, len(population))
            sampled = random.sample(population, k) if k > 0 else []
            for cand in sampled:
                # skip if same as current
                if int(best_params.get(name, 0)) == cand:
                    continue
                candidate_params = copy.deepcopy(best_params)
                candidate_params[name] = int(cand)
                mvals_cand, _ = run_loop_time_series(time, observed, model_step_fn, candidate_params)
                metric_cand = float(metric_fn(time, observed, mvals_cand, Time_Low, Time_High))
                accepted = metric_cand + tol < best_metric
                history.append({
                    "param": name,
                    "index": None,
                    "candidate": cand,
                    "metric": metric_cand,
                    "accepted": accepted,
                    "method": "discrete_random",
                })
                if accepted:
                    best_params = candidate_params
                    best_metric = metric_cand
                    model_vals = mvals_cand
                    any_accepted = True
                    if verbose:
                        print(f"[stride] accepted {name} = {cand} -> metric {best_metric:.6g}")
                    # keep sampling further candidates this iteration (could accept more)
            continue

        if _is_list_param(name):
            # skip if param not present or empty
            lst = best_params.get(name)
            if not lst:
                continue
            # iterate elements
            for idx in range(len(lst)):
                cur = float(lst[idx])
                accepted_this_element = False
                for sign in (1.0, -1.0):
                    candidate_params = copy.deepcopy(best_params)
                    # candidate_params[name][idx] = cur + delta*cur
                    if use_random:
                        delta = -step * math.log(random.random())
                    else:
                        delta = step
                    if not switched_to_rel:
                        # absolute candidate
                        candidate = cur + sign * delta
                    else:
                        # relative candidate (fallback to additive if cur==0)
                        if abs(cur) > 0.0:
                            candidate = cur * (1.0 + sign * delta)
                        else:
                            candidate = cur + sign * delta
                    candidate_params[name][idx] = candidate
                    model_vals_cand, _ = run_loop_time_series(time, observed, model_step_fn, candidate_params)
                    metric_cand = float(metric_fn(time, observed, model_vals_cand, Time_Low, Time_High))
                    accepted = metric_cand + tol < best_metric
                    history.append({
                        "param": name,
                        "index": idx,
                        "candidate": candidate_params[name][idx],
                        "metric": metric_cand,
                        "accepted": accepted,
                    })
                    if accepted:
                        # keep the candidate
                        best_params = candidate_params
                        best_metric = metric_cand
                        model_vals = model_vals_cand
                        any_accepted = True
                        accepted_this_element = True
                        if verbose:
                            print(f"[{time_series_name}] accepted {name}[{idx}] = {best_params[name][idx]:.6g} -> metric {best_metric:.6g}")
                        # continue trying further +/- steps from the new value:
                        cur = float(best_params[name][idx])
                        break  # stop trying other sign at this pass; move to try again from updated cur
                # end +/- loop for this element
                # Optionally attempt additional immediate steps in same direction until no improvement:
                # (Keep this simple implementation: we will revisit in next outer iteration)
                pass
        else:
            # scalar parameter
            if name not in best_params:
                continue
            cur = float(best_params[name])
            accepted_this_param = False
            for sign in (1.0, -1.0):
                candidate_params = copy.deepcopy(best_params)
                # candidate_params[name] = cur + delta*cur
                if use_random:
                    delta = -step * math.log(random.random()) * Magnify_Scalar
                else:
                    delta = step
                if not switched_to_rel:
                    # absolute candidate
                    candidate = cur + sign * delta
                else:
                    # relative candidate (fallback to additive if cur==0)
                    if abs(cur) > 0.0:
                        candidate = cur * (1.0 + sign * delta)
                    else:
                        candidate = cur + sign * delta
                candidate_params[name] = candidate
                model_vals_cand, _ = run_loop_time_series(time, observed, model_step_fn, candidate_params)
                metric_cand = float(metric_fn(time, observed, model_vals_cand, Time_Low, Time_High))
                history.append({
                    "param": name,
                    "index": None,
                    "candidate": candidate_params[name],
                    "metric": metric_cand,
                    "accepted": metric_cand + tol < best_metric,
                })
                if metric_cand + tol < best_metric:
                    best_params = candidate_params
                    best_metric = metric_cand
                    model_vals = model_vals_cand
                    any_accepted = True
                    accepted_this_param = True
                    if verbose:
                        CV = float(metric_fn(time, observed, model_vals_cand, Time_Low, Time_High, False))
                        print(f"[{time_series_name}] accepted {name} = {best_params[name]:.6g} -> metric {best_metric:.6g}  CV {CV:.6g} ")
                    # move on from this parameter (we'll potentially refine in the next iteration)
                    break
            # end +/- for scalar
    # end loop over parameters

    if not any_accepted:
        if not switched_to_rel:
            # switch strategies and continue searching with relative updates
            switched_to_rel = True
            if verbose:
                print("[{time_series_name}] no acceptance with absolute steps; switching to relative steps")
            # do not stop yet; continue with next iteration in relative mode
            continue
        else:
            if verbose:
                print(f"[{time_series_name}] no acceptance in iteration {iteration}; stopping early")
            return {
                "best_params": best_params,
                "best_metric": best_metric,
                "best_model": model_vals,
                "best_state": final_state,
                "history": history,
                "iterations": iteration,
            }

# max iters reached
if verbose:
    print(f"[{time_series_name}] reached max_iters={max_iters}, best_metric={best_metric:.6g}")
return {
    "best_params": best_params,
    "best_metric": best_metric,
    "best_model": model_vals,
    "best_state": final_state,
    "history": history,
    "iterations": max_iters,
}

Utilities ---------------------------------------------------------------------

def parse_json_like_arg(s: str | None) -> Dict[str, Any]:
"""Parse a JSON-like string from CLI --params. Returns dict."""
if s is None:
return {}
try:
return json.loads(s)
except Exception as e:
raise argparse.ArgumentTypeError(f"Invalid JSON for --params: {e}")

def main():
ap = argparse.ArgumentParser(description="Time-series modeler with per-timestamp loop and metrics.")
ap.add_argument('csv', help='Input CSV file (two columns: time, value).')
ap.add_argument('--out', default='fitted_out.csv', help='Output CSV file with time, observed, model, residual.')
ap.add_argument('--plot', action='store_true', help='Show plot of observed vs model (requires matplotlib).')
ap.add_argument('--low', default=0.0)
ap.add_argument('--high', default=3000.0)
ap.add_argument('--cc', action='store_true')
ap.add_argument('--random', action='store_true')

args = ap.parse_args()

global use_pearson
if args.cc:
    use_pearson = True
    print("using CC")
else:
    use_pearson = False

global use_random
if args.random:
    use_random = True
    print("using random")
else:
    use_random = False

global time_series_name
time_series_name = args.csv

# Read CSV
time, y = read_two_column_csv(args.csv)
if time.size == 0:
    raise SystemExit("No data read from CSV.")
y = normalize_rms_y(y)

# Read JSON file with same name appended by ".p"
json_path = args.csv + '.p'
data_dict = read_json_p(json_path)
params = data_dict

model_fn = model_step_algorithm
Low = float(args.low)
High = float(args.high)

# Make a clone of the series (not strictly necessary but requested)
cloned = clone_series(y)

result = simple_descent(
    time, y, model_fn, params,
    metric_fn=compute_metrics_region,
    step=float(os.environ.get('STEP', '0.05')), 
    max_iters=int(os.environ.get('MAX_ITERS', '400')), 
    tol=1e-12, verbose=True, Time_Low=Low, Time_High=High
)
params = result["best_params"]

# Run the time-stepping loop (explicit loop per timestamp)
model_vals, final_state = run_loop_time_series(time, cloned, model_fn, params)

# Compute metrics
metrics = compute_metrics(time, y, model_vals, Low, High)

# Prepare output DataFrame
out_df = pd.DataFrame({
    'time': time,
    'observed': y,
    'model': model_vals,
    'residual': metrics['residuals']
})
out_df.to_csv(args.out, index=False)

# Update data dictionary with metadata and save to .p file
data_dict_out = dict(params)  # copy new

write_json_p(json_path, data_dict_out)

# Print summary
print(f"Processed {time.size} samples from: {args.csv}")
print(f"Output CSV: {args.out}")
print(f"Updated JSON data file: {json_path}")
print("Metrics:")
print(f"  CV = {metrics['CV']:.6e}")
print(f"  MSE = {metrics['mse']:.6e}")
print(f"  Pearson r = {metrics['pearson_r']}, p-value = {metrics.get('pearson_p', None)}")

# Optional plotting
mask = (time > Low) & (time < High)
plt.figure(figsize=(12, 6))
plt.plot(time, y, label='observed', lw=0.5)
plt.plot(time, model_vals, label='model', lw=0.5, color='red')
# plt.plot(time, metrics['residuals'], label='residual', lw=0.8, alpha=0.7)
plt.plot(time[mask], [0.0] * len(time[mask]), 'k--', label='cross-validation', linewidth=3)
plt.legend()
plt.xlabel('time')
plt.ylabel('value')
plt.title(f"Model: {args.csv}  Pearson r={metrics['pearson_r']:.4g}  CV={metrics['CV']:.4g}")
# plt.grid(True)
if args.plot:
    plt.show()
else:
    plt.savefig(args.csv+'-'+args.low+'-'+args.high+'.png', bbox_inches='tight')  # Save as PNG with tight bounding box

if name == 'main':
main()

@pukpr
Copy link
Copy Markdown
Author

pukpr commented Nov 6, 2025

NINO34 overfitting example
nino34_0

{
"Aliased": [
"0.0537449",
"0.1074898",
"0.220485143",
"0.5",
"1",
"2"
],
"AliasedAmp": [
0.1664225309941388,
-0.2248456793287714,
-0.24583219265437842,
-0.13670047429077842,
-0.05596096111465999,
-0.06922342754618857
],
"AliasedPhase": [
5.377732792716752,
4.1886730269266685,
3.6660080447027585,
0.6813756911164797,
1.1561156649997315,
7.152380003811944
],
"DC": -0.12777677516828612,
"Damp": 0.06479893403639156,
"DeltaTime": "3.416666667",
"Hold": 0.0014967241536286758,
"Imp_Amp": 199.5837988521354,
"Imp_Amp2": -0.4968336809759315,
"Imp_Stride": 6,
"Initial": 0.11377368483911615,
"LTE_Amp": 1.4522262526728902,
"LTE_Amp2": 0.22138866570066582,
"LTE_Freq": 134.25817448478074,
"LTE_Freq2": 0.0011180925598876339,
"LTE_Phase": 0.8757571204295547,
"LTE_Phase2": 6.16149818633276,
"LTE_Zero": -3.2420893710105143,
"Periods": [
"27.2122",
"27.3216",
"27.5545",
"13.63339513",
"13.69114014",
"13.6061",
"13.6608",
"13.71877789",
"6795.985773",
"1616.215172",
"2120.513853",
"13.77725",
"3232.430344",
"9.132931547",
"9.108450374",
"9.120674533",
"27.0926041",
"3397.992886",
"9.095011909",
"9.082856397",
"6.809866946",
"2190.530426",
"6.816697567",
"6.823541904",
"1656.572278"
],
"PeriodsAmp": [
0.49949977321851263,
0.12854426237565938,
0.09776323015233836,
-0.1078234780518013,
-0.015394268086971315,
0.014012323067801306,
-0.039855631193442514,
0.002808550488152294,
0.01398775167334815,
-0.015176233350421769,
0.004879826601477435,
-0.010634889061161853,
-0.011368956307246735,
0.0007195462486307435,
-0.019572552778995715,
-0.009341823067123016,
-0.0634830808912972,
-0.006566621238775781,
0.022987658815233087,
0.027887890442349753,
-0.011654824426126956,
-0.025353890834915842,
-0.03042826480395,
-0.019118442968441333,
0.0071689636283343025
],
"PeriodsPhase": [
14.568883408601316,
8.862538266975196,
5.766320595701967,
4.940912218983716,
7.97188346875489,
9.146661787873326,
13.71900909053875,
4.86487421836257,
8.036633188752894,
4.905214216424707,
5.114950815893248,
7.968877649076145,
2.2091862176292656,
6.363912350901874,
6.061655961410555,
7.1676652767515785,
4.655147338040961,
3.9046161970549367,
7.771692128158078,
7.311306812569453,
9.283840589846879,
4.605187660193065,
6.647466771066414,
3.616127767046294,
5.750144503580306
],
"Year": "365.2495755"
}


fewer parameters, extra 12.8 and 7.6 year biennial

nino34_1

{
"Aliased": [
"0.0537449",
"0.1074898",
"0.220485143",
"1",
"2",
"0.07771",
"0.131456"
],
"AliasedAmp": [
0.01373411600600657,
-0.24925080691132248,
-0.19645105170343374,
-0.053240781100470924,
-0.07023363251304943,
0.22156798548200038,
-0.08542010176712873
],
"AliasedPhase": [
4.505166008741849,
4.634983069111447,
3.9781852469451913,
1.1084517452956228,
7.129478457079872,
6.76962000570448,
7.360061965624767
],
"DC": -0.12777677516828612,
"Damp": 0.11092667501923856,
"DeltaTime": "3.416666667",
"Hold": 0.001497241950062863,
"Imp_Amp": 199.95632977470802,
"Imp_Amp2": -1.1039878744874996,
"Imp_Stride": 6,
"Initial": 0.11381015968220416,
"LTE_Amp": 1.4362597733998936,
"LTE_Amp2": 0.22138866570066582,
"LTE_Freq": 135.13980300104902,
"LTE_Freq2": 0.0011180925598876339,
"LTE_Phase": 0.8683530277906265,
"LTE_Phase2": 6.16149818633276,
"LTE_Zero": -2.156129982208437,
"Periods": [
"27.2122",
"27.3216",
"27.5545",
"13.63339513",
"13.69114014",
"13.6061",
"13.6608",
"13.71877789",
"6795.985773",
"1616.215172",
"2120.513853",
"13.77725",
"3232.430344",
"9.132931547",
"9.108450374",
"9.120674533",
"27.0926041",
"3397.992886",
"9.095011909",
"9.082856397",
"2190.530426",
"6.816697567"
],
"PeriodsAmp": [
0.49989102820075165,
0.1283790301523569,
0.09916397190389156,
-0.11346776121836187,
-0.012021252772694143,
0.01579727515687521,
-0.04093509621360872,
0.0025413050658450354,
0.01469449265310044,
-0.01708550006100795,
0.005165459975156417,
-0.015870078829274555,
-0.011415377295035072,
0.0007051313508501938,
-0.021696244677303553,
-0.010159950050880216,
-0.046608840876050134,
-0.007235656572135306,
0.02273747103045482,
0.02467256996849005,
-0.024483722184257914,
-0.0401580007638929
],
"PeriodsPhase": [
14.572398352634872,
8.829063763851819,
5.754620156331959,
4.984144081316561,
8.067471414826795,
9.20042717625232,
13.678236017492752,
7.581713046839885,
8.046781413367706,
4.927540683169563,
5.398413926794783,
8.503008034786298,
2.146272564580004,
5.784968052645453,
6.085644309438132,
7.221912116548478,
4.620637928357284,
4.191078105980651,
7.699353246673513,
7.383558843734266,
4.592831906457734,
6.6527865258442604
],
"Year": "365.2495755"
}

@pukpr
Copy link
Copy Markdown
Author

pukpr commented Nov 6, 2025

Extra high LTE factor
nino34_2

{
"Aliased": [
"0.0537449",
"0.1074898",
"0.220485143",
"1",
"2",
"0.07771",
"0.131456"
],
"AliasedAmp": [
-0.015520265555962623,
-0.23729628910346737,
-0.17067041147672735,
-0.04228721677590398,
-0.06737730574119893,
0.24885323734792775,
-0.10893216006935212
],
"AliasedPhase": [
6.0803282835487344,
4.69815808758631,
4.093086885367645,
1.2257357217074238,
7.138432322922706,
6.831991347274161,
7.667804857056809
],
"DC": -0.12777677516828612,
"Damp": 0.11076327076547361,
"DeltaTime": "3.416666667",
"Hold": 0.001497241950062863,
"Imp_Amp": 199.84116704292475,
"Imp_Amp2": -1.194772069804572,
"Imp_Stride": 6,
"Initial": 0.11381015968220416,
"LTE_Amp": 1.418225005942186,
"LTE_Amp2": 0.21900468970266235,
"LTE_Freq": 135.37921617539627,
"LTE_Freq2": 0.0011180925598876339,
"LTE_Phase": 0.8792409371255436,
"LTE_Phase2": 6.966063426333888,
"LTE_Zero": -2.2618559232517974,
"Periods": [
"27.2122",
"27.3216",
"27.5545",
"13.63339513",
"13.69114014",
"13.6061",
"13.6608",
"13.71877789",
"6795.985773",
"1616.215172",
"2120.513853",
"13.77725",
"3232.430344",
"9.132931547",
"9.108450374",
"9.120674533",
"27.0926041",
"3397.992886",
"9.095011909",
"9.082856397",
"2190.530426",
"6.816697567"
],
"PeriodsAmp": [
0.49989102820075165,
0.1283790301523569,
0.09916397190389156,
-0.11346776121836187,
-0.012037474353421725,
0.01583960931430036,
-0.04093509621360872,
0.004835174746448423,
0.014690388131562085,
-0.01717786280370108,
0.0052310914273853626,
-0.015632563609286894,
-0.011420171454191271,
0.0007061351513286255,
-0.021364551695965864,
-0.010165871663239037,
-0.04654102137583136,
-0.00723636387709109,
0.022725782261923726,
0.02467256996849005,
-0.02435323549957254,
-0.040226727940872745
],
"PeriodsPhase": [
14.572398352634872,
8.828859334370764,
5.736295070865466,
4.983715077092693,
8.064966813967308,
9.195510477282863,
13.682378889767593,
7.606517553486846,
8.047904111784778,
4.929857032156695,
5.4848105356841454,
8.468521188922601,
2.143597100173438,
5.7905417041412965,
6.086763809834034,
7.230374032419841,
4.608020476661523,
4.190548710640622,
7.700278504549495,
7.381270040163863,
4.593309611082867,
6.655555530131739
],
"Year": "365.2495755"
}


full
nino34_3

{
"Aliased": [
"0.0537449",
"0.1074898",
"0.220485143",
"1",
"2",
"0.07771",
"0.131456"
],
"AliasedAmp": [
-0.032516353209908325,
-0.22964623167478376,
-0.106956635248877,
-0.07395628420815965,
-0.04749355870545466,
0.33702386544831914,
0.06764532570994927
],
"AliasedPhase": [
6.925514995947206,
5.063378940325548,
4.2118280990635,
1.0670431499430466,
6.8526068437669325,
7.0681447205981485,
8.367672565829192
],
"DC": -0.274867131213384,
"Damp": 0.11387924269716464,
"DeltaTime": "3.416666667",
"Hold": 0.001497241950062863,
"Imp_Amp": 197.74880959148646,
"Imp_Amp2": -1.1937295677133053,
"Imp_Stride": 6,
"Initial": 0.11372993067058515,
"LTE_Amp": 1.1347303030382427,
"LTE_Amp2": 0.21900468970266235,
"LTE_Freq": 135.1927908512019,
"LTE_Freq2": 0.0011180925598876339,
"LTE_Phase": 0.6976918569957219,
"LTE_Phase2": 6.966063426333888,
"LTE_Zero": -0.30255137543600685,
"Periods": [
"27.2122",
"27.3216",
"27.5545",
"13.63339513",
"13.69114014",
"13.6061",
"13.6608",
"13.71877789",
"6795.985773",
"1616.215172",
"2120.513853",
"13.77725",
"3232.430344",
"9.132931547",
"9.108450374",
"9.120674533",
"27.0926041",
"3397.992886",
"9.095011909",
"9.082856397",
"2190.530426",
"6.816697567"
],
"PeriodsAmp": [
0.500425027759459,
0.1334461214551571,
0.0972475088863109,
-0.11385045870988864,
-0.010027193816219032,
0.013269140496035664,
-0.03882001802880552,
0.00911391321831788,
0.013861793707557914,
-0.02120254647500036,
0.004363735702128504,
-0.01973495345764209,
-0.011148238031906184,
0.0007181559214196173,
-0.02302273428134464,
-0.00975045970374891,
-0.0489761315432879,
-0.009954357065072807,
0.021569849188436626,
0.029718567471034678,
-0.02125963579465834,
-0.041163957401071025
],
"PeriodsPhase": [
14.575847377565035,
8.87668849709703,
5.832793420238761,
4.97819915132115,
8.221938576048572,
8.93550393998553,
13.54927494883589,
7.547725066265494,
8.064750681582169,
4.952891138406816,
4.681327872611894,
8.460797757083126,
2.1144742042662035,
5.449696407355292,
6.0106232637988946,
7.4027570612053575,
4.636651724105095,
4.25585106783906,
7.740293174480834,
7.424976360768335,
4.667489168719152,
6.687919438374671
],
"Year": "365.2495755"
}


CV
nino34_4

{
"Aliased": [
"0.0537449",
"0.1074898",
"0.220485143",
"1",
"2",
"0.07771",
"0.131456"
],
"AliasedAmp": [
-0.06918664670189494,
-0.2985989199913816,
-0.20765597365968588,
-0.048887377935359584,
-0.06506688648404786,
0.24003478471389286,
0.07765734673523077
],
"AliasedPhase": [
7.752160965388027,
4.750566147099367,
4.0613264319119695,
1.1082882193848693,
7.025398779036922,
6.7063086881544605,
10.294329662909774
],
"DC": -0.12423808951744805,
"Damp": 0.11804121166368504,
"DeltaTime": "3.416666667",
"Hold": 0.001497241950062863,
"Imp_Amp": 199.22284872886064,
"Imp_Amp2": -0.9027428748626144,
"Imp_Stride": 6,
"Initial": 0.11375655483569767,
"LTE_Amp": 1.4604654875881593,
"LTE_Amp2": 0.20670444077282657,
"LTE_Freq": 135.9690024089703,
"LTE_Freq2": 0.0011180925598876339,
"LTE_Phase": 0.8763419460905278,
"LTE_Phase2": 6.859520639968336,
"LTE_Zero": -2.5048269509446404,
"Periods": [
"27.2122",
"27.3216",
"27.5545",
"13.63339513",
"13.69114014",
"13.6061",
"13.6608",
"13.71877789",
"6795.985773",
"1616.215172",
"2120.513853",
"13.77725",
"3232.430344",
"9.132931547",
"9.108450374",
"9.120674533",
"27.0926041",
"3397.992886",
"9.095011909",
"9.082856397",
"2190.530426",
"6.816697567"
],
"PeriodsAmp": [
0.49927960618941336,
0.12927112377009758,
0.09897162242812127,
-0.1143477835005549,
-0.010077800009618214,
0.01522143261262352,
-0.04110023045843892,
0.0027383773483598355,
0.014574254311673415,
-0.018180068673822332,
0.006026020956249564,
-0.016389238257712695,
-0.01199927042186422,
0.0007555581377546212,
-0.022555997107519155,
-0.010514281503924435,
-0.04852970596500502,
-0.007420228958645425,
0.022126020631521665,
0.025312015697231415,
-0.021841606640866956,
-0.040443350761695245
],
"PeriodsPhase": [
14.57213478488964,
8.816338921228892,
5.765886410928156,
4.9817245953979,
8.21257713697612,
9.15143625820191,
13.6566717186159,
8.401176731068233,
8.090850604963034,
4.91573831661772,
5.215696600603423,
8.266291206663041,
2.117275737008649,
5.669536219081473,
6.129640601219435,
7.269457761117442,
4.5507958142623615,
4.307466328298344,
7.635456567993509,
7.42368540242242,
4.630594902502726,
6.634288530934836
],
"Year": "365.2495755"
}


nino34_5

{
"Aliased": [
"0.0537449",
"0.1074898",
"0.220485143",
"1",
"2",
"0.07771",
"0.131456"
],
"AliasedAmp": [
-0.05705465417602754,
-0.2540407223221374,
-0.19424172449717483,
-0.027393338041106875,
-0.06839318183381371,
0.25723274955229214,
0.059780103613691925
],
"AliasedPhase": [
8.016668083702253,
4.761894224309435,
4.081386131615305,
1.4410007074734716,
7.200769710023577,
6.805989934736902,
10.255807985507136
],
"DC": -0.12423808951744805,
"Damp": 0.1164932508026369,
"DeltaTime": "3.416666667",
"Hold": 0.001497241950062863,
"Imp_Amp": 199.07578159812275,
"Imp_Amp2": -1.0013613080672634,
"Imp_Stride": 6,
"Initial": 0.11375655483569767,
"LTE_Amp": 1.333585491310017,
"LTE_Amp2": 0.24475198263665468,
"LTE_Freq": 135.7693413381282,
"LTE_Freq2": 0.011180925598876339,
"LTE_Phase": 0.8841195402917454,
"LTE_Phase2": 6.860982494238797,
"LTE_Zero": -2.346319244828531,
"Periods": [
"27.2122",
"27.3216",
"27.5545",
"13.63339513",
"13.69114014",
"13.6061",
"13.6608",
"13.71877789",
"6795.985773",
"1616.215172",
"2120.513853",
"13.77725",
"3232.430344",
"9.132931547",
"9.108450374",
"9.120674533",
"27.0926041",
"3397.992886",
"9.095011909",
"9.082856397",
"2190.530426",
"6.816697567"
],
"PeriodsAmp": [
0.4991832634332175,
0.12927112377009758,
0.09897162242812127,
-0.1143477835005549,
-0.010077800009618214,
0.01522143261262352,
-0.042050349200289217,
0.0027383773483598355,
0.014574254311673415,
-0.018180068673822332,
0.006026020956249564,
-0.016389238257712695,
-0.01199927042186422,
0.0007555581377546212,
-0.022555997107519155,
-0.010514281503924435,
-0.04852970596500502,
-0.007420228958645425,
0.022126020631521665,
0.02550429078485793,
-0.021841606640866956,
-0.040443350761695245
],
"PeriodsPhase": [
14.57213478488964,
8.814588001089069,
5.779004182090799,
4.981083413856415,
8.181194656281678,
9.125350394298085,
13.665472025711015,
8.200352307853896,
8.079639401323517,
4.931176471212014,
5.182444832586724,
8.28382559420852,
2.1263821140859798,
5.684825197859496,
6.134006386204361,
7.273052818952145,
4.5507958142623615,
4.336713303887333,
7.636066996819392,
7.424033811747508,
4.6199713762301,
6.66901041646273
],
"Year": "365.2495755"
}


Now we take this and use it to predict the Warnemunde 2 coastal station SLH readings

warne_0

{
"Aliased": [
"0.0537449",
"0.1074898",
"0.220485143",
"1",
"2",
"0.07771",
"0.131456"
],
"AliasedAmp": [
0.6401810794204986,
-0.5820084992504192,
0.5127220579066445,
-0.1544615995167078,
0.11744801916448509,
0.1393456410652593,
-0.5320708252781166
],
"AliasedPhase": [
7.807805272287657,
2.9705424815572576,
5.166277724980381,
0.4124621839005815,
6.996251338120917,
8.816346761467324,
11.178905381216525
],
"DC": -0.12423808951744805,
"Damp": 0.1164932508026369,
"DeltaTime": "3.416666667",
"Hold": 0.001497241950062863,
"Imp_Amp": 199.12441923480887,
"Imp_Amp2": -0.6973381974779412,
"Imp_Stride": 4,
"Initial": 0.11375655483569767,
"LTE_Amp": 0.5576623636392035,
"LTE_Amp2": 0.5910368411836608,
"LTE_Freq": 135.40216164769754,
"LTE_Freq2": 0.011180925598876339,
"LTE_Phase": 1.1304899708816272,
"LTE_Phase2": 7.341094335645685,
"LTE_Zero": -0.11112540824675762,
"Periods": [
"27.2122",
"27.3216",
"27.5545",
"13.63339513",
"13.69114014",
"13.6061",
"13.6608",
"13.71877789",
"6795.985773",
"1616.215172",
"2120.513853",
"13.77725",
"3232.430344",
"9.132931547",
"9.108450374",
"9.120674533",
"27.0926041",
"3397.992886",
"9.095011909",
"9.082856397",
"2190.530426",
"6.816697567"
],
"PeriodsAmp": [
0.5679190871642851,
0.12927112377009758,
0.10517785886260163,
-0.1143477835005549,
-0.010071374263150499,
0.01522143261262352,
-0.09087412799925196,
0.0027383773483598355,
0.014574254311673415,
-0.018180068673822332,
-0.026035631947286843,
-0.016389238257712695,
-0.010026337703068933,
0.0007555581377546212,
-0.022555997107519155,
-0.010493502018753653,
-0.0019912634455650983,
-0.007420228958645425,
0.028465573741109057,
0.07509643885625089,
-0.021841606640866956,
-0.040934338045509895
],
"PeriodsPhase": [
14.623705339235324,
8.690396262012275,
5.753639552090883,
4.9812294358878635,
8.114207822131954,
9.126135560070345,
13.659961072760922,
8.187668885921761,
7.996927409219975,
4.947028199067624,
5.190988014316639,
8.333353920678146,
2.116530928178076,
5.708747294661499,
6.124903261628813,
7.286490891124734,
4.747690245453144,
4.342939526142313,
7.636066996819392,
7.418279453679825,
4.6266318710707415,
6.679561910312635
],
"Year": 365.24708113327955
}

comparison
warne_vs_nino34_sin
warne_vs_nino34_bar

image

@pukpr
Copy link
Copy Markdown
Author

pukpr commented Nov 6, 2025

warne_1

{
"Aliased": [
"0.0537449",
"0.1074898",
"0.220485143",
"1",
"2",
"0.07771",
"0.131456"
],
"AliasedAmp": [
0.4010361700621753,
-0.34674692755400494,
0.29662399149217245,
-0.10905251166965364,
0.06108177229315168,
0.20860305290624204,
-0.3800272268582733
],
"AliasedPhase": [
7.528187607184889,
3.321368494416997,
5.235873799385882,
0.2565968850604682,
6.450766804341344,
9.079444169205582,
11.383624244525839
],
"DC": -0.12423808951744805,
"Damp": 0.08287248516370786,
"DeltaTime": 3.4166430998860955,
"Hold": 0.0014943329519264681,
"Imp_Amp": 196.45941199688434,
"Imp_Amp2": -0.7315160176037717,
"Imp_Stride": 4,
"Initial": 0.11802257719845638,
"LTE_Amp": 0.9744717952301879,
"LTE_Amp2": 0.6383627438271272,
"LTE_Freq": 133.92916118514597,
"LTE_Freq2": 0.011180925598876339,
"LTE_Phase": 1.5197061880303095,
"LTE_Phase2": 7.577022007295214,
"LTE_Zero": -0.8187412067530945,
"Periods": [
"27.2122",
"27.3216",
"27.5545",
"13.63339513",
"13.69114014",
"13.6061",
"13.6608",
"13.71877789",
"6795.985773",
"1616.215172",
"2120.513853",
"13.77725",
"3232.430344",
"9.132931547",
"9.108450374",
"9.120674533",
"27.0926041",
"3397.992886",
"9.095011909",
"9.082856397",
"2190.530426",
"6.816697567"
],
"PeriodsAmp": [
0.5630773710797106,
0.12346039282693197,
0.10143133109774505,
-0.11135710167859678,
-0.018741997115508117,
0.021719570980327327,
-0.06459152566038855,
-0.03234799060276577,
0.014001559137962367,
-0.008794806046461184,
-0.0331071496895582,
-0.012296723717384637,
-0.023482053809808646,
0.000881693547645507,
-0.021114314682501058,
-0.009764611700968241,
-0.01488320313751417,
-0.007800742357813637,
0.03656023200080713,
0.06641962892394444,
-0.02476454140024158,
-0.05194363189358087
],
"PeriodsPhase": [
14.576473988428766,
8.659314104036204,
5.726850233415195,
5.07664184467225,
8.303988773490067,
8.702440292710122,
13.9237413634786,
8.18278015658106,
8.092304596680782,
5.23086737634562,
5.1651598392679805,
6.723700273017174,
1.8921629611838529,
5.113932267882324,
6.0785216627468985,
7.382956820561761,
6.07916124802061,
4.082558344706477,
7.747650744206884,
7.423395798309744,
4.270643436569193,
6.736043355042859
],
"Year": 365.24708113327955
}


Full Warnemunde

warne_2

{
"Aliased": [
"0.0537449",
"0.1074898",
"0.220485143",
"1",
"2",
"0.07771",
"0.131456"
],
"AliasedAmp": [
0.3419366365550749,
-0.33746385160190384,
0.4485125085083183,
-0.1505363197572114,
0.07754472400411049,
0.18348935125344057,
-0.5751639034202856
],
"AliasedPhase": [
7.808126629864722,
3.6305340998515363,
5.208355427374299,
0.2092812000220146,
6.4054934815387465,
10.27967123104172,
11.284073955160792
],
"DC": -0.12423808951744805,
"Damp": 0.08708897512348249,
"DeltaTime": 3.4166430998860955,
"Hold": 0.0014943329519264681,
"Imp_Amp": 193.29680223767545,
"Imp_Amp2": 0.8591216779972336,
"Imp_Stride": 4,
"Initial": 0.11803077561919893,
"LTE_Amp": 1.3138405796661277,
"LTE_Amp2": 0.4298032835098847,
"LTE_Freq": 136.24764562277522,
"LTE_Freq2": 0.011180925598876339,
"LTE_Phase": 1.7029770680785028,
"LTE_Phase2": 7.873797958554444,
"LTE_Zero": 0.15390410621348005,
"Periods": [
"27.2122",
"27.3216",
"27.5545",
"13.63339513",
"13.69114014",
"13.6061",
"13.6608",
"13.71877789",
"6795.985773",
"1616.215172",
"2120.513853",
"13.77725",
"3232.430344",
"9.132931547",
"9.108450374",
"9.120674533",
"27.0926041",
"3397.992886",
"9.095011909",
"9.082856397",
"2190.530426",
"6.816697567"
],
"PeriodsAmp": [
0.5602142444370494,
0.1389818338654034,
0.07992122139006537,
-0.11136360648641389,
-0.021776255035546508,
0.020282684112866343,
-0.04797080246096962,
-0.042969085440637635,
0.014864829185305798,
-0.009021237911429747,
-0.0343885766124657,
-0.03574632377261504,
-0.02050592060287784,
0.0007799724568430707,
-0.02096354622583586,
-0.00980774144504957,
-0.0038738953033040473,
-0.010118133597960266,
0.04029163126372332,
0.06870651651857536,
-0.018697939030539266,
-0.05180741911565132
],
"PeriodsPhase": [
14.574223416340931,
8.523892678007812,
5.666238567397149,
5.035312386216637,
8.639173069272724,
8.528136802563518,
13.753028784291049,
7.612302009332403,
7.862916826256063,
5.003481426731825,
4.8669819057734065,
7.83710661122103,
2.0791890768190284,
4.598459886002269,
6.2763871571451375,
7.432162186088311,
3.1985400619571656,
4.20812394921811,
7.603931189442626,
7.436746214349708,
3.7207499486860858,
6.765680085984023
],
"Year": 365.24708113327955
}

warne_vs_nino34_full_bar

@pukpr
Copy link
Copy Markdown
Author

pukpr commented Nov 7, 2025

NAO

nao_0

{
"Aliased": [
"0.0537449",
"0.1074898",
"0.220485143",
"1",
"2",
"0.07771",
"0.131456"
],
"AliasedAmp": [
-0.2744388623512538,
-0.12593049666622055,
0.17165254687487977,
0.024505179134009587,
0.00821206393831048,
0.11946152637287433,
-0.2573299637324786
],
"AliasedPhase": [
8.255689553217055,
3.1330620880573687,
4.244480515039745,
2.0258887742102587,
7.05880768220954,
9.49161849874641,
9.908982446121414
],
"DC": 0.02815599412073511,
"Damp": 0.09597959668097587,
"DeltaTime": 3.4166430998860955,
"Hold": 0.0014943329519264681,
"Imp_Amp": 199.05867022769036,
"Imp_Amp2": 0.32562834518008166,
"Imp_Stride": 0,
"Initial": 0.11803077561919893,
"LTE_Amp": 1.0288865691600835,
"LTE_Amp2": 0.4298032835098847,
"LTE_Freq": 134.0851714709694,
"LTE_Freq2": 0.011180925598876339,
"LTE_Phase": 1.6458137977954392,
"LTE_Phase2": 7.873797958554444,
"LTE_Zero": 0.4940085639379609,
"Periods": [
"27.2122",
"27.3216",
"27.5545",
"13.63339513",
"13.69114014",
"13.6061",
"13.6608",
"13.71877789",
"6795.985773",
"1616.215172",
"2120.513853",
"13.77725",
"3232.430344",
"9.132931547",
"9.108450374",
"9.120674533",
"27.0926041",
"3397.992886",
"9.095011909",
"9.082856397",
"2190.530426",
"6.816697567"
],
"PeriodsAmp": [
0.5752461511718358,
0.1466035728468828,
0.07989842812298982,
-0.11294298959438621,
-0.013888666216785042,
-0.007787682217682786,
-0.03237369342783798,
0.27430818370596477,
0.015048963420871957,
-0.01363012307697694,
-0.04377278386842616,
-0.007266552519386137,
-0.02377714952482342,
0.00033172999213253304,
-0.018864071799101073,
-0.005948862314719692,
-0.016025013430675594,
-0.018932441045351234,
0.04331237279495707,
0.05054837197928527,
-0.016832922300224828,
-0.06317335321505937
],
"PeriodsPhase": [
14.559581112388164,
8.330231942118166,
5.623498911405296,
5.04530310813236,
7.175789881827318,
8.149783799490487,
13.591718344719666,
7.602437979297051,
7.96559947662293,
4.648241791154888,
4.542435917821159,
9.248899611035322,
2.000298153570253,
5.270941271292906,
6.034427812825386,
7.315421978593975,
1.9045919300922314,
4.908027716285974,
7.75342067969287,
7.074551569276791,
3.291107687391094,
6.609535331078324
],
"Year": 365.24708113327955
}

higher Trop / Anom mix. results in a stronger 4.4y modulation
warne_vs_nao_sin
warne_vs_nao_bar

@pukpr
Copy link
Copy Markdown
Author

pukpr commented Nov 7, 2025

Aarhus #76
https://psmsl.org/data/obtaining/rlr.monthly.data/76.rlrdata

aarhus_0

{
"Aliased": [
"0.0537449",
"0.1074898",
"0.220485143",
"1",
"2",
"0.07771",
"0.131456"
],
"AliasedAmp": [
0.18630809569369605,
-0.30321413222416055,
0.24696111138696922,
-0.23900738714363148,
-0.06863697039535242,
0.17513688045215486,
-0.3974986503173688
],
"AliasedPhase": [
8.16915375668099,
3.164958532608324,
5.27221464170202,
0.7137749515718673,
6.441059641541864,
8.010071480944289,
10.677128923323469
],
"DC": 0.0658468087947737,
"Damp": 0.07368879174370906,
"DeltaTime": 3.371152792758322,
"Hold": 0.0014943329519264681,
"Imp_Amp": 196.969997892079,
"Imp_Amp2": -0.014329248128447599,
"Imp_Stride": 3,
"Initial": 1.0817329731970124,
"LTE_Amp": 0.921032757009413,
"LTE_Amp2": 0.4298032835098847,
"LTE_Freq": 135.9347271872061,
"LTE_Freq2": 0.011180925598876339,
"LTE_Phase": 0.916821134537369,
"LTE_Phase2": 7.873797958554444,
"LTE_Zero": -0.2283810117093863,
"Periods": [
"27.2122",
"27.3216",
"27.5545",
"13.63339513",
"13.69114014",
"13.6061",
"13.6608",
"13.71877789",
"6795.985773",
"1616.215172",
"2120.513853",
"13.77725",
"3232.430344",
"9.132931547",
"9.108450374",
"9.120674533",
"27.0926041",
"3397.992886",
"9.095011909",
"9.082856397",
"2190.530426",
"6.816697567"
],
"PeriodsAmp": [
0.5620918312894726,
0.13100203430373913,
0.08454288496749757,
-0.09883843224556091,
-0.012410945165334383,
0.019815561740529328,
-0.04598530415496373,
-0.035418431532030996,
0.01735505178773413,
-0.03539970123886728,
-0.03180493647115627,
-0.044250668077782225,
-0.022337912355512926,
0.0011310779764427952,
-0.01912669453499279,
-0.0116086412849493,
-0.00923015041149838,
-0.011099911279918974,
0.04295385525365144,
0.06753842755970056,
-0.021068191137038863,
-0.06905865666598861
],
"PeriodsPhase": [
14.60194298782468,
8.528274007602084,
5.731213496159739,
5.040406686537091,
10.359239039406923,
8.012035917564935,
13.819457621268269,
7.984219444477046,
8.535222861945677,
5.903442326142986,
4.851798569154985,
8.46581066436242,
2.275198526676032,
4.397225567406199,
6.347335600549824,
7.354756562376431,
0.6338575241984553,
3.6113883619054863,
7.404748777656788,
7.43609271815472,
4.486765182546372,
6.5985910593798405
],
"Year": 365.24708113327955
}

aarhus_bar aarhus_sin

@pukpr
Copy link
Copy Markdown
Author

pukpr commented Nov 7, 2025

warne_vs_nao_dat_cc

Use Fremantle AUS (#111) as a proxy for NINO34
111d_0

{
"Aliased": [
"0.0537449",
"0.1074898",
"0.220485143",
"1",
"2",
"0.07771",
"0.131456"
],
"AliasedAmp": [
0.23174249416151022,
-0.1070623140491079,
0.23838613734595623,
-0.14986100423912133,
0.02279681626739047,
0.4960694208660594,
-0.2678984132515941
],
"AliasedPhase": [
7.466785332281441,
0.9941929561058978,
3.693284439100918,
1.9254966121833061,
8.29805906418968,
9.869326578875482,
9.120674108237555
],
"DC": -0.12423808951744805,
"Damp": 0.05645356501411647,
"DeltaTime": 3.5306313768521287,
"Hold": 0.0014943329519264681,
"Imp_Amp": 194.4001452572424,
"Imp_Amp2": 0.004370712596522332,
"Imp_Stride": 6,
"Initial": 0.11624437147384048,
"LTE_Amp": 1.1035973146739562,
"LTE_Amp2": 0.4298032835098847,
"LTE_Freq": 132.81332996480933,
"LTE_Freq2": 0.011180925598876339,
"LTE_Phase": 1.4694229707005697,
"LTE_Phase2": 7.873797958554444,
"LTE_Zero": 1.6934169933790504,
"Periods": [
"27.2122",
"27.3216",
"27.5545",
"13.63339513",
"13.69114014",
"13.6061",
"13.6608",
"13.71877789",
"6795.985773",
"1616.215172",
"2120.513853",
"13.77725",
"3232.430344",
"9.132931547",
"9.108450374",
"9.120674533",
"27.0926041",
"3397.992886",
"9.095011909",
"9.082856397",
"2190.530426",
"6.816697567"
],
"PeriodsAmp": [
0.5602142444370494,
0.13102426620482022,
0.08513741593458704,
-0.10743837579951404,
-0.022677437561556317,
0.01713412385059579,
-0.052551088859125496,
-0.04438086929814986,
0.014850452388015477,
-0.006602849431398543,
-0.0354969835793644,
-0.04456103983752877,
-0.02025429260661,
0.0013076071471877899,
-0.01984369864784211,
-0.013927133965635146,
-0.01702690605922692,
-0.002892731789010914,
0.04350680969044852,
0.06929242446532863,
-0.017747264290199894,
-0.06395161410568909
],
"PeriodsPhase": [
14.58212772539097,
8.60185079669073,
5.489363148906172,
5.14764815901879,
8.87852630846987,
9.164273278645098,
13.674483111813489,
6.914794392777358,
7.625238711182835,
4.716141451706088,
4.876340436476588,
7.555443706232741,
1.7733807000426378,
4.4102561808097125,
7.048286745759765,
7.229787372245087,
4.637910839180891,
4.378823257360646,
7.272995852392219,
7.576228980576777,
3.43010295384348,
6.665907220848805
],
"Year": 365.24708113327955
}

warne_vs_111d_bar warne_vs_111d_sin

can see how close Fremantle is to NINO34, basically the sign inverse, CC= -0.6
11d_vs_NINO34_ts

@pukpr
Copy link
Copy Markdown
Author

pukpr commented Nov 7, 2025

Honolulu (#155)
155d_0

{
"Aliased": [
"0.0537449",
"0.1074898",
"0.220485143",
"1",
"2",
"0.07771",
"0.131456"
],
"AliasedAmp": [
0.4225279120281558,
-0.5589979693066636,
0.14539869415921317,
-0.10291885167184606,
0.03648006278140163,
0.46470659698023264,
-0.44509182659107643
],
"AliasedPhase": [
11.916806539463447,
4.0094872844132015,
6.481487508543677,
0.3841142841850448,
5.944497830716165,
12.375748248531028,
11.495503816350796
],
"DC": -0.12423808951744805,
"Damp": -0.39935052043051,
"DeltaTime": 3.417303799039976,
"Hold": 0.0014943329519264681,
"Imp_Amp": 193.29680223767545,
"Imp_Amp2": 1.7123821012922336,
"Imp_Stride": 12,
"Initial": 0.7265529311816403,
"LTE_Amp": 1.6018102026060472,
"LTE_Amp2": 0.4298032835098847,
"LTE_Freq": 135.1144828512979,
"LTE_Freq2": 0.011180925598876339,
"LTE_Phase": 2.180122057123241,
"LTE_Phase2": 7.873797958554444,
"LTE_Zero": -0.10106578957082826,
"Periods": [
"27.2122",
"27.3216",
"27.5545",
"13.63339513",
"13.69114014",
"13.6061",
"13.6608",
"13.71877789",
"6795.985773",
"1616.215172",
"2120.513853",
"13.77725",
"3232.430344",
"9.132931547",
"9.108450374",
"9.120674533",
"27.0926041",
"3397.992886",
"9.095011909",
"9.082856397",
"2190.530426",
"6.816697567"
],
"PeriodsAmp": [
1.0669823697152896,
0.4653684258029308,
0.8400006677005887,
0.05473975247301863,
-0.5936553432652493,
0.4101359366543433,
-0.38156371142803663,
-0.8850564677655708,
0.19401080414144678,
0.3145000830130735,
-0.8719993183472119,
-0.1519138272169979,
-0.27264310335883707,
0.16237252448446315,
-0.3769793952245482,
-0.533716240496705,
0.1885421540891763,
-0.6154620167797697,
0.8505354985084489,
-0.16905026857554278,
-0.7342313226988422,
-0.5723125965980024
],
"PeriodsPhase": [
15.2757128915079,
9.568628986274733,
4.4748392255587,
8.128443017883,
9.37927247739791,
11.371359291069092,
10.899802776945053,
10.84237067042267,
9.409838628598559,
0.6820200715432666,
2.319939777475248,
8.385313948327621,
1.9854351234589862,
6.907840118615101,
5.228690450288638,
8.03135035598976,
0.3641945932460748,
2.376444557107234,
6.734916291749504,
6.605266946914558,
3.463765807387349,
7.76659004973132
],
"Year": 365.24708113327955
}

Portland ME USA #183

183d_0

{
"Aliased": [
"0.0537449",
"0.1074898",
"0.220485143",
"1",
"2",
"0.07771",
"0.131456"
],
"AliasedAmp": [
0.4225279120281558,
-0.5589979693066636,
0.14539869415921317,
-0.10291885167184606,
0.03648006278140163,
0.46470659698023264,
-0.44509182659107643
],
"AliasedPhase": [
11.916806539463447,
4.0094872844132015,
6.481487508543677,
0.3841142841850448,
5.944497830716165,
12.375748248531028,
11.495503816350796
],
"DC": -0.12423808951744805,
"Damp": -0.39935052043051,
"DeltaTime": 3.417303799039976,
"Hold": 0.0014943329519264681,
"Imp_Amp": 193.29680223767545,
"Imp_Amp2": 1.7123821012922336,
"Imp_Stride": 12,
"Initial": 0.7265529311816403,
"LTE_Amp": 1.6018102026060472,
"LTE_Amp2": 0.4298032835098847,
"LTE_Freq": 135.1144828512979,
"LTE_Freq2": 0.011180925598876339,
"LTE_Phase": 2.180122057123241,
"LTE_Phase2": 7.873797958554444,
"LTE_Zero": -0.10106578957082826,
"Periods": [
"27.2122",
"27.3216",
"27.5545",
"13.63339513",
"13.69114014",
"13.6061",
"13.6608",
"13.71877789",
"6795.985773",
"1616.215172",
"2120.513853",
"13.77725",
"3232.430344",
"9.132931547",
"9.108450374",
"9.120674533",
"27.0926041",
"3397.992886",
"9.095011909",
"9.082856397",
"2190.530426",
"6.816697567"
],
"PeriodsAmp": [
1.0669823697152896,
0.4653684258029308,
0.8400006677005887,
0.05473975247301863,
-0.5936553432652493,
0.4101359366543433,
-0.38156371142803663,
-0.8850564677655708,
0.19401080414144678,
0.3145000830130735,
-0.8719993183472119,
-0.1519138272169979,
-0.27264310335883707,
0.16237252448446315,
-0.3769793952245482,
-0.533716240496705,
0.1885421540891763,
-0.6154620167797697,
0.8505354985084489,
-0.16905026857554278,
-0.7342313226988422,
-0.5723125965980024
],
"PeriodsPhase": [
15.2757128915079,
9.568628986274733,
4.4748392255587,
8.128443017883,
9.37927247739791,
11.371359291069092,
10.899802776945053,
10.84237067042267,
9.409838628598559,
0.6820200715432666,
2.319939777475248,
8.385313948327621,
1.9854351234589862,
6.907840118615101,
5.228690450288638,
8.03135035598976,
0.3641945932460748,
2.376444557107234,
6.734916291749504,
6.605266946914558,
3.463765807387349,
7.76659004973132
],
"Year": 365.24708113327955
}

warne_vs_183d_bar warne_vs_183d_sin

slight anti-corr
183d_vs_NINO34_ts

Ketchikan Ak USA #225

225d_0

{
"Aliased": [
"0.0537449",
"0.1074898",
"0.220485143",
"1",
"2",
"0.07771",
"0.131456"
],
"AliasedAmp": [
0.11038766683008203,
-0.2609582084849903,
0.048036936059908844,
-0.3478229365482875,
0.07494837037229467,
0.3660449178949619,
-0.34928227419293967
],
"AliasedPhase": [
8.576134785785362,
5.535878104913326,
5.987266234218162,
-0.797179002177004,
3.3956874138026496,
11.774895812209516,
9.679494074204658
],
"DC": -0.12423808951744805,
"Damp": 0.09004554650254884,
"DeltaTime": 3.4166430998860955,
"Hold": 0.0014943329519264681,
"Imp_Amp": 193.5651624025913,
"Imp_Amp2": 2.674043040231733,
"Imp_Stride": 9,
"Initial": 0.11803077561919893,
"LTE_Amp": 1.4794049402787448,
"LTE_Amp2": 0.4298032835098847,
"LTE_Freq": 135.81533110611548,
"LTE_Freq2": 0.011180925598876339,
"LTE_Phase": 1.2124755007230785,
"LTE_Phase2": 7.873797958554444,
"LTE_Zero": 1.8576127520607248,
"Periods": [
"27.2122",
"27.3216",
"27.5545",
"13.63339513",
"13.69114014",
"13.6061",
"13.6608",
"13.71877789",
"6795.985773",
"1616.215172",
"2120.513853",
"13.77725",
"3232.430344",
"9.132931547",
"9.108450374",
"9.120674533",
"27.0926041",
"3397.992886",
"9.095011909",
"9.082856397",
"2190.530426",
"6.816697567"
],
"PeriodsAmp": [
0.5572364069024972,
0.13534118510342996,
0.07157384026793044,
-0.11136360648641389,
-0.03042343641810574,
0.021517206143626424,
-0.04683328388655832,
-0.061052579003294125,
0.014864829185305798,
-0.014505222428223932,
-0.03687815352172536,
-0.03319183976088729,
-0.0225966883142051,
0.0005677500877298032,
-0.021846290255809857,
-0.00980774144504957,
-0.022438281739933168,
-0.010118133597960266,
0.04157083397351827,
0.0685387163321443,
-0.01876854964947147,
-0.05563987881759451
],
"PeriodsPhase": [
14.624345990901192,
8.279642868392148,
6.002201776365225,
4.992972797443374,
8.762860035588224,
7.8474126231604995,
13.815253745367528,
7.865391827337022,
7.40179719043826,
3.532043048717743,
4.124029613591251,
9.111050326655652,
2.2279519201807774,
2.8296020910735358,
5.911031175121689,
7.354654530532619,
4.107424263725174,
5.491204522448329,
7.212601412892005,
7.723018206119836,
3.761783742075979,
7.277452185135199
],
"Year": 365.24708113327955
}

warne_vs_225d_bar warne_vs_225d_sin

@pukpr
Copy link
Copy Markdown
Author

pukpr commented Nov 7, 2025

La Jolla CA USA #256

256d_0

{
"Aliased": [
"0.0537449",
"0.1074898",
"0.220485143",
"1",
"2",
"0.07771",
"0.131456"
],
"AliasedAmp": [
0.21276651781935968,
-0.3068869494096654,
0.192778517585835,
-0.17521450466993826,
0.03085860573919736,
0.3541457099573648,
-0.5474804721438901
],
"AliasedPhase": [
10.90959088733975,
4.682601499562539,
5.987505152407519,
0.7260442153327273,
7.276185524890352,
12.758043842217868,
9.913515162714722
],
"DC": -0.12423808951744805,
"Damp": 0.07835921457491683,
"DeltaTime": 3.4166430998860955,
"Hold": 0.0014943329519264681,
"Imp_Amp": 195.72191687391157,
"Imp_Amp2": -1.5632680866775066,
"Imp_Stride": 1,
"Initial": -0.6064963014925301,
"LTE_Amp": 1.2991081952656705,
"LTE_Amp2": 0.4298032835098847,
"LTE_Freq": 135.92228886366516,
"LTE_Freq2": 0.011180925598876339,
"LTE_Phase": 2.005102193749262,
"LTE_Phase2": 7.873797958554444,
"LTE_Zero": 0.31785815951546703,
"Periods": [
"27.2122",
"27.3216",
"27.5545",
"13.63339513",
"13.69114014",
"13.6061",
"13.6608",
"13.71877789",
"6795.985773",
"1616.215172",
"2120.513853",
"13.77725",
"3232.430344",
"9.132931547",
"9.108450374",
"9.120674533",
"27.0926041",
"3397.992886",
"9.095011909",
"9.082856397",
"2190.530426",
"6.816697567"
],
"PeriodsAmp": [
0.5603349375076878,
0.12490026778906475,
0.08260875337740832,
-0.10399042670948323,
-0.016090919245008765,
0.01421067189056463,
-0.04797080246096962,
-0.046339574071545236,
0.01075667815152479,
-0.015388973732966577,
-0.038474045295777026,
-0.06688001797421561,
-0.023298961203204335,
0.00027682536362303063,
-0.02168383321775072,
-0.00980774144504957,
-0.0026636824389454222,
-0.010607245854673236,
0.04029163126372332,
0.0705167472757907,
-0.018697939030539266,
-0.06369972519828374
],
"PeriodsPhase": [
14.567955691744073,
8.368450545356298,
5.732485651593579,
4.960522987852565,
9.627372443934213,
8.210846718715532,
13.900856043234867,
7.727691399368326,
7.720991477064335,
3.4984400942206997,
5.083752515382871,
8.833122482310982,
1.9373913751639595,
2.904303424208754,
6.368185798511718,
7.4151396212294,
5.222725484412981,
5.151629417951679,
7.651652229655173,
7.13591722775163,
4.154226805577023,
6.7433128403396685
],
"Year": 365.24708113327955
}

warne_vs_256_bar warne_vs_256_sin 256d_vs_warne_ts

Kahului Harbor HI USA 521

521d_0

{
"Aliased": [
"0.0537449",
"0.1074898",
"0.220485143",
"1",
"2",
"0.07771",
"0.131456"
],
"AliasedAmp": [
0.21276651781935968,
-0.3068869494096654,
0.192778517585835,
-0.17521450466993826,
0.03085860573919736,
0.3541457099573648,
-0.5474804721438901
],
"AliasedPhase": [
10.90959088733975,
4.682601499562539,
5.987505152407519,
0.7260442153327273,
7.276185524890352,
12.758043842217868,
9.913515162714722
],
"DC": -0.12423808951744805,
"Damp": 0.07835921457491683,
"DeltaTime": 3.4166430998860955,
"Hold": 0.0014943329519264681,
"Imp_Amp": 195.72191687391157,
"Imp_Amp2": -1.5632680866775066,
"Imp_Stride": 1,
"Initial": -0.6064963014925301,
"LTE_Amp": 1.2991081952656705,
"LTE_Amp2": 0.4298032835098847,
"LTE_Freq": 135.92228886366516,
"LTE_Freq2": 0.011180925598876339,
"LTE_Phase": 2.005102193749262,
"LTE_Phase2": 7.873797958554444,
"LTE_Zero": 0.31785815951546703,
"Periods": [
"27.2122",
"27.3216",
"27.5545",
"13.63339513",
"13.69114014",
"13.6061",
"13.6608",
"13.71877789",
"6795.985773",
"1616.215172",
"2120.513853",
"13.77725",
"3232.430344",
"9.132931547",
"9.108450374",
"9.120674533",
"27.0926041",
"3397.992886",
"9.095011909",
"9.082856397",
"2190.530426",
"6.816697567"
],
"PeriodsAmp": [
0.5603349375076878,
0.12490026778906475,
0.08260875337740832,
-0.10399042670948323,
-0.016090919245008765,
0.01421067189056463,
-0.04797080246096962,
-0.046339574071545236,
0.01075667815152479,
-0.015388973732966577,
-0.038474045295777026,
-0.06688001797421561,
-0.023298961203204335,
0.00027682536362303063,
-0.02168383321775072,
-0.00980774144504957,
-0.0026636824389454222,
-0.010607245854673236,
0.04029163126372332,
0.0705167472757907,
-0.018697939030539266,
-0.06369972519828374
],
"PeriodsPhase": [
14.567955691744073,
8.368450545356298,
5.732485651593579,
4.960522987852565,
9.627372443934213,
8.210846718715532,
13.900856043234867,
7.727691399368326,
7.720991477064335,
3.4984400942206997,
5.083752515382871,
8.833122482310982,
1.9373913751639595,
2.904303424208754,
6.368185798511718,
7.4151396212294,
5.222725484412981,
5.151629417951679,
7.651652229655173,
7.13591722775163,
4.154226805577023,
6.7433128403396685
],
"Year": 365.24708113327955
}

warne_vs_521d_bar warne_vs_521d_sin

Marseilles FRA #61

61d_0 { "Aliased": [ "0.0537449", "0.1074898", "0.220485143", "1", "2", "0.07771", "0.131456" ], "AliasedAmp": [ 0.5447297186821478, -0.27960001495377934, 0.5282267187635779, -0.10456885440481153, 0.07062410015114838, 0.315969574765093, -0.11267289210579345 ], "AliasedPhase": [ 5.468924455756536, 6.316160394459762, 8.545686070715663, -0.04986436975464306, 4.107524536969129, 6.907631346322484, 10.883547283098418 ], "DC": -0.12423808951744805, "Damp": 0.07857139277109378, "DeltaTime": 3.4166430998860955, "Hold": 0.0014943329519264681, "Imp_Amp": 193.52391135906902, "Imp_Amp2": 1.1913488696965775, "Imp_Stride": 3, "Initial": 0.11964511097845909, "LTE_Amp": 1.2282841478627837, "LTE_Amp2": 0.4298032835098847, "LTE_Freq": 137.9162389093583, "LTE_Freq2": 0.011180925598876339, "LTE_Phase": 1.0631570876312166, "LTE_Phase2": 7.873797958554444, "LTE_Zero": -0.0942606761101211, "Periods": [ "27.2122", "27.3216", "27.5545", "13.63339513", "13.69114014", "13.6061", "13.6608", "13.71877789", "6795.985773", "1616.215172", "2120.513853", "13.77725", "3232.430344", "9.132931547", "9.108450374", "9.120674533", "27.0926041", "3397.992886", "9.095011909", "9.082856397", "2190.530426", "6.816697567" ], "PeriodsAmp": [ 0.5556319377551009, 0.10865086521594125, 0.0822083035390464, -0.11466968986824809, -0.0360875978613115, 0.02204821244993829, -0.04872328668228335, -0.042878995772266414, 0.01642203394096803, -0.009518736526421719, -0.035128413091391315, -0.03164415956272223, -0.021168397952596656, 0.0037767648582872192, -0.021761393390155013, -0.010440956588456174, -0.008629441771531726, -0.011668645479525975, 0.03647100262503218, 0.07059938077465211, -0.018598761215074807, -0.05213900622080094 ], "PeriodsPhase": [ 14.591709495574568, 8.504376269030544, 5.911750625504026, 4.978451705634533, 8.025025548310124, 8.854548837401383, 13.647352153086405, 7.547961705408631, 8.348150236201912, 5.356895931897288, 5.057574738700235, 8.442592473525098, 1.809940216337418, 3.5200689977263186, 6.261275863689778, 6.715359174473164, 4.432675444078767, 3.7502906381444605, 7.7520313252310435, 7.3329611810487725, 3.227685101688455, 6.947272274024824 ], "Year": 365.24708113327955 } warne_vs_61d_bar warne_vs_61d_sin

San Fran CA #10

1d_0

{
"Aliased": [
"0.0537449",
"0.1074898",
"0.220485143",
"1",
"2",
"0.07771",
"0.131456"
],
"AliasedAmp": [
0.3424906859966575,
-0.39046666848799794,
0.11746295585368753,
-0.06602888452571147,
0.06114630382395103,
0.4571493079689326,
-0.45039537718232003
],
"AliasedPhase": [
9.716791098830134,
4.799373620882724,
2.931664035896502,
0.0656578638960524,
7.546705792532393,
12.510297606178154,
10.791078560569309
],
"DC": -0.12423808951744805,
"Damp": 0.08994366479980442,
"DeltaTime": 3.4166430998860955,
"Hold": 0.0014943329519264681,
"Imp_Amp": 189.2747947196294,
"Imp_Amp2": 1.2032888711092256,
"Imp_Stride": 3,
"Initial": 0.11803077561919893,
"LTE_Amp": 1.2089786777645317,
"LTE_Amp2": 0.4298032835098847,
"LTE_Freq": 138.45677500993816,
"LTE_Freq2": 0.011180925598876339,
"LTE_Phase": 1.3900343675249007,
"LTE_Phase2": 7.873797958554444,
"LTE_Zero": 1.570496486439145,
"Periods": [
"27.2122",
"27.3216",
"27.5545",
"13.63339513",
"13.69114014",
"13.6061",
"13.6608",
"13.71877789",
"6795.985773",
"1616.215172",
"2120.513853",
"13.77725",
"3232.430344",
"9.132931547",
"9.108450374",
"9.120674533",
"27.0926041",
"3397.992886",
"9.095011909",
"9.082856397",
"2190.530426",
"6.816697567"
],
"PeriodsAmp": [
0.5549874999468004,
0.1270388225630153,
0.08010936265204537,
-0.11026542830583266,
-0.0076705878609564316,
0.028036892465247265,
-0.04698740781589587,
-0.040479722782910725,
0.018253288003263146,
-0.007083484568957627,
-0.0338011089819492,
-0.03961329727884428,
-0.02398914361324148,
0.0007799724568430707,
-0.01912036216953047,
-0.009766777782505481,
-0.009996151316769354,
-0.01288033914248433,
0.029173245700406428,
0.07295754082081238,
-0.007581303958018362,
-0.04667680764992686
],
"PeriodsPhase": [
14.58902823863258,
8.63477627120771,
5.536960742558955,
4.889075599155848,
11.293454717731784,
8.976948844914197,
14.897621545423156,
9.072739686357702,
7.960534770737466,
3.4481090032115063,
4.882726208018943,
8.204636348864486,
2.234740071279787,
4.598448311221539,
5.3213404277388285,
7.320087085956479,
3.2107120219780945,
4.453997442567288,
7.929442252232137,
7.775346698531202,
3.78516422589696,
6.43811979601834
],
"Year": 365.24708113327955
}
warne_vs_10d_bar
warne_vs_10d_sin

@pukpr
Copy link
Copy Markdown
Author

pukpr commented Nov 8, 2025

Key West FLA USA

188d_0

{
"Aliased": [
"0.0537449",
"0.1074898",
"0.220485143",
"1",
"2",
"0.07771",
"0.131456"
],
"AliasedAmp": [
0.3409948998858548,
-0.2780361603280389,
0.15471670627000148,
-0.3285346958239726,
0.17644149707602652,
0.3005595377659302,
-0.45461283665293656
],
"AliasedPhase": [
6.583388232705002,
1.018538581126519,
4.948426133184595,
0.6219677490044827,
4.969659033102598,
9.837041607912267,
9.44092635913059
],
"DC": -0.12423808951744805,
"Damp": 0.08708897512348249,
"DeltaTime": 3.4166430998860955,
"Hold": 0.0014943329519264681,
"Imp_Amp": 195.4818873487873,
"Imp_Amp2": -0.5522421053672776,
"Imp_Stride": 7,
"Initial": 0.8174739560242182,
"LTE_Amp": 1.2575582052293228,
"LTE_Amp2": 0.4298032835098847,
"LTE_Freq": 136.9170535466343,
"LTE_Freq2": 0.011180925598876339,
"LTE_Phase": 1.495190318764891,
"LTE_Phase2": 7.873797958554444,
"LTE_Zero": -1.1957374181972968,
"Periods": [
"27.2122",
"27.3216",
"27.5545",
"13.63339513",
"13.69114014",
"13.6061",
"13.6608",
"13.71877789",
"6795.985773",
"1616.215172",
"2120.513853",
"13.77725",
"3232.430344",
"9.132931547",
"9.108450374",
"9.120674533",
"27.0926041",
"3397.992886",
"9.095011909",
"9.082856397",
"2190.530426",
"6.816697567"
],
"PeriodsAmp": [
0.5627091449876335,
0.13879824337278035,
0.0737132261048665,
-0.11218407126016473,
-0.025624055327801848,
0.020282684112866343,
-0.04939624926696036,
-0.04719043124174282,
0.014248813119031183,
-0.004943293140421929,
-0.04728412726624584,
-0.04558490066322549,
-0.009975688707115668,
0.0007799724568430707,
-0.020171695888039052,
-0.00980774144504957,
-0.018219102064584634,
-0.010654905583204524,
0.03861997187485363,
0.06686325268888788,
-0.018697939030539266,
-0.0473185714678123
],
"PeriodsPhase": [
14.689235080858671,
8.520301784548902,
5.728703789083029,
5.055688919044302,
9.755726022407483,
8.588975731308528,
13.767255528105279,
6.915652676847138,
8.06302519697901,
3.3519371582858004,
4.787570177645283,
7.675397728583513,
2.0002441584251964,
3.8758901073683014,
7.072223519455869,
7.730228277035376,
3.1527656545704774,
5.24318466403482,
7.300935637207466,
7.5502218077206225,
4.345634193017175,
7.677537949815777
],
"Year": 365.24708113327955
}

warne_vs_188d_bar warne_vs_188d_sin notepad

Galveston TX USA 161

161d_0

{
"Aliased": [
"0.0537449",
"0.1074898",
"0.220485143",
"1",
"2",
"0.07771",
"0.131456"
],
"AliasedAmp": [
0.2849518300473971,
-0.2313901915654936,
0.17224693972962973,
-0.15996487563447953,
0.17362771633244897,
0.2456870652457218,
-0.7943361400461847
],
"AliasedPhase": [
10.479548674641967,
6.3460520981307065,
5.3956522256822605,
0.7766271564528061,
4.639864014718314,
10.163044853945701,
10.747048388960225
],
"DC": -0.12423808951744805,
"Damp": 0.07399681567368248,
"DeltaTime": 3.4598988692053028,
"Hold": 0.0014943329519264681,
"Imp_Amp": 190.38731389664204,
"Imp_Amp2": 0.5229735423390199,
"Imp_Stride": 6,
"Initial": 0.11951484174827703,
"LTE_Amp": 1.4643296343421905,
"LTE_Amp2": 0.4298032835098847,
"LTE_Freq": 138.0952177699771,
"LTE_Freq2": 0.011180925598876339,
"LTE_Phase": 1.9772314930752097,
"LTE_Phase2": 7.873797958554444,
"LTE_Zero": -0.3618413882968936,
"Periods": [
"27.2122",
"27.3216",
"27.5545",
"13.63339513",
"13.69114014",
"13.6061",
"13.6608",
"13.71877789",
"6795.985773",
"1616.215172",
"2120.513853",
"13.77725",
"3232.430344",
"9.132931547",
"9.108450374",
"9.120674533",
"27.0926041",
"3397.992886",
"9.095011909",
"9.082856397",
"2190.530426",
"6.816697567"
],
"PeriodsAmp": [
0.557022723767692,
0.1571674532636112,
0.0797080326722912,
-0.10917989777871864,
-0.018911869844051445,
0.020282684112866343,
-0.0408112071492258,
-0.052365367747100995,
0.014864829185305798,
-0.0028552937901070393,
-0.033048664726229623,
-0.03779680890265911,
-0.02050592060287784,
0.0007799724568430707,
-0.023016438655133992,
-0.00980774144504957,
-0.0052865430398065065,
-0.01571437126048759,
0.04029163126372332,
0.06413348562208061,
-0.016326965315034414,
-0.05180741911565132
],
"PeriodsPhase": [
14.573550338576656,
8.388813031355642,
5.882928421182731,
5.045343575517033,
6.848443822219482,
8.891776424275934,
14.59914998713087,
7.419891343743528,
7.787908368232496,
5.3984951435568584,
4.456986444364476,
6.641857581074675,
2.000594040644599,
3.9888211356813783,
5.94786701315979,
6.323429218764891,
2.192398419968491,
5.203429626137839,
7.611015069547224,
7.800928420521588,
3.948676867104141,
6.949563332768747
],
"Year": 365.24708113327955
}

warne_vs_161d_bar warne_vs_161d_sin

Seattle WA USA #127

{
"Aliased": [
"0.0537449",
"0.1074898",
"0.220485143",
"1",
"2",
"0.07771",
"0.131456"
],
"AliasedAmp": [
0.15021758935096358,
-0.10823866447614891,
0.15441478560984975,
-0.2115863686029157,
0.07350473631861698,
0.42056509250512886,
-0.27896055722677243
],
"AliasedPhase": [
10.147820921061445,
4.46194556318653,
2.488632100859631,
2.199933277125925,
9.13068648299043,
12.014807133477161,
10.844619232540898
],
"DC": -0.12423808951744805,
"Damp": 0.08117725586645165,
"DeltaTime": 2.867951521122257,
"Hold": 0.0014943329519264681,
"Imp_Amp": 194.90375270958657,
"Imp_Amp2": 1.8387469418794362,
"Imp_Stride": 6,
"Initial": 0.11780381536620259,
"LTE_Amp": 1.4695915077628663,
"LTE_Amp2": 0.4298032835098847,
"LTE_Freq": 137.4195447406675,
"LTE_Freq2": 0.011180925598876339,
"LTE_Phase": 1.0221772793124562,
"LTE_Phase2": 7.873797958554444,
"LTE_Zero": 0.5232476881354089,
"Periods": [
"27.2122",
"27.3216",
"27.5545",
"13.63339513",
"13.69114014",
"13.6061",
"13.6608",
"13.71877789",
"6795.985773",
"1616.215172",
"2120.513853",
"13.77725",
"3232.430344",
"9.132931547",
"9.108450374",
"9.120674533",
"27.0926041",
"3397.992886",
"9.095011909",
"9.082856397",
"2190.530426",
"6.816697567"
],
"PeriodsAmp": [
0.5579746831303938,
0.1422287443625032,
0.09540100337921459,
-0.11136360648641389,
-0.041902762245940514,
0.019726721045017277,
-0.04629766764299344,
-0.046782876100208495,
0.015819982753916495,
-0.01633074871760218,
-0.0345958414060293,
-0.03854973472697,
-0.028649219079949995,
0.0007799724568430707,
-0.018527566938827976,
-0.009824511131749024,
-0.015358311790964176,
-0.01115851254789165,
0.03570314614514096,
0.0626545922485149,
-0.015758139247219197,
-0.05444207139096743
],
"PeriodsPhase": [
14.480341357349399,
8.523669280034888,
5.676566319346475,
4.967961372671325,
8.764545893648027,
8.248878176432465,
13.167867674314166,
7.62274234677957,
8.315377454616488,
5.874999475586233,
4.200970118434633,
7.7991041673520565,
2.652818444882988,
2.7502527628629423,
6.316244061043092,
7.2100785993521175,
5.318459128811323,
6.131738313545409,
7.291773948092493,
7.1910656412094385,
5.290416377107092,
6.500868725563091
],
"Year": 365.24708113327955
}

127d_0 warne_vs_127d_BAR warne_vs_127d_sin

Batumi Georgia Black Sea #51

51d_0 { "Aliased": [ "0.0537449", "0.1074898", "0.220485143", "1", "2", "0.07771", "0.131456" ], "AliasedAmp": [ 0.6636159546869447, -0.09531685714734608, 0.45331085321364606, -0.09230594155868857, 0.05086018183984196, 0.6070692092107837, -0.3094181833516383 ], "AliasedPhase": [ 5.459876795003137, 2.4961937779655576, 4.104862427631985, 0.5454753597418261, 3.7449017215713307, 10.911174368270531, 11.578936901627587 ], "DC": -0.12423808951744805, "Damp": 0.0862146479268188, "DeltaTime": 5.77729993819659, "Hold": 0.0014966553101824996, "Imp_Amp": 196.93143148731625, "Imp_Amp2": 1.7270081666013122, "Imp_Stride": 11, "Initial": 0.11786549247982156, "LTE_Amp": 1.6839347019283093, "LTE_Amp2": 0.4298032835098847, "LTE_Freq": 135.02690878747472, "LTE_Freq2": 0.011180925598876339, "LTE_Phase": 1.4565365551751186, "LTE_Phase2": 7.873797958554444, "LTE_Zero": -0.14747160618867886, "Periods": [ "27.2122", "27.3216", "27.5545", "13.63339513", "13.69114014", "13.6061", "13.6608", "13.71877789", "6795.985773", "1616.215172", "2120.513853", "13.77725", "3232.430344", "9.132931547", "9.108450374", "9.120674533", "27.0926041", "3397.992886", "9.095011909", "9.082856397", "2190.530426", "6.816697567" ], "PeriodsAmp": [ 0.5597199057390579, 0.13348499958658447, 0.09398968579568966, -0.11614689864652761, -0.016173234582983025, 0.02194634633767638, -0.03682954254629307, -0.04254536285838979, 0.014864829185305798, -0.004401090332376718, -0.0349389542196871, -0.030006564643560545, -0.017640390067929224, 0.0012067160527159408, -0.018754742223858978, -0.010671760093588768, -0.009608865044434424, -0.00915257566102827, 0.037000625155062826, 0.06887707558639777, -0.015311904655042088, -0.056693291150112034 ], "PeriodsPhase": [ 14.681707013724113, 8.68000039347857, 5.837794732963355, 4.7878319925644846, 10.23281983569338, 8.917676466952308, 13.418511587906876, 7.252119923059244, 7.8511668992712655, 8.224028389384555, 4.758320558366546, 6.837322504645968, 1.8521743195078904, 6.940261303351203, 5.725396263255512, 7.668494231276973, 6.003949355798829, 4.1896995392397836, 7.455407890103116, 6.947517575844298, 3.478332423862492, 7.940509520149278 ], "Year": 365.24708113327955 } warne_vs_51d_sin warne_vs_51d_bar

Cascais PT #52

52d_0 { "Aliased": [ "0.0537449", "0.1074898", "0.220485143", "1", "2", "0.07771", "0.131456" ], "AliasedAmp": [ 0.4281325132818794, -0.1040905526013869, 0.1806228244318623, -0.04795600930606042, 0.06330565447389577, 0.2886696903850974, -0.40743912052819403 ], "AliasedPhase": [ 8.313385908906783, 5.5059667248639315, 4.324670910801373, 0.4034463557737284, 5.19279386714742, 7.627142425201598, 14.687379057550622 ], "DC": -0.12423808951744805, "Damp": 0.08708897512348249, "DeltaTime": 3.391515587126048, "Hold": 0.0014943329519264681, "Imp_Amp": 193.45250291051536, "Imp_Amp2": 0.21460008706963266, "Imp_Stride": 5, "Initial": -0.1182156295052572, "LTE_Amp": 1.1456337514957091, "LTE_Amp2": 0.4298032835098847, "LTE_Freq": 136.61387426513923, "LTE_Freq2": 0.011180925598876339, "LTE_Phase": 1.6949801520587338, "LTE_Phase2": 7.873797958554444, "LTE_Zero": -1.0770341980368543, "Periods": [ "27.2122", "27.3216", "27.5545", "13.63339513", "13.69114014", "13.6061", "13.6608", "13.71877789", "6795.985773", "1616.215172", "2120.513853", "13.77725", "3232.430344", "9.132931547", "9.108450374", "9.120674533", "27.0926041", "3397.992886", "9.095011909", "9.082856397", "2190.530426", "6.816697567" ], "PeriodsAmp": [ 0.556870369043398, 0.13917289978816752, 0.08611268052405514, -0.10832372514443626, -0.020164082681043236, 0.019522460304407376, -0.05123219285767934, -0.04936322883115184, 0.015168065758754574, -0.015926447390857575, -0.03675776709249386, -0.05785324993100611, -0.019282507265843664, 0.0007799724568430707, -0.021451203343689093, -0.010123887125585063, -0.010864576173550723, -0.013123913215740727, 0.03946158891726661, 0.06521771851979763, -0.019696179630046915, -0.05491127661927035 ], "PeriodsPhase": [ 14.548605269364552, 8.477561554947064, 5.656208586472731, 5.105179942509547, 8.775092567495301, 8.334300800250386, 13.273553655533195, 7.362800755429539, 7.657342337975812, 3.5423862357886704, 4.699183053523781, 7.715669736575492, 1.8762561457306925, 4.869545214389658, 6.696594748385298, 7.116010375709213, -0.06005815474262812, 5.766162628252996, 7.28683111723954, 7.412754818972255, 4.390250422301994, 7.504099767885885 ], "Year": 365.24708113327955 } warne_vs_52d_bar warne_vs_52d_sin

Genoa IT #59

59d_0 { "Aliased": [ "0.0537449", "0.1074898", "0.220485143", "1", "2", "0.07771", "0.131456" ], "AliasedAmp": [ 0.1381714881952509, -0.26588546947245134, 0.4786154072391762, -0.10946254139329571, 0.08622119448101587, 0.25822784618360706, -0.3308046683238499 ], "AliasedPhase": [ 7.052746698445912, 4.163653484056796, 5.67996744940267, 1.3263692517840875, 5.877946675954494, 8.613404483436403, 12.163740500062978 ], "DC": -0.12423808951744805, "Damp": 0.10526106517893746, "DeltaTime": 5.278000627331327, "Hold": 0.0014943329519264681, "Imp_Amp": 193.74143018004023, "Imp_Amp2": 0.17311542064893357, "Imp_Stride": 3, "Initial": 0.1179505225124397, "LTE_Amp": 1.3507785763425069, "LTE_Amp2": 0.4298032835098847, "LTE_Freq": 137.8349334535079, "LTE_Freq2": 0.011180925598876339, "LTE_Phase": 1.9882423951931625, "LTE_Phase2": 7.873797958554444, "LTE_Zero": 0.8339612965348026, "Periods": [ "27.2122", "27.3216", "27.5545", "13.63339513", "13.69114014", "13.6061", "13.6608", "13.71877789", "6795.985773", "1616.215172", "2120.513853", "13.77725", "3232.430344", "9.132931547", "9.108450374", "9.120674533", "27.0926041", "3397.992886", "9.095011909", "9.082856397", "2190.530426", "6.816697567" ], "PeriodsAmp": [ 0.5542093305344632, 0.13807547869901457, 0.07946571638100972, -0.11114576535740203, -0.0237673328529667, 0.020282684112866343, -0.04741593955084768, -0.05022583436170726, 0.014864829185305798, -0.009021237911429747, -0.027893946528340905, -0.03574632377261504, -0.02156193014682469, 0.0008456751675044854, -0.020448292310727933, -0.00980774144504957, -0.004062037492095735, -0.007092391207298529, 0.0418235408501613, 0.06849493195642882, -0.026028319507888555, -0.05180741911565132 ], "PeriodsPhase": [ 14.539734149566328, 8.415858476927507, 5.87501078536494, 5.181960228910115, 8.215848569344987, 8.965072138771347, 13.918629062500562, 7.300092204374206, 7.52113709432072, 6.11417132822005, 5.446020937161856, 7.199699754836401, 1.722209771417399, 5.531706851232457, 5.911265867264891, 6.841739312622545, 1.9705242653585229, 5.393792554040225, 7.746471384574365, 7.383675741847033, 4.198540858303624, 6.8003898536831535 ], "Year": 365.24708113327955 } warne_vs_59d_bar warne_vs_59d_sin

@pukpr
Copy link
Copy Markdown
Author

pukpr commented Nov 8, 2025

Charleston SC USA

234d_0

{
"Aliased": [
"0.0537449",
"0.1074898",
"0.220485143",
"1",
"2",
"0.07771",
"0.131456"
],
"AliasedAmp": [
0.20471475925044783,
-0.06289038658079195,
0.3058873110641321,
-0.1876313551504848,
0.12144178005809395,
0.46605054177086525,
-0.14398365589469217
],
"AliasedPhase": [
3.2083081889296996,
0.23976263441697332,
7.836638933064594,
0.859064281342248,
5.168073765720232,
10.73100500563822,
9.558758467817581
],
"DC": -0.12423808951744805,
"Damp": 0.08956167313259208,
"DeltaTime": 3.4166430998860955,
"Hold": 0.0014943329519264681,
"Imp_Amp": 191.3712318546874,
"Imp_Amp2": -1.5456686179154275,
"Imp_Stride": 5,
"Initial": 0.11823803031276944,
"LTE_Amp": 1.2730786873853805,
"LTE_Amp2": 0.4298032835098847,
"LTE_Freq": 138.72434807439353,
"LTE_Freq2": 0.011180925598876339,
"LTE_Phase": 1.7314532494399293,
"LTE_Phase2": 7.873797958554444,
"LTE_Zero": 1.1173780444337156,
"Periods": [
"27.2122",
"27.3216",
"27.5545",
"13.63339513",
"13.69114014",
"13.6061",
"13.6608",
"13.71877789",
"6795.985773",
"1616.215172",
"2120.513853",
"13.77725",
"3232.430344",
"9.132931547",
"9.108450374",
"9.120674533",
"27.0926041",
"3397.992886",
"9.095011909",
"9.082856397",
"2190.530426",
"6.816697567"
],
"PeriodsAmp": [
0.5498248461002406,
0.14454815310816654,
0.08057520930528844,
-0.11385129097304479,
-0.006514004746647727,
0.018089885323600386,
-0.04289898709449787,
-0.04253554789220105,
0.012955391634748932,
-0.0033863783387157124,
-0.03614917987870938,
-0.035706371463414814,
-0.023773809419816258,
0.0007799724568430707,
-0.020977841902114547,
-0.01157281922141496,
-0.0246093013537243,
-0.016816260862158407,
0.04724745109206771,
0.05789451763161044,
-0.01445852053488546,
-0.050619099817044926
],
"PeriodsPhase": [
14.504715055701945,
8.614635243028008,
5.6291249795992595,
4.765859647556391,
10.53143496126562,
8.51826125065497,
13.707995115432084,
7.334999207955601,
8.075030263810744,
5.439659466753424,
5.07247981787881,
7.960187527076247,
1.8605932305207242,
4.883178441588487,
6.5959176533034745,
8.359760096826745,
3.3978232383255618,
5.418626460904614,
8.148087365304402,
7.120244013686766,
4.110341507559153,
7.701981484076849
],
"Year": 365.24708113327955
}
warne_vs_234d_bar
warne_vs_234d_sin

Mumbai India #43

43d_2

{
"Aliased": [
"0.0537449",
"0.1074898",
"0.220485143",
"1",
"2",
"0.07771",
"0.131456"
],
"AliasedAmp": [
0.33155553994336384,
-0.2495968988667219,
0.43520903367692637,
-0.06584899963499662,
0.11945208178610942,
0.29971882976844144,
-0.2119480796738941
],
"AliasedPhase": [
5.4956961340611965,
3.90640528947981,
5.50294861438661,
-1.2888827479186924,
5.287941956272245,
12.193490107064903,
10.192086938065321
],
"DC": -0.12423808951744805,
"Damp": 0.08715501667528083,
"DeltaTime": 3.222580547147465,
"Hold": 0.0014943329519264681,
"Imp_Amp": 195.95583443451292,
"Imp_Amp2": -0.1666709518217035,
"Imp_Stride": 6,
"Initial": 0.985542836483893,
"LTE_Amp": 1.3235276104397407,
"LTE_Amp2": 0.4298032835098847,
"LTE_Freq": 137.22875880421475,
"LTE_Freq2": 0.011180925598876339,
"LTE_Phase": 0.8216554762462828,
"LTE_Phase2": 7.873797958554444,
"LTE_Zero": 0.6535833082293453,
"Periods": [
"27.2122",
"27.3216",
"27.5545",
"13.63339513",
"13.69114014",
"13.6061",
"13.6608",
"13.71877789",
"6795.985773",
"1616.215172",
"2120.513853",
"13.77725",
"3232.430344",
"9.132931547",
"9.108450374",
"9.120674533",
"27.0926041",
"3397.992886",
"9.095011909",
"9.082856397",
"2190.530426",
"6.816697567"
],
"PeriodsAmp": [
0.5593626211532859,
0.13702974701732729,
0.07680105211748568,
-0.11326325626417946,
-0.025168670114979225,
0.018901585630387865,
-0.04797080246096962,
-0.04692642397741333,
0.01411742170100651,
-0.00997836418710087,
-0.04145171403204799,
-0.04614903845699203,
-0.021250610174953954,
0.0007799724568430707,
-0.021950810034382297,
-0.01094367577058475,
-0.009771141498707073,
-0.011880056692610877,
0.04029163126372332,
0.06530620669080443,
-0.019024886138778174,
-0.057437678667810896
],
"PeriodsPhase": [
14.50591747907592,
8.231901969192752,
5.459947792150559,
5.279287559250546,
8.384451707019597,
8.41284695956516,
14.302977758492988,
7.724892429793127,
7.866128475961979,
4.046834100461502,
4.55163241513447,
8.673167852261026,
2.7020106276323888,
4.925924163003643,
6.074433520246651,
7.601796055792546,
4.92438468488871,
4.2929237742943736,
7.552540064364933,
7.795395819266297,
4.885974867590206,
6.5527741221820515
],
"Year": 365.24708113327955
}
warne_vs_43d_bar
warne_vs_43d_sin

Atlantic City NJ USA #180

183d_0 { "Aliased": [ "0.0537449", "0.1074898", "0.220485143", "1", "2", "0.07771", "0.131456" ], "AliasedAmp": [ 0.26326811436239905, -0.21439542951064414, 0.6052691118574087, -0.1713498412892647, 0.0826037065449129, 0.5205082707666282, -0.08095165028908169 ], "AliasedPhase": [ 6.834631818117909, 1.9582579483961728, 7.3994928437945, 1.4046936668542687, 5.337808522866082, 10.60829502170644, 9.801625936939072 ], "DC": -0.12423808951744805, "Damp": 0.10891184675001123, "DeltaTime": 3.4166430998860955, "Hold": 0.0014943329519264681, "Imp_Amp": 191.2426598404169, "Imp_Amp2": 0.35486969410346914, "Imp_Stride": 11, "Initial": 0.11803077561919893, "LTE_Amp": 1.2218637691167968, "LTE_Amp2": 0.4298032835098847, "LTE_Freq": 137.73848615952488, "LTE_Freq2": 0.011180925598876339, "LTE_Phase": 1.6546034623383574, "LTE_Phase2": 7.873797958554444, "LTE_Zero": -1.7872952748765965, "Periods": [ "27.2122", "27.3216", "27.5545", "13.63339513", "13.69114014", "13.6061", "13.6608", "13.71877789", "6795.985773", "1616.215172", "2120.513853", "13.77725", "3232.430344", "9.132931547", "9.108450374", "9.120674533", "27.0926041", "3397.992886", "9.095011909", "9.082856397", "2190.530426", "6.816697567" ], "PeriodsAmp": [ 0.5458123662075899, 0.1389818338654034, 0.07983345370408032, -0.10659930884964594, -0.0157276082743488, 0.02271644091596895, -0.05821164492360029, -0.04414007179213993, 0.014864829185305798, -0.0033326341474130944, -0.036461194094934424, -0.03644102380093811, -0.023059144580918615, 0.0007799724568430707, -0.022147824534295615, -0.00980774144504957, -0.0063862098312069205, -0.01690591724665482, 0.040247498568614704, 0.07224796981357799, -0.0226148072694911, -0.052538340891569245 ], "PeriodsPhase": [ 14.571674843826756, 8.576239875184799, 5.5729773124033075, 5.052140099308017, 8.680642128817508, 7.933130654393463, 13.62856480389017, 7.611390566119361, 8.766654402728925, 5.2754792139019715, 4.3588582062450385, 7.565594079616601, 2.0740084161645456, 4.535878410239164, 6.3773039248812555, 7.255910344075061, 0.10084321116221964, 4.772453761269514, 7.332353277146504, 7.671778453572322, 3.6284764397505214, 7.516661903209313 ], "Year": 365.24708113327955 } warne_vs_180d_bar warne_vs_180d_sin

@pukpr
Copy link
Copy Markdown
Author

pukpr commented Nov 8, 2025

Charlottetown CA #427

427d_0

{
"Aliased": [
"0.0537449",
"0.1074898",
"0.220485143",
"1",
"2",
"0.07771",
"0.131456"
],
"AliasedAmp": [
0.37164416033804254,
-0.40653119309370433,
0.18853913404107672,
-0.19466081338644636,
0.04061581415561791,
0.6320997362719325,
-0.4215723736715605
],
"AliasedPhase": [
6.774839140130368,
2.738111413745394,
7.431540924950377,
-0.5947217075613325,
3.1312406368496335,
10.996872410730328,
13.00065493236072
],
"DC": -0.12423808951744805,
"Damp": 0.08698026063585368,
"DeltaTime": 3.4166430998860955,
"Hold": 0.0014943329519264681,
"Imp_Amp": 193.27601446073498,
"Imp_Amp2": -0.052998547862333587,
"Imp_Stride": 8,
"Initial": 0.11817865226741639,
"LTE_Amp": 1.4347345468860337,
"LTE_Amp2": 0.4298032835098847,
"LTE_Freq": 138.10688190856342,
"LTE_Freq2": 0.011180925598876339,
"LTE_Phase": 1.702028579138005,
"LTE_Phase2": 7.873797958554444,
"LTE_Zero": -0.3620794938187635,
"Periods": [
"27.2122",
"27.3216",
"27.5545",
"13.63339513",
"13.69114014",
"13.6061",
"13.6608",
"13.71877789",
"6795.985773",
"1616.215172",
"2120.513853",
"13.77725",
"3232.430344",
"9.132931547",
"9.108450374",
"9.120674533",
"27.0926041",
"3397.992886",
"9.095011909",
"9.082856397",
"2190.530426",
"6.816697567"
],
"PeriodsAmp": [
0.560587141021633,
0.13779636379605872,
0.08172781597045514,
-0.10908702678097774,
-0.02231969091276521,
0.02046789973678818,
-0.05333074895084436,
-0.04795800364907156,
0.013556521187121171,
-0.006101281151141104,
-0.0354754264713027,
-0.04256210924134303,
-0.02069409443685446,
0.0005929356023057397,
-0.020097511561283206,
-0.010237717413303123,
-0.017112279505503116,
-0.01183522006225304,
0.039838742600887087,
0.06890358135992532,
-0.022963994660580175,
-0.04488896058343625
],
"PeriodsPhase": [
14.58186663406842,
8.518467728071194,
5.875978386338978,
4.986828256651601,
7.80502567604932,
8.856463899405407,
13.794750223833109,
7.493883315037738,
8.20156879661747,
6.2401316385082986,
4.012336266855111,
6.63503312089956,
1.542385860234171,
4.0387766396175895,
6.229718114664815,
6.435595578170644,
0.9197391413544929,
3.308591311697076,
7.3960562036494215,
7.562862146724656,
3.5739798143486956,
6.101808617568368
],
"Year": 365.24708113327955
}

warne_vs_427d_bar warne_vs_427d_sin

Neuville CA #192

192d_0

{
"Aliased": [
"0.0537449",
"0.1074898",
"0.220485143",
"1",
"2",
"0.07771",
"0.131456"
],
"AliasedAmp": [
0.3276099062627234,
-0.052790199960295964,
0.10792566996967108,
-0.14480529773010115,
0.12977774071483092,
0.5180689876946275,
-0.35981411498223564
],
"AliasedPhase": [
5.191253805511765,
7.288491525635083,
7.774192404015498,
2.7083527067718896,
4.254721458259628,
11.99325888990539,
10.462793867687258
],
"DC": -0.12423808951744805,
"Damp": 0.08708897512348249,
"DeltaTime": 3.4166430998860955,
"Hold": 0.0014943329519264681,
"Imp_Amp": 194.2035315234661,
"Imp_Amp2": -1.9050747575227782,
"Imp_Stride": 4,
"Initial": 0.11712754009526351,
"LTE_Amp": 1.0578736112978229,
"LTE_Amp2": 0.4298032835098847,
"LTE_Freq": 135.47711148623492,
"LTE_Freq2": 0.011180925598876339,
"LTE_Phase": 1.7862661687200936,
"LTE_Phase2": 7.873797958554444,
"LTE_Zero": 0.08329334825181382,
"Periods": [
"27.2122",
"27.3216",
"27.5545",
"13.63339513",
"13.69114014",
"13.6061",
"13.6608",
"13.71877789",
"6795.985773",
"1616.215172",
"2120.513853",
"13.77725",
"3232.430344",
"9.132931547",
"9.108450374",
"9.120674533",
"27.0926041",
"3397.992886",
"9.095011909",
"9.082856397",
"2190.530426",
"6.816697567"
],
"PeriodsAmp": [
0.5576960413917874,
0.156034037510972,
0.08277548210691597,
-0.11136360648641389,
-0.02391393347269841,
0.02134554493065911,
-0.04797080246096962,
-0.05328449165649692,
0.014864829185305798,
-0.008023189476667365,
-0.03483719312816892,
-0.03574632377261504,
-0.02050592060287784,
0.0007799724568430707,
-0.020400309727207095,
-0.010098023303394378,
-0.004876510934509405,
-0.011446953950020038,
0.039923361228420176,
0.07224098249177599,
-0.018697939030539266,
-0.05245189920179064
],
"PeriodsPhase": [
14.660731750385171,
8.550660953075665,
5.132182309374807,
5.093740264760902,
8.866444038111132,
8.493986045502972,
13.502368495507469,
7.53943597320582,
7.18439475555415,
5.463774984377231,
4.412160619179827,
7.782388901017159,
1.6056288425612923,
3.7570904100773572,
6.5622787194683525,
7.364611964466578,
1.8863619918823737,
3.877574505765739,
7.953732583525539,
7.467299345664705,
3.6914043460860513,
6.491854754783689
],
"Year": 365.24708113327955
}

warne_vs_192d_bar warne_vs_192d_sin

Denison AUS #196

denison_0

{
"Aliased": [
"0.0537449",
"0.1074898",
"0.220485143",
"1",
"2",
"0.07771",
"0.131456"
],
"AliasedAmp": [
0.07593678118596686,
-0.294491137575034,
-0.10979388618503769,
-0.05447643496076926,
-0.052478957116070646,
0.11594058588041375,
0.1631573518006814
],
"AliasedPhase": [
14.792740808261893,
3.026773128328399,
4.348739784123433,
3.5141295969167374,
6.36614724129982,
7.054752183428893,
10.34583725588143
],
"DC": -0.18836772968587992,
"Damp": 0.09859174553404282,
"DeltaTime": "3.416666667",
"Hold": 0.001497241950062863,
"Imp_Amp": 193.49614207074475,
"Imp_Amp2": -5.3049833706815965,
"Imp_Stride": 2,
"Initial": 0.11383258316683101,
"LTE_Amp": 1.1398495760877152,
"LTE_Amp2": 0.24475198263665468,
"LTE_Freq": 138.2741196691773,
"LTE_Freq2": 0.011180925598876339,
"LTE_Phase": 0.71374497136473,
"LTE_Phase2": 6.860982494238797,
"LTE_Zero": 0.4316648862791745,
"Periods": [
"27.2122",
"27.3216",
"27.5545",
"13.63339513",
"13.69114014",
"13.6061",
"13.6608",
"13.71877789",
"6795.985773",
"1616.215172",
"2120.513853",
"13.77725",
"3232.430344",
"9.132931547",
"9.108450374",
"9.120674533",
"27.0926041",
"3397.992886",
"9.095011909",
"9.082856397",
"2190.530426",
"6.816697567"
],
"PeriodsAmp": [
0.507353783101449,
0.12377417381306124,
0.08169889744527584,
-0.1113925231041446,
-0.022460316762163927,
0.023766659727647427,
-0.045159385935718284,
0.012176355010265955,
0.01568374397856998,
-0.028153112336483672,
0.006773691012926526,
-0.012848529875388126,
-0.008835261897373107,
0.0007552321881619805,
-0.018886600090698515,
-0.013469563314249696,
-0.04656412466046384,
-0.007163784685813143,
0.0235418274608668,
0.032200464645658344,
-0.023569534988125723,
-0.02841986434451475
],
"PeriodsPhase": [
14.644854386765125,
8.992974481677068,
5.679330009099294,
4.798846566978053,
9.337151133202537,
8.497053481735255,
14.219037154245166,
7.338315207959651,
8.015090889643654,
4.911862706651693,
7.794367827675466,
9.221328204768776,
1.673184861263114,
3.877438630192199,
6.51584024650202,
7.51314177779697,
3.4929234053843743,
5.041004105431371,
7.719677407443218,
8.055412372141594,
4.710640210998257,
7.671160202386837
],
"Year": "365.2495755"
}

warne_vs_denison_bar warne_vs_denison_sin

Pensacola FL USA #246

246d_0

{
"Aliased": [
"0.0537449",
"0.1074898",
"0.220485143",
"1",
"2",
"0.07771",
"0.131456"
],
"AliasedAmp": [
0.04739709820014355,
-0.14878011801739915,
0.11021959833945325,
-0.18572276640550756,
0.07304226103673307,
0.2437062178445756,
-0.30628586730582086
],
"AliasedPhase": [
6.281694480348819,
5.68582642266709,
7.760235723390187,
1.2109266452077811,
5.300558377564179,
11.068211618873365,
11.696218460814054
],
"DC": -0.009067320436550008,
"Damp": 0.05192112932166543,
"DeltaTime": 3.4166430998860955,
"Hold": 0.0014943329519264681,
"Imp_Amp": 188.77131816404858,
"Imp_Amp2": 1.1785214414993501,
"Imp_Stride": 4,
"Initial": 0.11925602609827855,
"LTE_Amp": 1.2260140936136514,
"LTE_Amp2": 0.4298032835098847,
"LTE_Freq": 138.6266136193281,
"LTE_Freq2": 0.011180925598876339,
"LTE_Phase": 2.2542391689187666,
"LTE_Phase2": 7.873797958554444,
"LTE_Zero": -0.6991324513996349,
"Periods": [
"27.2122",
"27.3216",
"27.5545",
"13.63339513",
"13.69114014",
"13.6061",
"13.6608",
"13.71877789",
"6795.985773",
"1616.215172",
"2120.513853",
"13.77725",
"3232.430344",
"9.132931547",
"9.108450374",
"9.120674533",
"27.0926041",
"3397.992886",
"9.095011909",
"9.082856397",
"2190.530426",
"6.816697567"
],
"PeriodsAmp": [
0.5598491015489612,
0.14004721469351294,
0.08133289364697574,
-0.11136360648641389,
-0.038683652053604814,
0.020282684112866343,
-0.04797080246096962,
-0.03765549374481088,
0.014650687567986743,
-0.009021237911429747,
-0.03745586608206008,
-0.04440623760309717,
-0.021018524859699704,
0.0007799724568430707,
-0.020841193386408576,
-0.00980774144504957,
-0.01161056165246187,
-0.006445000295979551,
0.04347226398167965,
0.0681352634792195,
-0.02272636076927288,
-0.05521793596773092
],
"PeriodsPhase": [
14.565974510529228,
8.428078036438112,
5.296357024357875,
4.781473050346918,
9.76503532950242,
7.601912553036654,
14.566564574307725,
7.190397985626003,
7.561801271683999,
4.136540018833237,
3.9318927193230095,
7.709305826538754,
1.6985895681272671,
6.078095682610155,
6.818703853377804,
7.379666949145836,
4.420538808288742,
2.4299152369016603,
7.078791827101675,
7.233491645411269,
4.382696551860815,
7.148660329275028
],
"Year": 365.24708113327955
}

warne_vs_246_bar warne_vs_246_sin

@pukpr
Copy link
Copy Markdown
Author

pukpr commented Nov 8, 2025

Newlyn UK #202

202d_0

{
"Aliased": [
"0.0537449",
"0.1074898",
"0.220485143",
"1",
"2",
"0.07771",
"0.131456"
],
"AliasedAmp": [
0.5970337187704796,
-0.31684346939672836,
0.16967870979219635,
-0.18474594609846812,
0.06145775909625154,
0.1765874723811921,
-0.08963458227184953
],
"AliasedPhase": [
8.548491633560715,
5.350992752287273,
8.117866848801938,
-0.2639558111747108,
4.445329543715082,
9.432252085101146,
11.46067786600347
],
"DC": -0.12423808951744805,
"Damp": 0.08708897512348249,
"DeltaTime": 3.4166430998860955,
"Hold": 0.0014943329519264681,
"Imp_Amp": 194.3311275230587,
"Imp_Amp2": 1.9525696555588528,
"Imp_Stride": 8,
"Initial": 0.11803077561919893,
"LTE_Amp": 1.1790697447617517,
"LTE_Amp2": 0.4298032835098847,
"LTE_Freq": 135.15462360388528,
"LTE_Freq2": 0.011180925598876339,
"LTE_Phase": 1.632354173736939,
"LTE_Phase2": 7.873797958554444,
"LTE_Zero": -0.07570230166502832,
"Periods": [
"27.2122",
"27.3216",
"27.5545",
"13.63339513",
"13.69114014",
"13.6061",
"13.6608",
"13.71877789",
"6795.985773",
"1616.215172",
"2120.513853",
"13.77725",
"3232.430344",
"9.132931547",
"9.108450374",
"9.120674533",
"27.0926041",
"3397.992886",
"9.095011909",
"9.082856397",
"2190.530426",
"6.816697567"
],
"PeriodsAmp": [
0.5602142444370494,
0.13878995675564604,
0.07992122139006537,
-0.11210358952528061,
-0.021776255035546508,
0.020184088256110178,
-0.05075519261081356,
-0.044083762648779334,
0.013077004917179901,
-0.005102351681605272,
-0.039234829488535725,
-0.0333389062097086,
-0.015330247078157232,
0.0007799724568430707,
-0.02096354622583586,
-0.009525797424776578,
-0.015476407435485815,
-0.013624308492457531,
0.04029163126372332,
0.06870651651857536,
-0.0237232691200475,
-0.0561050877458257
],
"PeriodsPhase": [
14.599358561384266,
8.407563945174322,
5.422829321129335,
4.664664804516028,
8.790326653991116,
7.936559912760931,
14.469909912526536,
7.484794536532296,
7.936107380681858,
5.285676981004567,
4.251041160856465,
7.805816302621496,
2.669332100585589,
5.94828978004248,
6.009527085463049,
7.904837771197639,
0.6610060157656906,
3.5634629105233304,
7.858119647659821,
7.280551091021352,
3.3349322511617236,
6.619833515259977
],
"Year": 365.24708113327955
}

warne_vs_202_bar warne_vs_202_sin

North Shields UK #95

95d_0

{
"Aliased": [
"0.0537449",
"0.1074898",
"0.220485143",
"1",
"2",
"0.07771",
"0.131456"
],
"AliasedAmp": [
0.47181734686089044,
-0.5539131837583232,
0.20978487272127994,
-0.24658205567454913,
0.05091194523979485,
0.6477987233335977,
-0.26608551643396255
],
"AliasedPhase": [
7.985507013378384,
4.675671167326243,
5.843763893462894,
-0.17645738379258394,
3.9579200669844745,
8.147270154533995,
13.15511413347626
],
"DC": -0.12423808951744805,
"Damp": 0.07555160691021878,
"DeltaTime": 3.4166430998860955,
"Hold": 0.0014943329519264681,
"Imp_Amp": 195.0622624669937,
"Imp_Amp2": 0.011411219763124444,
"Imp_Stride": 1,
"Initial": 0.11803077561919893,
"LTE_Amp": 1.5786992575828873,
"LTE_Amp2": 0.4298032835098847,
"LTE_Freq": 137.7010056794688,
"LTE_Freq2": 0.011180925598876339,
"LTE_Phase": 1.6569993818815463,
"LTE_Phase2": 7.873797958554444,
"LTE_Zero": 0.5744512401310677,
"Periods": [
"27.2122",
"27.3216",
"27.5545",
"13.63339513",
"13.69114014",
"13.6061",
"13.6608",
"13.71877789",
"6795.985773",
"1616.215172",
"2120.513853",
"13.77725",
"3232.430344",
"9.132931547",
"9.108450374",
"9.120674533",
"27.0926041",
"3397.992886",
"9.095011909",
"9.082856397",
"2190.530426",
"6.816697567"
],
"PeriodsAmp": [
0.5636768445433809,
0.1389818338654034,
0.08360153636947505,
-0.11106918668102622,
-0.021827706962536327,
0.020443658802318194,
-0.05490915383183028,
-0.048168415552790785,
0.014589880979583664,
-0.026631772564049087,
-0.04075263356992672,
-0.0386879060451214,
-0.025186827167236973,
0.0007799724568430707,
-0.02096354622583586,
-0.00980774144504957,
-0.013050266139613418,
-0.011293770395692041,
0.04029163126372332,
0.0694316680583656,
-0.016395182440004867,
-0.05180741911565132
],
"PeriodsPhase": [
14.480338111189884,
8.478515917502156,
6.088890716689777,
4.931803275366273,
7.708807250295492,
8.779571772034524,
14.164563712135704,
7.2630679888452,
7.572378342205644,
2.694588331425868,
4.479406834982581,
7.815619490843289,
1.5530656287643494,
5.876403413338103,
5.917931076750135,
7.505403582081175,
5.462805076783872,
3.7127506592846187,
8.014930604455477,
7.302169798709623,
2.748381455705328,
7.262800348522562
],
"Year": 365.24708113327955
}

warne_vs_95d_bar warne_vs_95d_sin

TNA

tna_0

{
"Aliased": [
"0.0537449",
"0.1074898",
"0.220485143",
"1",
"2",
"0.07771",
"0.131456"
],
"AliasedAmp": [
0.26673345379674857,
-0.16548487005465415,
0.1361909968514194,
-0.10268633218968212,
0.0208425569248999,
0.08999098334842272,
-0.25414753953980856
],
"AliasedPhase": [
7.3004438062369985,
4.172139801164424,
6.982435138754504,
-2.673996586644861,
4.214624250401252,
11.938197872379424,
12.685851261460703
],
"DC": -0.12423808951744805,
"Damp": 0.10183916596221852,
"DeltaTime": 3.4166430998860955,
"Hold": 0.0014943329519264681,
"Imp_Amp": 194.31655136925872,
"Imp_Amp2": 0.6354848059696669,
"Imp_Stride": 4,
"Initial": 0.2106179852990158,
"LTE_Amp": 1.556291619649493,
"LTE_Amp2": 0.4298032835098847,
"LTE_Freq": 135.1541444044681,
"LTE_Freq2": 0.011180925598876339,
"LTE_Phase": 1.5609532415625322,
"LTE_Phase2": 7.873797958554444,
"LTE_Zero": -1.357551614250471,
"Periods": [
"27.2122",
"27.3216",
"27.5545",
"13.63339513",
"13.69114014",
"13.6061",
"13.6608",
"13.71877789",
"6795.985773",
"1616.215172",
"2120.513853",
"13.77725",
"3232.430344",
"9.132931547",
"9.108450374",
"9.120674533",
"27.0926041",
"3397.992886",
"9.095011909",
"9.082856397",
"2190.530426",
"6.816697567"
],
"PeriodsAmp": [
0.558192828157678,
0.1534611448352599,
0.08108999466589234,
-0.11136360648641389,
-0.019716108966873862,
0.01910014721158485,
-0.05587276896491024,
-0.04756109168129282,
0.014864829185305798,
-0.013741453969205163,
-0.027159082648650294,
-0.03459552554529923,
-0.02243829551625692,
0.0007799724568430707,
-0.020796119832371163,
-0.00980774144504957,
-0.015370081534247997,
-0.009829125892091475,
0.04601144365752377,
0.07400606558635117,
-0.027354324676705524,
-0.05634287834785263
],
"PeriodsPhase": [
14.649368764315303,
8.64544966973801,
5.547426959549825,
5.322651075538293,
6.688633731035232,
8.782507769693026,
13.83342878155782,
6.521094640414385,
7.525924636672499,
5.381349264102324,
5.2898413798030575,
7.1988625930975525,
1.2519302814091962,
3.895469725572275,
6.213708427585262,
7.460457366021562,
3.4722345532505794,
5.241050300651924,
6.89580511489168,
7.571165508460786,
2.2685017337599915,
6.679241506946591
],
"Year": 365.24708113327955
}

warne_vs_tna_bar warne_vs_tna_sin

#TSA

tsa_0

{
"Aliased": [
"0.0537449",
"0.1074898",
"0.220485143",
"1",
"2",
"0.07771",
"0.131456"
],
"AliasedAmp": [
0.3590519037509309,
-0.12493874268206273,
0.12232464834847113,
-0.05231913708478813,
0.04749621757719419,
0.2948089777789843,
-0.3283745123962406
],
"AliasedPhase": [
8.330329241157301,
3.0780761183901806,
4.664728958745214,
2.2952224680925473,
5.253652058040364,
10.380490586824022,
12.516554876539868
],
"DC": -0.12423808951744805,
"Damp": 0.08708897512348249,
"DeltaTime": 3.234990234301396,
"Hold": 0.0014943329519264681,
"Imp_Amp": 193.54339637484898,
"Imp_Amp2": 1.6058576720386044,
"Imp_Stride": 3,
"Initial": 0.11794127140075791,
"LTE_Amp": 1.4937803713713351,
"LTE_Amp2": 0.4298032835098847,
"LTE_Freq": 137.69420275416326,
"LTE_Freq2": 0.011180925598876339,
"LTE_Phase": 2.2291166682830337,
"LTE_Phase2": 7.873797958554444,
"LTE_Zero": -2.123839123720318,
"Periods": [
"27.2122",
"27.3216",
"27.5545",
"13.63339513",
"13.69114014",
"13.6061",
"13.6608",
"13.71877789",
"6795.985773",
"1616.215172",
"2120.513853",
"13.77725",
"3232.430344",
"9.132931547",
"9.108450374",
"9.120674533",
"27.0926041",
"3397.992886",
"9.095011909",
"9.082856397",
"2190.530426",
"6.816697567"
],
"PeriodsAmp": [
0.5825528034616155,
0.14827180820066224,
0.09392914637745788,
-0.10797332635038917,
-0.015705034271207324,
0.020901634229883736,
-0.04584304110843033,
-0.03778959718746403,
0.011942782716548188,
-0.012935611351126275,
-0.02908180987932986,
-0.051032783410218184,
-0.016461132657232827,
0.0007799724568430707,
-0.021269219975000014,
-0.01029331056954896,
-0.00151433433474359,
-0.011006510161586236,
0.03977993299052976,
0.06905045534845972,
-0.018697939030539266,
-0.045670530018600795
],
"PeriodsPhase": [
14.724784392280448,
8.61239999610914,
5.7065660389011725,
5.169333674991787,
9.475590965626962,
8.16133779188922,
13.486234692137067,
6.7510820509864695,
7.175858016085284,
4.510516046352033,
5.4376740630488465,
8.584088819017422,
1.923734914376801,
4.323144335858922,
6.158154133551782,
7.470690470193471,
5.162035501231241,
2.1886650136049446,
7.434574602081634,
7.334297832001685,
3.3477944199838348,
6.9699038238591315
],
"Year": 365.24708113327955
}

warne_vs_tsa_bar warne_vs_tsa_sin

IOD East

iodE_0

{
"Aliased": [
"0.0537449",
"0.1074898",
"0.220485143",
"1",
"2",
"0.07771",
"0.131456"
],
"AliasedAmp": [
0.05182861733719848,
-0.14284221024746507,
0.13270612201055548,
-0.07245472942255009,
0.03851900826406665,
0.1026281622403975,
-0.06366372887097081
],
"AliasedPhase": [
9.758876145914847,
4.233836859103485,
8.153084008303155,
-1.9218308950285221,
6.763385928514072,
11.296091678732413,
10.40828180457574
],
"DC": -0.5612379137430962,
"Damp": 0.08708897512348249,
"DeltaTime": 3.4166430998860955,
"Hold": 0.0014943329519264681,
"Imp_Amp": 193.28809175076523,
"Imp_Amp2": 0.4511293229012204,
"Imp_Stride": 2,
"Initial": 0.11820967953439633,
"LTE_Amp": 0.7979015927808953,
"LTE_Amp2": 0.4298032835098847,
"LTE_Freq": 136.97872872134926,
"LTE_Freq2": 0.011180925598876339,
"LTE_Phase": 1.993027849208977,
"LTE_Phase2": 7.873797958554444,
"LTE_Zero": -1.3439965035967505,
"Periods": [
"27.2122",
"27.3216",
"27.5545",
"13.63339513",
"13.69114014",
"13.6061",
"13.6608",
"13.71877789",
"6795.985773",
"1616.215172",
"2120.513853",
"13.77725",
"3232.430344",
"9.132931547",
"9.108450374",
"9.120674533",
"27.0926041",
"3397.992886",
"9.095011909",
"9.082856397",
"2190.530426",
"6.816697567"
],
"PeriodsAmp": [
0.5624337325432384,
0.14097694023716753,
0.08615646246324521,
-0.11919430576228535,
-0.02636943665394652,
0.020282684112866343,
-0.039130720588964066,
-0.035645548557342956,
0.014864829185305798,
-0.021415199768559365,
-0.039890374044301284,
-0.040569736309826146,
-0.014453942745169113,
0.0007799724568430707,
-0.0343526987058957,
-0.012032501225648478,
-0.005099437576941774,
-0.016444721453796947,
0.04276241315330485,
0.06464989708068236,
-0.019384040793265996,
-0.07957207262020484
],
"PeriodsPhase": [
14.507614751575929,
8.639196770221112,
5.855233383061084,
5.222536891355941,
8.423039758880787,
8.845639185236097,
13.734063112974829,
6.608384006994017,
7.64428164976391,
5.1751871536590714,
4.1853727264770155,
9.592613790948366,
2.868619028297221,
4.816795034498696,
5.948327530517551,
6.577127528114543,
1.6700522377225764,
5.932159993956636,
7.041661664153381,
7.11717791966073,
2.952171454399953,
6.711743916027111
],
"Year": 365.24708113327955
}
warne_vs_iodE_bar
warne_vs_iodE_sin

PDO

pdo_0

{
"Aliased": [
"0.0537449",
"0.1074898",
"0.220485143",
"1",
"2",
"0.07771",
"0.131456"
],
"AliasedAmp": [
0.4612094092742707,
-0.4057258615493188,
0.06581646380713209,
-0.020498894958240057,
0.008247183471606415,
0.259227814171985,
-0.4228097073613806
],
"AliasedPhase": [
10.707120788426284,
4.683202538265659,
7.882860107464821,
-1.9072944144995378,
7.661800108880511,
7.298212137323596,
11.704341306869646
],
"DC": -0.12423808951744805,
"Damp": 0.08648581809434175,
"DeltaTime": 3.4166430998860955,
"Hold": 0.0014943329519264681,
"Imp_Amp": 196.31249659216905,
"Imp_Amp2": -1.9162398052703682,
"Imp_Stride": 0,
"Initial": 0.4085241448707284,
"LTE_Amp": 1.2857244372238301,
"LTE_Amp2": 0.4298032835098847,
"LTE_Freq": 136.23748674930874,
"LTE_Freq2": 0.011180925598876339,
"LTE_Phase": 1.6711281302857792,
"LTE_Phase2": 7.873797958554444,
"LTE_Zero": -0.409200742519741,
"Periods": [
"27.2122",
"27.3216",
"27.5545",
"13.63339513",
"13.69114014",
"13.6061",
"13.6608",
"13.71877789",
"6795.985773",
"1616.215172",
"2120.513853",
"13.77725",
"3232.430344",
"9.132931547",
"9.108450374",
"9.120674533",
"27.0926041",
"3397.992886",
"9.095011909",
"9.082856397",
"2190.530426",
"6.816697567"
],
"PeriodsAmp": [
0.5539173986085675,
0.14704098359922185,
0.07959601497666019,
-0.09941645264874203,
-0.030972403734097494,
0.023460291212438686,
-0.053803445745032256,
-0.07223137423826062,
0.0152451660844928,
-0.006630078311160734,
-0.033472212918549904,
-0.042010151728751444,
-0.020262568443908374,
0.0007799724568430707,
-0.021793103432023637,
-0.00980774144504957,
0.005049098272150198,
-0.008229735787925553,
0.04399557715238525,
0.06698603044528742,
-0.015286888308040553,
-0.04113882739140403
],
"PeriodsPhase": [
14.625777556627808,
8.54284671384598,
6.399936015429469,
5.1216725299511054,
8.389344073297842,
8.616364058702501,
14.026566034972975,
6.84536076486484,
7.897102617986418,
6.569375980977119,
5.056712570027924,
8.046230801156458,
2.3608360339081504,
1.9348490262308011,
5.258832212062222,
7.801341917200824,
4.768111110195202,
6.909067568296704,
7.091309588674412,
7.588832654156258,
4.8593310677982915,
5.87477335323288
],
"Year": 365.24708113327955
}

warne_vs_pdo_bar warne_vs_pdo_sin

@pukpr
Copy link
Copy Markdown
Author

pukpr commented Nov 8, 2025

EMI

emi_0

{
"Aliased": [
"0.0537449",
"0.1074898",
"0.220485143",
"1",
"2",
"0.07771",
"0.131456"
],
"AliasedAmp": [
0.3890090145007225,
-0.3629672257229209,
0.3462816075133119,
-0.026627848970565915,
0.03601351212523533,
0.4219038586195901,
-0.19202623665607899
],
"AliasedPhase": [
5.934994176343773,
4.996135595141794,
2.8341949638240496,
3.785941498585227,
6.153462692597887,
7.581415116999557,
12.48314031802713
],
"DC": -0.12423808951744805,
"Damp": 0.08604611151113274,
"DeltaTime": 3.4166430998860955,
"Hold": 0.0014943329519264681,
"Imp_Amp": 192.9857599244885,
"Imp_Amp2": 0.22692675367528053,
"Imp_Stride": 0,
"Initial": 0.11803077561919893,
"LTE_Amp": 1.3326679864274438,
"LTE_Amp2": 0.4298032835098847,
"LTE_Freq": 137.2452424208781,
"LTE_Freq2": 0.011180925598876339,
"LTE_Phase": 1.5728085343576215,
"LTE_Phase2": 7.873797958554444,
"LTE_Zero": 0.5534569706607894,
"Periods": [
"27.2122",
"27.3216",
"27.5545",
"13.63339513",
"13.69114014",
"13.6061",
"13.6608",
"13.71877789",
"6795.985773",
"1616.215172",
"2120.513853",
"13.77725",
"3232.430344",
"9.132931547",
"9.108450374",
"9.120674533",
"27.0926041",
"3397.992886",
"9.095011909",
"9.082856397",
"2190.530426",
"6.816697567"
],
"PeriodsAmp": [
0.560290288607901,
0.1303401188430874,
0.08219410865607032,
-0.11136360648641389,
-0.03152839766455192,
0.022031175826172054,
-0.051717425451235664,
-0.04505643265627693,
0.014864829185305798,
-0.0029815758415992835,
-0.030465351698478693,
-0.026775438179247532,
-0.0213868292852064,
0.0007799724568430707,
-0.02455605720104321,
-0.008697329530663534,
-0.018767921972677563,
-0.015166672171790994,
0.03999092925782314,
0.05809969806299915,
-0.02340205999091435,
-0.05329590239051155
],
"PeriodsPhase": [
14.703646965074674,
8.543391077850828,
5.90101558157812,
5.111343465970177,
8.776393457689808,
8.482251230526828,
13.310831114146657,
7.433184455761478,
8.04508322837287,
4.1614080254990515,
3.7439643250794736,
8.372323517746425,
1.0362457744553848,
2.217373626693431,
6.8625470061824005,
7.244818961100332,
3.410273610240499,
5.262426280279332,
7.783736947786039,
6.886825223891781,
3.570728196768691,
6.144432284831799
],
"Year": 365.24708113327955
}

warne_vs_emi_sin warne_vs_iodE_bar

ic3

ic3_0

{
"Aliased": [
"0.0537449",
"0.1074898",
"0.220485143",
"1",
"2",
"0.07771",
"0.131456"
],
"AliasedAmp": [
0.08859149321213453,
-0.19330035426025474,
-0.00204659229314453,
-0.6175174949788526,
0.3053759422779131,
0.18000408946701585,
-0.08826732995623152
],
"AliasedPhase": [
8.171150380583896,
4.265457563999319,
8.827162260845466,
-0.25225840027607427,
4.867644817705612,
13.469100171419369,
11.128910305140868
],
"DC": -0.12423808951744805,
"Damp": 0.08761882487551043,
"DeltaTime": 3.417295489378515,
"Hold": 0.0014943329519264681,
"Imp_Amp": 195.05484308587822,
"Imp_Amp2": 1.8635516652744593,
"Imp_Stride": 3,
"Initial": 0.11799404672728163,
"LTE_Amp": 0.9672321466172262,
"LTE_Amp2": 0.4298032835098847,
"LTE_Freq": 135.6673100406989,
"LTE_Freq2": 0.011180925598876339,
"LTE_Phase": 1.524271877540994,
"LTE_Phase2": 7.873797958554444,
"LTE_Zero": 0.471965688397361,
"Periods": [
"27.2122",
"27.3216",
"27.5545",
"13.63339513",
"13.69114014",
"13.6061",
"13.6608",
"13.71877789",
"6795.985773",
"1616.215172",
"2120.513853",
"13.77725",
"3232.430344",
"9.132931547",
"9.108450374",
"9.120674533",
"27.0926041",
"3397.992886",
"9.095011909",
"9.082856397",
"2190.530426",
"6.816697567"
],
"PeriodsAmp": [
0.5669275191048789,
0.1336689300822082,
0.06799697754534346,
-0.10915160263507505,
-0.028903336206770477,
0.017901371716905014,
-0.04960088554923693,
-0.04680209474365373,
0.014864829185305798,
-0.015245977418300888,
-0.032144006274192415,
-0.05329919420135805,
-0.021936616452897992,
0.0009312209412877328,
-0.02299684021223,
-0.009389648739971225,
-0.021619320304059678,
-0.012551217911979058,
0.04066262676964662,
0.077507250287186,
-0.018697939030539266,
-0.06402569125936784
],
"PeriodsPhase": [
14.437234994312748,
8.247376887063925,
5.751532655291476,
4.83281478730216,
8.167816201767224,
7.216452983791062,
13.526277585430586,
6.948198955854644,
7.196436418793621,
5.298034495648822,
5.113338342244367,
8.459460891993668,
2.5923142795740506,
4.253099279092148,
6.1104839700793345,
7.279552995005325,
3.7692175958829637,
5.347392548075204,
7.687869888270831,
7.4593988517387375,
3.2845790474680996,
4.995950414086371
],
"Year": 365.24708113327955
}
warne_vs_ic3_bar
warne_vs_ic3_sin

Honolulu HI #155

155d_2

{
"Aliased": [
"0.0537449",
"0.1074898",
"0.220485143",
"1",
"2",
"0.07771",
"0.131456"
],
"AliasedAmp": [
0.4484006464896236,
-0.37386715336425963,
0.20277245682924577,
-0.10538002453015528,
0.031140299916839392,
0.377796101968987,
-0.6501146769573984
],
"AliasedPhase": [
9.98121628431841,
3.9741250185797523,
5.281875674594777,
0.688124469867736,
6.515718244497119,
12.751783652783107,
11.205768997013
],
"DC": -0.12423808951744805,
"Damp": 0.08708897512348249,
"DeltaTime": 3.4166430998860955,
"Hold": 0.0014943329519264681,
"Imp_Amp": 193.6121244758508,
"Imp_Amp2": 1.1972112031753266,
"Imp_Stride": 4,
"Initial": -0.11803077561919893,
"LTE_Amp": 1.2193313506879053,
"LTE_Amp2": 0.4298032835098847,
"LTE_Freq": 136.69441086247866,
"LTE_Freq2": 0.011180925598876339,
"LTE_Phase": 1.6132350109211682,
"LTE_Phase2": 7.873797958554444,
"LTE_Zero": -0.3924818253896976,
"Periods": [
"27.2122",
"27.3216",
"27.5545",
"13.63339513",
"13.69114014",
"13.6061",
"13.6608",
"13.71877789",
"6795.985773",
"1616.215172",
"2120.513853",
"13.77725",
"3232.430344",
"9.132931547",
"9.108450374",
"9.120674533",
"27.0926041",
"3397.992886",
"9.095011909",
"9.082856397",
"2190.530426",
"6.816697567"
],
"PeriodsAmp": [
0.570204087842307,
0.1245396263367175,
0.07767305140197986,
-0.11136360648641389,
-0.018831492799536123,
0.02077195718655654,
-0.04797080246096962,
-0.0536678398281933,
0.014864829185305798,
-0.008535920712294021,
-0.0343885766124657,
-0.043220303725040224,
-0.02050592060287784,
0.0007799724568430707,
-0.022078822907133238,
-0.00980774144504957,
-0.0038738953033040473,
-0.011218235784817223,
0.03611966668280206,
0.07057648978294155,
-0.01928064520631733,
-0.05198813444954066
],
"PeriodsPhase": [
14.546348050324218,
8.72175862308065,
5.815180568067668,
5.396814582188879,
8.541243264456503,
8.035696208970332,
14.322706407655,
6.407998464496778,
7.836261050061661,
3.1584374863454205,
4.797340438073211,
7.453502615704981,
2.5881123174192067,
2.807297740935538,
6.088137420445475,
7.044934059427225,
5.152655617806274,
5.159093642049064,
7.659392940340163,
7.760551103628481,
3.3868855696911386,
6.039820091107199
],
"Year": 365.24708113327955
}

warne_vs_155d_bar warne_vs_155d_sin

2nd run
155d_3

{
"Aliased": [
"0.0537449",
"0.1074898",
"0.220485143",
"1",
"2",
"0.07771",
"0.131456"
],
"AliasedAmp": [
0.4229898717279405,
-0.4084519161245759,
-0.01084774456603505,
-0.10089860424371268,
0.02694323654774091,
0.34975400796560835,
-0.6544825383662813
],
"AliasedPhase": [
9.904505517416771,
4.390555245573728,
4.424664632705779,
0.7172635420377041,
6.610967948286066,
12.688485381390274,
11.1985590808422
],
"DC": -0.12423808951744805,
"Damp": 0.082695656474406,
"DeltaTime": 3.4166430998860955,
"Hold": 0.0014943329519264681,
"Imp_Amp": 192.48848784518006,
"Imp_Amp2": 0.34011883382862296,
"Imp_Stride": 4,
"Initial": -0.11803077561919893,
"LTE_Amp": 1.3091250050403704,
"LTE_Amp2": 0.4298032835098847,
"LTE_Freq": 137.06753644400897,
"LTE_Freq2": 0.011180925598876339,
"LTE_Phase": 1.3067694174538587,
"LTE_Phase2": 7.873797958554444,
"LTE_Zero": -0.5936680101679718,
"Periods": [
"27.2122",
"27.3216",
"27.5545",
"13.63339513",
"13.69114014",
"13.6061",
"13.6608",
"13.71877789",
"6795.985773",
"1616.215172",
"2120.513853",
"13.77725",
"3232.430344",
"9.132931547",
"9.108450374",
"9.120674533",
"27.0926041",
"3397.992886",
"9.095011909",
"9.082856397",
"2190.530426",
"6.816697567"
],
"PeriodsAmp": [
0.5651454332026293,
0.12264093516269524,
0.06884451241021869,
-0.11136360648641389,
-0.01986592549794402,
0.02285327960040553,
-0.0480891259171852,
-0.055941992448479826,
0.01676718270677323,
-0.008535920712294021,
-0.037426487988173184,
-0.05604954180603197,
-0.02307742490838837,
0.0007799724568430707,
-0.022078822907133238,
-0.010477313949597885,
-0.006049122729106009,
-0.010442745141898283,
0.03483226496215148,
0.07286787353312749,
-0.020620926696135897,
-0.053570308938392916
],
"PeriodsPhase": [
14.54717000749298,
8.726458928310764,
5.743709621495508,
5.415160856426165,
8.99995797819538,
8.047661672739055,
14.35339799928467,
6.39091332417362,
7.813205751380822,
2.1811766488499775,
4.836105668188576,
7.4296065615102735,
2.54898385703138,
1.8901458166037148,
6.09684330179813,
7.121425783148671,
4.289296254366107,
5.219810741304531,
7.6660621281533885,
7.728503200648494,
3.2586940002001312,
5.946093683259144
],
"Year": 365.24708113327955
}

warne_vs_155d_bar warne_vs_155d_sin

@pukpr
Copy link
Copy Markdown
Author

pukpr commented Nov 8, 2025

NINO4

nino4_0 { "Aliased": [ "0.0537449", "0.1074898", "0.220485143", "1", "2", "0.07771", "0.131456" ], "AliasedAmp": [ -0.20465840921214523, -0.39536989157209396, -0.216368081713284, -0.03599951149146843, -0.02501236879654226, 0.6417261082970603, 0.07433953829460128 ], "AliasedPhase": [ 7.962575632265462, 4.585831689368066, 5.244236199709738, 1.356260016204303, 9.679835920050428, 6.9270211887013975, 7.941435644716701 ], "DC": -0.12423808951744805, "Damp": 0.1243260914941073, "DeltaTime": "3.416666667", "Hold": 0.001497241950062863, "Imp_Amp": 199.451908806231, "Imp_Amp2": -1.4177793964670247, "Imp_Stride": 6, "Initial": 0.11375655483569767, "LTE_Amp": 1.5302169757486226, "LTE_Amp2": 0.24475198263665468, "LTE_Freq": 134.4210096409392, "LTE_Freq2": 0.011180925598876339, "LTE_Phase": 1.0550022181912846, "LTE_Phase2": 6.860982494238797, "LTE_Zero": 0.13344777225836385, "Periods": [ "27.2122", "27.3216", "27.5545", "13.63339513", "13.69114014", "13.6061", "13.6608", "13.71877789", "6795.985773", "1616.215172", "2120.513853", "13.77725", "3232.430344", "9.132931547", "9.108450374", "9.120674533", "27.0926041", "3397.992886", "9.095011909", "9.082856397", "2190.530426", "6.816697567" ], "PeriodsAmp": [ 0.5092457296669008, 0.13122707983507112, 0.09634725806731019, -0.11337424485972598, -0.006541764819508468, 0.014622217003497532, -0.039994523108379615, 0.006730916933375129, 0.014574254311673415, -0.01864653749097568, 0.009901917385027062, -0.015876491932423405, -0.010755521011473475, 0.0007555581377546212, -0.022555997107519155, -0.011059732487989622, -0.05193309970410703, -0.0071326659302086174, 0.018619067222847247, 0.031184800747524086, -0.022347961527589926, -0.0447729561299455 ], "PeriodsPhase": [ 14.572171451099576, 8.817284966008769, 5.789506773967591, 5.007812250042462, 8.209218007364177, 8.840228714952557, 13.611885299035245, 8.000975138770267, 8.184189292401808, 4.84077438338101, 4.775439035039762, 8.018320746937494, 2.0707153595419294, 5.42869886605732, 6.080142628734909, 7.385619716804511, 4.615322380326881, 4.486868823124319, 7.726026076586125, 7.290928092054336, 4.6567927894970005, 6.719219667809141 ], "Year": "365.2495755" } warne_vs_nino4_bar warne_vs_nino4_sin

NINO3

nino3_0 { "Aliased": [ "0.0537449", "0.1074898", "0.220485143", "1", "2", "0.07771", "0.131456" ], "AliasedAmp": [ -0.32676952132953335, -0.4215090993695924, -0.27513499641826533, -0.018481901063718675, -0.01867301060370047, 0.3435714347582939, 0.0910790568968396 ], "AliasedPhase": [ 7.461559229546888, 4.7698019904279825, 4.424009166145002, 2.9510437001039795, 8.590071349063228, 6.924495878715929, 7.889152245960246 ], "DC": -0.12423808951744805, "Damp": 0.12937837258127544, "DeltaTime": "3.416666667", "Hold": 0.001497241950062863, "Imp_Amp": 200.81815690540725, "Imp_Amp2": -0.9644391188341868, "Imp_Stride": 6, "Initial": 0.11357513712691474, "LTE_Amp": 2.0051111262040013, "LTE_Amp2": 0.24475198263665468, "LTE_Freq": 135.01797226097258, "LTE_Freq2": 0.011180925598876339, "LTE_Phase": 0.824551988745763, "LTE_Phase2": 6.860982494238797, "LTE_Zero": -0.06858679236874334, "Periods": [ "27.2122", "27.3216", "27.5545", "13.63339513", "13.69114014", "13.6061", "13.6608", "13.71877789", "6795.985773", "1616.215172", "2120.513853", "13.77725", "3232.430344", "9.132931547", "9.108450374", "9.120674533", "27.0926041", "3397.992886", "9.095011909", "9.082856397", "2190.530426", "6.816697567" ], "PeriodsAmp": [ 0.49926446351041975, 0.12927112377009758, 0.09807947832026494, -0.11354530847875274, -0.006021005718445226, 0.01522143261262352, -0.04180210191303711, 0.007020802487255309, 0.014036419521858185, -0.022563128753321775, 0.007114140312357451, -0.016389238257712695, -0.01199927042186422, 0.0007555581377546212, -0.022555997107519155, -0.010514281503924435, -0.056306818911700494, -0.009192622862611358, 0.019958319197951543, 0.027507315356236683, -0.021841606640866956, -0.040443350761695245 ], "PeriodsPhase": [ 14.575096508692427, 8.87200170286491, 5.79806803605806, 4.967850785908332, 8.869184757584165, 9.040861465172593, 13.63929357631605, 8.09007347162173, 8.19829655256441, 4.843195423169302, 5.009479108964843, 8.08023193711548, 2.3797136171782722, 5.4658076266247955, 6.013829683068793, 7.354892800263196, 4.506852338786508, 4.303992191928985, 7.685031256928155, 7.426385243515183, 4.782110238074086, 6.720196608534219 ], "Year": "365.2495755" } warne_vs_nino3_bar warne_vs_nino3_sin

@pukpr
Copy link
Copy Markdown
Author

pukpr commented Nov 8, 2025

Raahe FI #240

240d_0 { "Aliased": [ "0.0537449", "0.1074898", "0.220485143", "1", "2", "0.07771", "0.131456" ], "AliasedAmp": [ 0.27996647365676214, -0.4502362557184998, 0.21232802285690852, -0.2834052211848341, 0.08905233447004401, 0.44856859609832, -0.6874319132942812 ], "AliasedPhase": [ 7.402815215342159, 2.354696961643428, 4.783006125195931, -0.24975666276107986, 8.407324393450844, 7.775842869021185, 9.471831257922881 ], "DC": -0.12423808951744805, "Damp": 0.08762937652411244, "DeltaTime": 3.4166430998860955, "Hold": 0.0014943329519264681, "Imp_Amp": 193.3809820491404, "Imp_Amp2": -1.0061019143651309, "Imp_Stride": 7, "Initial": 0.38821939876362843, "LTE_Amp": 1.2026360875805862, "LTE_Amp2": 0.4298032835098847, "LTE_Freq": 136.51907652503485, "LTE_Freq2": 0.011180925598876339, "LTE_Phase": 1.1050862015228462, "LTE_Phase2": 7.873797958554444, "LTE_Zero": -0.25847608524999593, "Periods": [ "27.2122", "27.3216", "27.5545", "13.63339513", "13.69114014", "13.6061", "13.6608", "13.71877789", "6795.985773", "1616.215172", "2120.513853", "13.77725", "3232.430344", "9.132931547", "9.108450374", "9.120674533", "27.0926041", "3397.992886", "9.095011909", "9.082856397", "2190.530426", "6.816697567" ], "PeriodsAmp": [ 0.5602142444370494, 0.1389818338654034, 0.08282547843439386, -0.11136360648641389, -0.028556104854314326, 0.020282684112866343, -0.048141415318671714, -0.034649662042504165, 0.014864829185305798, -0.009021237911429747, -0.0343885766124657, -0.03507096940765428, -0.021935054171067923, 0.0007799724568430707, -0.021012034194781305, -0.009270240560650756, -0.0049227054766929805, -0.008160133247101934, 0.04029163126372332, 0.06870651651857536, -0.01736907213437058, -0.05180741911565132 ], "PeriodsPhase": [ 14.628546476924251, 8.36869199879231, 6.003097326735109, 5.036371624183522, 8.205002908733775, 8.203917895336104, 13.747228653998295, 8.114767179479138, 8.243233261130714, 5.415380190820144, 4.785702919729709, 7.965338573779706, 2.4502969984958156, 3.736013977191934, 6.016213270682218, 6.703097693001379, 2.424878981652876, 3.477461748044123, 7.681842344660123, 7.4769452094217295, 3.9396161773862124, 6.761696720915679 ], "Year": 365.24708113327955 } warne_vs_240d_bar warne_vs_240d_sin 240d_vs_warne_ts

AO

ao_0 { "Aliased": [ "0.0537449", "0.1074898", "0.220485143", "1", "2", "0.07771", "0.131456" ], "AliasedAmp": [ 0.25902788865679843, -0.587867280714859, 0.5597329138018511, -0.1297556737083317, 0.2035749498066802, 0.3302247070667728, -0.20976476198401206 ], "AliasedPhase": [ 8.366043017261644, 2.164234978603297, 4.645188124405464, -0.901954968992759, 5.566586932715073, 8.983200751528251, 9.029656746019517 ], "DC": -0.12423808951744805, "Damp": 0.08708897512348249, "DeltaTime": 3.4166430998860955, "Hold": 0.0014943329519264681, "Imp_Amp": 193.30747674665687, "Imp_Amp2": 0.883497079460327, "Imp_Stride": 1, "Initial": -0.2185758793363896, "LTE_Amp": 1.3914998416125832, "LTE_Amp2": 0.6513719234105115, "LTE_Freq": 136.2034880811508, "LTE_Freq2": 0.011180925598876339, "LTE_Phase": 1.601242987128868, "LTE_Phase2": 8.16649464027961, "LTE_Zero": 0.2801299634380527, "Periods": [ "27.2122", "27.3216", "27.5545", "13.63339513", "13.69114014", "13.6061", "13.6608", "13.71877789", "6795.985773", "1616.215172", "2120.513853", "13.77725", "3232.430344", "9.132931547", "9.108450374", "9.120674533", "27.0926041", "3397.992886", "9.095011909", "9.082856397", "2190.530426", "6.816697567" ], "PeriodsAmp": [ 0.5602142444370494, 0.12420495423206494, 0.07992122139006537, -0.11136360648641389, -0.021776255035546508, 0.020282684112866343, -0.04797080246096962, -0.042969085440637635, 0.014864829185305798, -0.009021237911429747, -0.034483474099570754, -0.03574632377261504, -0.02050592060287784, 0.000783802991427517, -0.02083406102870747, -0.00980774144504957, -0.0037941659330021603, -0.010183028256449306, 0.04029163126372332, 0.06870651651857536, -0.018697939030539266, -0.05180741911565132 ], "PeriodsPhase": [ 14.551151783522592, 8.501348008967748, 5.666206948354458, 5.149021177147336, 9.131336285490164, 8.571750645990479, 13.429885251227107, 7.541982984771915, 7.427421219131064, 4.8859133357556255, 4.99436147075948, 7.540793998911312, 1.5871882418384755, 6.630765078487783, 6.7502267303457275, 7.154967610401046, 4.784121443566078, 5.351125971187354, 7.352795980785456, 7.451319878289789, 4.0984482984120625, 6.141394996357189 ], "Year": 365.24708113327955 } warne_vs_ao_bar warne_vs_ao_sin ao_vs_warne_ts

higher LTE factor
ao0_0
{
"Aliased": [
"0.0537449",
"0.1074898",
"0.220485143",
"1",
"2",
"0.07771",
"0.131456"
],
"AliasedAmp": [
0.27161257350264423,
-0.32201739180582506,
0.5332136800102483,
-0.0872107909794962,
0.15085054623687094,
0.1466577569716676,
-0.24274584721775405
],
"AliasedPhase": [
8.542345366249148,
2.4655719403117002,
4.686153943475969,
0.48675082730196867,
5.642857626362061,
8.237038670122207,
9.142964703455704
],
"DC": -0.12423808951744805,
"Damp": 0.08737407716722961,
"DeltaTime": 3.4166430998860955,
"Hold": 0.0014943329519264681,
"Imp_Amp": 193.46181118329258,
"Imp_Amp2": 0.8977951125148386,
"Imp_Stride": 1,
"Initial": -0.21864423333937905,
"LTE_Amp": 1.1195979353696914,
"LTE_Amp2": 1.0431748287187521,
"LTE_Freq": 136.20537634761865,
"LTE_Freq2": 0.08111809255988764,
"LTE_Phase": 1.550224584335603,
"LTE_Phase2": 7.99731680613725,
"LTE_Zero": 0.09191167971115426,
"Periods": [
"27.2122",
"27.3216",
"27.5545",
"13.63339513",
"13.69114014",
"13.6061",
"13.6608",
"13.71877789",
"6795.985773",
"1616.215172",
"2120.513853",
"13.77725",
"3232.430344",
"9.132931547",
"9.108450374",
"9.120674533",
"27.0926041",
"3397.992886",
"9.095011909",
"9.082856397",
"2190.530426",
"6.816697567"
],
"PeriodsAmp": [
0.5602818175411705,
0.12773474200228543,
0.07941452662956318,
-0.11037187371023888,
-0.021369477845213446,
0.02027370465021914,
-0.0485774005836772,
-0.04243213049346861,
0.014810763551780385,
-0.00941531820317175,
-0.03453946118946407,
-0.03606655470374866,
-0.02056386236085062,
0.0007756716892217015,
-0.02082923074233686,
-0.009698809512587109,
-0.003441447443871129,
-0.00972418590754444,
0.04020162711997816,
0.06870651651857536,
-0.018719729336866962,
-0.05076444302729393
],
"PeriodsPhase": [
14.567840625653822,
8.512404233196378,
5.606283029745975,
5.1370488632357585,
9.07742644673693,
8.589118062335741,
13.44748047384309,
7.567256445597179,
7.388485547546237,
4.802686339304204,
5.063437340123929,
7.626149732962172,
1.6631729008570466,
6.520572668444046,
6.80286206602831,
7.175233973806546,
4.480749773109025,
5.34643638182189,
7.353598554561969,
7.426791318486073,
4.011876191668352,
6.199608935122582
],
"Year": 365.24708113327955
}

CV
ao0_1960-2000
{
"Aliased": [
"0.0537449",
"0.1074898",
"0.220485143",
"1",
"2",
"0.07771",
"0.131456"
],
"AliasedAmp": [
0.2114334737946783,
-0.08795860287227034,
0.2996749851504303,
-0.11148775590302348,
0.16414133163285272,
0.1690259897019823,
-0.3625288696945305
],
"AliasedPhase": [
8.83264213425239,
4.757863084534088,
4.714637767957561,
-0.4876983418305849,
5.924640458266777,
7.422778005647177,
8.693047544337281
],
"DC": -0.08712197565502076,
"Damp": 0.08825622815004269,
"DeltaTime": 3.4166430998860955,
"Hold": 0.0014944538506345716,
"Imp_Amp": 194.26464093861242,
"Imp_Amp2": 0.7533598998438945,
"Imp_Stride": 1,
"Initial": -0.21864423333937905,
"LTE_Amp": 0.6769015145499876,
"LTE_Amp2": 0.8406911872588109,
"LTE_Freq": 136.17639749698444,
"LTE_Freq2": 0.08111809255988764,
"LTE_Phase": 1.4170357048675948,
"LTE_Phase2": 8.386161373629772,
"LTE_Zero": -0.15593930474223353,
"Periods": [
"27.2122",
"27.3216",
"27.5545",
"13.63339513",
"13.69114014",
"13.6061",
"13.6608",
"13.71877789",
"6795.985773",
"1616.215172",
"2120.513853",
"13.77725",
"3232.430344",
"9.132931547",
"9.108450374",
"9.120674533",
"27.0926041",
"3397.992886",
"9.095011909",
"9.082856397",
"2190.530426",
"6.816697567"
],
"PeriodsAmp": [
0.5602818175411705,
0.1278102520068296,
0.07807758707548997,
-0.11076909774890853,
-0.022663665503136938,
0.020438303819661188,
-0.04822159738127547,
-0.04220798206634495,
0.014729289809134564,
-0.009368400389569046,
-0.03449602956058033,
-0.03638031211843496,
-0.020823265496160745,
0.0007623450073216359,
-0.02084727619705371,
-0.009630004045521222,
-0.0026365144505750594,
-0.009749470520309328,
0.040217442788961784,
0.06883350928155262,
-0.018721024690728085,
-0.049849866040156766
],
"PeriodsPhase": [
14.567840625653822,
8.509190522554658,
5.6024931280882,
5.137314406344558,
9.021946813388242,
8.591261000148451,
13.438150201761276,
7.554621904047689,
7.387958897489322,
4.8121530424420875,
5.078456308324239,
7.606082413906006,
1.6550956049184704,
6.492469573753156,
6.790466175672192,
7.170661182406364,
4.237290024681263,
5.348597791902,
7.3498594293401505,
7.422613231076673,
3.9545635362919604,
6.209357540615018
],
"Year": 365.24708113327955
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment