xiejx5 / baseflow

12 baseflow separation methods with automatic parameter calibration
20 stars 9 forks source link
baseflow baseflow-separation groundwater hydrology
# baseflow An open-source Python package for baseflow separation 🔥


![Global Baseflow Index Distribution from 12 Separation Methods](https://user-images.githubusercontent.com/29588684/226364211-3fd46152-3b9a-4de9-8d77-f1b59747a0f4.jpg)


âš¡  Usage

Install

pip install baseflow


Example

import baseflow
import pandas as pd

df = pd.read_csv(baseflow.example, index_col=0)
df_sta = pd.DataFrame(data=[[30, -28.4, 659], [-109.4, 33, 1611]],
                      index=df.columns, columns=['lon', 'lat', 'area'])
dfs, df_kge = baseflow.separation(df, df_sta, return_kge=True)
print(f'Best Method:\n{df_kge.idxmax(axis=1)}')


Project Structure

The directory structure of baseflow looks like this:

├── methods                 <- implements for 12 baseflow separation methods
│
├── recession_analysis      <- tools for estimating recession coefficiency
│
├── param_estimate          <- backward and calibration approaches to estimate other parameters
│
├── comparison              <- an evaluation criterion to comparison different methods
│
├── requirements.txt        <- File for installing baseflow dependencies
│
└── README.md


📌  Todo

Nolinear reservoir assumption

Applicable to other time scales

  1. The current version only applies to the daily scale
  2. The package needs to be updated to support hourly baseflow separation

🚀  Publications

The following articles detail the baseflow separation methods and their evaluation criterion.