{"id":13935648,"url":"https://github.com/probsys/sppl","last_synced_at":"2025-12-27T01:51:33.435Z","repository":{"id":43020947,"uuid":"202440518","full_name":"probsys/sppl","owner":"probsys","description":"Probabilistic programming system for fast and exact symbolic inference","archived":false,"fork":false,"pushed_at":"2024-05-04T00:41:06.000Z","size":6517,"stargazers_count":74,"open_issues_count":22,"forks_count":8,"subscribers_count":12,"default_branch":"master","last_synced_at":"2024-05-17T20:54:52.174Z","etag":null,"topics":["pldi","probabilistic-inference","probabilistic-programming","programming-languages","sum-product-networks"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/probsys.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-08-14T23:30:58.000Z","updated_at":"2024-08-08T00:39:18.509Z","dependencies_parsed_at":"2024-08-08T00:53:22.216Z","dependency_job_id":null,"html_url":"https://github.com/probsys/sppl","commit_stats":null,"previous_names":["probsys/sppl","probcomp/sppl"],"tags_count":26,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/probsys%2Fsppl","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/probsys%2Fsppl/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/probsys%2Fsppl/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/probsys%2Fsppl/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/probsys","download_url":"https://codeload.github.com/probsys/sppl/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":226677182,"owners_count":17666014,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["pldi","probabilistic-inference","probabilistic-programming","programming-languages","sum-product-networks"],"created_at":"2024-08-07T23:01:57.318Z","updated_at":"2025-12-27T01:51:33.428Z","avatar_url":"https://github.com/probsys.png","language":"Python","readme":"[![Actions Status](https://github.com/probcomp/sppl/workflows/Python%20package/badge.svg)](https://github.com/probcomp/sppl/actions)\n[![pypi](https://img.shields.io/pypi/v/sppl.svg)](https://pypi.org/project/sppl/)\n\nSum-Product Probabilistic Language\n==================================\n\n\u003cimg src=\"https://raw.githubusercontent.com/probcomp/sppl/master/sppl.png\" width=\"200\"\u003e\n\nSPPL is a probabilistic programming language that delivers exact solutions\nto a broad range of probabilistic inference queries. The language handles\ncontinuous, discrete, and mixed-type probability distributions; many-to-one\nnumerical transformations; and a query language that includes general\npredicates on random variables.\n\nUsers express generative models as probabilistic programs with standard\nimperative constructs, such as arrays, if/else branches, for loops, etc.\nThe program is then translated to a sum-product expression (a\ngeneralization of [sum-product networks](https://arxiv.org/pdf/2004.01167.pdf))\nthat statically represents the probability distribution of all random\nvariables in the program. This expression is used to deliver answers to\nprobabilistic inference queries.\n\nA system description of SPPL is given in the following paper:\n\nSPPL: Probabilistic Programming with Fast Exact Symbolic Inference.\nSaad, F. A.; Rinard, M. C.; and Mansinghka, V. K.\nIn PLDI 2021: Proceedings of the 42nd ACM SIGPLAN International Conference\non Programming Language Design and Implementation,\nJune 20-25, Virtual, Canada. ACM, New York, NY, USA. 2021.\nhttps://doi.org/10.1145/3453483.3454078.\n\n### Installation\n\nThis software is tested on Ubuntu 20.04 and Python 3.8.\nSPPL is available on the PyPI repository\n\n    $ python -m pip install sppl\n\nTo install the Jupyter interface, first obtain the system-wide dependencies in\n[requirements.sh](https://github.com/probcomp/sppl/blob/master/requirements.sh)\nand then run\n\n    $ python -m pip install 'sppl[magics]'\n\n### Examples\n\nThe easiest way to use SPPL is via the browser-based Jupyter interface, which\nallows for interactive modeling, querying, and plotting.\nRefer to the `.ipynb` notebooks under the\n[examples](https://github.com/probcomp/sppl/tree/master/examples) directory.\n\n### Benchmarks\n\nPlease refer to the artifact at the ACM Digital Library:\nhttps://doi.org/10.1145/3453483.3454078\n\n### Guide to Source Code\n\nPlease refer to [GUIDE.md](./GUIDE.md) for a description of the\nmain source files in this repository.\n\n### Tests\n\nTo run the test suite as a user, first install the test dependencies:\n\n    $ python -m pip install 'sppl[tests]'\n\nThen run the test suite:\n\n    $ python -m pytest --pyargs sppl\n\nTo run the test suite as a developer:\n\n- To run crash tests:             `$ ./check.sh`\n- To run integration tests:       `$ ./check.sh ci`\n- To run a specific test:         `$ ./check.sh [\u003cpytest-opts\u003e] /path/to/test.py`\n- To run the examples:            `$ ./check.sh examples`\n- To build a docker image:        `$ ./check.sh docker`\n- To generate a coverage report:  `$ ./check.sh coverage`\n\nTo view the coverage report, open `htmlcov/index.html` in the browser.\n\n### Language Reference\n\nComing Soon!\n\n### Citation\n\nTo cite this work, please use the following BibTeX.\n\n```bibtex\n@inproceedings{saad2021sppl,\ntitle           = {{SPPL:} Probabilistic Programming with Fast Exact Symbolic Inference},\nauthor          = {Saad, Feras A. and Rinard, Martin C. and Mansinghka, Vikash K.},\nbooktitle       = {PLDI 2021: Proceedings of the 42nd ACM SIGPLAN International Conference on Programming Design and Implementation},\npages           = {804--819},\nyear            = 2021,\nlocation        = {Virtual, Canada},\npublisher       = {ACM},\naddress         = {New York, NY, USA},\ndoi             = {10.1145/3453483.3454078},\naddress         = {New York, NY, USA},\nkeywords        = {probabilistic programming, symbolic execution, static analysis},\n}\n```\n\n### License\n\nApache 2.0; see [LICENSE.txt](./LICENSE.txt)\n\n### Acknowledgments\n\nThe [logo](https://github.com/probcomp/sppl/blob/master/sppl.png) was\ndesigned by [McCoy R. Becker](https://femtomc.github.io/).\n","funding_links":[],"categories":["Python"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fprobsys%2Fsppl","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fprobsys%2Fsppl","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fprobsys%2Fsppl/lists"}