SynHydro¶
Synthetic Generation Library - stochastic streamflow generation for hydrologic analysis.
SynHydro provides parametric and nonparametric stochastic generation methods under a unified API. All generators share the same fit() and generate() workflow.
Generators¶
| Class | Type | Frequency | Sites | Reference |
|---|---|---|---|---|
ThomasFieringGenerator |
Parametric AR(1) | Monthly | Single | Thomas & Fiering (1962) |
MatalasGenerator |
Parametric MAR(1) | Monthly | Multi | Matalas (1967) |
ARFIMAGenerator |
Fractional ARIMA | Monthly/Annual | Single | Hosking (1984) |
SPARTAGenerator |
PAR-to-Anything | Monthly | Multi | Tsoukalas et al. (2018) |
SMARTAGenerator |
SMA-to-Anything | Annual | Multi | Tsoukalas et al. (2018) |
MultiSiteHMMGenerator |
Hidden Markov Model | Annual | Multi | Gold et al. (2024) |
HMMKNNGenerator |
HMM + KNN resampling | Annual | Multi | Prairie et al. (2008) |
WARMGenerator |
Wavelet AR | Annual | Single | Nowak et al. (2011) |
KirschGenerator |
Nonparametric Bootstrap | Monthly | Multi | Kirsch et al. (2013) |
KNNBootstrapGenerator |
K-Nearest Neighbor | Daily/Monthly/Annual | Multi | Lall & Sharma (1996) |
PhaseRandomizationGenerator |
Spectral | Daily | Single | Brunner et al. (2019) |
MultisitePhaseRandomizationGenerator |
Wavelet phase-random | Daily | Multi | Brunner & Gilleland (2020) |
Quick Example¶
import synhydro
Q_obs = synhydro.load_example_data() # daily DataFrame
Q_monthly = Q_obs.resample("MS").sum() # resample to monthly
gen = synhydro.KirschGenerator()
gen.fit(Q_monthly)
ensemble = gen.generate(n_realizations=50, n_years=30, seed=42)
Installation¶
See Getting Started for full setup and data format details.