SynHydro¶
Synthetic Generation Library - stochastic streamflow generation for hydrologic analysis.
SynHydro provides parametric, hybrid, and non-parametric stochastic generation methods under a unified API. All generators share the same fit() and generate() workflow. See the Algorithms overview for the classification and plain-language descriptions of each class.
Generators¶

See the Algorithms overview for definitions of the method-family groups.
| Generator | Class | Frequency | Sites | Reference |
|---|---|---|---|---|
ThomasFieringGenerator |
Parametric | Monthly | Single | Thomas & Fiering (1962) |
MatalasGenerator |
Parametric | Monthly | Multi | Matalas (1967) |
ARFIMAGenerator |
Parametric | Monthly/Annual | Single | Hosking (1984) |
SPARTAGenerator |
Parametric | Monthly | Multi | Tsoukalas et al. (2018) |
SMARTAGenerator |
Parametric | Annual | Multi | Tsoukalas et al. (2018) |
MultiSiteHMMGenerator |
Parametric | Annual | Multi | Gold et al. (2024) |
KirschGenerator |
Hybrid | Weekly/Monthly | Multi | Kirsch et al. (2013) |
WARMGenerator |
Hybrid | Annual | Single | Nowak et al. (2011) |
PhaseRandomizationGenerator |
Hybrid | Daily | Single | Brunner et al. (2019) |
MultisitePhaseRandomizationGenerator |
Hybrid | Daily | Multi | Brunner & Gilleland (2020) |
KNNBootstrapGenerator |
Non-parametric | Monthly/Annual | Multi | Lall & Sharma (1996); Prairie et al. (2006, 2008) |
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.