Download generator.py from edward56/gen-7a3f91c4e28b: direct link, hf CLI and curl.
- Browser
- Download file 67 kB
-
https://huggingface.co/edward56/gen-7a3f91c4e28b/resolve/main/generator.py
- Command line
-
hf download hf://edward56/gen-7a3f91c4e28b/generator.py
-
curl -L -o generator.py https://huggingface.co/edward56/gen-7a3f91c4e28b/resolve/main/generator.py
67 kB
| from __future__ import annotations | |
| import json | |
| from collections.abc import Iterator | |
| from functools import lru_cache, partial | |
| from pathlib import Path | |
| from queue import Full, Queue | |
| from threading import Event, Lock, Thread | |
| import numpy as np | |
| from numba import njit | |
| from scipy.signal import lfilter | |
| from cascade.interface import DataGenerator | |
| _qsv00 = False | |
| _qsv01 = Lock() | |
| _qsv02 = 2048 | |
| _qsv03 = 256 | |
| _qsv04 = 1024 | |
| _qsv05 = np.array([4, 7, 12, 15, 24, 30, 48, 52, 60, 90, 96, 144, 168, 183, 240, 288, 336, 365, 672, 730], dtype=np.float64) | |
| _qsv06 = np.array([0.01, 0.23, 0.02, 0.02, 0.07, 0.01, 0.06, 0.01, 0.08, 0.01, 0.14, 0.07, 0.04, 0.01, 0.08, 0.08, 0.02, 0.02, 0.01, 0.01], dtype=np.float64) | |
| _qsv06 /= _qsv06.sum() | |
| _qsv07 = np.array([[15, 60], [60, 240], [24, 168], [48, 336], [96, 672], [7, 365], [12, 52]], dtype=np.float64) | |
| _qsv08: tuple[str, ...] = ('k00', 'k01', 'k02', 'k03', 'k04', 'k05', 'k06', 'k07', 'k08', 'k09', 'k10', 'k11', 'k12', 'k13', 'k14', 'k15', 'k16', 'k17', 'k18', 'k19', 'k20', 'k21', 'k22', 'k23', 'k24', 'k25', 'k26', 'k27', 'k28', 'k29', 'k30', 'k31') | |
| _qsv09: dict[str, float] = {'k28': 0.0, 'k29': 0.0, 'k30': 0.0, 'k31': 0.0, 'k00': 0.095, 'k01': 0.095, 'k02': 0.06, 'k03': 0.105, 'k04': 0.095, 'k05': 0.06, 'k06': 0.02, 'k07': 0.07, 'k08': 0.07, 'k09': 0.08, 'k10': 0.08, 'k11': 0.06, 'k12': 0.02, 'k13': 0.02, 'k14': 0.07, 'k15': 0.0, 'k16': 0.0, 'k17': 0.0, 'k18': 0.0, 'k19': 0.0, 'k20': 0.0, 'k21': 0.0, 'k22': 0.0, 'k23': 0.0, 'k24': 0.0, 'k25': 0.0, 'k26': 0.0, 'k27': 0.0} | |
| _qsv10: frozenset[str] = frozenset({'k21', 'k15', 'k18', 'k17', 'k19'}) | |
| def _k15(_qsv33: np.random.Generator, n: int, L: int) -> np.ndarray: | |
| _qsv34 = _qsv33.uniform(1.0, 8.0, size=(n, 1)) | |
| at = _qsv33.random((n, L)) < _qsv34 / max(L, 1) | |
| at[:, 0] = True | |
| size = _qsv33.normal(0.0, 1.0, size=(n, L)) * _qsv33.uniform(0.4, 3.0, size=(n, 1)) | |
| size *= at | |
| np.cumsum(size, axis=1, out=size) | |
| _qsv35 = size | |
| scale = np.exp(_qsv33.uniform(np.log(1.0), np.log(2000.0), size=(n, 1))) | |
| _qsv36 = _qsv33.random((n, 1)) < 0.6 | |
| sd = np.where(_qsv36, 0.0, _qsv33.uniform(0.002, 0.03, size=(n, 1))) | |
| out = (_qsv33.uniform(-2.0, 2.0, size=(n, 1)) + _qsv35) * scale | |
| out = out + _qsv33.normal(0.0, 1.0, size=(n, L)) * sd * scale | |
| _qsv37 = _qsv33.random((n, 1)) < 0.65 | |
| return np.where(_qsv37, np.rint(out), out) | |
| def _k16(_qsv33: np.random.Generator, n: int, L: int) -> np.ndarray: | |
| _qsv38 = _qsv13(_qsv33.normal(0.0, 1.0, size=(n, L)), _qsv33.uniform(0.99, 0.9995, size=(n, 1))) | |
| _qsv38 = (_qsv38 - _qsv38.mean(axis=1, keepdims=True)) / np.maximum(_qsv38.std(axis=1, keepdims=True), 1e-09) | |
| _qsv39 = _qsv38 > _qsv33.uniform(0.2, 1.2, size=(n, 1)) | |
| lo = _qsv33.uniform(0.02, 0.2, size=(n, 1)) | |
| _qsv40 = _qsv33.uniform(4.0, 25.0, size=(n, 1)) | |
| sd = np.where(_qsv39, lo * _qsv40, lo) | |
| x = _qsv13(_qsv33.normal(0.0, 1.0, size=(n, L)) * sd, _qsv33.uniform(0.9, 0.999, size=(n, 1))) | |
| scale = np.exp(_qsv33.uniform(np.log(1.0), np.log(500.0), size=(n, 1))) | |
| return x * scale + _qsv33.uniform(-1.0, 1.0, size=(n, 1)) * scale | |
| def _k17(_qsv33: np.random.Generator, n: int, L: int) -> np.ndarray: | |
| """Wholesale-power / geophysical burst regime. | |
| The reigning body models volatility as a PERSISTENT state (slow AR crossing | |
| a threshold lifts sd 4-25x for long stretches). The pool's dispatch and | |
| flux feeds do the opposite: a quiet, tightly-banded level punctuated by | |
| rare excursions of 10-1000x that revert within a handful of steps, some of | |
| them NEGATIVE (a market paying to offload). Measured against that body: | |
| aemo_nem_5min +38.9%/window, nz_emi +10.0%, usace_cwms +38.3%, | |
| swpc_solar_xray +1114%. Short persistence plus a two-sided heavy tail plus | |
| a hard floor is what those windows need, and no family here produces it. | |
| """ | |
| t = np.arange(L, dtype=np.float64)[None, :] | |
| day = _qsv33.choice(np.array([12.0, 24.0, 48.0, 96.0, 288.0]), size=(n, 1)) | |
| amp = _qsv33.uniform(0.1, 0.7, size=(n, 1)) | |
| base_shape = amp * np.sin(2 * np.pi * t / day | |
| + _qsv33.uniform(0, 2 * np.pi, (n, 1))) | |
| base_shape += 0.35 * amp * np.sin(2 * np.pi * t / (day * 7.0) | |
| + _qsv33.uniform(0, 2 * np.pi, (n, 1))) | |
| calm = _qsv33.uniform(0.01, 0.08, size=(n, 1)) | |
| level = _qsv13(_qsv33.normal(0.0, 1.0, size=(n, L)) * calm, | |
| _qsv33.uniform(0.95, 0.999, size=(n, 1))) | |
| x = base_shape + level | |
| rate = _qsv33.uniform(0.0015, 0.02, size=(n, 1)) | |
| hit = _qsv33.random((n, L)) < rate | |
| mag = _qsv33.lognormal(mean=np.log(6.0), sigma=1.4, size=(n, L)) | |
| downward = _qsv33.uniform(0.05, 0.45, size=(n, 1)) | |
| sign = np.where(_qsv33.random((n, L)) < downward, -1.0, 1.0) | |
| spike = hit * mag * sign * _qsv33.uniform(0.5, 3.0, size=(n, 1)) | |
| # short persistence: a 1-5 step exponential tail, not a regime | |
| decay = _qsv33.uniform(0.05, 0.6, size=(n, 1)) | |
| spike = _qsv13(np.ascontiguousarray(spike), decay.reshape(-1)) | |
| x = x + spike | |
| scale = np.exp(_qsv33.uniform(np.log(5.0), np.log(900.0), size=(n, 1))) | |
| out = x * scale | |
| # market floor: most rows are non-negative with a hard cap, a minority | |
| # admit negative clearing prices | |
| allow_neg = _qsv33.random((n, 1)) < 0.3 | |
| floor = np.where(allow_neg, -scale * _qsv33.uniform(0.2, 1.5, size=(n, 1)), 0.0) | |
| cap = scale * _qsv33.uniform(4.0, 60.0, size=(n, 1)) | |
| out = np.clip(out + scale * _qsv33.uniform(0.3, 2.0, size=(n, 1)), floor, cap) | |
| integer = _qsv33.random((n, 1)) < 0.25 | |
| return np.where(integer, np.rint(out), out) | |
| def _k18(_qsv33: np.random.Generator, n: int, L: int) -> np.ndarray: | |
| """Coastal / hydrological: incommensurate tidal skeleton + storm residual. | |
| Tide gauges, river stages and sea-surface temperature share a shape no | |
| family in this body produces. The constituents are INCOMMENSURATE with the | |
| sampling day -- M2 at 12.42h, S2 at 12.00h, K1 at 23.93h, O1 at 25.82h -- | |
| so their sum never repeats exactly and beats on a fortnightly spring/neap | |
| envelope; a commensurate sine bank reads that as noise. On top sits an | |
| asymmetric residual: storm surge and runoff rise within a few steps and | |
| recede over tens to hundreds, against a non-negative stage floor. | |
| Measured against the reigning body: usgs_streamflow +8.9%, noaa_tides | |
| +23.3%, usace_cwms +22.4%, rws_nl_water_levels +5.8%, crw_sst +13.4% | |
| per window. | |
| """ | |
| t = np.arange(L, dtype=np.float64)[None, :] | |
| day = _qsv33.choice(np.array([24.0, 48.0, 96.0, 144.0, 240.0, 288.0]), size=(n, 1)) | |
| # hours per step -> constituent periods in steps | |
| hps = 24.0 / day | |
| per = np.stack([12.4206 / hps, 12.0000 / hps, 23.9345 / hps, 25.8193 / hps], axis=0) | |
| semi = _qsv33.uniform(0.5, 1.0, size=(n, 1)) # semi-diurnal dominance | |
| diur = _qsv33.uniform(0.05, 0.8, size=(n, 1)) | |
| amp = np.stack([semi, semi * _qsv33.uniform(0.25, 0.55, size=(n, 1)), | |
| diur, diur * _qsv33.uniform(0.3, 0.9, size=(n, 1))], axis=0) | |
| x = np.zeros((n, L), dtype=np.float64) | |
| for i in range(4): | |
| x = x + amp[i] * np.sin(2.0 * np.pi * t / np.maximum(per[i], 1e-6) | |
| + _qsv33.uniform(0.0, 2.0 * np.pi, size=(n, 1))) | |
| # annual / seasonal drift for SST-like rows | |
| seas = _qsv33.random((n, 1)) < 0.35 | |
| x = x + seas * _qsv33.uniform(0.3, 1.6, size=(n, 1)) * np.sin( | |
| 2.0 * np.pi * t / (day * _qsv33.uniform(120.0, 400.0, size=(n, 1))) | |
| + _qsv33.uniform(0.0, 2.0 * np.pi, size=(n, 1))) | |
| # storm / runoff: fast rise, slow recession | |
| rate = _qsv33.uniform(0.0008, 0.012, size=(n, 1)) | |
| onset = _qsv33.random((n, L)) < rate | |
| size = onset * _qsv33.lognormal(mean=np.log(1.2), sigma=0.9, size=(n, L)) | |
| reces = _qsv33.uniform(0.90, 0.995, size=(n, 1)) | |
| surge = _qsv13(np.ascontiguousarray(size), reces.reshape(-1)) | |
| x = x + surge * _qsv33.uniform(0.4, 2.5, size=(n, 1)) | |
| # weather residual: slow, correlated | |
| x = x + _qsv13(_qsv33.normal(0.0, 1.0, size=(n, L)) | |
| * _qsv33.uniform(0.01, 0.09, size=(n, 1)), | |
| _qsv33.uniform(0.97, 0.9995, size=(n, 1))) | |
| scale = np.exp(_qsv33.uniform(np.log(0.5), np.log(400.0), size=(n, 1))) | |
| out = x * scale | |
| grounded = _qsv33.random((n, 1)) < 0.6 # stage/flow has a floor | |
| lo = out.min(axis=1, keepdims=True) | |
| out = np.where(grounded, out - lo + scale * _qsv33.uniform(0.0, 0.4, size=(n, 1)), out) | |
| quant = _qsv33.random((n, 1)) < 0.3 # gauges report to a grid | |
| step = scale * _qsv33.uniform(0.002, 0.02, size=(n, 1)) | |
| return np.where(quant, np.round(out / step) * step, out) | |
| def _k19(_qsv33: np.random.Generator, n: int, L: int) -> np.ndarray: | |
| _qsv50 = _qsv33.uniform(1.0, 25.0, size=(n, 1)) / max(L, 1) | |
| _qsv51 = (_qsv33.random((n, L)) < _qsv50).astype(np.float64) | |
| _qsv52 = _qsv33.gamma(2.0, 1.0, size=(n, L)) * _qsv33.uniform(1.0, 12.0, size=(n, 1)) | |
| _qsv53 = _qsv33.uniform(0.9, 0.998, size=(n, 1)) | |
| _qsv54 = _qsv13(_qsv51 * _qsv52, _qsv53) | |
| _qsv55 = _qsv33.uniform(0.03, 0.6, size=(n, 1)) | |
| scale = np.exp(_qsv33.uniform(np.log(1.0), np.log(800.0), size=(n, 1))) | |
| sd = _qsv33.uniform(0.0, 0.02, size=(n, 1)) | |
| out = (_qsv54 + _qsv55) * scale | |
| return np.maximum(out * (1.0 + _qsv33.normal(0.0, 1.0, (n, L)) * sd), 0.0) | |
| def _k20(_qsv33: np.random.Generator, n: int, L: int) -> np.ndarray: | |
| cap = _qsv33.integers(4, 80, size=(n, 1)).astype(np.float64) | |
| step = (_qsv33.normal(0.0, 1.0, size=(n, L)) | |
| * _qsv33.uniform(0.01, 0.12, size=(n, 1)) * cap) | |
| dwell = _qsv33.random(n) < 0.12 | |
| if dwell.any(): | |
| t = np.arange(L, dtype=np.float64)[None, :] | |
| period = _qsv33.choice(np.array([24.0, 48.0, 96.0, 144.0, 288.0]), size=(n, 1)) | |
| phase = _qsv33.uniform(0.0, 1.0, size=(n, 1)) | |
| activity = 0.12 + 0.88 * np.sin(np.pi * np.mod(t / period + phase, 1.0)) ** 6 | |
| step = np.where(dwell[:, None], step * activity, step) | |
| busy = (_qsv33.random(n) < 0.25) & ~dwell | |
| if busy.any(): | |
| hold_b = _qsv33.uniform(0.05, 0.55, size=(n, 1)) | |
| move_b = _qsv33.random((n, L)) >= hold_b | |
| mag_b = np.where(_qsv33.random((n, L)) < 0.4, 2.0, 1.0) | |
| sgn_b = np.where(_qsv33.random((n, L)) < 0.5, -1.0, 1.0) | |
| step = np.where(busy[:, None], move_b * mag_b * sgn_b, step) | |
| walk = np.cumsum(step, axis=1) + _qsv33.uniform(0.0, 1.0, size=(n, 1)) * cap | |
| span = 2.0 * cap | |
| folded = cap - np.abs(np.mod(walk, span) - cap) | |
| if dwell.any(): | |
| folded = np.where(dwell[:, None], np.clip(walk, 0.0, cap), folded) | |
| quiet = _qsv33.random((n, 1)) < 0.35 | |
| folded = np.where(quiet, folded, folded + _qsv33.normal(0.0, 0.35, size=(n, L))) | |
| return np.clip(np.rint(folded), 0.0, cap) | |
| def _k21(_qsv33: np.random.Generator, n: int, L: int) -> np.ndarray: | |
| _qsv47 = _qsv33.uniform(-2.0, 8.0, size=(n, 1)) | |
| _qsv62 = _qsv33.choice(np.array([0.05, 0.1, 0.25, 0.5]), size=(n, 1)) | |
| k = _qsv33.integers(0, 4, size=(n, 1)) | |
| at = _qsv33.random((n, L)) < k / max(L, 1) | |
| at[:, 0] = False | |
| size = _qsv62 * _qsv33.choice(np.array([-2.0, -1.0, 1.0, 2.0]), size=(n, L)) | |
| _qsv63 = _qsv47 + np.cumsum(at * size, axis=1) | |
| _qsv36 = _qsv33.random((n, 1)) < 0.8 | |
| sd = np.where(_qsv36, 0.0, _qsv33.uniform(0.001, 0.01, size=(n, 1))) | |
| out = _qsv63 + _qsv33.normal(0.0, 1.0, size=(n, L)) * sd | |
| scale = np.exp(_qsv33.uniform(np.log(0.5), np.log(200.0), size=(n, 1))) | |
| return out * scale | |
| def _k22(_qsv33: np.random.Generator, n: int, L: int) -> np.ndarray: | |
| t = np.arange(L, dtype=np.float64)[None, :] | |
| _qsv41 = _qsv33.choice(np.array([24.0, 48.0, 96.0]), size=(n, 1)) | |
| _qsv64 = _qsv33.uniform(0.2, 1.0, size=(n, 1)) | |
| _qsv65 = _qsv64 * np.sin(2 * np.pi * t / _qsv41 + _qsv33.uniform(0, 2 * np.pi, (n, 1))) | |
| _qsv65 += 0.4 * _qsv64 * np.sin(4 * np.pi * t / _qsv41 + _qsv33.uniform(0, 2 * np.pi, (n, 1))) | |
| _qsv42 = 0.3 * _qsv64 * np.sin(2 * np.pi * t / (_qsv41 * 7) + _qsv33.uniform(0, 2 * np.pi, (n, 1))) | |
| _qsv63 = _qsv13(_qsv33.normal(0.0, 0.05, size=(n, L)), _qsv33.uniform(0.995, 0.9999, size=(n, 1))) | |
| _qsv39 = _qsv13(_qsv33.normal(0.0, 1.0, size=(n, L)), _qsv33.uniform(0.95, 0.995, size=(n, 1))) | |
| _qsv39 = _qsv39 > np.quantile(_qsv39, _qsv33.uniform(0.7, 0.95), axis=1, keepdims=True) | |
| _qsv66 = _qsv33.uniform(0.002, 0.02, size=(n, 1)) * (1 + 6 * _qsv39) | |
| _qsv51 = _qsv33.random((n, L)) < _qsv66 | |
| _qsv52 = _qsv33.standard_t(3, size=(n, L)) * _qsv33.uniform(0.5, 3.0, size=(n, 1)) | |
| _qsv67 = _qsv13(_qsv51 * _qsv52, _qsv33.uniform(0.3, 0.8, size=(n, 1))) | |
| out = _qsv65 + _qsv42 + _qsv63 + _qsv67 | |
| scale = np.exp(_qsv33.uniform(np.log(5.0), np.log(300.0), size=(n, 1))) | |
| _qsv68 = _qsv33.uniform(0.0, 2.0, size=(n, 1)) | |
| return (out + _qsv68) * scale | |
| def _k23(_qsv33: np.random.Generator, n: int, L: int) -> np.ndarray: | |
| t = np.arange(L, dtype=np.float64)[None, :] | |
| k = _qsv33.integers(2, 6) | |
| _qsv69 = np.sort(_qsv33.uniform(0, L, size=(n, k)), axis=1) | |
| _qsv70 = _qsv33.uniform(-0.004, 0.003, size=(n, k + 1)) | |
| _qsv71 = np.zeros((n, L)) | |
| _qsv72 = np.zeros((n, 1)) | |
| for i in range(k + 1): | |
| lo = _qsv72 | |
| hi = _qsv69[:, i:i + 1] if i < k else np.full((n, 1), float(L)) | |
| _qsv77 = np.clip(t, lo, hi) - lo | |
| _qsv71 = _qsv71 + _qsv70[:, i:i + 1] * _qsv77 | |
| _qsv72 = hi | |
| _qsv41 = _qsv33.choice(np.array([1.0, 24.0, 48.0]), size=(n, 1), p=[0.5, 0.3, 0.2]) | |
| _qsv49 = np.where(_qsv41 == 1.0, 7.0, _qsv41 * 7) | |
| _qsv73 = _qsv33.uniform(0.1, 0.6, size=(n, 1)) * np.sin(2 * np.pi * t / _qsv49 + _qsv33.uniform(0, 2 * np.pi, (n, 1))) | |
| _qsv47 = np.exp(_qsv33.uniform(np.log(3.0), np.log(3000.0), size=(n, 1))) | |
| _qsv74 = _qsv47 * np.exp(np.clip(_qsv71 + _qsv73, -8.0, 6.0)) | |
| np.clip(_qsv74, 0.0, 5000000.0, out=_qsv74) | |
| _qsv75 = _qsv33.random((n, 1)) < 0.5 | |
| shape = _qsv33.uniform(0.6, 4.0, size=(n, 1)) | |
| _qsv76 = _qsv74 * _qsv33.gamma(shape, 1.0 / shape, size=(n, L)) | |
| return _qsv33.poisson(np.where(_qsv75, _qsv76, _qsv74)).astype(np.float64) | |
| def _k24(_qsv33: np.random.Generator, n: int, L: int) -> np.ndarray: | |
| _qsv56 = np.exp(_qsv33.normal(np.log(18.0), 0.55, size=(n, 1))) | |
| _qsv56 = np.clip(np.rint(_qsv56), 4.0, 80.0) | |
| _qsv78 = _qsv33.beta(3.2, 1.0, size=(n, 1)) * 0.42 + 0.53 | |
| _qsv79 = _qsv33.uniform(0.03, 0.15, size=(n, 1)) | |
| _qsv80 = _qsv33.random((n, L)) >= _qsv78 | |
| _qsv52 = np.where(_qsv33.random((n, L)) < _qsv79, 2.0, 1.0) | |
| _qsv81 = np.where(_qsv33.random((n, L)) < 0.5, -1.0, 1.0) | |
| t = np.arange(L, dtype=np.float64)[None, :] | |
| _qsv49 = _qsv33.choice(np.array([96.0, 144.0, 288.0]), size=(n, 1)) | |
| _qsv82 = _qsv33.random((n, 1)) < 0.3 | |
| _qsv83 = np.where(_qsv82, 0.35, 0.0) * np.sin(2 * np.pi * t / _qsv49 + _qsv33.uniform(0, 2 * np.pi, (n, 1))) | |
| _qsv81 = np.where(_qsv33.random((n, L)) < 0.5 + _qsv83, _qsv81, -_qsv81) | |
| _qsv84 = _qsv80 * _qsv52 * _qsv81 | |
| _qsv58 = _qsv33.uniform(0.15, 0.85, size=(n, 1)) * _qsv56 + np.cumsum(_qsv84, axis=1) | |
| _qsv59 = 2.0 * _qsv56 | |
| out = _qsv56 - np.abs(np.mod(_qsv58, _qsv59) - _qsv56) | |
| return np.rint(out) | |
| def _k25(_qsv33: np.random.Generator, n: int, L: int) -> np.ndarray: | |
| t = np.arange(L, dtype=np.float64)[None, :] | |
| _qsv49 = _qsv33.choice(np.array([96.0, 96.0, 96.0, 24.0, 288.0, 48.0]), size=(n, 1)) | |
| _qsv85 = np.zeros((n, L)) | |
| for k in (1.0, 2.0, 3.0): | |
| _qsv85 += _qsv33.uniform(0.25, 1.0, size=(n, 1)) / k * np.sin(2 * np.pi * k * t / _qsv49 + _qsv33.uniform(0, 2 * np.pi, size=(n, 1))) | |
| _qsv42 = 0.25 * _qsv33.uniform(0.2, 1.0, size=(n, 1)) * np.sin(2 * np.pi * t / (_qsv49 * 7) + _qsv33.uniform(0, 2 * np.pi, size=(n, 1))) | |
| _qsv86 = _qsv13(_qsv33.normal(0.0, 1.0, size=(n, L)), _qsv33.uniform(0.995, 0.9999, size=(n, 1))) | |
| _qsv86 = _qsv86 / np.maximum(np.std(_qsv86, axis=1, keepdims=True), 1e-09) | |
| _qsv87 = _qsv33.random((n, L)) < _qsv33.uniform(0.004, 0.016, size=(n, 1)) | |
| _qsv52 = np.clip(_qsv33.standard_t(4, size=(n, L)), -6.0, 6.0) * _qsv33.uniform(0.2, 0.75, size=(n, 1)) | |
| _qsv67 = _qsv13(_qsv87 * _qsv52, _qsv33.uniform(0.25, 0.7, size=(n, 1))) | |
| _qsv64 = _qsv33.uniform(1.0, 2.4, size=(n, 1)) | |
| y = _qsv64 * (_qsv85 + _qsv42) + _qsv33.uniform(0.15, 0.45, size=(n, 1)) * _qsv86 + _qsv67 | |
| scale = np.exp(_qsv33.uniform(np.log(3.0), np.log(900.0), size=(n, 1))) | |
| _qsv88 = _qsv33.random((n, 1)) < 0.22 | |
| _qsv35 = np.where(_qsv88, _qsv33.uniform(-1.2, 0.1, size=(n, 1)), _qsv33.uniform(0.4, 3.0, size=(n, 1))) | |
| return (y + _qsv35) * scale | |
| def _k26(_qsv33: np.random.Generator, n: int, L: int) -> np.ndarray: | |
| t = np.arange(L, dtype=np.float64)[None, :] | |
| _qsv49 = _qsv33.choice(np.array([96.0, 96.0, 24.0, 288.0]), size=(n, 1)) | |
| _qsv47 = _qsv33.uniform(0.4, 1.4, size=(n, 1)) * np.sin(2 * np.pi * t / _qsv49 + _qsv33.uniform(0, 2 * np.pi, size=(n, 1))) | |
| _qsv50 = _qsv33.uniform(0.003, 0.02, size=(n, 1)) | |
| _qsv87 = (_qsv33.random((n, L)) < _qsv50).astype(np.float64) | |
| _qsv89 = np.where(_qsv33.random((n, L)) < 0.62, 1.0, -1.0) | |
| size = np.abs(np.clip(_qsv33.standard_t(4, size=(n, L)), -8, 8)) * _qsv33.uniform(0.5, 2.2, size=(n, 1)) | |
| _qsv53 = _qsv33.uniform(0.55, 0.97, size=(n, 1)) | |
| _qsv90 = _qsv13(_qsv87 * _qsv89 * size, _qsv53) | |
| _qsv86 = _qsv13(_qsv33.normal(0.0, 1.0, size=(n, L)), _qsv33.uniform(0.99, 0.9995, size=(n, 1))) | |
| _qsv86 = _qsv86 / np.maximum(np.std(_qsv86, axis=1, keepdims=True), 1e-09) | |
| y = _qsv47 + _qsv90 + _qsv33.uniform(0.15, 0.5, size=(n, 1)) * _qsv86 | |
| scale = np.exp(_qsv33.uniform(np.log(2.0), np.log(600.0), size=(n, 1))) | |
| _qsv35 = np.where(_qsv33.random((n, 1)) < 0.18, _qsv33.uniform(-1.0, 0.2, size=(n, 1)), _qsv33.uniform(0.5, 3.0, size=(n, 1))) | |
| return (y + _qsv35) * scale | |
| def _k27(_qsv33: np.random.Generator, n: int, L: int) -> np.ndarray: | |
| if n <= 0: | |
| return np.empty((0, L), dtype=np.float64) | |
| t = np.arange(L, dtype=np.float64)[None, :] | |
| P0 = np.exp(_qsv33.uniform(np.log(20.0), np.log(60.0), size=(n, 1))) | |
| _qsv82 = np.sin(2.0 * np.pi * t / P0 + _qsv33.uniform(0, 2 * np.pi, size=(n, 1))) | |
| _qsv82 = _qsv82 + _qsv33.uniform(0.15, 0.7, size=(n, 1)) * np.sin(2.0 * np.pi * t / (P0 * 1.9323) + _qsv33.uniform(0, 2 * np.pi, size=(n, 1))) | |
| _qsv91 = P0 * _qsv33.uniform(12.0, 32.0, size=(n, 1)) | |
| _qsv82 = _qsv82 * (1.0 + _qsv33.uniform(0.1, 0.55, size=(n, 1)) * np.sin(2.0 * np.pi * t / _qsv91 + _qsv33.uniform(0, 2 * np.pi, size=(n, 1)))) | |
| _qsv92 = _qsv33.uniform(0.0, 1.0, size=(n, 1)) | |
| _qsv93 = _qsv33.random((n, L)) < _qsv33.uniform(1.5, 8.0, size=(n, 1)) / max(L, 1) | |
| _qsv64 = np.exp(_qsv33.normal(_qsv33.uniform(-0.6, 0.9, size=(n, 1)), _qsv33.uniform(0.4, 1.0, size=(n, 1)), size=(n, L))) * _qsv93 | |
| _qsv94 = _qsv33.uniform(0.55, 0.9, size=(n, 1)) | |
| _qsv95 = _qsv33.uniform(0.97, 0.999, size=(n, 1)) | |
| _qsv96 = _qsv13(0.6 * _qsv64, _qsv95) - 0.55 * _qsv13(_qsv64, _qsv94) | |
| _qsv97 = _qsv13(_qsv33.normal(0.0, 1.0, size=(n, L)) * _qsv33.uniform(0.05, 0.3, size=(n, 1)), _qsv33.uniform(0.95, 0.999, size=(n, 1))) | |
| _qsv98 = np.exp(np.clip(_qsv97, -4.0, 4.0)) * _qsv33.normal(0.0, 1.0, size=(n, L)) * _qsv33.uniform(0.05, 0.4, size=(n, 1)) | |
| _qsv99 = np.cumsum(_qsv33.normal(0.0, 1.0, size=(n, L)), axis=1) * _qsv33.uniform(0.0, 0.02, size=(n, 1)) / np.sqrt(max(L, 1)) | |
| x = _qsv92 * _qsv82 + _qsv33.uniform(0.3, 1.6, size=(n, 1)) * _qsv96 + _qsv98 + _qsv99 | |
| x = (x - x.mean(axis=1, keepdims=True)) / np.maximum(x.std(axis=1, keepdims=True), 1e-09) | |
| scale = np.exp(_qsv33.uniform(np.log(0.05), np.log(200.0), size=(n, 1))) | |
| _qsv100 = _qsv33.normal(0.0, 3.0, size=(n, 1)) * scale | |
| y = x * scale + _qsv100 | |
| _qsv101 = _qsv33.random((n, 1)) < 0.45 | |
| return np.where(_qsv101, np.abs(y) + 0.05 * scale, y) | |
| def _qsv11(parameters: dict[str, float], _qsv102: str) -> None: | |
| if not all((np.isfinite(_qsv106) for _qsv106 in parameters.values())): | |
| raise ValueError(f'{_qsv102} must contain only finite values') | |
| _qsv103 = {'p15', 'p18', 'p19', *(_qsv107 for _qsv107 in parameters if _qsv107.startswith(('p20.', 'p30.')))} | |
| for name in _qsv103: | |
| if not 0.0 <= parameters[name] <= 1.0: | |
| raise ValueError(f'{_qsv102}.{name} must be in [0, 1]') | |
| for name in ('p11', 'p12', 'p13', 'p14', 'p16', 'p17'): | |
| if parameters[name] < 0.0: | |
| raise ValueError(f'{_qsv102}.{name} must be non-negative') | |
| for _qsv104, _qsv105 in (('p11', 'p12'), ('p13', 'p14'), ('p16', 'p17'), ('p20.p25', 'p20.p26'), ('p20.p28', 'p20.p29')): | |
| if parameters[_qsv104] > parameters[_qsv105]: | |
| raise ValueError(f'{_qsv102}.{_qsv104} must be <= {_qsv105}') | |
| class Generator(DataGenerator): | |
| def __init__(self, config_dir: str, *, seed: int) -> None: | |
| _qsv334 = Path(config_dir) / 'config.json' | |
| _qsv335 = json.loads(_qsv334.read_text(encoding='utf-8')) if _qsv334.is_file() else {} | |
| self._cfg = _qsv335 | |
| self._qsa12 = int(seed) | |
| self._qsa07 = int(_qsv335.get('p00', 64)) | |
| self._qsa06 = int(_qsv335.get('p01', 4096)) | |
| if self._qsa07 < 1 or self._qsa06 < self._qsa07: | |
| raise ValueError(f'invalid length band [{self._qsa07}, {self._qsa06}]') | |
| _qsv336 = dict(_qsv09) | |
| for k, v in dict(_qsv335.get('p03', {})).items(): | |
| if k in _qsv336: | |
| _qsv336[k] = float(v) | |
| w = np.asarray([_qsv336[f] for f in _qsv08], dtype=np.float64) | |
| if not np.all(np.isfinite(w)) or w.min() < 0 or w.sum() <= 0: | |
| raise ValueError('p03 must be finite, non-negative, and not all zero') | |
| self._qsa16 = w / w.sum() | |
| p04 = dict(_qsv335.get('p04', {})) | |
| self._qsa01 = bool(p04.get('p05', False)) | |
| self._qsa04 = float(p04.get('p06', 1.0)) | |
| if not np.isfinite(self._qsa04) or not 0.0 < self._qsa04 <= 1.0: | |
| raise ValueError('p04.p06 must be in (0, 1]') | |
| self._qsa03 = float(p04.get('p07', 0.1)) | |
| self._qsa02 = float(p04.get('p08', 0.7)) | |
| if not 0.0 <= self._qsa03 < self._qsa02 <= 1.0: | |
| raise ValueError('p04 fractions must satisfy 0 <= p07 < p08 <= 1') | |
| _qsv337 = dict(_qsv336) | |
| for k, v in dict(p04.get('p09', {})).items(): | |
| if k in _qsv337: | |
| _qsv337[k] = float(v) | |
| _qsv338 = np.asarray([_qsv337[f] for f in _qsv08], dtype=np.float64) | |
| if not np.all(np.isfinite(_qsv338)) or _qsv338.min() < 0 or _qsv338.sum() <= 0: | |
| raise ValueError('p04.p09 must be finite, non-negative, and not all zero') | |
| self._qsa14 = _qsv338 / _qsv338.sum() | |
| self._qsa15 = float(_qsv335.get('tr_hi_frac', 0.25)) | |
| self._qsa10 = int(_qsv335.get('p02', 2)) | |
| if not 1 <= self._qsa10 <= 4: | |
| raise ValueError('p02 must be in [1, 4]') | |
| self._qsa05 = float(_qsv335.get('p33', 0.0)) | |
| if not np.isfinite(self._qsa05) or not 0.0 <= self._qsa05 <= 1.0: | |
| raise ValueError('p33 must be in [0, 1]') | |
| p30 = dict(_qsv335.get('p30', {})) | |
| p20 = dict(_qsv335.get('p20', {})) | |
| self._qsa08 = {'p11': float(_qsv335.get('p11', 0.4)), 'p12': float(_qsv335.get('p12', 3.0)), 'p13': float(_qsv335.get('p13', 0.3)), 'p14': float(_qsv335.get('p14', 2.0)), 'p15': float(_qsv335.get('p15', 0.4)), 'p16': float(_qsv335.get('p16', 0.02)), 'p17': float(_qsv335.get('p17', 0.12)), 'p18': float(_qsv335.get('p18', 0.25)), 'p19': float(_qsv335.get('p19', 0.3)), 'p20.p21': float(p20.get('p21', 0.06)), 'p20.p22': float(p20.get('p22', 0.07)), 'p20.p23': float(p20.get('p23', 0.04)), 'p20.p24': float(p20.get('p24', 0.0)), 'p20.p25': float(p20.get('p25', 0.01)), 'p20.p26': float(p20.get('p26', 0.1)), 'p20.p27': float(p20.get('p27', 0.0)), 'p20.p28': float(p20.get('p28', 0.001)), 'p20.p29': float(p20.get('p29', 0.015)), 'p30.p31': float(p30.get('p31', 0.0)), 'p30.p32': float(p30.get('p32', 0.0))} | |
| p10 = dict(p04.get('p10', {})) | |
| _qsv339 = dict(p10.pop('p20', {})) | |
| _qsv340 = dict(p10.pop('p30', {})) | |
| _qsv341 = {_qsv107 for _qsv107 in self._qsa08 if '.' not in _qsv107} | |
| unknown = set(p10) - _qsv341 | |
| unknown.update((f'p20.{_qsv107}' for _qsv107 in _qsv339 if f'p20.{_qsv107}' not in self._qsa08)) | |
| unknown.update((f'p30.{_qsv107}' for _qsv107 in _qsv340 if f'p30.{_qsv107}' not in self._qsa08)) | |
| if unknown: | |
| _qsv342 = ', '.join(sorted(unknown)) | |
| raise ValueError(f'unknown p04.p10: {_qsv342}') | |
| self._qsa13 = dict(self._qsa08) | |
| for _qsv107, _qsv106 in p10.items(): | |
| self._qsa13[_qsv107] = float(_qsv106) | |
| for _qsv107, _qsv106 in _qsv339.items(): | |
| self._qsa13[f'p20.{_qsv107}'] = float(_qsv106) | |
| for _qsv107, _qsv106 in _qsv340.items(): | |
| self._qsa13[f'p30.{_qsv107}'] = float(_qsv106) | |
| _qsv11(self._qsa08, 'final parameters') | |
| _qsv11(self._qsa13, 'p04.p10') | |
| def name(self) -> str: | |
| return str(self._cfg.get('name', '')) | |
| def _qsa00(self, token_progress: float) -> float: | |
| if not self._qsa01: | |
| return 1.0 | |
| _qsv343 = (token_progress - self._qsa03) / (self._qsa02 - self._qsa03) | |
| _qsv343 = float(np.clip(_qsv343, 0.0, 1.0)) | |
| return _qsv343 * _qsv343 * (3.0 - 2.0 * _qsv343) | |
| def _qsa17(self, token_progress: float) -> np.ndarray: | |
| _qsv344 = self._qsa00(token_progress) | |
| if _qsv344 >= 1.0: | |
| return self._qsa16 | |
| if _qsv344 <= 0.0: | |
| return self._qsa14 | |
| return (1.0 - _qsv344) * self._qsa14 + _qsv344 * self._qsa16 | |
| def _qsa09(self, token_progress: float) -> dict[str, float]: | |
| _qsv344 = self._qsa00(token_progress) | |
| if _qsv344 >= 1.0: | |
| return dict(self._qsa08) | |
| if _qsv344 <= 0.0: | |
| return dict(self._qsa13) | |
| return {_qsv107: (1.0 - _qsv344) * self._qsa13[_qsv107] + _qsv344 * _qsv345 for _qsv107, _qsv345 in self._qsa08.items()} | |
| def _qsa11(self, emitted_points: float, target_points: int) -> float: | |
| return emitted_points / (target_points * self._qsa04) | |
| def generate(self, n_series: int) -> Iterator[np.ndarray]: | |
| if n_series <= 0: | |
| return | |
| _qsv17() | |
| _qsv33 = np.random.default_rng(self._qsa12) | |
| _qsv346 = self._qsa06 | |
| target_points = max(1, max(n_series - 2, 1) * self._qsa07) | |
| queue: Queue[object] = Queue(maxsize=self._qsa10) | |
| _qsv347 = Event() | |
| _qsv348 = object() | |
| def put(_qsv351: object) -> bool: | |
| while not _qsv347.is_set(): | |
| try: | |
| queue.put(_qsv351, timeout=0.1) | |
| return True | |
| except Full: | |
| continue | |
| return False | |
| def produce() -> None: | |
| try: | |
| _qsv350 = 0 | |
| emitted_points = 0 | |
| while _qsv350 < n_series and (not _qsv347.is_set()): | |
| if _qsv350 == 0: | |
| _qsv365 = _qsv03 | |
| elif _qsv350 == _qsv03: | |
| _qsv365 = _qsv04 | |
| else: | |
| _qsv365 = _qsv02 | |
| _qsv353 = _qsv33.integers(self._qsa07, _qsv346 + 1, size=_qsv365) | |
| _qsv354 = min(_qsv365, n_series - _qsv350) | |
| _qsv355 = int(_qsv353[:_qsv354].sum()) | |
| _qsv356 = self._qsa11(emitted_points + 0.5 * _qsv355, target_points) | |
| p03 = self._qsa17(_qsv356) | |
| parameters = self._qsa09(_qsv356) | |
| _qsv357 = (partial(_k00, _qsv181=self._qsa15, _qsv182=parameters['p11'], _qsv183=parameters['p12'], _qsv184=parameters['p15'], _qsv185=parameters['p16'], _qsv186=parameters['p17']), _k01, partial(_k02, _qsv181=self._qsa15, _qsv182=parameters['p13'], _qsv183=parameters['p14']), _k03, partial(_k04, _qsv200=parameters['p18'], _qsv201=parameters['p19']), _k05, _k06, _k07, _k08, _k09, _k10, partial(_k11, _qsv256=self._qsa05), _k12, _k13, _k14, _k15, _k16, _k17, _k18, _k19, _k20, _k21, _k22, _k23, _k24, _k25, _k26, _k27, _k28, _k29, _k30, _k31) | |
| _qsv358 = {_qsv107.removeprefix('p20.'): _qsv106 for _qsv107, _qsv106 in parameters.items() if _qsv107.startswith('p20.')} | |
| _qsv359 = _qsv33.choice(len(_qsv08), size=_qsv365, p=p03) | |
| _qsv360: list[np.ndarray | None] = [None] * _qsv365 | |
| for _qsv361 in range(len(_qsv08)): | |
| _qsv180 = np.nonzero(_qsv359 == _qsv361)[0] | |
| if _qsv180.size == 0: | |
| continue | |
| _qsv145 = _qsv357[_qsv361](_qsv33, int(_qsv180.size), _qsv346) | |
| _qsv366 = _qsv08[_qsv361] | |
| _qsv146 = _qsv366 in {'k24', 'k23', 'k02', 'k10', 'k11', 'k12', 'k25', 'k22', 'k26'} | |
| if _qsv366 in _qsv10: | |
| _qsv145 = _qsv28(_qsv145) | |
| else: | |
| _qsv145 = _qsv28(_qsv23(_qsv33, _qsv145, _qsv146=_qsv146, _qsv147=_qsv366 in {'k24', 'k23', 'k11', 'k12'}, _qsv148=_qsv366 in {'k00', 'k02', 'k07', 'k08'}, _qsv149=_qsv366 != 'k04', **_qsv358)) | |
| if not _qsv146: | |
| _qsv145 = _qsv31(_qsv33, _qsv145) | |
| for _qsv110, _qsv364 in enumerate(_qsv180): | |
| length = int(_qsv353[_qsv364]) | |
| _qsv360[_qsv364] = np.ascontiguousarray(_qsv145[_qsv110, :length], dtype=np.float64) | |
| if self._qsa07 == _qsv346: | |
| _qsv367 = parameters['p30.p31'] | |
| _qsv76 = np.nonzero(_qsv33.random(_qsv365) < _qsv367)[0] | |
| for _qsv364 in _qsv76: | |
| _qsv328 = _qsv360[_qsv364] | |
| if _qsv328 is None: | |
| continue | |
| _qsv369 = int(_qsv33.integers(1, 3)) | |
| _qsv370 = _qsv33.integers(0, _qsv365, size=_qsv369) | |
| _qsv336 = _qsv33.dirichlet(np.ones(_qsv369 + 1)) | |
| _qsv371 = _qsv336[0] * _qsv328 | |
| _qsv372 = True | |
| for j, _qsv373 in enumerate(_qsv370): | |
| _qsv374 = _qsv360[int(_qsv373)] | |
| if _qsv374 is None: | |
| _qsv372 = False | |
| break | |
| _qsv371 = _qsv371 + _qsv336[j + 1] * _qsv374 | |
| if _qsv372: | |
| _qsv360[_qsv364] = _qsv28(_qsv371) | |
| _qsv362 = parameters['p30.p32'] | |
| _qsv363 = np.nonzero(_qsv33.random(_qsv365) < _qsv362)[0] | |
| for _qsv364 in _qsv363: | |
| series = _qsv360[_qsv364] | |
| if series is None or series.size < 8: | |
| continue | |
| _qsv368 = int(_qsv33.integers(series.size // 8, 3 * series.size // 4)) | |
| series[:_qsv368] = series[_qsv368] | |
| if not put((_qsv360, _qsv354)): | |
| return | |
| _qsv350 += _qsv354 | |
| emitted_points += _qsv355 | |
| except BaseException as _qsv188: | |
| put(_qsv188) | |
| finally: | |
| put(_qsv348) | |
| _qsv349 = Thread(target=produce, name='', daemon=True) | |
| _qsv349.start() | |
| try: | |
| while True: | |
| _qsv351 = queue.get() | |
| if _qsv351 is _qsv348: | |
| break | |
| if isinstance(_qsv351, BaseException): | |
| raise _qsv351 | |
| _qsv360, _qsv354 = _qsv351 | |
| for _qsv352 in _qsv360[:_qsv354]: | |
| if _qsv352 is None: | |
| raise RuntimeError('internal: unfilled series slot') | |
| yield _qsv352 | |
| finally: | |
| _qsv347.set() | |
| _qsv349.join(timeout=1.0) | |
| def _qsv12(_qsv108: np.ndarray, _qsv109: np.ndarray) -> np.ndarray: | |
| n, length = _qsv108.shape | |
| out = np.empty((n, length), dtype=np.float64) | |
| for _qsv110 in range(n): | |
| _qsv111 = 0.0 | |
| for t in range(length): | |
| _qsv106 = _qsv108[_qsv110, t] + _qsv111 | |
| out[_qsv110, t] = _qsv106 | |
| _qsv111 = _qsv109[_qsv110] * _qsv106 | |
| return out | |
| def _qsv13(_qsv108: np.ndarray, _qsv109: np.ndarray) -> np.ndarray: | |
| return _qsv12(np.ascontiguousarray(_qsv108, dtype=np.float64), np.asarray(_qsv109, dtype=np.float64).reshape(-1)) | |
| def _qsv14(_qsv108: np.ndarray, a1: np.ndarray, a2: np.ndarray) -> np.ndarray: | |
| n, length = _qsv108.shape | |
| out = np.empty((n, length), dtype=np.float64) | |
| for _qsv110 in range(n): | |
| _qsv112 = 0.0 | |
| _qsv113 = 0.0 | |
| for t in range(length): | |
| _qsv106 = _qsv108[_qsv110, t] + _qsv112 | |
| out[_qsv110, t] = _qsv106 | |
| _qsv112 = a1[_qsv110] * _qsv106 + _qsv113 | |
| _qsv113 = a2[_qsv110] * _qsv106 | |
| return out | |
| def _qsv15(_qsv108: np.ndarray, a1: np.ndarray, a2: np.ndarray) -> np.ndarray: | |
| return _qsv14(np.ascontiguousarray(_qsv108, dtype=np.float64), np.asarray(a1, dtype=np.float64).reshape(-1), np.asarray(a2, dtype=np.float64).reshape(-1)) | |
| def _qsv16(_qsv108: np.ndarray, _qsv114: np.ndarray, _qsv115: np.ndarray, _qsv116: np.ndarray, _qsv117: np.ndarray) -> np.ndarray: | |
| n, length = _qsv108.shape | |
| out = np.empty((n, length), dtype=np.float64) | |
| for _qsv110 in range(n): | |
| out[_qsv110, 0] = _qsv108[_qsv110, 0] | |
| for t in range(1, length): | |
| _qsv72 = out[_qsv110, t - 1] | |
| if _qsv72 >= 0.0: | |
| _qsv106 = _qsv116[_qsv110] + _qsv114[_qsv110] * _qsv72 + _qsv108[_qsv110, t] | |
| else: | |
| _qsv106 = _qsv117[_qsv110] + _qsv115[_qsv110] * _qsv72 + _qsv108[_qsv110, t] | |
| out[_qsv110, t] = min(max(_qsv106, -1000000.0), 1000000.0) | |
| return out | |
| def _qsv17() -> None: | |
| global _qsv00 | |
| if _qsv00: | |
| return | |
| with _qsv01: | |
| if _qsv00: | |
| return | |
| zeros = np.zeros((2, 3), dtype=np.float64) | |
| _qsv118 = np.zeros(2, dtype=np.float64) | |
| _qsv12(zeros, _qsv118) | |
| _qsv14(zeros, _qsv118, _qsv118) | |
| _qsv16(zeros, _qsv118, _qsv118, _qsv118, _qsv118) | |
| _qsv00 = True | |
| def _qsv18(x: np.ndarray, *, _qsv119: int=512) -> tuple[np.ndarray, np.ndarray]: | |
| _qsv120 = x[:, :min(x.shape[1], _qsv119)] | |
| mean = _qsv120.mean(axis=1, keepdims=True) | |
| std = _qsv120.std(axis=1, keepdims=True) | |
| return (mean, np.where(std < 1e-12, 1.0, std)) | |
| def _qsv19(x: np.ndarray, *, _qsv121: bool=True, _qsv119: int=512) -> np.ndarray: | |
| mean, std = _qsv18(x, _qsv119=_qsv119) | |
| return (x - mean) / std if _qsv121 else x / std | |
| def _qsv20(L: int) -> tuple[np.ndarray, np.ndarray]: | |
| _qsv122 = 2.0 * np.pi * np.arange(L, dtype=np.float64)[None, :] / _qsv05[:, None] | |
| return (np.sin(_qsv122), np.cos(_qsv122)) | |
| def _qsv21(_qsv33: np.random.Generator, n: int, L: int, _qsv123: int=3) -> np.ndarray: | |
| t = np.arange(L, dtype=np.float64)[None, :] | |
| _qsv126, _qsv127 = _qsv20(L) | |
| k = _qsv33.integers(1, _qsv123 + 1, size=n) | |
| _qsv124 = _qsv07[_qsv33.integers(0, len(_qsv07), size=n)] | |
| _qsv125 = _qsv33.random(n) < 0.35 | |
| out = np.zeros((n, L), dtype=np.float64) | |
| for j in range(_qsv123): | |
| _qsv128 = np.nonzero(k > j)[0] | |
| _qsv129 = _qsv33.choice(_qsv05, size=n, p=_qsv06) | |
| if j < 2: | |
| _qsv129 = np.where(_qsv125, _qsv124[:, j], _qsv129) | |
| _qsv129 = _qsv129[:, None] | |
| _qsv64 = _qsv33.uniform(0.2, 2.0, size=n)[:, None] | |
| _qsv130 = _qsv33.uniform(0.0, 2.0 * np.pi, size=n)[:, None] | |
| _qsv131 = np.searchsorted(_qsv05, _qsv129[_qsv128, 0]) | |
| _qsv132 = _qsv64[_qsv128] * (_qsv126[_qsv131] * np.cos(_qsv130[_qsv128]) + _qsv127[_qsv131] * np.sin(_qsv130[_qsv128])) | |
| _qsv133 = np.nonzero((k > j) & (_qsv33.random(n) < 0.35))[0] | |
| if _qsv133.size: | |
| _qsv134 = np.searchsorted(_qsv128, _qsv133) | |
| _qsv135 = 2.0 * np.pi * t / _qsv129[_qsv133] + _qsv130[_qsv133] | |
| _qsv136 = np.clip(_qsv129[_qsv133] * _qsv33.uniform(4.0, 12.0, size=(_qsv133.size, 1)), 32.0, 2.0 * L) | |
| _qsv137 = _qsv33.uniform(0.0, 2.0 * np.pi, size=(_qsv133.size, 1)) | |
| _qsv138 = np.sin(2.0 * np.pi * t / _qsv136 + _qsv137) | |
| _qsv139 = 1.0 + _qsv33.uniform(0.05, 0.45, size=(_qsv133.size, 1)) * _qsv138 | |
| _qsv140 = _qsv33.uniform(0.05, 0.75, size=(_qsv133.size, 1)) * np.sin(2.0 * np.pi * t / (1.7 * _qsv136) - _qsv137) | |
| _qsv132[_qsv134] = _qsv64[_qsv133] * _qsv139 * np.sin(_qsv135 + _qsv140) | |
| out[_qsv128] += _qsv132 | |
| return out | |
| def _qsv22(_qsv33: np.random.Generator, n: int, L: int, _qsv50: float, scale) -> np.ndarray: | |
| _qsv141 = _qsv33.random((n, L)) < _qsv50 | |
| _qsv141[:, 0] = False | |
| _qsv143, _qsv144 = np.nonzero(_qsv141) | |
| _qsv34 = np.zeros((n, L), dtype=np.float64) | |
| if _qsv143.size == 0: | |
| return _qsv34 | |
| s = np.asarray(scale, dtype=np.float64) | |
| _qsv142 = s if s.ndim == 0 else s.reshape(n)[_qsv143] | |
| _qsv34[_qsv143, _qsv144] = _qsv33.normal(0.0, 1.0, size=_qsv143.size) * _qsv142 | |
| return _qsv34 | |
| def _qsv23(_qsv33: np.random.Generator, _qsv145: np.ndarray, *, _qsv146: bool, _qsv147: bool=False, _qsv148: bool=True, _qsv149: bool=True, p21: float=0.06, p22: float=0.07, p23: float=0.04, p24: float=0.0, p25: float=0.01, p26: float=0.1, p27: float=0.0, p28: float=0.001, p29: float=0.015, _qsv150: float=0.36, _qsv151: float=0.2, _qsv152: float=0.12, _qsv153: float=0.1) -> np.ndarray: | |
| _qsv154 = np.asarray(_qsv145, dtype=np.float64) | |
| out = _qsv32(_qsv33, _qsv154, _qsv150=_qsv150, _qsv151=_qsv151, _qsv152=_qsv152, _qsv153=_qsv153) | |
| n, L = out.shape | |
| _qsv155 = _qsv33.random(n) < 0.06 if _qsv148 else np.zeros(n, dtype=bool) | |
| out[_qsv155] = out[_qsv155, ::-1] | |
| if not _qsv146: | |
| _qsv162 = _qsv33.random(n) < 0.04 | |
| out[_qsv162] *= -1.0 | |
| _qsv156 = min(L, 512) | |
| _qsv157 = np.nonzero(_qsv33.random(n) < p27)[0] | |
| if _qsv157.size and L > 1: | |
| diff = np.diff(out[_qsv157, :_qsv156], axis=1) | |
| _qsv121 = np.median(diff, axis=1, keepdims=True) | |
| _qsv163 = 1.4826 * np.median(np.abs(diff - _qsv121), axis=1, keepdims=True) | |
| _qsv164 = np.maximum(np.std(diff, axis=1, keepdims=True), 1e-09) | |
| _qsv163 = np.where(_qsv163 > 1e-09, _qsv163, _qsv164) | |
| _qsv165 = _qsv33.uniform(p28, p29, size=(_qsv157.size, 1)) | |
| _qsv172, _qsv173 = np.nonzero(_qsv33.random((_qsv157.size, L)) < _qsv165) | |
| if _qsv172.size: | |
| _qsv174 = _qsv33.choice([-1.0, 1.0], size=(_qsv157.size, 1)) | |
| _qsv89 = np.where(_qsv33.random(_qsv172.size) < 0.75, _qsv174[_qsv172, 0], -_qsv174[_qsv172, 0]) | |
| _qsv175 = _qsv33.lognormal(mean=np.log(4.0), sigma=0.6, size=_qsv172.size) | |
| out[_qsv157[_qsv172], _qsv173] += _qsv89 * _qsv175 * _qsv163[_qsv172, 0] | |
| if _qsv146: | |
| np.maximum(out, 0.0, out=out) | |
| for _qsv110 in np.nonzero(_qsv33.random(n) < p21)[0]: | |
| q = float(_qsv33.uniform(0.03, 0.18)) | |
| _qsv166 = _qsv33.random() < 0.5 | |
| if not _qsv149: | |
| continue | |
| _qsv167 = out[_qsv110, :_qsv156] | |
| if _qsv166: | |
| _qsv176 = np.quantile(_qsv167, 1.0 - q) | |
| out[_qsv110] = np.minimum(out[_qsv110], _qsv176) | |
| else: | |
| _qsv176 = np.quantile(_qsv167, q) | |
| out[_qsv110] = np.maximum(out[_qsv110], _qsv176) | |
| _qsv158 = np.nonzero(_qsv33.random(n) < p22)[0] | |
| if _qsv158.size: | |
| if _qsv149: | |
| for qi, _qsv110 in enumerate(_qsv158): | |
| x = out[_qsv110] | |
| _qsv167 = x[:_qsv156] | |
| lo = float(_qsv167.min()) | |
| hi = float(_qsv167.max()) | |
| if hi - lo < 1e-12: | |
| continue | |
| _qsv177 = int(_qsv33.integers(0, 3)) | |
| _qsv178 = int(_qsv33.integers(16, 257)) | |
| if _qsv177 == 0: | |
| _qsv57 = (hi - lo) / max(_qsv178 - 1, 1) | |
| out[_qsv110] = lo + np.rint((np.clip(x, lo, hi) - lo) / _qsv57) * _qsv57 | |
| elif _qsv177 == 1: | |
| qs = np.linspace(0.0, 1.0, _qsv178) | |
| _qsv179 = np.quantile(_qsv167, qs) | |
| _qsv180 = np.searchsorted(_qsv179, x, side='left') | |
| _qsv180 = np.clip(_qsv180, 0, _qsv178 - 1) | |
| out[_qsv110] = _qsv179[_qsv180] | |
| else: | |
| p = float(_qsv33.uniform(0.35, 0.85)) | |
| u = np.linspace(0.0, 1.0, _qsv178) ** p | |
| _qsv179 = lo + (hi - lo) * u | |
| _qsv180 = np.searchsorted(_qsv179, np.clip(x, lo, hi), side='left') | |
| _qsv180 = np.clip(_qsv180, 0, _qsv178 - 1) | |
| out[_qsv110] = _qsv179[_qsv180] | |
| _qsv159 = np.nonzero(_qsv33.random(n) < p23)[0] | |
| if _qsv159.size: | |
| _qsv168 = _qsv33.choice([2, 4, 8], size=_qsv159.size, p=[0.55, 0.3, 0.15]) | |
| for _qsv169 in (2, 4, 8): | |
| _qsv143 = _qsv159[_qsv168 == _qsv169] | |
| if _qsv143.size: | |
| out[_qsv143] = np.repeat(out[_qsv143, ::_qsv169], _qsv169, axis=1)[:, :L] | |
| _qsv160 = np.nonzero(_qsv33.random(n) < p24)[0] | |
| if _qsv160.size and L > 1: | |
| _qsv170 = _qsv33.uniform(p25, p26, size=(_qsv160.size, 1)) | |
| _qsv78 = _qsv33.random((_qsv160.size, L)) < _qsv170 | |
| _qsv78[:, 0] = False | |
| _qsv171 = np.where(~_qsv78, np.arange(L, dtype=np.int64)[None, :], 0) | |
| np.maximum.accumulate(_qsv171, axis=1, out=_qsv171) | |
| out[_qsv160] = np.take_along_axis(out[_qsv160], _qsv171, axis=1) | |
| if _qsv147: | |
| out = np.maximum(np.rint(out), 0.0) | |
| _qsv161 = out[:, :_qsv156].std(axis=1) < 1e-09 | |
| out[_qsv161] = _qsv154[_qsv161] | |
| return out | |
| def _k00(_qsv33: np.random.Generator, n: int, L: int, *, _qsv181: float=0.25, _qsv182: float=0.4, _qsv183: float=3.0, _qsv184: float=0.4, _qsv185: float=0.02, _qsv186: float=0.12) -> np.ndarray: | |
| t = np.arange(L, dtype=np.float64)[None, :] | |
| _qsv35 = _qsv33.normal(0.0, 1.0, size=(n, 1)) | |
| _qsv187 = _qsv33.random((n, 1)) < _qsv181 | |
| _qsv188 = np.where(_qsv187, _qsv33.normal(0.0, _qsv183, size=(n, 1)), _qsv33.normal(0.0, _qsv182, size=(n, 1))) | |
| tn = t / max(L - 1, 1) | |
| series = _qsv35 + _qsv188 * tn + _qsv21(_qsv33, n, L) | |
| _qsv109 = _qsv33.uniform(0.0, 0.85, size=n) | |
| _qsv189 = _qsv33.random((n, 1)) < _qsv184 | |
| sigma = np.where(_qsv189, _qsv33.uniform(_qsv185, _qsv186, size=(n, 1)), _qsv33.uniform(0.1, 0.6, size=(n, 1))) | |
| _qsv108 = _qsv33.normal(0.0, 1.0, size=(n, L)) * sigma | |
| return series + _qsv13(_qsv108, _qsv109) | |
| def _k01(_qsv33: np.random.Generator, n: int, L: int) -> np.ndarray: | |
| _qsv35 = np.cumsum(_qsv22(_qsv33, n, L, _qsv50=3.0 / L, scale=2.0), axis=1) | |
| _qsv190 = np.cumsum(_qsv22(_qsv33, n, L, _qsv50=3.0 / L, scale=0.5), axis=1) | |
| _qsv191 = np.exp(np.clip(_qsv190, -3.0, 3.0)) * _qsv33.uniform(0.1, 0.5, size=(n, 1)) | |
| _qsv46 = _qsv33.normal(0.0, 1.0, size=(n, L)) * _qsv191 | |
| _qsv192 = _qsv21(_qsv33, n, L, _qsv123=2) * _qsv33.uniform(0.0, 1.0, size=(n, 1)) | |
| _qsv193 = _qsv33.normal(0.0, 1.0 / L, size=(n, 1)) + np.cumsum(_qsv22(_qsv33, n, L, _qsv50=2.0 / L, scale=4.0 / L), axis=1) | |
| _qsv194 = np.cumsum(_qsv193, axis=1) | |
| return _qsv35 + _qsv194 + _qsv192 + _qsv46 | |
| def _k02(_qsv33: np.random.Generator, n: int, L: int, *, _qsv181: float=0.25, _qsv182: float=0.3, _qsv183: float=2.0) -> np.ndarray: | |
| t = np.arange(L, dtype=np.float64)[None, :] | |
| _qsv195 = _qsv33.random((n, 1)) < _qsv181 | |
| _qsv196 = np.where(_qsv195, _qsv33.normal(0.0, _qsv183, size=(n, 1)), _qsv33.normal(0.0, _qsv182, size=(n, 1))) | |
| tn = t / max(L - 1, 1) | |
| _qsv197 = np.exp(_qsv196 * tn + _qsv33.normal(0.0, 0.3, size=(n, 1))) | |
| _qsv64 = _qsv33.uniform(0.1, 0.6, size=(n, 1)) | |
| _qsv198 = _qsv21(_qsv33, n, L, _qsv123=1) | |
| _qsv198 = _qsv19(_qsv198, _qsv121=False) | |
| _qsv192 = 1.0 + _qsv64 * _qsv198 | |
| _qsv46 = 1.0 + _qsv33.normal(0.0, 1.0, size=(n, L)) * _qsv33.uniform(0.02, 0.15, size=(n, 1)) | |
| scale = _qsv33.uniform(1.0, 50.0, size=(n, 1)) | |
| return scale * _qsv197 * np.clip(_qsv192, 0.05, None) * np.clip(_qsv46, 0.05, None) | |
| def _k03(_qsv33: np.random.Generator, n: int, L: int) -> np.ndarray: | |
| p1 = _qsv33.uniform(0.3, 0.98, size=n) | |
| p2 = _qsv33.uniform(-0.6, 0.6, size=n) | |
| a2 = p2 | |
| a1 = p1 * (1.0 - p2) | |
| sigma = _qsv33.uniform(0.2, 0.8, size=(n, 1)) | |
| _qsv199 = 512 | |
| _qsv108 = _qsv33.normal(0.0, 1.0, size=(n, L + _qsv199)) * sigma | |
| return _qsv15(_qsv108, a1, a2)[:, _qsv199:] | |
| def _k04(_qsv33: np.random.Generator, n: int, L: int, *, _qsv200: float=0.25, _qsv201: float=0.3) -> np.ndarray: | |
| _qsv202 = _qsv33.random(n) < 0.35 | |
| _qsv45 = _qsv33.normal(0.0, 0.02, size=(n, 1)) | |
| sigma = _qsv33.uniform(0.2, 1.0, size=(n, 1)) | |
| _qsv203 = _qsv33.normal(0.0, 1.0, size=(n, L)) | |
| _qsv204 = np.nonzero(_qsv33.random(n) < _qsv200)[0] | |
| if _qsv204.size: | |
| df = _qsv33.uniform(3.0, 12.0, size=(_qsv204.size, 1)) | |
| _qsv203[_qsv204] = _qsv33.standard_t(df, size=(_qsv204.size, L)) / np.sqrt(df / (df - 2.0)) | |
| _qsv205 = np.nonzero(_qsv33.random(n) < _qsv201)[0] | |
| if _qsv205.size: | |
| _qsv109 = 0.995 | |
| _qsv199 = 256 | |
| _qsv207 = _qsv33.standard_normal((_qsv205.size, L + _qsv199)) * np.sqrt(1.0 - _qsv109 * _qsv109) | |
| _qsv190 = lfilter([1.0], [1.0, -_qsv109], _qsv207, axis=1)[:, _qsv199:] | |
| _qsv190 *= _qsv33.uniform(0.1, 0.55, size=(_qsv205.size, 1)) | |
| _qsv203[_qsv205] *= np.exp(np.clip(_qsv190, -2.0, 2.0)) | |
| _qsv84 = _qsv203 * sigma + _qsv45 | |
| _qsv58 = np.cumsum(_qsv84, axis=1) | |
| _qsv206 = np.cumsum(_qsv58, axis=1) | |
| o2 = _qsv202[:, None] | |
| return np.where(o2, _qsv206 / max(L, 1), _qsv58) | |
| def _k05(_qsv33: np.random.Generator, n: int, L: int) -> np.ndarray: | |
| _qsv114 = _qsv33.uniform(0.3, 0.9, size=n) | |
| _qsv115 = _qsv33.uniform(-0.9, 0.3, size=n) | |
| _qsv116 = _qsv33.normal(0.0, 0.3, size=n) | |
| _qsv117 = _qsv33.normal(0.0, 0.3, size=n) | |
| sigma = _qsv33.uniform(0.2, 0.7, size=(n, 1)) | |
| _qsv199 = 256 | |
| _qsv208 = L + _qsv199 | |
| _qsv108 = _qsv33.normal(0.0, 1.0, size=(n, _qsv208)) * sigma | |
| x = _qsv16(np.ascontiguousarray(_qsv108, dtype=np.float64), np.asarray(_qsv114, dtype=np.float64), np.asarray(_qsv115, dtype=np.float64), np.asarray(_qsv116, dtype=np.float64), np.asarray(_qsv117, dtype=np.float64)) | |
| return x[:, _qsv199:] | |
| def _k06(_qsv33: np.random.Generator, n: int, L: int) -> np.ndarray: | |
| _qsv209 = _qsv33.random(n) < 0.5 | |
| _qsv210 = _qsv33.uniform(3.6, 4.0, size=n) | |
| _qsv211 = _qsv33.uniform(0.85, 1.0, size=n) | |
| x0 = _qsv33.uniform(0.05, 0.95, size=n) | |
| _qsv212 = x0.copy() | |
| for _ in range(64): | |
| _qsv213 = _qsv210 * _qsv212 * (1.0 - _qsv212) | |
| _qsv214 = _qsv211 * np.sin(np.pi * _qsv212) | |
| _qsv212 = np.clip(np.where(_qsv209, _qsv214, _qsv213), 0.0, 1.0) | |
| x = np.empty((n, L), dtype=np.float64) | |
| x[:, 0] = _qsv212 | |
| for t in range(1, L): | |
| _qsv213 = _qsv210 * _qsv212 * (1.0 - _qsv212) | |
| _qsv214 = _qsv211 * np.sin(np.pi * _qsv212) | |
| _qsv212 = np.where(_qsv209, _qsv214, _qsv213) | |
| _qsv212 = np.clip(_qsv212, 0.0, 1.0) | |
| x[:, t] = _qsv212 | |
| return _qsv19(x) | |
| def _k07(_qsv33: np.random.Generator, n: int, L: int) -> np.ndarray: | |
| _qsv215 = 2 * L | |
| f = np.fft.rfftfreq(_qsv215)[None, :] | |
| _qsv216 = np.exp(_qsv33.uniform(np.log(8.0), np.log(256.0), size=(n, 1))) | |
| _qsv217 = np.exp(-0.5 * (2.0 * np.pi * _qsv216 * f) ** 2) | |
| z = _qsv33.standard_normal((n, f.shape[1])) + 1j * _qsv33.standard_normal((n, f.shape[1])) | |
| z[:, 0] = 0.0 | |
| x = np.fft.irfft(z * np.sqrt(_qsv217), n=_qsv215, axis=1)[:, :L] | |
| return _qsv19(x) | |
| def _k08(_qsv33: np.random.Generator, n: int, L: int) -> np.ndarray: | |
| _qsv215 = 2 * L | |
| f = np.fft.rfftfreq(_qsv215) | |
| _qsv218 = np.maximum(f, 1.0 / _qsv215)[None, :] | |
| beta = _qsv33.uniform(-0.6, 2.4, size=(n, 1)) | |
| _qsv64 = _qsv218 ** (-0.5 * beta) | |
| _qsv219 = _qsv33.random((n, 1)) < 0.4 | |
| _qsv220 = _qsv33.integers(8, max(9, f.size // 3), size=(n, 1)) | |
| _qsv221 = np.maximum(_qsv220 / _qsv215, 1.0 / _qsv215) | |
| _qsv222 = _qsv33.uniform(-0.6, 2.8, size=(n, 1)) | |
| _qsv223 = np.arange(f.size)[None, :] > _qsv220 | |
| _qsv224 = _qsv221 ** (-0.5 * beta) * (_qsv218 / _qsv221) ** (-0.5 * _qsv222) | |
| _qsv64 = np.where(_qsv219 & _qsv223, _qsv224, _qsv64) | |
| _qsv64[:, 0] = 0.0 | |
| z = _qsv33.standard_normal((n, f.size)) + 1j * _qsv33.standard_normal((n, f.size)) | |
| x = np.fft.irfft(z * _qsv64, n=_qsv215, axis=1)[:, :L] | |
| _qsv225 = _qsv33.random(n) < 0.25 | |
| if _qsv225.any(): | |
| x[_qsv225] = np.cumsum(x[_qsv225], axis=1) | |
| return _qsv19(x) | |
| def _k09(_qsv33: np.random.Generator, n: int, L: int) -> np.ndarray: | |
| _qsv226 = np.exp(_qsv33.uniform(np.log(0.001), np.log(0.15), size=(n, 1))) | |
| _qsv227 = _qsv33.random((n, L)) < _qsv226 | |
| _qsv227[:, 0] = _qsv33.random(n) < 0.5 | |
| _qsv228 = np.bitwise_and(np.cumsum(_qsv227, axis=1), 1).astype(np.int8) | |
| _qsv138 = _qsv33.random((n, 1)) < 0.5 | |
| _qsv109 = np.where(_qsv138, _qsv33.uniform(0.995, 0.9995, size=(n, 1)), _qsv33.uniform(0.9, 0.99, size=(n, 1))) | |
| _qsv229 = _qsv33.normal(-2.0, 1.0, size=(n, 1)) | |
| _qsv230 = _qsv33.normal(2.0, 1.0, size=(n, 1)) | |
| mean = np.where(_qsv228 == 0, _qsv229, _qsv230) | |
| _qsv231 = _qsv33.random((n, 1)) < 0.6 | |
| mean += _qsv231 * _qsv21(_qsv33, n, L, _qsv123=3) * _qsv33.uniform(0.5, 3.0, size=(n, 1)) | |
| _qsv232 = _qsv33.normal(np.log(0.3), 0.3, size=(n, 1)) | |
| _qsv233 = _qsv33.normal(np.log(1.5), 0.5, size=(n, 1)) | |
| _qsv234 = np.where(_qsv228 == 0, _qsv232, _qsv233) | |
| _qsv235 = _qsv33.uniform(0.951, 0.995, size=(n, 1)) | |
| _qsv236 = _qsv33.uniform(0.03, 0.2, size=(n, 1)) | |
| _qsv237 = _qsv33.standard_normal((n, L)) | |
| _qsv238 = (1.0 - _qsv235) * _qsv234 + np.sqrt(1.0 - _qsv235 * _qsv235) * _qsv236 * _qsv237 | |
| _qsv190 = np.empty((n, L), dtype=np.float64) | |
| _qsv190[:, 0] = _qsv234[:, 0] | |
| for i in range(n): | |
| _qsv241 = float(_qsv235[i, 0]) | |
| _qsv190[i, 1:] = lfilter([1.0], [1.0, -_qsv241], _qsv238[i, 1:], zi=[_qsv241 * _qsv190[i, 0]])[0] | |
| _qsv191 = np.exp(np.clip(_qsv190, -5.0, 5.0)) | |
| _qsv203 = _qsv33.standard_normal((n, L)) | |
| _qsv204 = np.nonzero(_qsv33.random(n) < 0.35)[0] | |
| if _qsv204.size: | |
| _qsv203[_qsv204] = _qsv33.standard_t(4.0, size=(_qsv204.size, L)) / np.sqrt(2.0) | |
| _qsv239 = _qsv33.random((n, L)) < 3.0 / L | |
| _qsv242, _qsv243 = np.nonzero(_qsv239) | |
| _qsv203[_qsv242, _qsv243] += _qsv33.normal(0.0, 5.0, size=_qsv242.size) | |
| _qsv240 = np.sqrt(np.maximum(1.0 - _qsv109 * _qsv109, 1e-06)) | |
| _qsv38 = (1.0 - _qsv109) * mean + _qsv240 * _qsv191 * _qsv203 | |
| out = np.empty((n, L), dtype=np.float64) | |
| out[:, 0] = mean[:, 0] + _qsv191[:, 0] * _qsv203[:, 0] | |
| for i in range(n): | |
| p = float(_qsv109[i, 0]) | |
| out[i, 1:] = lfilter([1.0], [1.0, -p], _qsv38[i, 1:], zi=[p * out[i, 0]])[0] | |
| scale = np.exp(_qsv33.uniform(np.log(0.1), np.log(50.0), size=(n, 1))) | |
| _qsv68 = _qsv33.uniform(-100.0, 100.0, size=(n, 1)) | |
| return out * scale + _qsv68 | |
| def _k10(_qsv33: np.random.Generator, n: int, L: int) -> np.ndarray: | |
| _qsv244 = _qsv21(_qsv33, n, L, _qsv123=2) | |
| _qsv245 = _k07(_qsv33, n, L) | |
| _qsv246 = np.cumsum(_qsv22(_qsv33, n, L, _qsv50=5.0 / L, scale=1.0), axis=1) | |
| _qsv47 = _qsv244 * _qsv33.uniform(0.3, 2.0, size=(n, 1)) + _qsv245 * _qsv33.uniform(0.2, 1.2, size=(n, 1)) + _qsv246 * _qsv33.uniform(0.2, 1.0, size=(n, 1)) | |
| _qsv247 = _qsv33.integers(0, 4, size=n) | |
| out = _qsv47.copy() | |
| _qsv248 = _qsv247 == 1 | |
| if _qsv248.any(): | |
| _qsv250 = _qsv33.uniform(0.8, 3.5, size=(int(_qsv248.sum()), 1)) | |
| _qsv251 = _qsv33.uniform(-0.8, 0.8, size=(int(_qsv248.sum()), 1)) | |
| out[_qsv248] = 100.0 / (1.0 + np.exp(-_qsv250 * (_qsv47[_qsv248] - _qsv251))) | |
| _qsv249 = _qsv247 == 2 | |
| if _qsv249.any(): | |
| _qsv252 = int(_qsv249.sum()) | |
| _qsv253 = np.exp(_qsv33.uniform(np.log(0.03), np.log(0.2), size=(_qsv252, 1))) | |
| _qsv58 = np.cumsum(_qsv33.standard_normal((_qsv252, L)) * _qsv253, axis=1) | |
| _qsv35 = _qsv33.uniform(900.0, 1100.0, size=(_qsv252, 1)) | |
| out[_qsv249] = _qsv35 + _qsv58 + 2.0 * _qsv246[_qsv249] + 0.5 * _qsv244[_qsv249] | |
| _qsv175 = _qsv247 == 3 | |
| if _qsv175.any(): | |
| _qsv252 = int(_qsv175.sum()) | |
| _qsv254 = (_qsv33.random((_qsv252, L)) < 8.0 / L) * _qsv33.lognormal(0.0, 0.8, size=(_qsv252, L)) | |
| _qsv255 = _qsv33.uniform(1.0, 1.6, size=(_qsv252, 1)) | |
| out[_qsv175] = np.abs(_qsv47[_qsv175]) ** _qsv255 + _qsv254 | |
| return out | |
| def _k11(_qsv33: np.random.Generator, n: int, L: int, *, _qsv256: float=0.0) -> np.ndarray: | |
| t = np.arange(L, dtype=np.float64)[None, :] | |
| _qsv49 = _qsv33.choice(_qsv05, size=(n, 1), p=_qsv06) | |
| _qsv130 = _qsv33.uniform(0.0, 2.0 * np.pi, size=(n, 1)) | |
| _qsv64 = _qsv33.uniform(0.15, 0.8, size=(n, 1)) | |
| _qsv71 = _qsv64 * np.sin(2.0 * np.pi * t / _qsv49 + _qsv130) | |
| _qsv257 = _qsv33.random((n, 1)) < 0.55 | |
| _qsv71 += _qsv257 * (0.5 * _qsv64) * np.sin(4.0 * np.pi * t / _qsv49 + _qsv33.uniform(0.0, 2.0 * np.pi, size=(n, 1))) | |
| _qsv258 = _qsv33.random((n, 1)) < 0.35 | |
| _qsv259 = _qsv33.choice([24, 48, 96, 144], size=(n, 1)) | |
| _qsv260 = (np.floor_divide(np.arange(L)[None, :], _qsv259) % 7).astype(np.int64) | |
| _qsv261 = _qsv33.normal(0.0, 0.12, size=(n, 7)) | |
| _qsv261[:, 5:] += _qsv33.uniform(-0.8, 0.3, size=(n, 1)) | |
| _qsv262 = np.take_along_axis(_qsv261, _qsv260, axis=1) | |
| _qsv71 += _qsv258 * _qsv262 | |
| _qsv263 = _qsv33.uniform(-0.5, 0.5, size=(n, 1)) | |
| _qsv71 += _qsv263 * t / max(L - 1, 1) | |
| _qsv264 = (_qsv33.random((n, L)) < 2.0 / L) * _qsv33.uniform(1.0, 10.0, size=(n, L)) | |
| _qsv265 = _qsv13(_qsv264, _qsv33.uniform(0.85, 0.995, size=(n, 1))) | |
| _qsv47 = np.exp(_qsv33.uniform(np.log(3.0), np.log(3000.0), size=(n, 1))) | |
| _qsv74 = _qsv47 * np.exp(np.clip(_qsv71, -5.0, 5.0)) * (1.0 + _qsv265) | |
| np.clip(_qsv74, 0.0, 10000000.0, out=_qsv74) | |
| _qsv266 = _qsv33.random((n, 1)) < 0.5 | |
| shape = _qsv33.uniform(0.5, 4.0, size=(n, 1)) | |
| _qsv76 = _qsv74 * _qsv33.gamma(shape, 1.0 / shape, size=(n, L)) | |
| out = _qsv33.poisson(np.where(_qsv266, _qsv76, _qsv74)).astype(np.float64) | |
| if _qsv256 > 0.0: | |
| _qsv267 = np.nonzero(_qsv33.random(n) < _qsv256)[0] | |
| if _qsv267.size: | |
| _qsv268 = _qsv33.choice(np.array([7, 7, 7, 14, 24, 48, 168], dtype=np.int64), size=_qsv267.size) | |
| _qsv269 = np.array([int(_qsv33.integers(0, int(_qsv49))) for _qsv49 in _qsv268], dtype=np.int64) | |
| _qsv270 = np.arange(L, dtype=np.int64) | |
| for _qsv110, _qsv271, _qsv272 in zip(_qsv267, _qsv268, _qsv269): | |
| _qsv273 = (_qsv270 - _qsv272) % _qsv271 == 0 | |
| _qsv273[0] = True | |
| _qsv274 = np.maximum.accumulate(np.where(_qsv273, _qsv270, 0)) | |
| out[_qsv110] = out[_qsv110, _qsv274] | |
| return out | |
| def _k12(_qsv33: np.random.Generator, n: int, L: int) -> np.ndarray: | |
| t = np.arange(L, dtype=np.float64)[None, :] | |
| _qsv275 = _qsv33.uniform(0.03, 0.35, size=(n, 1)) | |
| _qsv49 = _qsv33.choice([7.0, 12.0, 24.0, 48.0, 168.0], size=(n, 1)) | |
| _qsv276 = _qsv33.uniform(0.2, 1.2, size=(n, 1)) * np.sin(2.0 * np.pi * t / _qsv49 + _qsv33.uniform(0.0, 2.0 * np.pi, size=(n, 1))) | |
| _qsv277 = np.log(_qsv275 / (1.0 - _qsv275)) + _qsv276 | |
| p = 1.0 / (1.0 + np.exp(-_qsv277)) | |
| _qsv278 = (_qsv33.random((n, L)) < p).astype(np.float64) | |
| _qsv175 = np.maximum(1.0, np.rint(_qsv33.gamma(shape=2.0, scale=1.0, size=(n, L)) * _qsv33.uniform(1.0, 10.0, size=(n, 1)) * np.exp(0.25 * _qsv276))) | |
| return _qsv278 * _qsv175 | |
| def _k13(_qsv33: np.random.Generator, n: int, L: int) -> np.ndarray: | |
| _qsv47 = _k07(_qsv33, n, L) * _qsv33.uniform(0.5, 2.0, size=(n, 1)) | |
| _qsv47 += _qsv21(_qsv33, n, L, _qsv123=1) * _qsv33.uniform(0.0, 1.0, size=(n, 1)) | |
| _qsv279 = _qsv22(_qsv33, n, L, _qsv50=3.0 / L, scale=_qsv33.uniform(3.0, 8.0, size=n)) | |
| _qsv264 = _qsv22(_qsv33, n, L, _qsv50=2.0 / L, scale=_qsv33.uniform(2.0, 7.0, size=n)) | |
| _qsv280 = _qsv13(_qsv264, _qsv33.uniform(0.75, 0.995, size=n)) | |
| series = _qsv47 + _qsv279 + _qsv280 | |
| _qsv281 = _qsv33.random((n, L)) < 2.0 / L | |
| _qsv281[:, 0] = False | |
| for _qsv110 in range(n): | |
| for start in np.nonzero(_qsv281[_qsv110])[0]: | |
| _qsv282 = int(_qsv33.integers(3, 65)) | |
| _qsv283 = min(int(start) + _qsv282, L) | |
| series[_qsv110, start:_qsv283] = series[_qsv110, start - 1] | |
| return series | |
| _qsv24 = 192 | |
| _qsv25 = 1024 | |
| _qsv26 = 192 | |
| _qsv27 = 1024 | |
| def _k14(_qsv33: np.random.Generator, n: int, L: int, *, _qsv284: int | None=None) -> np.ndarray: | |
| if n <= 0: | |
| return np.empty((0, L), dtype=np.float64) | |
| if L <= 0: | |
| return np.empty((n, 0), dtype=np.float64) | |
| _qsv247 = _qsv33.integers(0, 4, size=n) | |
| _qsv285 = np.empty((n, L), dtype=np.float64) | |
| for _k in range(4): | |
| _qsv290 = np.nonzero(_qsv247 == _k)[0] | |
| if _qsv290.size == 0: | |
| continue | |
| _m = int(_qsv290.size) | |
| if _k == 0: | |
| _v = _qsv21(_qsv33, _m, L, _qsv123=2) | |
| elif _k == 1: | |
| _v = _qsv13(_qsv33.normal(size=(_m, L)) * _qsv33.uniform(0.12, 0.55, size=(_m, 1)), _qsv33.uniform(0.35, 0.92, size=_m)) | |
| elif _k == 2: | |
| _v = _k07(_qsv33, _m, L) | |
| else: | |
| _v = np.cumsum(_qsv33.normal(size=(_m, L)) * _qsv33.uniform(0.025, 0.16, size=(_m, 1)), axis=1) | |
| _qsv285[_qsv290] = _v | |
| _qsv286 = None | |
| _qsv287 = _qsv33.integers(0, 4, size=n) | |
| if _qsv284 is not None: | |
| _qsv287 = np.full(n, int(_qsv284), dtype=_qsv287.dtype) | |
| _qsv35 = _qsv33.normal(0.0, 2.0, size=n) | |
| scale = np.exp(_qsv33.uniform(np.log(0.4), np.log(12.0), size=n)) | |
| _qsv288 = _qsv33.uniform(0.6, 2.2, size=n) | |
| _qsv289 = _qsv33.random(n) < 0.65 | |
| out = np.empty((n, L), dtype=np.float64) | |
| for _qsv110 in range(n): | |
| _qsv291 = _qsv285[_qsv110] | |
| _qsv167 = _qsv291[:min(L, 512)] | |
| _qsv292 = float(_qsv167.mean()) | |
| _qsv293 = float(_qsv167.std()) | |
| _qsv291 -= _qsv292 | |
| if _qsv293 > 1e-12: | |
| _qsv291 /= _qsv293 | |
| _qsv294 = float(_qsv35[_qsv110]) | |
| _qsv295 = bool(_qsv289[_qsv110]) | |
| _qsv296 = 0 | |
| _qsv297 = 0 | |
| _qsv298 = False | |
| while _qsv296 < L: | |
| if _qsv295: | |
| _qsv300 = int(_qsv33.integers(_qsv24, _qsv25 + 1)) | |
| else: | |
| _qsv300 = int(_qsv33.integers(_qsv26, _qsv27 + 1)) | |
| if _qsv297 == 0 and L >= 2 * _qsv26: | |
| _qsv300 = min(_qsv300, L - _qsv26) | |
| _qsv283 = min(_qsv296 + max(_qsv300, 1), L) | |
| _qsv59 = _qsv283 - _qsv296 | |
| if _qsv295: | |
| _qsv177 = int(_qsv287[_qsv110]) | |
| if _qsv177 == 0: | |
| out[_qsv110, _qsv296:_qsv283] = _qsv294 | |
| values = None | |
| elif _qsv177 == 1: | |
| _qsv45 = _qsv33.normal(0.0, 0.0025, size=_qsv59).cumsum() | |
| _qsv45 += np.linspace(0.0, float(_qsv33.normal(0.0, 0.025)), _qsv59) | |
| values = _qsv294 + _qsv45 | |
| elif _qsv177 == 2: | |
| if not _qsv298: | |
| _qsv305 = max(0.0, float(np.rint(abs(_qsv294) * 8.0))) | |
| _qsv298 = True | |
| else: | |
| _qsv305 = max(0.0, float(np.rint(_qsv294))) | |
| _qsv302 = _qsv33.random(_qsv59) < 0.025 | |
| _qsv303 = _qsv302 * _qsv33.choice([-1.0, 1.0], size=_qsv59) | |
| values = np.maximum(_qsv305 + np.cumsum(_qsv303), 0.0) | |
| else: | |
| _qsv304 = _qsv33.random(_qsv59) < 0.012 | |
| values = _qsv304 * _qsv33.gamma(1.5, 0.35, size=_qsv59) | |
| else: | |
| _qsv301 = _qsv291[_qsv296:_qsv283] * float(_qsv288[_qsv110]) | |
| values = _qsv301 - _qsv301[0] + _qsv294 | |
| if _qsv59 > 1 and np.ptp(values) < 1e-10: | |
| values = _qsv294 + np.linspace(0.0, 1.0, _qsv59) | |
| if values is not None: | |
| out[_qsv110, _qsv296:_qsv283] = values | |
| _qsv294 = float(values[-1]) | |
| _qsv296 = _qsv283 | |
| _qsv295 = not _qsv295 | |
| _qsv297 += 1 | |
| _qsv299 = 1.0 if int(_qsv287[_qsv110]) == 2 else float(scale[_qsv110]) | |
| out[_qsv110] *= _qsv299 | |
| if L > 1 and np.ptp(out[_qsv110]) < 1e-10: | |
| out[_qsv110, -1] += max(0.001, 0.01 * _qsv299) | |
| return out | |
| def _qsv28(_qsv145: np.ndarray) -> np.ndarray: | |
| x = np.asarray(_qsv145, dtype=np.float64) | |
| np.nan_to_num(x, copy=False, nan=0.0, posinf=1000000.0, neginf=-1000000.0) | |
| if x.ndim == 1: | |
| _qsv306 = float(np.max(np.abs(x))) | |
| if _qsv306 > 1000000.0: | |
| x *= 1000000.0 / _qsv306 | |
| else: | |
| _qsv306 = np.max(np.abs(x), axis=1, keepdims=True) | |
| scale = np.where(_qsv306 > 1000000.0, 1000000.0 / np.maximum(_qsv306, 1e-12), 1.0) | |
| x *= scale | |
| return x | |
| def _k28(_qsv33: np.random.Generator, n: int, L: int) -> np.ndarray: | |
| return _k14(_qsv33, n, L, _qsv284=0) | |
| def _k29(_qsv33: np.random.Generator, n: int, L: int) -> np.ndarray: | |
| return _k14(_qsv33, n, L, _qsv284=1) | |
| def _k30(_qsv33: np.random.Generator, n: int, L: int) -> np.ndarray: | |
| return _k14(_qsv33, n, L, _qsv284=2) | |
| def _k31(_qsv33: np.random.Generator, n: int, L: int) -> np.ndarray: | |
| return _k14(_qsv33, n, L, _qsv284=3) | |
| _qsv29 = 0.85 | |
| _qsv30 = 0.7 | |
| def _qsv31(_qsv33: np.random.Generator, _qsv145: np.ndarray) -> np.ndarray: | |
| n = _qsv145.shape[0] | |
| if n == 0: | |
| return _qsv145 | |
| _qsv307 = _qsv33.random(n) < _qsv29 | |
| if not _qsv307.any(): | |
| return _qsv145 | |
| _qsv308 = np.nonzero(_qsv307)[0] | |
| _qsv143 = _qsv145[_qsv308] | |
| _qsv309 = _qsv143.min(axis=1, keepdims=True) | |
| _qsv299 = np.maximum(_qsv143.std(axis=1, keepdims=True), 1e-09) | |
| floor = _qsv299 * _qsv33.uniform(0.0, 0.15, size=(_qsv308.size, 1)) | |
| _qsv68 = np.where(_qsv309 < floor, floor - _qsv309, 0.0) | |
| _qsv143 = _qsv143 + _qsv68 | |
| _qsv310 = _qsv33.random(_qsv308.size) < _qsv30 | |
| if _qsv310.any(): | |
| _qsv311 = _qsv308[_qsv310] | |
| _qsv312 = np.rint(_qsv143[_qsv310]) | |
| _qsv145[_qsv311] = _qsv312 | |
| _qsv313 = ~_qsv310 | |
| if _qsv313.any(): | |
| _qsv145[_qsv308[_qsv313]] = _qsv143[_qsv313] | |
| else: | |
| _qsv145[_qsv308] = _qsv143 | |
| return _qsv145 | |
| def _qsv32(_qsv33: np.random.Generator, _qsv145: np.ndarray, *, _qsv150: float=0.0, _qsv151: float=0.0, _qsv152: float=0.0, _qsv153: float=0.0) -> np.ndarray: | |
| out = np.asarray(_qsv145, dtype=np.float64) | |
| if out.ndim != 2: | |
| return out | |
| n, L = out.shape | |
| if n == 0 or L < 8: | |
| return out | |
| t = np.arange(L, dtype=np.float64) | |
| _qsv314 = np.nonzero(_qsv33.random(n) < _qsv150)[0] | |
| for i in _qsv314: | |
| _qsv318 = int(_qsv33.integers(2, 6)) | |
| _qsv319 = np.sort(_qsv33.choice(L, size=_qsv318, replace=False).astype(np.float64)) | |
| _qsv319[0] = 0.0 | |
| _qsv319[-1] = float(L - 1) | |
| _qsv320 = np.exp(_qsv33.normal(0.0, 0.45, size=_qsv318)) | |
| _qsv217 = np.interp(t, _qsv319, _qsv320) | |
| _qsv321 = float(np.median(out[i])) | |
| out[i] = _qsv321 + (out[i] - _qsv321) * _qsv217 | |
| _qsv315 = np.nonzero(_qsv33.random(n) < _qsv151)[0] | |
| if _qsv315.size: | |
| _qsv322 = out[_qsv315, :min(L, 512)] | |
| _qsv121 = np.median(_qsv322, axis=1, keepdims=True) | |
| _qsv323 = 1.4826 * np.median(np.abs(_qsv322 - _qsv121), axis=1, keepdims=True) | |
| _qsv164 = np.maximum(np.std(_qsv322, axis=1, keepdims=True), 1e-09) | |
| _qsv323 = np.where(_qsv323 > 1e-09, _qsv323, _qsv164) | |
| for k, i in enumerate(_qsv315): | |
| _qsv329 = int(_qsv33.integers(1, 5)) | |
| _qsv330 = float(_qsv33.uniform(1.5, max(2.0, 0.03 * L))) | |
| _qsv52 = float(_qsv33.lognormal(np.log(3.0), 0.55)) * float(_qsv323[k, 0]) | |
| _qsv89 = float(_qsv33.choice([-1.0, 1.0])) | |
| _qsv331 = _qsv33.integers(0, L, size=_qsv329) | |
| _qsv332 = int(_qsv33.integers(0, 3)) | |
| for c in _qsv331: | |
| if _qsv332 == 0: | |
| _qsv333 = np.exp(-0.5 * ((t - c) / _qsv330) ** 2) | |
| elif _qsv332 == 1: | |
| _qsv333 = np.maximum(0.0, 1.0 - np.abs(t - c) / (_qsv330 * 2.0)) | |
| else: | |
| _qsv333 = (np.abs(t - c) <= _qsv330).astype(np.float64) | |
| out[i] = out[i] + _qsv89 * _qsv52 * _qsv333 | |
| _qsv316 = np.nonzero(_qsv33.random(n) < _qsv152)[0] | |
| for i in _qsv316: | |
| _qsv84 = _qsv33.normal(0.0, 1.0, size=L).cumsum() | |
| _qsv324 = _qsv84 - t / max(L - 1, 1) * _qsv84[-1] | |
| _qsv324 = _qsv324 - _qsv324.mean() | |
| _qsv325 = float(_qsv324.std()) or 1.0 | |
| _qsv64 = float(_qsv33.uniform(0.5, 3.0)) | |
| _qsv326 = _qsv64 * (_qsv324 / _qsv325) | |
| _qsv327 = np.clip(t + _qsv326, 0.0, float(L - 1)) | |
| lo = np.floor(_qsv327).astype(np.int64) | |
| hi = np.minimum(lo + 1, L - 1) | |
| w = _qsv327 - lo | |
| out[i] = (1.0 - w) * out[i, lo] + w * out[i, hi] | |
| _qsv317 = np.nonzero(_qsv33.random(n) < _qsv153)[0] | |
| for i in _qsv317: | |
| _qsv49 = int(_qsv33.choice([4, 8, 12, 16, 24, 48])) | |
| on = int(_qsv33.integers(1, max(2, _qsv49))) | |
| _qsv130 = int(_qsv33.integers(0, _qsv49)) | |
| _qsv128 = (t.astype(np.int64) + _qsv130) % _qsv49 < on | |
| _qsv328 = np.where(_qsv128, np.arange(L, dtype=np.int64), 0) | |
| np.maximum.accumulate(_qsv328, out=_qsv328) | |
| out[i] = out[i, _qsv328] | |
| return out |