Skip to main content

Python implementation of NedborAfstromnings Model (NAM) lumped rainfall–runoff model

Project description

HydNAM

PyPI - Version

HydNAM is a Python implementation of the NedborAfstromnings Model (NAM), a lumped rainfall–runoff model.

Installation

pip install hydnam

Getting Started

1. Prepare the Dataset

The dataset must contain the following properties: Date, Temperature, Precipitation, Evapotranspiration, and Discharge.

Date Temperature Discharge Precipitation Evapotranspiration
10/9/2016 15.4 0.25694 0 2.79
10/10/2016 14.4 0.25812 0 3.46
10/11/2016 14.9 0.30983 0 3.65
10/12/2016 16.1 0.31422 0 3.46
10/13/2016 20.1 0.30866 0 5.64
10/14/2016 13.9 0.30868 0 3.24
10/15/2016 11.1 0.31299 0 3.41
... ... ... ... ...

Ensure that the time intervals between dates are consistent (e.g., 24 hours) for accurate model performance.

2. Initialize the NAM Model

from datetime import datetime
from hydnam.chart import plot_q
from hydnam.dataset import Dataset
from hydnam.hydnam import HydNAM
from hydnam.parameters import Parameters

dataset = Dataset(
    time_series=[
        datetime(2016, 10, 9),
        datetime(2016, 10, 10),
        datetime(2016, 10, 11),
    ],
    temperatures=[15.4, 14.4, 14.9],
    precipitations=[0.0, 0.0, 0.0],
    evapotranspirations=[2.79, 3.46, 3.65],
    discharges=[0.25694, 0.25812, 0.30983]
)

params = Parameters(
    umax=0.01,
    lmax=0.01,
    cqof=0.01,
    ckif=200.0,
    ck12=10.0,
    tof=0.0,
    tif=0.0,
    tg=0.0,
    ckbf=500.0,
    csnow=0.0,
    snowtemp=0.0
)

nam = HydNAM(
    dataset=dataset,
    parameters=params,
    area=58.8,
    interval=24.0,
    start=None,
    end=None,
    spin_off=0.0,
    ignore_snow=False
)
print(f'Parameters: {nam.parameters}')
print(f'Statistics: {nam.statistics}')
df = nam.simulation_result.to_dataframe()

3. Optimize the Model

NAM.optimize()

The model will calculate and check which Parameters are optimal for the model and use it as the main Parameters for the model.

4. Customize Parameters

nam.set_parameters(Parameters())

5. Show Discharge

from hydnam.chart import plot_q
...
plot_q(nam.simulation_result, only_obs_and_sim=False).show()

License

This library is released under the MIT License.

Contact

If you have any questions or issues, please open an issue on GitHub or email us at duynguyen02.dev@gmail.com.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

hydnam-1.0.0.tar.gz (8.0 kB view details)

Uploaded Source

Built Distribution

hydnam-1.0.0-py3-none-any.whl (9.0 kB view details)

Uploaded Python 3

File details

Details for the file hydnam-1.0.0.tar.gz.

File metadata

  • Download URL: hydnam-1.0.0.tar.gz
  • Upload date:
  • Size: 8.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.3 CPython/3.12.3 Linux/6.8.0-41-generic

File hashes

Hashes for hydnam-1.0.0.tar.gz
Algorithm Hash digest
SHA256 f16355a31541c452bf662ac61a03e007fec85fc36c7ebd7e3078bc0786be520d
MD5 e7e05888deaf0fb6ce29e6463975cdf1
BLAKE2b-256 ad13881b43772be0bfcb5cf4af7d67a0d24d268db36a02e5a74695b645b87ac5

See more details on using hashes here.

File details

Details for the file hydnam-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: hydnam-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 9.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.3 CPython/3.12.3 Linux/6.8.0-41-generic

File hashes

Hashes for hydnam-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 e54c59ec892e3fc3ca4e77b1f61269c09ca2bb06bf2966b600f67ad011b05c0f
MD5 7c359c065b81bef4c9b409894bd1ebf8
BLAKE2b-256 fc7d0082c69e023dc839c6f600180b8cda09f36c646c3812ad4fd71c939e32bd

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page