Metadata-Version: 2.4
Name: stormvogel
Version: 0.12.1
Summary: Probabilistic Model Checking for almost everyone
License-Expression: GPL-3.0-or-later
License-File: LICENSE
Author: The stormvogel team
Requires-Python: >=3.12
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Provides-Extra: gym
Provides-Extra: io
Provides-Extra: solvers
Provides-Extra: storm
Provides-Extra: viz
Requires-Dist: bidict (>=0.23.1,<0.24)
Requires-Dist: cairosvg (>=2.8.2,<3) ; extra == "viz"
Requires-Dist: deprecated (>=1.2.18,<2)
Requires-Dist: gymnasium (>=1.1.1,<2) ; extra == "gym"
Requires-Dist: imageio (>=2.37.0,<3) ; extra == "viz"
Requires-Dist: ipywidgets (>=8.1.3,<9)
Requires-Dist: matplotlib (>=3.9.2,<4)
Requires-Dist: networkx (>=3.4.2,<4)
Requires-Dist: numpy (>=2.0.1,<3)
Requires-Dist: pandas (>=2.2.2,<3)
Requires-Dist: pillow (>=12.1.1,<13) ; extra == "viz"
Requires-Dist: pydot (>=4.0.1,<5)
Requires-Dist: pygame (>=2.6.1,<3) ; extra == "viz"
Requires-Dist: pyvis (>=0.3.2,<0.4)
Requires-Dist: scipy (>=1.13,<2) ; extra == "solvers"
Requires-Dist: stormpy (>=1.13.2,<2) ; extra == "storm"
Requires-Dist: svgpathtools (>=1.6.1,<2) ; extra == "viz"
Requires-Dist: sympy (>=1.14.0,<2)
Requires-Dist: umbi (>=0.2.10,<0.3) ; extra == "io"
Requires-Dist: z3-solver (>=4.0,<5) ; extra == "solvers"
Description-Content-Type: text/markdown

# Stormvogel 🐦: An interactive approach to probabilistic model checking in Python

[![Coverage](https://stormchecker.github.io/stormvogel/latest/coverage.svg)](https://stormchecker.github.io/stormvogel/latest/)

The state-of-the-art model checking tools that are currently available are optimized to be efficient. The result of this is that they are quite hard to learn and use. Stormvogel flattens the learning cuve by providing easy and user-friendly APIs for creating probabilistic Markov models, and tools to visualize and debug them. It supports seemless conversion to the powerful [Storm(py) model checker](https://stormchecker.github.io/stormpy/api) out of the box.

## Features
* Easy APIs for constructing Markov models in dedicated data structures. Currently, DTMCs, MDPs, CTMCs, POMDPs and Markov Automata are supported. This also includes parametric and interval models.

* Seamless conversion between stormvogel and stormpy models with some runtime overhead. This allows, e.g., also using formats such as JANI and PRISM that are not supported by stormvogel directly. It is also possible to add support for a different model checker.

* Visualization of Markov models as an interactive graph and into SVGs via dot. This includes extensive layout options, and displaying model checking results and simulations in an interactive way.
* Support for gymnasium environments
* An extensive documentation with clear examples.

Check out the [the stormvogel documentation](https://stormchecker.github.io/stormvogel/) for examples of how to use stormvogel.

## Installation

### Pip (release version, recommended for users)

1. Run `pip install stormvogel`.
2. To also install stormpy, run `pip install stormpy`.
3. Run `jupyter lab`
4. Now a browser window should open that runs jupyter lab with stormvogel installed.

### Docker (release version)

1. Install `docker`. Run:
2. `docker run -it -p 8080:8080 stormvogel/stormvogel`
3. Now a browser window should open that runs jupyter lab with stormvogel and stormpy installed.

### For contributors (latest version)
Note that you might have to tweak these steps a bit to get it to work on your particular system, but here is an outline. Contributors need [Poetry](https://python-poetry.org/docs/#installing-with-pipx) to manage the development environment.

1. Clone the stormvogel repo (or your own fork) in a separate folder
2. In the stormvogel folder:
    ```
    poetry install
    poetry shell # Activate poetry virtual environment
    pip install stormpy
    pip install . # Install stormvogel
    ```
    If installing stormpy fails in poetry, you can also try to follow the official [stormpy installation instructions](https://stormchecker.github.io/stormpy/installation.html), and run `poetry shell` on top of the `virtualenv` environment that they describe there.
3. Install `pre-commit` hook: `pre-commit install`

## Testing
```
nox -s tests   # run test suite
nox -s lint    # ruff + pyright
nox -s docs    # sphinx-build (executes doc notebooks)
```
Or run `pytest` directly without nox.

Notice that part of the tests will be skipped if stormpy is not installed.
## Authors
Stormvogel was mainly developed at Radboud University by Linus Heck, Pim Leerkes, and Ivo Melse under supervision from Sebastian Junges and Matthias Volk.

Thank you to our contributors: Luko van der Maas, Nicklas Osmers.

## License
Stormvogel is licenced under the [GPL-3.0 license](https://github.com/stormchecker/stormvogel?tab=GPL-3.0-1-ov-file).

