The Sum-Product Probabilistic Language
Project description
Sum-Product Probabilistic Language
SPPL is a probabilistic programming language that delivers exact solutions to a broad range of probabilistic inference queries. SPPL handles continuous, discrete, and mixed-type distributions; many-to-one numerical transformations; and a query language that includes general predicates on random variables.
Users express generative models as imperative programs with standard programming constructs, such as arrays, if/else, for loops, etc. The program is then translated to a sum-product representation (a generalization of sum-product networks) that statically represents the probability distribution on all random variables in the program and is used as the basis of probabilistic inference.
A system description of SPPL is given in:
Exact Symbolic Inference in Probabilistic Programs via Sum-Product Representations.
Feras A. Saad, Martin C. Rinard, and Vikash K. Mansinghka.
https://arxiv.org/abs/2010.03485
Installation
This software is tested on Ubuntu 18.04 and requires a Python 3.6+ environment. SPPL is available on PyPI
$ pip install sppl
To install the Jupyter interface, first obtain the system-wide dependencies in requirements.sh and then run
pip install 'sppl[magics]'
Examples
The easiest way to use SPPL is via the browser-based Jupyter interface, which
allows for interactive modeling, querying, and plotting.
Refer to the .ipynb
notebooks under the
examples directory.
Benchmarks
Refer to https://github.com/probcomp/sppl-benchmarks-oct20
Language Reference
Coming Soon!
Tests
To run the test suite as a user, first install with pip install 'sppl[tests]'
and then run:
$ python -m pytest --pyargs sppl
To run the test suite as a developer:
- To run crash tests:
$ ./check.sh
- To run integration tests:
$ ./check.sh ci
- To run a specific test:
$ ./check.sh [<pytest-opts>] /path/to/test.py
- To run the examples:
$ ./check.sh examples
- To build a docker image:
$ ./check.sh docker
- To generate a coverage report:
$ ./check.sh coverage
To view the coverage report, open htmlcov/index.html
in the browser.
License
Apache 2.0; see LICENSE.txt
Acknowledgments
The logo was designed by McCoy R. Becker.
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.