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.

This project is based on the NAM_Model created by hckaraman.

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(
    timeseries=[
        datetime(2016, 10, 9),
        datetime(2016, 10, 10),
        datetime(2016, 10, 11),
    ],
    temperature=[15.4, 14.4, 14.9],
    precipitation=[0.0, 0.0, 0.0],
    evapotranspiration=[2.79, 3.46, 3.65],
    discharge=[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
)
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.2.tar.gz (7.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

hydnam-1.0.2-py3-none-any.whl (8.3 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: hydnam-1.0.2.tar.gz
  • Upload date:
  • Size: 7.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.4 CPython/3.12.3 Linux/6.8.0-49-generic

File hashes

Hashes for hydnam-1.0.2.tar.gz
Algorithm Hash digest
SHA256 a9708af3688329d8ed881407891d0fa42b927a6c348c6bf25ae97e8fd2e0ddac
MD5 901bab4e3c09682efca6d03287cf00fb
BLAKE2b-256 b648835ea5417363e48460d90d4ae1741f87d3c170266053e5d54951d6c6838f

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for hydnam-1.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 8be95d701f74b7f32db757539f2559fda7487544798f7b6e820d5ca0fdac9fda
MD5 c68fe324183d24834b0610b5bf567634
BLAKE2b-256 1442f5689fedeb788f2928316de1221da36d0fb014680fcc8272535a57484447

See more details on using hashes here.

Supported by

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