SynHydro
SynHydro is a Python library for generating synthetic hydrologic timeseries using a unified, scikit-learn-style API. All generators share a common fit() and generate() workflow, and the library includes validation, drought analysis, plotting, and ensemble data management tools.
Installation
pip install synhydro
To install a specific tagged release directly from GitHub instead:
pip install git+https://github.com/TrevorJA/SynHydro.git@v0.1.0
Quick example
import synhydro
Q_daily = synhydro.load_example_data()
Q_monthly = Q_daily.resample("MS").sum()
gen = synhydro.KirschGenerator()
gen.fit(Q_monthly)
ensemble = gen.generate(n_realizations=50, n_years=30, seed=42)
Supported generators
Generators are classified into three bins by the mathematical character of their generative mechanism: parametric (sample from a fitted probability model), hybrid (combine a parametric structure with a non-parametric resampling step), and non-parametric (resample the historical record directly). See the Algorithms page for full descriptions.
| 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) |
Supported disaggregators
| Disaggregator | Direction | Reference |
|---|---|---|
NowakDisaggregator |
{Annual, Monthly, Weekly} to {Monthly, Weekly, Daily} | Nowak et al. (2010) |
ValenciaSchaakeDisaggregator |
Annual to Monthly | Valencia & Schaake (1973) |
Pre-built pipelines (KirschNowakPipeline, ThomasFieringNowakPipeline) chain generation and disaggregation in a single interface.
Contributing
SynHydro is under active development, and contributions are welcome. For bug reports, feature requests, or discussion of new methods, please open an issue or pull request on GitHub. See CONTRIBUTING.md for guidelines on adding new generators and the project's development practices.
Documentation
Full documentation including tutorials, algorithm descriptions, and API reference is available at the project website.
Citing SynHydro
The DOI badge and the version DOI below are filled in after the first release is archived on Zenodo. If you use SynHydro in your research, please cite it as:
Amestoy, T. (2026). SynHydro: Synthetic hydrologic timeseries generation
in Python (Version 0.1.0) [Computer software]. Zenodo.
https://doi.org/10.5281/zenodo.YYYYYYY
@software{amestoy_synhydro_2026,
author = {Amestoy, Trevor},
title = {{SynHydro}: Synthetic hydrologic timeseries generation in Python},
version = {0.1.0},
year = {2026},
publisher = {Zenodo},
doi = {10.5281/zenodo.YYYYYYY},
url = {https://github.com/TrevorJA/SynHydro}
}
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file synhydro-0.1.0.tar.gz.
File metadata
- Download URL: synhydro-0.1.0.tar.gz
- Upload date:
- Size: 1.1 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ec4f13ea1c15d5440de372ca8f52d3810e165236b1ddb3f131b62527f71bf1a5
|
|
| MD5 |
4967effe3fb881a525312682ceea2805
|
|
| BLAKE2b-256 |
07bcd34c1fee9e0eb24cd1b2ae24bed888ef1cfba45b0e62cbc4b1695688f712
|
Provenance
The following attestation bundles were made for synhydro-0.1.0.tar.gz:
Publisher:
release.yml on TrevorJA/SynHydro
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
synhydro-0.1.0.tar.gz -
Subject digest:
ec4f13ea1c15d5440de372ca8f52d3810e165236b1ddb3f131b62527f71bf1a5 - Sigstore transparency entry: 2836348493
- Sigstore integration time:
-
Permalink:
TrevorJA/SynHydro@c90c5a64e757895c49db99af8660b0f1d18b55a4 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/TrevorJA
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@c90c5a64e757895c49db99af8660b0f1d18b55a4 -
Trigger Event:
release
-
Statement type:
File details
Details for the file synhydro-0.1.0-py3-none-any.whl.
File metadata
- Download URL: synhydro-0.1.0-py3-none-any.whl
- Upload date:
- Size: 914.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7b1ea288600d9ba042376132dc61f4e4a22402a1dd90644b75db26a26abf3f67
|
|
| MD5 |
c6f1e52f9ac6349a250f3ad061f06236
|
|
| BLAKE2b-256 |
02629566e3764a2d785e1260e595f86b31f8bc1e9d0fdfe144e08c537b256dc0
|
Provenance
The following attestation bundles were made for synhydro-0.1.0-py3-none-any.whl:
Publisher:
release.yml on TrevorJA/SynHydro
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
synhydro-0.1.0-py3-none-any.whl -
Subject digest:
7b1ea288600d9ba042376132dc61f4e4a22402a1dd90644b75db26a26abf3f67 - Sigstore transparency entry: 2836348554
- Sigstore integration time:
-
Permalink:
TrevorJA/SynHydro@c90c5a64e757895c49db99af8660b0f1d18b55a4 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/TrevorJA
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@c90c5a64e757895c49db99af8660b0f1d18b55a4 -
Trigger Event:
release
-
Statement type: