EPyT-Flow

EPyT-Flow: A Toolkit for Generating Water Distribution Network Data - Published in JOSS (2024)

https://github.com/waterfutures/epyt-flow

Science Score: 100.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 7 DOI reference(s) in README and JOSS metadata
  • Academic publication links
    Links to: joss.theoj.org
  • Committers with academic emails
    1 of 5 committers (20.0%) from academic institutions
  • Institutional organization owner
  • JOSS paper metadata
    Published in Journal of Open Source Software

Keywords

epanet epanet-python-toolkit hydraulics python simulation water water-distribution-networks
Last synced: 4 months ago · JSON representation ·

Repository

A Python package designed for the easy generation of hydraulic and water quality scenario data of water distribution networks.

Basic Info
Statistics
  • Stars: 32
  • Watchers: 7
  • Forks: 6
  • Open Issues: 0
  • Releases: 22
Topics
epanet epanet-python-toolkit hydraulics python simulation water water-distribution-networks
Created almost 2 years ago · Last pushed 4 months ago
Metadata Files
Readme License Code of conduct Citation

README.md

pypi License: MIT PyPI - Python Version build Documentation Status Downloads Downloads DOI

EPyT-Flow -- EPANET Python Toolkit - Flow

EPyT-Flow is a Python package building on top of EPyT for providing easy access to water distribution network simulations. It aims to provide a high-level interface for the easy generation of hydraulic and water quality scenario data. However, it also provides access to low-level functions by EPANET and EPANET-MSX.

EPyT-Flow provides easy access to popular benchmark data sets for event detection and localization. Furthermore, it also provides an environment for developing and testing control algorithms.

Unique Features

Unique features of EPyT-Flow that make it superior to other (Python) toolboxes are the following:

  • High-performance hydraulic and (advanced) water quality simulation
  • High- and low-level interface
  • Object-orientated design that is easy to extend and customize
  • Sensor configurations
  • Wide variety of pre-defined events (e.g. leakages, sensor faults, actuator events, contamination, cyber-attacks, etc.)
  • Wide variety of pre-defined types of global & local uncertainties (e.g. model uncertainties)
  • Step-wise simulation and environment for training and evaluating control strategies
  • Serialization module for easy exchange of data and (scenario) configurations
  • REST API to make EPyT-Flow accessible in other applications
  • Access to many WDNs and popular benchmarks (incl. their evaluation)

Installation

EPyT-Flow supports Python 3.9 - 3.13

Note that EPANET and EPANET-MSX sources are compiled and overwrite the binaries shipped by EPyT IF EPyT-Flow is installed on a Unix system and the gcc compiler is available. By this, we not only aim to achieve a better performance of the simulations but also avoid any compatibility issues of pre-compiled binaries.

Prerequisites for macOS users

The "true" gcc compiler (version 15) is needed which is not the clang compiler that is shipped with Xcode and is linked to gcc!

The correct version of the "true" gcc can be installed via brew: brew install gcc@15

PyPI

pip install epyt-flow

Git

Download or clone the repository: git clone https://github.com/WaterFutures/EPyT-Flow.git cd EPyT-Flow

Install all requirements as listed in REQUIREMENTS.txt: pip install -r REQUIREMENTS.txt

Install the toolbox: pip install .

Quick Example

Open In Colab

```python from epytflow.data.benchmarks import loadleakdbscenarios from epytflow.simulation import ScenarioSimulator from epytflow.utils import toseconds

if name == "main": # Load first Hanoi scenario from LeakDB networkconfig, = loadleakdbscenarios(scenariosid=["1"], use_net1=False)

# Create scenario
with ScenarioSimulator(scenario_config=network_config) as sim:
    # Set simulation duration to two days
    sim.set_general_parameters(simulation_duration=to_seconds(days=2))

    # Place pressure sensors at nodes "13", "16", "22", and "30"
    sim.set_pressure_sensors(sensor_locations=["13", "16", "22", "30"])

    # Place a flow sensor at link/pipe "1"
    sim.set_flow_sensors(sensor_locations=["1"])

    # Run entire simulation
    scada_data = sim.run_simulation()

    # Print & plot sensor readings over the entire simulation
    print(f"Pressure readings: {scada_data.get_data_pressures()}")
    scada_data.plot_pressures()

    print(f"Flow readings: {scada_data.get_data_flows()}")
    scada_data.plot_flows()

```

Generated plots

Documentation

Documentation is available on readthedocs: https://epyt-flow.readthedocs.io/en/latest/

How to Get Started?

EPyT-Flow is accompanied by an extensive documentation https://epyt-flow.readthedocs.io/en/latest/ (including many examples).

