1<!DOCTYPE html> 2<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>Home · RxInfer.jl</title><meta name="title" content="Home · RxInfer.jl"/><meta property="og:title" content="Home · RxInfer.jl"/><meta property="twitter:title" content="Home · RxInfer.jl"/><meta name="description" content="Julia package for automated Bayesian inference on a factor graph with reactive message passing"/><meta property="og:description" content="Julia package for automated Bayesian inference on a factor graph with reactive message passing"/><meta property="twitter:description" content="Julia package for automated Bayesian inference on a factor graph with reactive message passing"/><meta property="og:url" content="https://docs.rxinfer.com/stable/"/><meta property="twitter:url" content="https://docs.rxinfer.com/stable/"/><link rel="canonical" href="https://docs.rxinfer.com/stable/"/>
vendor: 63 bytes, line 2
2<script async src="https://www.googletagmanager.com/gtag/js?id=
2G-X4PH160GMF
vendor: 11 bytes, line 2
2"></script>
2<script>
vendor: 133 bytes, lines 2-5
2window.dataLayer = window.dataLayer || []; 3 function gtag(){dataLayer.push(arguments);} 4 gtag('js', new Date()); 5 gtag('config', '
5G-X4PH160GMF
vendor: 72 bytes, line 5
5', {'page_path': location.pathname + location.search + location.hash});
6</script>
6<script data-outdated-warner src="assets/warner.js"></script>
6<link href="https://cdnjs.cloudflare.com/ajax/libs/lato-font/3.0.0/css/lato-font.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/juliamono/0.050/juliamono.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/fontawesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/solid.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/brands.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.16.8/katex.min.css" rel="stylesheet" type="text/css"/>
6<script>documenterBaseURL="."</script>
6<script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js" data-main="assets/documenter.js"></script>
6<script src="search_index.js"></script>
6<script src="siteinfo.js"></script>
6<script src="../versions.js"></script>
6<link class="docs-theme-link" rel="stylesheet" type="text/css" href="assets/themes/catppuccin-mocha.css" data-theme-name="catppuccin-mocha"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="assets/themes/catppuccin-macchiato.css" data-theme-name="catppuccin-macchiato"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="assets/themes/catppuccin-frappe.css" data-theme-name="catppuccin-frappe"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="assets/themes/catppuccin-latte.css" data-theme-name="catppuccin-latte"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="assets/themes/documenter-dark.css" data-theme-name="documenter-dark" data-theme-primary-dark/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="assets/themes/documenter-light.css" data-theme-name="documenter-light" data-theme-primary/>
6<script src="assets/themeswap.js"></script>
6<link href="assets/theme.css" rel="stylesheet" type="text/css"/><link href="assets/header.css" rel="stylesheet" type="text/css"/>
6<script src="assets/header.js"></script>
6<script src="assets/chat.js"></script>
6<link href="assets/favicon.ico" rel="icon" type="image/x-icon"/><meta name="keywords" content="Julia, Bayesian inference, factor graph, message passing, probabilistic programming, reactive programming, RxInfer"> 7<link rel="sitemap" type="application/xml" title="Sitemap" href="https://docs.rxinfer.com/stable/sitemap.xml"></head><body><div id="documenter"><nav class="docs-sidebar"><a class="docs-logo" href><img class="docs-light-only" src="assets/logo.svg" alt="RxInfer.jl logo"/><img class="docs-dark-only" src="assets/logo-dark.svg" alt="RxInfer.jl logo"/></a><button class="docs-search-query input is-rounded is-small is-clickable my-2 mx-auto py-1 px-2" id="documenter-search-query">Search docs (Ctrl + /)</button><ul class="docs-menu"><li class="is-active"><a class="tocitem" href>Home</a><ul class="internal"><li><a class="tocitem" href="#Why-RxInfer?"><span>Why RxInfer?</span></a></li><li><a class="tocitem" href="#Package-Features"><span>Package Features</span></a></li><li><a class="tocitem" href="#How-to-get-started?"><span>How to get started?</span></a></li><li><a class="tocitem" href="#Explore-examples"><span>Explore examples</span></a></li><li><a class="tocitem" href="#Table-of-Contents"><span>Table of Contents</span></a></li><li><a class="tocitem" href="#Concepts-Overview"><span>Concepts Overview</span></a></li><li><a class="tocitem" href="#References"><span>References</span></a></li><li><a class="tocitem" href="#Ecosystem"><span>Ecosystem</span></a></li><li><a class="tocitem" href="#Index"><span>Index</span></a></li></ul></li><li><span class="tocitem">Concepts</span><ul><li><a class="tocitem" href="concepts/probability-distributions/">Probability Distributions</a></li><li><a class="tocitem" href="concepts/bayesian-inference/">Bayesian Inference</a></li><li><a class="tocitem" href="concepts/factor-graphs/">Factor Graphs</a></li><li><a class="tocitem" href="concepts/message-passing/">Message Passing</a></li><li><a class="tocitem" href="concepts/variational-inference/">Variational Inference</a></li><li><a class="tocitem" href="concepts/constraints-specification/">Constraints Specification</a></li><li><a class="tocitem" href="concepts/reactive-programming/">Reactive Programming</a></li></ul></li><li><span class="tocitem">User guide</span><ul><li><a class="tocitem" href="manuals/getting-started/">Getting started</a></li><li><a class="tocitem" href="manuals/comparison/">RxInfer.jl vs. Others</a></li><li><a class="tocitem" href="manuals/how-to-use-rxinfer-from-python/">Using RxInfer from Python</a></li><li><a class="tocitem" href="manuals/model-specification/">Model specification</a></li><li><input class="collapse-toggle" id="menuitem-3-5" type="checkbox"/><label class="tocitem" for="menuitem-3-5"><span class="docs-label">Variational inference</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="manuals/variational/bethe-free-energy/">Bethe Free Energy</a></li><li><a class="tocitem" href="manuals/variational/constraints-specification/">Constraints specification</a></li><li><a class="tocitem" href="manuals/variational/functional-forms/">Functional form constraints</a></li></ul></li><li><a class="tocitem" href="manuals/rules_and_nodes/">Understanding Rules</a></li><li><input class="collapse-toggle" id="menuitem-3-7" type="checkbox"/><label class="tocitem" for="menuitem-3-7"><span class="docs-label">Inference specification</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="manuals/inference/overview/">Overview</a></li><li><a class="tocitem" href="manuals/inference/static/">Static inference</a></li><li><a class="tocitem" href="manuals/inference/streamlined/">Streamline inference</a></li><li><a class="tocitem" href="manuals/inference/static-vs-streamlined/">Static vs. Streamlined</a></li><li><a class="tocitem" href="manuals/inference/initialization/">Initialization</a></li><li><a class="tocitem" href="manuals/inference/meta-specification/">Meta specification</a></li><li><a class="tocitem" href="manuals/inference/autoupdates/">Auto-updates</a></li><li><a class="tocitem" href="manuals/inference/partial-data/">Partially-referenced (sparse) data</a></li><li><a class="tocitem" href="manuals/inference/callbacks/">Callbacks</a></li><li><a class="tocitem" href="manuals/inference/benchmark-callbacks/">
7Benchmark callbacks</a></li><li><a class="tocitem" href="manuals/inference/trace-callbacks/">Trace callbacks</a></li><li><a class="tocitem" href="manuals/inference/early-stopping/">Early stopping</a></li><li><a class="tocitem" href="manuals/inference/delta-node/">Deterministic nodes</a></li><li><a class="tocitem" href="manuals/inference/nonconjugate/">Non-conjugate inference</a></li><li><a class="tocitem" href="manuals/inference/undefinedrules/">Undefined message update rules</a></li><li><a class="tocitem" href="manuals/inference/postprocess/">Inference results postprocessing</a></li><li><a class="tocitem" href="manuals/inference/create-node/">Creating your own custom nodes</a></li></ul></li><li><a class="tocitem" href="manuals/performance-tips/">Performance Tips</a></li><li><a class="tocitem" href="manuals/faq/">FAQ</a></li><li><a class="tocitem" href="manuals/debugging/">Debugging</a></li><li><a class="tocitem" href="manuals/session_summary/">Session summary</a></li><li><a class="tocitem" href="manuals/telemetry/">Sharing sessions & telemetry</a></li><li><input class="collapse-toggle" id="menuitem-3-13" type="checkbox"/><label class="tocitem" for="menuitem-3-13"><span class="docs-label">Migration guides</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="manuals/migration/v2-to-v3/">Migration from v2 to v3</a></li><li><a class="tocitem" href="manuals/migration/v4-to-v5/">Migration from v4 to v5</a></li></ul></li><li><input class="collapse-toggle" id="menuitem-3-14" type="checkbox"/><label class="tocitem" for="menuitem-3-14"><span class="docs-label">Sharp bits of RxInfer</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="manuals/sharpbits/overview/">Overview</a></li><li><a class="tocitem" href="manuals/sharpbits/rule-not-found/">Rule Not Found Error</a></li><li><a class="tocitem" href="manuals/sharpbits/stack-overflow-inference/">Stack Overflow in Message Computations</a></li><li><a class="tocitem" href="manuals/sharpbits/usage-colon-equality/">Using <code>=</code> instead of <code>:=</code> for deterministic nodes</a></li></ul></li></ul></li><li><a class="tocitem" href="examples/overview/">Examples</a></li><li><span class="tocitem">Contributing</span><ul><li><a class="tocitem" href="contributing/guide/">Contribution guide</a></li><li><a class="tocitem" href="contributing/guidelines/">Contribution guidelines</a></li><li><a class="tocitem" href="contributing/new-documentation/">Contributing to the documentation</a></li><li><a class="tocitem" href="contributing/new-example/">Contributing to the examples</a></li><li><a class="tocitem" href="contributing/exported-methods/">Exported methods</a></li><li><a class="tocitem" href="contributing/new-release/">Publishing a new release</a></li></ul></li></ul><div class="docs-version-selector field has-addons"><div class="control"><span class="docs-label button is-static is-size-7">Version</span></div><div class="docs-selector control is-expanded"><div class="select is-fullwidth is-size-7"><select id="documenter-version-selector"></select></div></div></div></nav><div class="docs-main"><header class="docs-navbar"><a class="docs-sidebar-button docs-navbar-link fa-solid fa-bars is-hidden-desktop" id="documenter-sidebar-button" href="#"></a><nav class="breadcrumb"><ul class="is-hidden-mobile"><li class="is-active"><a href>Home</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href>Home</a></li></ul></nav><div class="docs-right"><a class="docs-navbar-link" href="https://github.com/ReactiveBayes/RxInfer.jl" title="View the repository on GitHub"><span class="docs-icon fa-brands">ï</span><span class="docs-label is-hidden-touch">GitHub</span></a><a class="docs-navbar-link" href="https://github.com/ReactiveBayes/RxInfer.jl/blob/main/docs/src/index.md" title="Edit source on GitHub"><span class="docs-icon fa-solid">ï</span></a><a class="docs-settings-button docs-navbar-link fa-solid fa-gear" id="documenter-settings-button" href="#" title="Settings"></a><a class="docs-article-toggle-button fa-solid fa-chevron-up" id="documenter-article-toggle-button" href="javascript:;" title="Collapse all docstrings"></a></div></header><article class="content" id="documenter-page"><div class="light-biglogo"><p><img src="assets/biglogo.svg" alt="RxInfer Logo"/></p></div><div class="dark-biglogo"><p><img src="assets/biglogo-blacktheme.svg" alt="RxInfer Logo"/></p></div><p><em>Julia package for automatic Bayesian inference on a factor graph with reactive message passing.</em></p><p>Given a probabilistic model, RxInfer allows for efficient, message-passing based Bayesian inference. It uses the model structure to generate an algorithm consisting of a sequence of local computations on a factor graph representation of the model. RxInfer.jl is designed for efficient, scalable, and high-performance inference using <
7a href="https://github.com/ReactiveBayes/ReactiveMP.jl">reactive message passing</a>.</p><h2 id="Why-RxInfer?"><a class="docs-heading-anchor" href="#Why-RxInfer?">Why RxInfer?</a><a id="Why-RxInfer?-1"></a><a class="docs-heading-anchor-permalink" href="#Why-RxInfer?" title="Permalink"></a></h2><p>Many important AI applications, including audio processing, self-driving vehicles, weather forecasting, and extended-reality video processing require continually solving an inference task in sophisticated probabilistic models with a large number of latent variables. Often, the inference task in these applications must be performed continually and in real-time in response to new observations.</p><p>Popular MC-based inference methods, such as the No U-Turn Sampler (NUTS) or Hamiltonian Monte Carlo (HMC) sampling, rely on computationally heavy sampling procedures that do not scale well to probabilistic models with thousands of latent states. Therefore, while MC-based inference is a very versatile tool, it is practically not suitable for real-time applications. While the alternative variational inference method (VI) promises to scale better to large models than sampling-based inference, VI requires the derivation of gradients of a "Variational Free Energy" cost function. For large models, manual derivation of these gradients might not be feasible, while automated "black-box" gradient methods do not scale either because they are not capable of taking advantage of sparsity or conjugate pairs in the model. Therefore, while Bayesian inference is known as the optimal data processing framework, in practice, real-time AI applications rely on much simpler, often ad hoc, data processing algorithms.</p><p>RxInfer aims to remedy these issues by running efficient Bayesian inference in sophisticated probabilistic models, taking advantage of local conjugate relationships in probabilistic models, and focusing on real-time Bayesian inference in large state-space models with thousands of latent variables. In addition, RxInfer provides a straightforward way to extend its functionality with custom factor nodes and message passing update rules (see <a href="manuals/rules_and_nodes/#what-is-a-rule">Understanding Rules</a>). The engine is capable of running various Bayesian inference algorithms in different parts of the factor graph of a single probabilistic model. This makes it easier to explore different "what-if" scenarios and enables very efficient inference in specific cases.</p><h2 id="Package-Features"><a class="docs-heading-anchor" href="#Package-Features">Package Features</a><a id="Package-Features-1"></a><a class="docs-heading-anchor-permalink" href="#Package-Features" title="Permalink"></a></h2><ul><li>User friendly syntax for specification of probabilistic models, achieved with <a href="https://github.com/ReactiveBayes/GraphPPL.jl"><code>GraphPPL</code></a>.<ul><li>Support for hybrid models combining discrete and continuous latent variables.</li><li>Factorization and functional form constraints specification.</li><li>Graph visualisation and extensions with different custom plugins.</li><li>Saving graph on a disk and re-loading it later on.</li></ul></li><li>Automatic generation of message passing algorithms, achieved with <a href="https://github.com/ReactiveBayes/ReactiveMP.jl"><code>ReactiveMP</code></a>.<ul><li>Support for hybrid distinct message passing inference algorithm under a unified paradigm.</li><li>Evaluation of Bethe Free Energy as a model performance measure.</li><li>Schedule-free reactive message passing API.</li><li>Scalability for large models with millions of parameters and observations.</li><li>High performance.</li><li>Inference procedure is differentiable.</li><li>Easy to extend with custom nodes and message update rules.</li></ul></li><li>Community-driven development and support<ul><li>Regular public meetings to discuss usage patterns and improvements</li><li>Active community support through GitHub discussions</li><li>Optional telemetry to help guide development (see <a href="manuals/telemetry/#manual-usage-telemetry">Usage Telemetry</a>)</li><li>Session sharing for better debugging support (see <a href="manuals/telemetry/#manual-session-sharing">Session Sharing</a>)</li></ul></li><li>
7Client-Server infrastructure (third-party, see note below)<ul><li>RESTful API support through <a href="https://github.com/lazydynamics/RxInferServer">RxInferServer.jl</a></li><li>OpenAPI-compliant endpoints for model management and inference</li><li>Python and Julia SDKs for seamless integration</li></ul></li></ul><div class="admonition is-info" id="About-RxInferServer.jl-1b74639f53c95cb6"><header class="admonition-header">About `RxInferServer.jl`<a class="admonition-anchor" href="#About-RxInferServer.jl-1b74639f53c95cb6" title="Permalink"></a></header><div class="admonition-body"><p><code>RxInferServer.jl</code> and its associated Python client (<code>RxInferClient.py</code>) are developed and maintained by <a href="https://github.com/lazydynamics">Lazy Dynamics</a> â an <strong>external organisation</strong> separate from the core RxInfer team. These projects are distributed under a <strong>different license</strong> than <code>RxInfer.jl</code> itself and are <strong>not actively maintained</strong> by the ReactiveBayes / RxInfer core team. Please direct support questions and issues to the respective upstream repositories.</p></div></div><p><strong>Curious about how RxInfer compares to other tools you might be considering?</strong> We invite you to view a detailed <a href="manuals/comparison/#comparison">comparison</a>, where we put RxInfer head-to-head with other popular packages in the field.</p><h2 id="How-to-get-started?"><a class="docs-heading-anchor" href="#How-to-get-started?">How to get started?</a><a id="How-to-get-started?-1"></a><a class="docs-heading-anchor-permalink" href="#How-to-get-started?" title="Permalink"></a></h2><p>Head to the <a href="manuals/getting-started/#user-guide-getting-started">Getting started</a> section to get up and running with RxInfer. </p><h2 id="Explore-examples"><a class="docs-heading-anchor" href="#Explore-examples">Explore examples</a><a id="Explore-examples-1"></a><a class="docs-heading-anchor-permalink" href="#Explore-examples" title="Permalink"></a></h2><p>The RxInfer ecosystem offers two main documentation websites:</p><ul><li><strong>Documentation and Manual</strong> (this site): Contains all the guides, tutorials, and API documentation to help you learn and use RxInfer. </li><li><strong>Examples Site</strong>: Features a wide variety of runnable, in-depth example notebooks and code, available at <a href="https://examples.rxinfer.com">examples.rxinfer.com</a>.</li></ul><p>Explore different <a href="examples/overview/#examples-overview">examples</a> in this documentation, and visit the <a href="https://examples.rxinfer.com">RxInfer Examples Site</a> for more hands-on tutorials and code.</p><div style="display: flex; justify-content: center; align-items: center; margin: 2rem 0;"> 8 <a href="https://examples.rxinfer.com/" 9 style=" 10 display:inline-block; 11 background:linear-gradient(90deg, #9558b2 0%, #4063d8 100%); 12 color:white; 13 font-weight:700; 14 font-size:1.25rem; 15 padding:1.1em 2.2em; 16 border-radius:0.5em; 17 text-decoration:none; 18 box-shadow:0 2px 8px rgba(0,0,0,0.10); 19 transition:background 0.15s, box-shadow 0.15s; 20 letter-spacing:0.02em; 21 " 22 > 23 ð Explore Tutorials 24 </a> 25</div><h2 id="Table-of-Contents"><a class="docs-heading-anchor" href="#Table-of-Contents">Table of Contents</a><a id="Table-of-Contents-1"></a><a class="docs-heading-anchor-permalink" href="#Table-of-Contents" title="Permalink"></a></h2><ul><li><a href="concepts/factor-graphs/#concepts-factor-graphs">Factor Graphs</a></li><li class="no-marker"><ul><li><a href="concepts/factor-graphs/#concepts-factor-graphs-why">Why factorise?</a></li><li><a href="concepts/factor-graphs/#concepts-factor-graphs-anatomy">Anatomy of a factor graph</a></li><li><a href="concepts/factor-graphs/#concepts-factor-graphs-spec">From <code>@model</code> code to a factor graph</a></li><li><a href="concepts/factor-graphs/#concepts-factor-graphs-topology">Trees, loops, and what they imply</a></li><li><a href="concepts/factor-graphs/#concepts-factor-graphs-payoff">Why this representation pays off</a></li><li><a href="concepts/factor-graphs/#concepts-factor-graphs-deeper">For deeper understanding</a></li></ul></li><li><a href="concepts/message-passing/#concepts-message-passing">Message Passing</a></li><li class="no-marker"><ul><li><a href="concepts/message-passing/#concepts-message-passing-bp">Belief Propagation (BP)</a></li><li><a href="concepts/message-passing/#concepts-message-passing-vmp">Variational Message Passing (VMP)</a></li><li><a href="concepts/message-passing/#concepts-message-passing-automatic">Automatic rule selection</a></li><li><a href="concepts/message-passing/#concepts-message-passing-reactive">Reactive scheduling</a></li><li><a href="concepts/message-passing/#concepts-message-passing-deeper">For deeper understanding</a></li></ul></li><li><a href="concepts/reactive-programming/#concepts-reactive-programming">Reactive Programming</a></li><li class="no-marker"><ul><li><a href="concepts/reactive-programming/#concepts-reactive-programming-streams">Streams, not values</a></li><li><a href="concepts/reactive-programming/#concepts-reactive-programming-execution">Dependency-driven execution</a></li><li><a href="concepts/reactive-programming/#concepts-reactive-programming-benefits">What reactivity enables</a></li><li><a href="concepts/reactive-programming/#concepts-reactive-programming-rocket">Rocket.jl under the hood</a></li><li><a href="concepts/reactive-programming/#concepts-reactive-programming-deeper">For deeper understanding</a></li></ul></li><li><a href="manuals/comparison/#comparison">Comparison to other packages</a></li><li class="no-marker"><ul><li><a href="manuals/comparison/#RxInfer.jl-breakdown">RxInfer.jl breakdown</a></li></ul></li><li><a href="manuals/getting-started/#user-guide-getting-started">Getting started</a></li><li class="no-marker"><ul><li><a href="manuals/getting-started/#user-guide-getting-started-installation">Installation</a></li><li><a href="manuals/getting-started/#Importing-RxInfer">Importing RxInfer</a></li><li><a href="manuals/getting-started/#Example:-Inferring-the-bias-of-a-coin">Example: Inferring the bias of a coin</a></li><li><a href="manuals/getting-started/#Where-to-go-next?">Where to go next?</a></li></ul></li><li><a href="manuals/model-specification/#user-guide-model-specification">Model Specification</a></li><li class="no-marker"><ul><li><a href="manuals/model-specification/#@model-macro"><code>@model</code> macro</a></li><li><a href="manuals/model-specification/#A-state-space-model-example">A state space model example</a></li><li><a href="manuals/model-specification/#user-guide-model-specification-node-creation">Relationships between variables</a></li><li><a href="manuals/model-specification/#user-guide-model-specification-visualization">Model structure visualisation</a></li><li><a href="manuals/model-specification/#Node-Contraction">Node Contraction</a></li><li><a href="manuals/model-specification/#user-guide-model-specification-relation-to-graphppl">Relation to GraphPPL</a></li><li><a href="manuals/model-specification/#user-guide-model-specification-pipelines">Additional <code>GraphPPL</code> pipeline stages</a></li><li><a href="manuals/model-specification/#user-guide-model-specification-internal-variable-access">Getting access to internal variable data structures</a></li><li><a href="manuals/model-specification/#Read-also">Read also</a></li></ul></li><li><a href="manuals/variational/constraints-specification/#user-guide-constraints-specification">Constraints Specification</a></li><li class="no-marker"><ul><li><a href="manuals/variational/constraints-specification/#user-guide-constraints-specification-background">
25Background and example</a></li><li><a href="manuals/variational/constraints-specification/#General-syntax">General syntax</a></li><li><a href="manuals/variational/constraints-specification/#Marginal-and-message-form-constraints">Marginal and message form constraints</a></li><li><a href="manuals/variational/constraints-specification/#Factorization-constraints-on-posterior-distribution-q">Factorization constraints on posterior distribution <code>q</code></a></li><li><a href="manuals/variational/constraints-specification/#Constraints-in-submodels">Constraints in submodels</a></li><li><a href="manuals/variational/constraints-specification/#Inline-constraints-on-submodel-calls">Inline constraints on submodel calls</a></li><li><a href="manuals/variational/constraints-specification/#Default-constraints">Default constraints</a></li><li><a href="manuals/variational/constraints-specification/#Constraints-on-the-data">Constraints on the data</a></li><li><a href="manuals/variational/constraints-specification/#prespecified-constraints">Prespecified constraints</a></li></ul></li><li><a href="manuals/inference/meta-specification/#user-guide-meta-specification">Meta Specification</a></li><li class="no-marker"><ul><li><a href="manuals/inference/meta-specification/#General-syntax">General syntax</a></li><li><a href="manuals/inference/meta-specification/#Create-your-own-meta">Create your own meta</a></li><li><a href="manuals/inference/meta-specification/#Adding-metadata-to-nodes-in-submodels">Adding metadata to nodes in submodels</a></li></ul></li><li><a href="manuals/inference/overview/#user-guide-inference-execution">Inference execution</a></li><li class="no-marker"><ul><li><a href="manuals/inference/overview/#user-guide-inference-execution-automatic-specification">Automatic inference specification</a></li><li><a href="manuals/inference/overview/#Where-to-go-next?">Where to go next?</a></li></ul></li><li><a href="manuals/inference/create-node/#create-node">Creating your own custom nodes</a></li><li class="no-marker"><ul><li><a href="manuals/inference/create-node/#Problem-statement">Problem statement</a></li><li><a href="manuals/inference/create-node/#Step-1:-Creating-the-custom-node">Step 1: Creating the custom node</a></li><li><a href="manuals/inference/create-node/#Step-2:-Defining-rules-for-our-node">Step 2: Defining rules for our node</a></li><li><a href="manuals/inference/create-node/#Step-3:-Defining-joint-marginals-for-our-node">Step 3: Defining joint marginals for our node</a></li><li><a href="manuals/inference/create-node/#Step-4:-Defining-the-average-energy-for-our-node">Step 4: Defining the average energy for our node</a></li><li><a href="manuals/inference/create-node/#Using-our-node-in-a-model">Using our node in a model</a></li></ul></li><li><a href="manuals/inference/create-node/#custom-node-experimental">Custom node experimental functionality</a></li><li class="no-marker"><ul><li><a href="manuals/inference/create-node/#inference-ruleswithnode">Rules that require a reference to a node object</a></li></ul></li><li><a href="manuals/performance-tips/#user-guide-performance-tips">Performance Tips</a></li><li class="no-marker"><ul><li><a href="manuals/performance-tips/#Julia-Compilation-Latency">Julia Compilation Latency</a></li><li><a href="manuals/performance-tips/#Model-Structure-Optimization">Model Structure Optimization</a></li><li><a href="manuals/performance-tips/#Inference-Procedure-Optimization">Inference Procedure Optimization</a></li><li><a href="manuals/performance-tips/#Getting-Help">Getting Help</a></li></ul></li><li><a href="manuals/faq/#user-guide-faq">Frequently Asked Questions (FAQ)</a></li><li class="no-marker"><ul><li><a href="manuals/faq/#General-Questions">General Questions</a></li><li><a href="manuals/faq/#Installation-and-Setup">Installation and Setup</a></li><li><a href="manuals/faq/#Model-Specification">Model Specification</a></li><li><a href="manuals/faq/#Inference-Issues">Inference Issues</a></li><li><a href="manuals/faq/#Performance-and-Scaling">Performance and Scaling</a></li><li><a href="manuals/faq/#Community-and-Support">Community and Support</a></li><li><a href="manuals/faq/#Contributing-to-the-FAQ">Contributing to the FAQ</a></li></ul></li><li><a href="manuals/debugging/#user-guide-debugging">Debugging</a></li><li class="no-marker"><ul><li><a href="manuals/debugging/#Getting-Help-from-the-Community">Getting Help from the Community</a></li><li><a href="manuals/debugging/#user-guide-debugging-callbacks">Using callbacks to inspect the inference procedure</a></li><li><a href="manuals/debugging/#user-guide-debugging-trace-callbacks">Tracing callback events with <code>RxInferTraceCallbacks</code></a></li><li><a href="manuals/debugging/#user-guide-debugging-message-computations">Tracing individual message computations</a></li><li><a href="manuals/debugging/#user-guide-debugging-benchmark-callbacks">Using <code>RxInferBenchmarkCallbacks</code> for performance analysis</a></li><li><a href="manuals/debugging/#user-guide-debugging-memory-addon">Legacy: Tracing message computations with <code>InputArgumentsAnnotations</code></a></li></ul></li><li><a href="manuals/inference/delta-node/#delta-node-manual">Deterministic nodes</a></li><li class="no-marker"><ul><li><a href="manuals/inference/delta-node/#Features-and-Supported-Inference-Scenarios">Features and Supported Inference Scenarios</a></li><li><a href="manuals/inference/delta-node/#Gaussian-Case">Gaussian Case</a></li><li><a href="manuals/inference/delta-node/#Exponential-Family-Case">Exponential Family Case</a></li><li><a href="manuals/inference/delta-node/#Fuse-deterministic-nodes-with-stochastic-nodes">
25Fuse deterministic nodes with stochastic nodes</a></li></ul></li><li><a href="manuals/how-to-use-rxinfer-from-python/#python-usage">Using RxInfer from Python</a></li><li><a href="examples/overview/#examples-overview">Examples</a></li><li><a href="manuals/variational/functional-forms/#lib-forms">Built-in Functional Forms</a></li><li class="no-marker"><ul><li><a href="manuals/variational/functional-forms/#lib-forms-background">Background</a></li><li><a href="manuals/variational/functional-forms/#lib-forms-unspecified-constraint">UnspecifiedFormConstraint</a></li><li><a href="manuals/variational/functional-forms/#lib-forms-point-mass-constraint">PointMassFormConstraint</a></li><li><a href="manuals/variational/functional-forms/#lib-forms-sample-list-constraint">SampleListFormConstraint</a></li><li><a href="manuals/variational/functional-forms/#lib-forms-fixed-marginal-constraint">FixedMarginalFormConstraint</a></li><li><a href="manuals/variational/functional-forms/#lib-forms-composite-constraint">CompositeFormConstraint</a></li><li><a href="manuals/variational/functional-forms/#lib-forms-custom-constraints">Custom functional forms</a></li></ul></li><li><a href="manuals/variational/bethe-free-energy/#lib-bethe-free-energy">Bethe Free Energy implementation in RxInfer</a></li><li class="no-marker"><ul><li><a href="manuals/variational/bethe-free-energy/#lib-bethe-factorized-model">Factorized model</a></li><li><a href="manuals/variational/bethe-free-energy/#lib-bethe-vfe">Variational Free Energy</a></li><li><a href="manuals/variational/bethe-free-energy/#lib-bethe-variational-inference">Variational inference</a></li><li><a href="manuals/variational/bethe-free-energy/#lib-bethe-approximation">Bethe approximation</a></li><li><a href="manuals/variational/bethe-free-energy/#lib-bethe-bfe">Bethe Free Energy</a></li><li><a href="manuals/variational/bethe-free-energy/#lib-bethe-further-reading">Further reading</a></li><li><a href="manuals/variational/bethe-free-energy/#Implementation-details">Implementation details</a></li></ul></li><li><a href="contributing/exported-methods/#lib-using-methods">Using methods from RxInfer</a></li><li class="no-marker"><ul><li><a href="contributing/exported-methods/#lib-list-methods">List of available methods</a></li></ul></li><li><a href="contributing/guide/#contributing-overview">Contributing</a></li><li class="no-marker"><ul><li><a href="contributing/guide/#Project-structure">Project structure</a></li><li><a href="contributing/guide/#Getting-started">Getting started</a></li><li><a href="contributing/guide/#Contribution-guidelines">Contribution guidelines</a></li></ul></li><li><a href="contributing/new-example/#contributing-new-example">Contributing to the examples</a></li></ul><h2 id="Concepts-Overview"><a class="docs-heading-anchor" href="#Concepts-Overview">Concepts Overview</a><a id="Concepts-Overview-1"></a><a class="docs-heading-anchor-permalink" href="#Concepts-Overview" title="Permalink"></a></h2><p>Before diving into practical usage, explore the foundational concepts underlying RxInfer:</p><ul><li><strong><a href="concepts/factor-graphs/#concepts-factor-graphs">Factor Graphs</a></strong> â graphical representation of probabilistic models in terms of variable and factor nodes</li><li><strong><a href="concepts/message-passing/#concepts-message-passing">Message Passing</a></strong> â VMP/BP algorithms for Bayesian inference on factor graphs</li><li><strong><a href="concepts/reactive-programming/#concepts-reactive-programming">Reactive Programming Model</a></strong> â the streams mental model that enables real-time inference</li></ul><p>These concept pages provide deeper theoretical understanding than the practical manuals. For quick-start usage, head to <a href="manuals/getting-started/#user-guide-getting-started">Getting started</a>.</p><h2 id="References"><a class="docs-heading-anchor" href="#References">References</a><a id="References-1"></a><a class="docs-heading-anchor-permalink" href="#References" title="Permalink"></a></h2><ul><li><a href="https://doi.org/10.21105/joss.05161">RxInfer: A Julia package for reactive real-time Bayesian inference</a> - a reference paper for the <code>RxInfer.jl</code> framework.</li><li><a href="https://pure.tue.nl/ws/portalfiles/portal/313860204/20231219_Bagaev_hf.pdf">Reactive Probabilistic Programming for Scalable Bayesian Inference</a> - a PhD dissertation outlining core ideas and principles behind <code>RxInfer</code> (<a href="https://research.tue.nl/nl/publications/reactive-probabilistic-programming-for-scalable-bayesian-inferenc">link2</a>, <a href="https://github.com/bvdmitri/phdthesis">link3</a>).</li><li><a href="https://doi.org/10.3390/e23070807">Variational Message Passing and Local Constraint Manipulation in Factor Graphs</a> - describes theoretical aspects of the underlying Bayesian inference method.</li><li><a href="https://doi.org/10.48550/arXiv.2112.13251">Reactive Message Passing for Scalable Bayesian Inference</a> - describes implementation aspects of the Bayesian inference engine and performs benchmarks and accuracy comparison on various models.</li><li><a href="https://doi.org/10.1016/j.simpa.2022.100299">A Julia package for reactive variational Bayesian inference</a> - a reference paper for the <code>ReactiveMP.jl</code> package, the underlying inference engine.</li><li><a href="https://ieeexplore.ieee.org/document/4282128/">The Factor Graph Approach to Model-Based Signal Processing</a> - an introduction to message passing and FFGs.</li></ul><h2 id="Ecosystem"><a class="docs-heading-anchor" href="#Ecosystem">Ecosystem</a><a id="Ecosystem-1"></a><a class="docs-heading-anchor-permalink" href="#Ecosystem" title="Permalink"></a></h2><p><code>RxInfer</code> is part of the <a href="https://github.com/ReactiveBayes"><code>ReactiveBayes</code></a> ecosystem, which unites 3 core packages into one powerful reactive message passing-based Bayesian inference framework:</p><ul><li><a href="https://github.com/reactivebayes/ReactiveMP.jl"><code>ReactiveMP.jl</code></a> - core package for efficient and scalable reactive message passing </li><li><a href="https://github.com/reactivebayes/GraphPPL.jl"><code>GraphPPL.jl</code></a> - package for model and constraints specification</li><li><a href="https://github.com/reactivebayes/Rocket.jl"><code>Rocket.jl</code></a> - reactive programming tools</li></ul><div class="admonition is-info" id="Note-fb08d2c0ee8ca6a9"><header class="admonition-header">Note<a class="admonition-anchor" href="#Note-fb08d2c0ee8ca6a9" title="Permalink"></a></header><div class="admonition-body"><p><code>ReactiveMP.jl</code> engine is a successor of the <a href="https://github.com/biaslab/ForneyLab.jl"><code>ForneyLab</code></a> package. It follows the same ideas and concepts for message-passing based inference, but uses new reactive and efficie
25nt message passing implementation under the hood. The API between two packages is different due to a better flexibility, performance and new reactive approach for solving inference problems.</p></div></div><p>While these packages form the core, <code>RxInfer</code> relies on numerous other excellent open-source packages. The developers of <code>RxInfer</code> express their deep appreciation to the entire open-source community for their tremendous efforts.</p><p>We are also very proud to be an affiliated project with <a href="https://numfocus.org/">NumFocus</a>, a non-profit organization that supports the open-source scientific computing community.</p><p><img src="assets/numfocus.png" alt/></p><h2 id="Index"><a class="docs-heading-anchor" href="#Index">Index</a><a id="Index-1"></a><a class="docs-heading-anchor-permalink" href="#Index" title="Permalink"></a></h2><ul><li><a href="manuals/inference/benchmark-callbacks/#RxInfer.DEFAULT_BENCHMARK_CALLBACKS_BUFFER_CAPACITY"><code>RxInfer.DEFAULT_BENCHMARK_CALLBACKS_BUFFER_CAPACITY</code></a></li><li><a href="manuals/session_summary/#RxInfer.DEFAULT_SESSION_STATS_CAPACITY"><code>RxInfer.DEFAULT_SESSION_STATS_CAPACITY</code></a></li><li><a href="manuals/variational/bethe-free-energy/#RxInfer.DefaultObjectiveDiagnosticChecks"><code>RxInfer.DefaultObjectiveDiagnosticChecks</code></a></li><li><a href="manuals/inference/autoupdates/#RxInfer.EmptyAutoUpdateSpecification"><code>RxInfer.EmptyAutoUpdateSpecification</code></a></li><li><a href="manuals/model-specification/#RxInfer.ReactiveMPNodeAliases"><code>RxInfer.ReactiveMPNodeAliases</code></a></li><li><a href="manuals/telemetry/#RxInfer.preference_share_source_code"><code>RxInfer.preference_share_source_code</code></a></li><li><a href="manuals/inference/callbacks/#RxInfer.AfterAutostartEvent"><code>RxInfer.AfterAutostartEvent</code></a></li><li><a href="manuals/inference/callbacks/#RxInfer.AfterDataUpdateEvent"><code>RxInfer.AfterDataUpdateEvent</code></a></li><li><a href="manuals/inference/callbacks/#RxInfer.AfterInferenceEvent"><code>RxInfer.AfterInferenceEvent</code></a></li><li><a href="manuals/inference/callbacks/#RxInfer.AfterIterationEvent"><code>RxInfer.AfterIterationEvent</code></a></li><li><a href="manuals/inference/callbacks/#RxInfer.AfterModelCreationEvent"><code>RxInfer.AfterModelCreationEvent</code></a></li><li><a href="manuals/variational/functional-forms/#RxInfer.AutoProposal"><code>RxInfer.AutoProposal</code></a></li><li><a href="manuals/inference/autoupdates/#RxInfer.AutoUpdateFetchMarginalArgument"><code>RxInfer.AutoUpdateFetchMarginalArgument</code></a></li><li><a href="manuals/inference/autoupdates/#RxInfer.AutoUpdateFetchMessageArgument"><code>RxInfer.AutoUpdateFetchMessageArgument</code></a></li><li><a href="manuals/inference/autoupdates/#RxInfer.AutoUpdateMapping"><code>RxInfer.AutoUpdateMapping</code></a></li><li><a href="manuals/inference/autoupdates/#RxInfer.AutoUpdateSpecification"><code>RxInfer.AutoUpdateSpecification</code></a></li><li><a href="manuals/inference/autoupdates/#RxInfer.AutoUpdateVariableLabel"><code>RxInfer.AutoUpdateVariableLabel</code></a></li><li><a href="manuals/inference/callbacks/#RxInfer.BeforeAutostartEvent"><code>RxInfer.BeforeAutostartEvent</code></a></li><li><a href="manuals/inference/callbacks/#RxInfer.BeforeDataUpdateEvent"><code>RxInfer.BeforeDataUpdateEvent</code></a></li><li><a href="manuals/inference/callbacks/#RxInfer.BeforeInferenceEvent"><code>RxInfer.BeforeInferenceEvent</code></a></li><li><a href="manuals/inference/callbacks/#RxInfer.BeforeIterationEvent"><code>RxInfer.BeforeIterationEvent</code></a></li><li><a href="manuals/inference/callbacks/#RxInfer.BeforeModelCreationEvent"><code>RxInfer.BeforeModelCreationEvent</code></a></li><li><a href="manuals/variational/bethe-free-energy/#RxInfer.BetheFreeEnergy"><code>RxInfer.BetheFreeEnergy</code></a></li><li><a href="manuals/model-specification/#RxInfer.ConditionedModelGenerator"><code>RxInfer.ConditionedModelGenerator</code></a></li><li><a href="manuals/model-specification/#RxInfer.DeferredDataHandler"><code>RxInfer.DeferredDataHandler</code></a></li><li><a href="manuals/variational/functional-forms/#RxInfer.FixedMarginalFormConstraint"><code>RxInfer.FixedMarginalFormConstraint</code></a></li><li><a href="manuals/inference/autoupdates/#RxInfer.IndividualAutoUpdateSpecification"><code>RxInfer.IndividualAutoUpdateSpecification</code></a></li><li><a href="manuals/inference/static/#RxInfer.InferenceResult"><code>RxInfer.InferenceResult</code></a></li><li><a href="manuals/inference/initialization/#RxInfer.InitializationPlugin"><code>RxInfer.InitializationPlugin</code></a></li><li><a href="manuals/inference/overview/#RxInfer.KeepEach"><code>RxInfer.KeepEach</code></a></li><li><a href="manuals/inference/overview/#RxInfer.KeepLast"><code>RxInfer.KeepLast</code></a></li><li><a href="manuals/variational/functional-forms/#RxInfer.LeftProposal"><code>RxInfer.LeftProposal</code></a></li><li><a href="manuals/inference/postprocess/#RxInfer.NoopPostprocess"><code>RxInfer.NoopPostprocess</code></a></li><li><a href="manuals/variational/bethe-free-energy/#RxInfer.ObjectiveDiagnosticCheckInfs"><code>RxInfer.ObjectiveDiagnosticCheckInfs</code></a></li><li><a href="manuals/variational/bethe-free-energy/#RxInfer.ObjectiveDiagnosticCheckNaNs"><code>RxInfer.ObjectiveDiagnosticCheckNaNs</code></a></li><li><a href="manuals/inference/callbacks/#RxInfer.OnMarginalUpdateEvent"><code>RxInfer.OnMarginalUpdateEvent</code></a></li><li><a href="manuals/inference/trace-callbacks/#RxInfer.PerfettoDisplay"><code>RxInfer.PerfettoDisplay</code></a></li><li><a href="manuals/variational/functional-forms/#RxInfer.PointMassFormConstraint"><code>RxInfer.PointMassFormConstraint</code></a></li><li><a href="manuals/model-specification/#RxInfer.ProbabilisticModel"><code>RxInfer.ProbabilisticModel</code></a></li><li><a href="manuals/inference/static/#RxInfer.ReactiveMPForceMarginalComputationPlugin"><code>RxInfer.ReactiveMPForceMarginalComputationPlugin</code></a></li><li><a href="manuals/variational/bethe-free-energy/#RxInfer.ReactiveMPFreeEnergyPlugin"><code>RxInfer.ReactiveMPFreeEnergyPlugin</code></a></li><li><a href="manuals/model-specification/#RxInfer.ReactiveMPGraphPPLBackend"><code>RxInfer.ReactiveMPGraphPPLBackend</code></a></li><li><a href="manuals/inference/overview/#RxInfer.ReactiveMPInferenceOptions"><code>RxInfer.ReactiveMPInferenceOptions</code></a></li><li><a href="manuals/variational/functional-forms/#RxInfer.RightProposal"><code>RxInfer.RightProposal</code></a></li><li><a href="manuals/inference/benchmark-callbacks/#RxInfer.RxInferBenchmarkCallbacks"><code>RxInfer.RxInferBenchmarkCallbacks</code></a></li><li><a href="manuals/inference/trace-callbacks/#RxInfer.RxInferTraceCallbacks"><code>RxInfer.RxInferTraceCallbacks</code></a></li><li><a href="manuals/inference/streamlined/#RxInfer.RxInferenceEngine"><code>RxInfer.RxInferenceEngine</code></a></li><li><a href="manuals/inference/streamlined/#RxInfer.RxInferenceEvent"><code>RxInfer.RxInferenceEvent</code></a></li><li><a href="manuals/variational/functional-forms/#RxInfer.SampleListFormConstraint"><code>RxInfer.SampleListFormConstraint</code></a></li><li><a href="manuals/session_summary/#RxInfer.Session"><code>RxInfer.Session</code></a></li><li><a href="manuals/session_summary/#RxInfer.SessionInvoke"><code>RxInfer.SessionInvoke</code></a></li><li><a href="manuals/session_summary/#RxInfer.SessionStats"><code>RxInfer.SessionStats</code></a></li><li><a href="manuals/inference/early-stopping/#RxInfer.StopEarlyIterationStrategy-Tuple{Real}"><code>RxInfer.StopEarlyIterationStrategy</code></a></li><li><a href="manuals/inference/early-stopping/#RxInfer.StopEarlyIterationStrategy-Tuple{Real, Real}"><code>RxInfer.StopEarlyIterationStrategy</code></a></li><li><a href="manuals/inference/early-stopping/#RxInfer.StopEarlyIterationStrategy"><code>RxInfer.StopEarlyIterationStrategy</code></a></li><li><a href="manuals/inference/trace-callbacks/#RxInfer.TracedEvent"><code>RxInfer.TracedEvent</code></a></li><li><a href="manuals/variational/constraints-specification/#RxInfer.UnfactorizedData"><code>RxInfer.UnfactorizedData</code></a></li><li><a href="manuals/inference/postprocess/#RxInfer.UnpackMarginalPostprocess"><code>RxInfer.UnpackMarginalPostprocess</code></a></li><li><a href="manuals/model-specification/#Base.:|-Tuple{GraphPPL.ModelGenerator, Any}"><code>Base.:|</code></a></li><li><a href="manuals/inference/autoupdates/#Base.isempty-Tuple{RxInfer.AutoUpdateSpecification}"><code>Base.isempty</code></a></li><li><a href="manuals/model-specification/#GraphPPL.create_model-Tuple{RxInfer.ConditionedModelGenerator}"><code>GraphPPL.create_model</code></a></li><li><a href="manuals/model-specification/#GraphPPL.getmodel-Tuple{ProbabilisticModel}"><code>GraphPPL.getmodel</code></a></li><li><a href="manuals/inference/autoupdates/#RxInfer.addspecification"><code>RxInfer.addspecification</code></a></li><li><a href="manuals/session_summary/#RxInfer.append_invoke_context"><code>RxInfer.append_invoke_context</code></a></li><li><a href="manuals/variational/bethe-free-energy/#RxInfer.apply_diagnostic_check"><code>RxInfer.apply_diagnostic_check</code></a></li><li><a href="manuals/inference/autoupdates/#RxInfer.autoupdate_check_reserved_expressions"><code>RxInfer.autoupdate_check_reserved_expressions</code></a></li><li><a href="manuals/model-specification/#RxInfer.compose_simple_operators_with_brackets"><code>RxInfer.compose_simple_operators_with_brackets</code></a></li><li><a href="manuals/model-specification/#RxInfer.condition_on"><code>RxInfer.condition_on</code></a></li><li><a href="manuals/inference/initialization/#RxInfer.convert_init_fform"><code>RxInfer.convert_init_fform</code></a></li><li><a href="manuals/inference/initialization/#RxInfer.convert_init_object"><code>RxInfer.convert_init_object</code></a></li><li><a href="manuals/inference/initialization/#RxInfer.convert_init_variables"><code>RxInfer.convert_init_variables</code></a></li><li><a href="manuals/inference/trace-callbacks/#RxInfer.convert_to_tensorboard"><code>RxInfer.convert_to_tensorboard</code></a></li><li><a href="manuals/session_summary/#RxInfer.create_invoke"><code>RxInfer.create_invoke</code></a></li><li><a href="manuals/session_summary/#RxInfer.create_session"><code>RxInfer.create_session</code></a></li><li><a href="manuals/variational/functional-forms/#RxInfer.default_point_mass_form_constraint_boundaries"><code>RxInfer.default_point_mass_form_constraint_boundaries</code></a></li><li><a href="manuals/variational/functional-forms/#RxInfer.default_point_mass_form_constraint_optimizer"><code>RxInfer.default_point_mass_form_constraint_optimizer</code></a></li><li><a href="manuals/variational/functional-forms/#RxInfer.default_point_mass_form_constraint_starting_point"><code>RxInfer.default_point_mass_form_constraint_starting_point</code></a></li><li><a href="manuals/session_summary/#RxInfer.default_session"><code>RxInfer.default_session</code></a></li><li><a href="manuals/telemetry/#RxInfer.disable_automatic_session_sharing!"><code>RxInfer.disable_automatic_session_sharing!</code></a></li><li><a href="manuals/inference/overview/#RxInfer.disable_inference_error_hint!"><code>RxInfer.disable_inference_error_hint!</code></a></li><li><a href="manuals/telemetry/#RxInfer.disable_rxinfer_using_telemetry!"><code>RxInfer.disable_rxinfer_using_telemetry!</code></a></li><li><a href="manuals/session_summary/#RxInfer.disable_session_logging!"><code>RxInfer.disable_session_logging!</code></a></li><li><a href="manuals/telemetry/#RxInfer.disable_source_code_sharing!"><code>RxInfer.disable_source_code_sharing!</code></a></li><li><a href="manuals/telemetry/#RxInfer.enable_automatic_session_sharing!"><code>RxInfer.enable_automatic_session_sharing!</code></a></li><li><a href="manuals/inference/overview/#RxInfer.enable_inference_error_hint!"><code>RxInfer.enable_inference_error_hint!</code></a></li><li><a href="manuals/telemetry/#RxInfer.enable_rxinfer_using_telemetry!"><code>RxInfer.enable_rxinfer_using_telemetry!</code></a></li><li><a href="manuals/session_summary/#RxInfer.enable_session_logging!"><code>RxInfer.enable_session_logging!</code></a></li><li><a href="manuals/telemetry/#RxInfer.enable_source_code_sharing!"><code>RxInfer.enable_source_code_sharing!</code></a></li><li><a href="manuals/model-specification/#RxInfer.error_datavar_constvar_randomvar"><code>RxInfer.error_datavar_constvar_randomvar</code></a></li><li><a href="manuals/inference/benchmark-callbacks/#RxInfer.get_benchmark_stats"><code>RxInfer.get_benchmark_stats</code></a></li><li><a href="manuals/session_summary/#RxInfer.get_session_stats"><code>RxInfer.get_session_stats</code></a></li><li><a href="manuals/inference/autoupdates/#RxInfer.getautoupdate"><code>RxInfer.getautoupdate</code></a></li><li><a href="manuals/model-specification/#RxInfer.getconstantvars-Tuple{ProbabilisticModel}"><code>RxInfer.getconstantvars</code></a></li><li><a href="manuals/model-specification/#RxInfer.getdatavars-Tuple{ProbabilisticModel}"><code>RxInfer.getdatavars</code></a></li><li><a href="manuals/model-specification/#RxInfer.getfactornodes-Tuple{ProbabilisticModel}"><code>RxInfer.getfactornodes</code></a></li><li><a href="manuals/inference/autoupdates/#RxInfer.getmapping"><code>RxInfer.getmapping</code></a></li><li><a href="manuals/model-specification/#RxInfer.getrandomvars-Tuple{ProbabilisticModel}"><code>RxInfer.getrandomvars</code></a></li><li><a href="manuals/model-specification/#RxInfer.getreturnval-Tuple{ProbabilisticModel}"><code>RxInfer.getreturnval</code></a></li><li><a href="manuals/model-specification/#RxInfer.getvardict-Tuple{ProbabilisticModel}"><code>RxInfer.getvardict</code></a></li><li><a href="manuals/inference/autoupdates/#RxInfer.getvarlabels"><code>RxInfer.getvarlabels</code></a></li><li><a href="manuals/inference/overview/#RxInfer.infer"><code>RxInfer.infer</code></a></li><li><a href="manuals/inference/postprocess/#RxInfer.inference_postprocess"><code>RxInfer.inference_postprocess</code></a></li><li><a href="manuals/model-specification/#RxInfer.inject_tilderhs_aliases"><code>RxInfer.inject_tilderhs_aliases</code></a></li><li><a href="manuals/inference/trace-callbacks/#RxInfer.is_trace_event_included"><code>RxInfer.is_trace_event_included</code></a></li><li><a href="manuals/inference/overview/#RxInfer.iserror"><code>RxInfer.iserror</code></a></li><li><a href="manuals/inference/overview/#RxInfer.issuccess"><code>RxInfer.issuccess</code></a></li><li><a href="manuals/telemetry/#RxInfer.log_using_rxinfer"><code>RxInfer.log_using_rxinfer</code></a></li><li><a href="manuals/inference/autoupdates/#RxInfer.numautoupdates"><code>RxInfer.numautoupdates</code></a></li><li><a href="manuals/inference/autoupdates/#RxInfer.parse_autoupdates"><code>RxInfer.parse_autoupdates</code></a></li><li><a href="manuals/inference/trace-callbacks/#RxInfer.perfetto_open"><code>RxInfer.perfetto_open</code></a></li><li><a href="manuals/inference/trace-callbacks/#RxInfer.perfetto_view"><code>RxInfer.perfetto_view</code></a></li><li><a href="manuals/inference/autoupdates/#RxInfer.prepare_autoupdates_for_model"><code>RxInfer.prepare_autoupdates_for_model</code></a></li><li><a href="manuals/session_summary/#RxInfer.reset_session!"><code>RxInfer.reset_session!</code></a></li><li><a href="manuals/session_summary/#RxInfer.set_default_session!"><code>RxInfer.set_default_session!</code></a></li><li><a href="manuals/session_summary/#RxInfer.set_session_stats_capacity!"><code>RxInfer.set_session_stats_capacity!</code></a></li><li><a href="manuals/telemetry/#RxInfer.set_telemetry_endpoint!"><code>RxInfer.set_telemetry_endpoint!</code></a></li><li><a href="manuals/telemetry/#RxInfer.share_session_data"><code>RxInfer.share_session_data</code></a></li><li><a href="manuals/inference/streamlined/#RxInfer.start"><code>RxInfer.start</code></a></li><li><a href="manuals/inference/streamlined/#RxInfer.stop"><code>RxInfer.stop</code></a></li><li><a href="manuals/session_summary/#RxInfer.summarize_session"><code>RxInfer.summarize_session</code></a></li><li><a href="manuals/telemetry/#RxInfer.to_firestore_document"><code>RxInfer.to_firestore_document</code></a></li><li><a href="manuals/telemetry/#RxInfer.to_firestore_invoke"><code>RxInfer.to_firestore_invoke</code></a></li><li><a href="manuals/telemetry/#RxInfer.to_f
25irestore_session"><code>RxInfer.to_firestore_session</code></a></li><li><a href="manuals/telemetry/#RxInfer.to_firestore_session_stats"><code>RxInfer.to_firestore_session_stats</code></a></li><li><a href="manuals/telemetry/#RxInfer.to_firestore_value"><code>RxInfer.to_firestore_value</code></a></li><li><a href="manuals/inference/trace-callbacks/#RxInfer.tracedevents"><code>RxInfer.tracedevents</code></a></li><li><a href="manuals/session_summary/#RxInfer.update_session!"><code>RxInfer.update_session!</code></a></li><li><a href="manuals/session_summary/#RxInfer.update_stats!"><code>RxInfer.update_stats!</code></a></li><li><a href="manuals/session_summary/#RxInfer.with_session"><code>RxInfer.with_session</code></a></li><li><a href="manuals/inference/autoupdates/#RxInfer.@autoupdates"><code>RxInfer.@autoupdates</code></a></li><li><a href="manuals/inference/initialization/#RxInfer.@initialization"><code>RxInfer.@initialization</code></a></li><li><a href="manuals/model-specification/#RxInfer.@model"><code>RxInfer.@model</code></a></li></ul>
25<script type="module">import mermaid from 'https://cdn.jsdelivr.net/npm/mermaid@11/dist/mermaid.esm.min.mjs'; 26mermaid.initialize({ 27 startOnLoad: true, 28 theme: "neutral" 29}); 30</script>
30</article><nav class="docs-footer"><a class="docs-footer-nextpage" href="concepts/probability-distributions/">Probability Distributions »</a><div class="flexbox-break"></div><p class="footer-message">Created in <a href="https://biaslab.github.io/">BIASlab</a>, maintained by <a href="https://github.com/ReactiveBayes">ReactiveBayes</a>, powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="auto">Automatic (OS)</option><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option><option value="catppuccin-latte">catppuccin-latte</option><option value="catppuccin-frappe">catppuccin-frappe</option><option value="catppuccin-macchiato">catppuccin-macchiato</option><option value="catppuccin-mocha">catppuccin-mocha</option></select></div></p><hr/><p>
30This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.17.0 on <span class="colophon-date" title="Thursday 13 August 2026 13:58">Thursday 13 August 2026</span>. Using Julia version 1.12.6.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.