A simulation sandbox for the development and evaluation of stormwater control algorithms

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.

Getting Started

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.

Jupyter Notebooks

UDM 2022: UDS-RTC 101

Get Involved

If you want to be more involved, please consider the following:


famous lovelace venant vonNeu

About us

pystorms is developed by the open-storm group, a consortium of universities and industry partners developing open-source solutions for smarter stormwater systems.

University of Michigan University of Virginia University of Tennessee, Knoxville Emnet, LLC