If you are new to water distribution networks, we recommend first to read the chapter on Modeling of Water Distribution Networks. You might also want to check out some lecture notes on Smart Water Systems.

If you are already familiar with WDNs (and software such as EPANET), we recommend checking out our WDSA CCWI 2024 tutorial which not only teaches you how to use EPyT and EPyT-Flow but also contains some examples of applying Machine Learning in WDNs. Besides that, you can read in-depth about the different functionalities of EPyT-Flow in the In-depth Tutorial of the documentation -- we recommend reading the chapters in the order in which they are presented; you might decide to skip some of the last chapters if their content is not relevant to you.

More Networks and Benchmarks

More Water Distribution Networks (WDNs) and benchmarks are available on the WaterBenchmarkHub platform.

More on Control

We recommend checking out EPyT-Control if you are intersted in (data-driven) control and relates tasks such as state estimation and event diagnosis in Water Distribution Networks.

License

MIT license -- see LICENSE

How to Cite?

If you use this software, please cite it as follows:

bibtex @article{Artelt2024, doi = {10.21105/joss.07104}, url = {https://doi.org/10.21105/joss.07104}, year = {2024}, publisher = {The Open Journal}, volume = {9}, number = {103}, pages = {7104}, author = {André Artelt and Marios S. Kyriakou and Stelios G. Vrachimis and Demetrios G. Eliades and Barbara Hammer and Marios M. Polycarpou}, title = {EPyT-Flow: A Toolkit for Generating Water Distribution Network Data}, journal = {Journal of Open Source Software} }

How to get Support?

If you come across any bug or need assistance please feel free to open a new issue if non of the existing issues answers your questions.

How to Contribute?

Contributions (e.g. creating issues, pull-requests, etc.) are welcome -- please make sure to read the code of conduct and follow the developers' guidelines.

Owner

  • Name: ERC Synergy Grant Water Futures
  • Login: WaterFutures
  • Kind: organization

Repository for the ERC SyG Water Futures Team

JOSS Publication

EPyT-Flow: A Toolkit for Generating Water Distribution Network Data
Published
November 12, 2024
Volume 9, Issue 103, Page 7104
Authors
André Artelt ORCID
KIOS Research and Innovation Center of Excellence, University of Cyprus, Cyprus, Faculty of Technology, Bielefeld University, Germany
Marios S. Kyriakou ORCID
KIOS Research and Innovation Center of Excellence, University of Cyprus, Cyprus
Stelios G. Vrachimis ORCID
KIOS Research and Innovation Center of Excellence, University of Cyprus, Cyprus, Department of Electrical and Computer Engineering, University of Cyprus, Cyprus
Demetrios G. Eliades ORCID
KIOS Research and Innovation Center of Excellence, University of Cyprus, Cyprus
Barbara Hammer ORCID
Faculty of Technology, Bielefeld University, Germany
Marios M. Polycarpou ORCID
KIOS Research and Innovation Center of Excellence, University of Cyprus, Cyprus, Department of Electrical and Computer Engineering, University of Cyprus, Cyprus
Editor
Taher Chegini ORCID
Tags
EPANET smart water networks hydraulics water quality simulation

Citation (CITATION.cff)

cff-version: "1.2.0"
authors:
- family-names: Artelt
  given-names: André
  orcid: "https://orcid.org/0000-0002-2426-3126"
- family-names: Kyriakou
  given-names: Marios S.
  orcid: "https://orcid.org/0000-0002-2324-8661"
- family-names: Vrachimis
  given-names: Stelios G.
  orcid: "https://orcid.org/0000-0001-8862-5205"
- family-names: Eliades
  given-names: Demetrios G.
  orcid: "https://orcid.org/0000-0001-6184-6366"
- family-names: Hammer
  given-names: Barbara
  orcid: "https://orcid.org/0000-0002-0935-5591"
- family-names: Polycarpou
  given-names: Marios M.
  orcid: "https://orcid.org/0000-0001-6495-9171"
contact:
- family-names: Artelt
  given-names: André
  orcid: "https://orcid.org/0000-0002-2426-3126"
message: If you use this software, please cite our article in the
  Journal of Open Source Software.
preferred-citation:
  authors:
  - family-names: Artelt
    given-names: André
    orcid: "https://orcid.org/0000-0002-2426-3126"
  - family-names: Kyriakou
    given-names: Marios S.
    orcid: "https://orcid.org/0000-0002-2324-8661"
  - family-names: Vrachimis
    given-names: Stelios G.
    orcid: "https://orcid.org/0000-0001-8862-5205"
  - family-names: Eliades
    given-names: Demetrios G.
    orcid: "https://orcid.org/0000-0001-6184-6366"
  - family-names: Hammer
    given-names: Barbara
    orcid: "https://orcid.org/0000-0002-0935-5591"
  - family-names: Polycarpou
    given-names: Marios M.
    orcid: "https://orcid.org/0000-0001-6495-9171"
  date-published: 2024-11-12
  doi: 10.21105/joss.07104
  issn: 2475-9066
  issue: 103
  journal: Journal of Open Source Software
  publisher:
    name: Open Journals
  start: 7104
  title: "EPyT-Flow: A Toolkit for Generating Water Distribution Network
    Data"
  type: article
  url: "https://joss.theoj.org/papers/10.21105/joss.07104"
  volume: 9
title: "EPyT-Flow: A Toolkit for Generating Water Distribution Network
  Data"

GitHub Events

Total
  • Create event: 14
  • Release event: 13
  • Issues event: 8
  • Watch event: 14
  • Delete event: 1
  • Issue comment event: 24
  • Push event: 184
  • Pull request event: 7
  • Fork event: 3
Last Year
  • Create event: 14
  • Release event: 13
  • Issues event: 8
  • Watch event: 14
  • Delete event: 1
  • Issue comment event: 24
  • Push event: 184
  • Pull request event: 7
  • Fork event: 3

Committers

Last synced: 5 months ago

All Time
  • Total Commits: 745
  • Total Committers: 5
  • Avg Commits per committer: 149.0
  • Development Distribution Score (DDS): 0.122
Past Year
  • Commits: 299
  • Committers: 3
  • Avg Commits per committer: 99.667
  • Development Distribution Score (DDS): 0.187
Top Committers
Name Email Commits
André Artelt a****t@t****e 654
kurceliana k****a@g****m 55
Marios S. Kyriakou m****k@g****m 33
Stelios G. Vrachimis v****s@u****y 2
Alissa a****r@u****e 1
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 4 months ago

All Time
  • Total issues: 23
  • Total pull requests: 3
  • Average time to close issues: 14 days
  • Average time to close pull requests: 14 days
  • Total issue authors: 5
  • Total pull request authors: 2
  • Average comments per issue: 3.35
  • Average comments per pull request: 3.33
  • Merged pull requests: 2
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 15
  • Pull requests: 3
  • Average time to close issues: 14 days
  • Average time to close pull requests: 14 days
  • Issue authors: 3
  • Pull request authors: 2
  • Average comments per issue: 4.07
  • Average comments per pull request: 3.33
  • Merged pull requests: 2
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • andreArtelt (12)
  • Mariosmsk (6)
  • meghnathomas (2)
  • kbonney (1)
  • jorgelcq (1)
Pull Request Authors
  • gieseka (4)
  • kurceliana (2)
Top Labels
Issue Labels
enhancement (5) bug (1)
Pull Request Labels

Packages

  • Total packages: 3
  • Total downloads:
    • pypi 214 last-month
  • Total dependent packages: 0
    (may contain duplicates)
  • Total dependent repositories: 0
    (may contain duplicates)
  • Total versions: 66
  • Total maintainers: 2
proxy.golang.org: github.com/WaterFutures/EPyT-Flow
  • Versions: 22
  • Dependent Packages: 0
  • Dependent Repositories: 0
Rankings
Dependent packages count: 5.4%
Average: 5.6%
Dependent repos count: 5.8%
Last synced: 4 months ago
proxy.golang.org: github.com/waterfutures/epyt-flow
  • Versions: 22
  • Dependent Packages: 0
  • Dependent Repositories: 0
Rankings
Dependent packages count: 5.4%
Average: 5.6%
Dependent repos count: 5.8%
Last synced: 4 months ago
pypi.org: epyt-flow

EPyT-Flow -- EPANET Python Toolkit - Flow

  • Versions: 22
  • Dependent Packages: 0
  • Dependent Repositories: 0
  • Downloads: 214 Last month
Rankings
Dependent packages count: 9.4%
Average: 35.8%
Dependent repos count: 62.1%
Maintainers (2)
Last synced: 4 months ago

Dependencies

.github/workflows/build_tests.yml actions
  • actions/checkout v4 composite
  • actions/setup-python v5 composite
.github/workflows/draft-pdf.yml actions
  • actions/checkout v4 composite
  • actions/upload-artifact v4 composite
  • openjournals/openjournals-draft-action master composite
docs/requirements.txt pypi
  • epyt-flow *
  • ipykernel >=6.29.3
  • nbsphinx >=0.9.3
  • sphinx >=7.2.6
  • sphinx-rtd-theme >=2.0.0
pyproject.toml pypi
setup.py pypi