Skip to content

SynHydro

Synthetic Generation Library - stochastic streamflow generation for hydrologic analysis.

Tests Docs Python License: MIT

SynHydro provides parametric, nonparametric, and machine-learning stochastic generation methods under a unified API. All generators share the same fit() then generate() workflow.

Generators

Class Type Frequency Sites Reference
KirschGenerator Nonparametric Monthly Multi Kirsch et al. (2013)
PhaseRandomizationGenerator Nonparametric Daily Single Brunner et al. (2019)
ThomasFieringGenerator Parametric AR(1) Monthly Single Thomas & Fiering (1962)
MATALASGenerator Parametric MAR(1) Monthly Multi Matalas (1967)
MultiSiteHMMGenerator Hidden Markov Model Annual Multi Gold et al. (2024)
WARMGenerator Wavelet AR Annual Single Nowak et al. (2011)

Quick Example

import synhydro

Q_obs = synhydro.load_example_data()                       # daily DataFrame
Q_monthly = Q_obs.resample("MS").mean()                 # resample to monthly

gen = synhydro.KirschGenerator()
gen.fit(Q_monthly)
ensemble = gen.generate(n_realizations=50, n_years=30, seed=42)

Installation

pip install git+https://github.com/TrevorJA/SynHydro.git

See Getting Started for full setup and data format details.