{"id":21334916,"url":"https://github.com/reactivebayes/graphppl.jl","last_synced_at":"2025-06-13T17:07:48.809Z","repository":{"id":37947408,"uuid":"281143887","full_name":"ReactiveBayes/GraphPPL.jl","owner":"ReactiveBayes","description":"DSL for probabilistic models specification and probabilistic programming.","archived":false,"fork":false,"pushed_at":"2025-06-13T14:15:58.000Z","size":10938,"stargazers_count":41,"open_issues_count":11,"forks_count":5,"subscribers_count":10,"default_branch":"main","last_synced_at":"2025-06-13T15:30:35.681Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Julia","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ReactiveBayes.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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,"zenodo":null}},"created_at":"2020-07-20T14:46:48.000Z","updated_at":"2025-06-06T13:45:43.000Z","dependencies_parsed_at":"2023-11-27T07:35:56.898Z","dependency_job_id":"ff313966-51d4-4e9e-99b7-0cedd28e8ca1","html_url":"https://github.com/ReactiveBayes/GraphPPL.jl","commit_stats":{"total_commits":214,"total_committers":6,"mean_commits":"35.666666666666664","dds":0.07943925233644855,"last_synced_commit":"7dea1ac12f0b2673d6176d5b4b59fe9aaeda47ae"},"previous_names":["reactivebayes/graphppl.jl","biaslab/graphppl.jl"],"tags_count":35,"template":false,"template_full_name":null,"purl":"pkg:github/ReactiveBayes/GraphPPL.jl","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ReactiveBayes%2FGraphPPL.jl","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ReactiveBayes%2FGraphPPL.jl/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ReactiveBayes%2FGraphPPL.jl/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ReactiveBayes%2FGraphPPL.jl/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ReactiveBayes","download_url":"https://codeload.github.com/ReactiveBayes/GraphPPL.jl/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ReactiveBayes%2FGraphPPL.jl/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259676456,"owners_count":22894638,"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":[],"created_at":"2024-11-21T23:36:16.726Z","updated_at":"2025-06-13T17:07:48.783Z","avatar_url":"https://github.com/ReactiveBayes.png","language":"Julia","funding_links":[],"categories":[],"sub_categories":[],"readme":"# GraphPPL\n\n| **Documentation**                                                         | **Build Status**                 | **Coverage**                       |\n|:-------------------------------------------------------------------------:|:--------------------------------:|:----------------------------------:|\n| [![][docs-stable-img]][docs-stable-url] [![][docs-dev-img]][docs-dev-url] | [![DOI][ci-img]][ci-url]         |[![Codecov][codecov-img]][codecov-url] |\n\n[docs-dev-img]: https://img.shields.io/badge/docs-dev-blue.svg\n[docs-dev-url]: https://reactivebayes.github.io/GraphPPL.jl/dev\n\n[docs-stable-img]: https://img.shields.io/badge/docs-stable-blue.svg\n[docs-stable-url]: https://reactivebayes.github.io/GraphPPL.jl/stable\n\n[ci-img]: https://github.com/reactivebayes/GraphPPL.jl/actions/workflows/ci.yml/badge.svg?branch=master\n[ci-url]: https://github.com/reactivebayes/GraphPPL.jl/actions\n\n[codecov-img]: https://codecov.io/gh/ReactiveBayes/GraphPPL.jl/graph/badge.svg?token=JESDYZVU9N\n[codecov-url]: https://codecov.io/gh/ReactiveBayes/GraphPPL.jl\n\nGraphPPL.jl is a probabilistic programming language focused on probabilistic graphical models. GraphPPL.jl materializes a probabilistic model as a factor graph and provides a set of tools for model specification. GraphPPL.jl is a part of the [RxInfer](https://rxinfer.ml) ecosystem, but it does not explicitly depend on any inference backend. GraphPPL exports a high-level DSL for model specification and allows users to append arbitrary information to nodes in the model. This information can be used by inference backends to perform inference on the model.\n\n## Installation\n\nTo install GraphPPL.jl, you can use the Julia package manager. From the Julia REPL, type `]` to enter the Pkg REPL mode and run:\n\n```julia\npkg\u003e add GraphPPL\n```\n\n# Model Specification in GraphPPL\n\nGraphPPL.jl provides a high-level DSL for model specification. The DSL is based on the [Julia's](https://julialang.org) macro system and allows users to specify probabilistic models in a concise and intuitive way. The DSL is based on the following principles:\n\n- **Model specification should read as a Julia program**. GraphPPL.jl introduces the `~` syntax for model specification. \n- **Any GraphPPL model is a valid submodel**. GraphPPL.jl allows users to specify models as a composition of submodels. This allows users to reuse models and specify complex models in a modular way.\n- **Model specification should be extensible**. GraphPPL.jl allows users to extend the DSL with custom model specification procedures. This allows developers of inference backend to inject desired behavior to the model specification process.\n\nTo achieve tihs, GraphPPL.jl specifies a protocol for the `@model` macro:\n```julia\n@model function beta_bernoulli(x)\n    θ ~ Beta(1, 1)\n    for i in eachindex(x)\n        x[i] ~ Bernoulli(θ)\n    end\nend\n```\n\n# Inference Backend\n\nGraphPPL.jl does not export any Bayesian inference backend. It provides a complex DSL parser, model generation, constraints specification and meta specification helpers. To run inference on \ngenerated models a user needs to have a Bayesian inference backend with GraphPPL.jl support (e.g. [RxInfer.jl](https://rxinfer.ml)). \n\n# Documentation\n\nFor more information about GraphPPL.jl please refer to the [documentation](https://reactivebayes.github.io/GraphPPL.jl/stable).\n\n\u003e [!NOTE]\n\u003e `GraphPPL.jl` API has been changed in version `4.0.0`. See [Migration Guide](https://reactivebayes.github.io/GraphPPL.jl/stable/) for more details.\n\n\n# License\n\n[MIT License](LICENSE) Copyright (c) 2021-2024 BIASlab, 2024-present ReactiveBayes\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Freactivebayes%2Fgraphppl.jl","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Freactivebayes%2Fgraphppl.jl","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Freactivebayes%2Fgraphppl.jl/lists"}