Welcome! We’ve developed pystorms with the objective of making the research of stormwater control more accessible. This open-source python package provides a curated collection of diverse stormwater networks and rain events, coupled with a streamlined programming interface and a stormwater simulator to provide a standalone package for developing and evaluating stormwater control algorithms. Please refer to the manuscript for more details on the motivation behind this effort.
pystorms is available on pypi and can be directly installed using pip. It is supported on OSX, Linux, and Windows. pystorms requires python(3+), pyswmm(≥ 0.6.0), numpy(≥ 18.4), and PyYAML(≥ 5.3). Please raise an issue on the repository or reach out if you encounter any installation issues.
pip install pystorms
In pystorms , control of stormwater networks is abstracted as scenarios, named after letters from Greek alphabet.
import pystorms def controller(state): """ Your control algorithm that generates actions based on state information. """ return actions env = pystorms.scenarios.theta() done = False while not done: state = env.state() actions = controller(state) done = env.step(actions)
Scenario theta is a synthetic example for prototyping control algorithms. Six other scenarios inspired from real-world stormwater are included to provide realistic examples for evaluating stormwater control algorithms. Please refer to the documentation for more details.
If you want to be more involved, please consider the following:
pystorms is developed by the open-storm group, a consortium of universities and industry partners developing open-source solutions for smarter stormwater systems.