EPyT-Flow -- EPANET Python Toolkit - Flow
Project description
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, cyber-attacks, etc.)
- Wide variety of pre-defined types of 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.12
Note that EPANET and EPANET-MSX sources are compiled and overwrite the binaries shipped by EPyT IF EPyT-Flow is installed on a Linux system. By this we not only aim to achieve a better performance of the simulations but also avoid any compatibility problems of pre-compiled binaries.
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
from epyt_flow.data.benchmarks import load_leakdb_scenarios
from epyt_flow.simulation import ScenarioSimulator
from epyt_flow.utils import to_seconds
if __name__ == "__main__":
# Load first Hanoi scenario from LeakDB
network_config, = load_leakdb_scenarios(scenarios_id=["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()
# Show sensor readings over the entire simulation
print(f"Pressure readings: {scada_data.get_data_pressures()}")
print(f"Flow readings: {scada_data.get_data_flows()}")
Documentation
Documentation is available on readthedocs:https://epyt-flow.readthedocs.io/en/latest/
License
MIT license -- see LICENSE
How to Cite?
If you use this software, please cite it as follows:
@misc{github:epytflow,
author = {André Artelt, Marios S. Kyriakou, Stelios G. Vrachimis, Demetrios G. Eliades, Barbara Hammer, Marios M. Polycarpou},
title = {EPyT-Flow -- EPANET Python Toolkit - Flow},
year = {2024},
publisher = {GitHub},
journal = {GitHub repository},
howpublished = {\url{https://github.com/WaterFutures/EPyT-Flow}}
}
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.
Project details
Release history Release notifications | RSS feed
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
File details
Details for the file epyt_flow-0.2.0.tar.gz
.
File metadata
- Download URL: epyt_flow-0.2.0.tar.gz
- Upload date:
- Size: 414.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.10.13
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 52a84e1470f0ce1f0b37dedb4279ffe4878121bc93657879657acbe16270da8d |
|
MD5 | 6e87b6e7f685668093b84e9f3fcfd769 |
|
BLAKE2b-256 | f2a70479dee3afaf8a60f733263f42dd0afee859225a39d525debf5f8c586f6c |
File details
Details for the file epyt_flow-0.2.0-py3-none-any.whl
.
File metadata
- Download URL: epyt_flow-0.2.0-py3-none-any.whl
- Upload date:
- Size: 476.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.10.13
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 374e8bfdd9b9737846c99d9e1650c149049be75965753e660fb17f4c96f21b9e |
|
MD5 | aa8eb48c7a920edd8def4b7bd3e61a99 |
|
BLAKE2b-256 | fb2c893536d251ecb77ce44c59cebdf8b0afd4fc52da3b02d3a4b1a259485fd5 |