• Stars
    star
    150
  • Rank 247,323 (Top 5 %)
  • Language
    Julia
  • License
    MIT License
  • Created over 6 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Julia package for automatically generating Bayesian inference algorithms through message passing on Forney-style factor graphs.

ForneyLab.jl

Build Status Documentation Code coverage

ForneyLab.jl is a Julia package for automatic generation of (Bayesian) inference algorithms. Given a probabilistic model, ForneyLab generates efficient Julia code for message-passing based inference. It uses the model structure to generate an algorithm that consists of a sequence of local computations on a Forney-style factor graph (FFG) representation of the model. For an excellent introduction to message passing and FFGs, see The Factor Graph Approach to Model-Based Signal Processing by Loeliger et al. (2007). Moreover, for a comprehensive overview of the underlying principles behind this tool, see A Factor Graph Approach to Automated Design of Bayesian Signal Processing Algorithms by Cox et. al. (2018).

We designed ForneyLab with a focus on flexible and modular modeling of time-series data. ForneyLab enables a user to:

  • Conveniently specify a probabilistic model;
  • Automatically generate an efficient inference algorithm;
  • Compile the inference algorithm to executable Julia code.

The current version supports belief propagation (sum-product message passing), variational message passing and expectation propagation.

The ForneyLab project page provides more background on ForneyLab as well as pointers to related literature and talks. For a practical introduction, have a look at the demos.

Documentation

Full documentation is available at BIASlab website.

It is also possible to build documentation locally. Just execute

$ julia make.jl

in the docs/ directory to build a local version of the documentation.

Installation

Install ForneyLab through the Julia package manager:

] add ForneyLab

If you want to be able to use the graph visualization functions, you will also need to have GraphViz installed. On Linux, just use apt-get install graphviz or yum install graphviz. On Windows, run the installer and afterwards manually add the path of the GraphViz installation to the PATH system variable. On MacOS, use for example brew install graphviz. The dot command should work from the command line.

Some demos use the PyPlot plotting module. Install it using ] add PyPlot.

Optionally, use ] test ForneyLab to validate the installation by running the test suite.

Getting started

There are demos available to get you started. Additionally, the ForneyLab project page contains a talk and other resources that might be helpful.

License

MIT License, Copyright (c) 2022 BIASlab http://biaslab.org see LICENSE.md file for details.

More Repositories

1

RxInfer.jl

Julia package for automated Bayesian inference on a factor graph with reactive message passing
Jupyter Notebook
179
star
2

Rocket.jl

Functional reactive programming extensions library for Julia
Julia
161
star
3

ReactiveMP.jl

High-performance reactive message-passing based Bayesian inference engine
Julia
79
star
4

hugo-academic-group

An academic group website theme for Hugo.
HTML
54
star
5

GraphPPL.jl

DSL for probabilistic models specification and probabilistic programming.
Julia
18
star
6

RxEnvironments.jl

Reactive environments for self-learning agents
Julia
15
star
7

biaslab-hugo

Repository with content of BIASlab website for Hugo static site generator.
HTML
12
star
8

LAIF

Experiments with deriving epistemics aware message passing algos
Julia
6
star
9

MultiAgentTrajectoryPlanning

Experiments of the "Multi-Agent Trajectory Planning with NUV Priors" paper
Julia
6
star
10

ai_workshop_2020

Code to run potential based agents and generate figures for the submission to the 2020 Workshop on Active Inference
Julia
6
star
11

ExponentialFamily.jl

Julia
5
star
12

AIDA

Julia
5
star
13

RxAgent-Zoo

Archive of active inference agents based on reactive message passing.
Jupyter Notebook
5
star
14

PrincipledPruningBNN

Jupyter Notebook
5
star
15

ReactiveMP_JuliaCon2021

ReactiveMP JuliaCon2021 presentation notebooks
Julia
3
star
16

LCSS2024-NARXEFE

Code, figures, animations for a NARX-EFE based agent.
Jupyter Notebook
3
star
17

nsi-silverbox

Online system identification in Silverbox by minimising free energy
Jupyter Notebook
2
star
18

SituatedSoundscaping

Derivations and experiments of the "A Bayesian Modeling Approach to Situated Design of Personalized Soundscaping Algorithms" paper, published in the MDPI journal of Applied Sciences in the special issue on AI, Machine Learning and Deep Learning in Signal Processing, 2021.
Julia
2
star
19

IWAI2020-onlinesysid

Code and experiments for IWAI 2020 submission on online system identification
HTML
1
star
20

rxinfer-website

Repository with content of RxInfer website for Hugo static site generator.
JavaScript
1
star
21

CDC-2022

Experiments and derivations for CDC2022 paper on message passing-based inference for NARMAX system identification.
Jupyter Notebook
1
star
22

ExtendedVMP

Experiments for numerical approximations to VMP
Jupyter Notebook
1
star
23

TVAR_FFG

Time-varying autoregressive models in Forney-Style Factor Graphs
Jupyter Notebook
1
star
24

NARX

ForneyLab.jl factor node for a nonlinear autoregressive model with exogenous input.
Julia
1
star
25

IWAI2024-ambiguity

Expected free energy minimization with approximations to nonlinear observation functions
Jupyter Notebook
1
star
26

ReactiveInferencePendulum

A small demonstration of reactive Bayesian inference for pendulum dynamics
Jupyter Notebook
1
star
27

ACC2022-vmpNARMAX

Experiments and derivations for ACC2022 paper on variational message passing for online NARMAX identification.
Jupyter Notebook
1
star
28

SiPS2022-EfficientModelEvidenceComputation

Experiments and derivations for SiPS2022 paper "Efficient model evidence computation in tree-structured factor graph"
Jupyter Notebook
1
star
29

LAR

AR extension of ForneyLab.jl
Jupyter Notebook
1
star
30

PGM2022-SourceSeparationNAR

Experiments and code of the paper "Online Single-Microphone Source Separation using Non-Linear Autoregressive Models"
Jupyter Notebook
1
star
31

CVMP

Implementation of https://github.com/Nimrais/CCMPPaper
Julia
1
star
32

ThesisParallelMP

Master thesis project of Mattia Vicari about parallel computing in message passing-based Bayesian inference programs
Jupyter Notebook
1
star
33

CCTA2024-BIDconvection

Experiments for CCTA 2024 submission on fast Bayesian gray-box identification of convection in heat transfer dynamics.
Jupyter Notebook
1
star
34

Chengfeng_intent_inference

Jupyter Notebook
1
star
35

preds-not-commands

Experiment with sending predictions, not commands, to an actuator that reacts to minimize the prediction error.
Jupyter Notebook
1
star
36

OnlineMessagePassingDirichletProcess

Julia
1
star