**Reactive Message Passing**

## Features

#### User Friendly

Clean specification of probabilistic models and inference constraints.

#### Streaming Datasets

Reactive message passing-based inference for streaming datasets.

#### Hybrid Models

Support for hybrid models combining discrete and continuous latent variables.

#### Scalable

Scalability for large models with millions of parameters and observations.

#### Extensible

Designed to be extended with custom operations.

#### Differentiable

Supports automatic differentiation packages for parameter tuning.

## Hello RxInfer!

RxInfer.jl is a Julia package that aims to automate inference in your probabilistic models. Specify your model, call the inference function, and the package takes care of the rest. Take a look how simple it is to specify a linear state space model and to run inference in it!

Get started now` ````
@model function SSM(n, x0, A, B, Q, P)
# x is a sequence of hidden states
x = randomvar(n)
# y is a sequence of clamped observations
y = datavar(Vector{Float64}, n)
# `~` expression creates a probabilistic relationship
# between random variables
x_prior ~ MvNormal(μ = mean(x0), Σ = cov(x0))
x_prev = x_prior
# Build the state-space model
for i in 1:n
x[i] ~ MvNormal(μ = A * x_prev, Σ = Q)
y[i] ~ MvNormal(μ = B * x[i], Σ = P)
x_prev = x[i]
end
end
observations = load_dataset()
result = inference(
model = SSM(length(observations), x0, A, B, Q, P),
data = (y = observations,)
)
```

## RxInfer is fast

RxInfer exploits the modularity of factor graphs to perform fast message passing-based probabilistic inference that scales linearly with the size of your model. We generally outperform state-of-the-art sampling-based packages by several orders of magnitude. RxInfer supports real-time processing of streaming data sources.

Check out some examples## Solve complex problems

RxInfer solves complex problems through hybrid inference algorithms composed of (loopy) belief propagation, (structured) variational message passing, expectation propagation, expectation maximization and conjugate-computation variational inference.

Research supporting RxInfer## Ecosystem

The RxInfer ecosystem stacks several Julia packages for running efficient Bayesian inference.