• Stars
    star
    141
  • Rank 252,238 (Top 6 %)
  • Language
    Julia
  • License
    MIT License
  • Created almost 5 years ago
  • Updated 3 months ago

Reviews

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

Repository Details

Implementation of domain-specific language (DSL) for dynamic probabilistic programming

DynamicPPL.jl

Stable Dev CI JuliaNightly IntegrationTest Coverage Status Codecov Code Style: Blue ColPrac: Contributor's Guide on Collaborative Practices for Community Packages

A domain-specific language and backend for probabilistic programming, used by Turing.jl.

DynamicPPL is the part of Turing.jl that deals with defining, running, and manipulating models. DynamicPPL provides:

  • General-purpose probabilistic programming with an intuitive syntax.
  • The @model syntax and macro for easily specifying probabilistic generative models.
  • A tracing data-structure for tracking random variables in dynamic probabilistic models.
  • A rich contextual dispatch system allowing for tailored behaviour during model execution.
  • A user-friendly syntax for probabilistic queries.

Information on how to use the DynamicPPL frontend to build Bayesian models can be found on the Turing website. Tutorials explaining how to use the backend can be found alongside the documentation. More information can be found in our paper DynamicPPL: Stan-like Speed for Dynamic Probabilistic Models.

Do you want to contribute?

If you feel you have some relevant skills and are interested in contributing, please get in touch! You can find us in the #turing channel on the Julia Slack or Discourse. If you're having any problems, please open a Github issue, even if the problem seems small (like help figuring out an error message). Every issue you open helps us improve the library!

Contributor's Guide

This project follows the ColPrac: Contributor's Guide on Collaborative Practices for Community Packages, apart from the following slight variation:

  • The master branch contains the most recent release at any point in time. All non-breaking changes (bug fixes etc.) are merged directly into master and a new patch version is released immediately.
  • A separate dev branch contains all breaking changes, and is merged into master when a minor version release happens.

For instance, suppose we are currently on version 0.13.5.

  • If someone produces a bug fix, it is merged directly into master and bumps the version to 0.13.6. This change is also merged into dev so that it remains up-to-date with master.
  • If someone is working on a new feature that is not breaking (performance-related, fancy new syntax that is backwards-compatible etc.), the same happens.
  • New breaking changes are merged into dev until a release is ready to go, at which point dev is merged into master and version 0.14 is released.

Merge Queue

This project uses a merge queue for merging PRs. In this way, merge skew / semantic merge conflicts are prevented by testing the exact integration of pull requests before merging them.

When a PR is good enough for merging and has been approved by at least one reviewer, instead of merging immediately, it is added to the merge queue. If the CI tests pass, including downstream tests of Turing, the PR is merged into the main branch.

More Repositories

1

Turing.jl

Bayesian inference with probabilistic programming.
Julia
1,983
star
2

MCMCChains.jl

Types and utility functions for summarizing Markov chain Monte Carlo simulations
Julia
254
star
3

TuringTutorials

Educational material and tutorials for the Turing language
Jupyter Notebook
224
star
4

AdvancedHMC.jl

Robust, modular and efficient implementation of advanced Hamiltonian Monte Carlo algorithms
Jupyter Notebook
220
star
5

Bijectors.jl

Implementation of normalising flows and constrained random variable transformations
Julia
183
star
6

DistributionsAD.jl

Automatic differentiation of Distributions using Tracker, Zygote, ForwardDiff and ReverseDiff
Julia
148
star
7

AdvancedMH.jl

Robust implementation for random-walk Metropolis-Hastings algorithms
Julia
83
star
8

AbstractMCMC.jl

Abstract types and interfaces for Markov chain Monte Carlo methods
Julia
70
star
9

TuringGLM.jl

Bayesian Generalized Linear models using `@formula` syntax.
Julia
61
star
10

AdvancedVI.jl

Implementation of variational Bayes inference algorithms
Julia
57
star
11

AdvancedPS.jl

Implementation of advanced Sequential Monte Carlo and particle MCMC algorithms
Julia
54
star
12

NestedSamplers.jl

Implementations of single and multi-ellipsoid nested sampling
Julia
37
star
13

IRTracker.jl

Dynamically track IR as a graph, using source transformations
Julia
31
star
14

MCMCTempering.jl

Implementations of parallel tempering algorithms to augment samplers with tempering capabilities
Julia
27
star
15

NormalizingFlows.jl

Julia
24
star
16

AbstractPPL.jl

Common types and interfaces for probabilistic programming
Julia
24
star
17

MCMCDiagnosticTools.jl

Julia
19
star
18

JuliaBUGS.jl

Implementation of domain specific language (DSL) for probabilistic graphical models
Julia
19
star
19

ParetoSmooth.jl

An implementation of PSIS algorithms in Julia.
Julia
18
star
20

Libtask.jl

Tape based task copying in Turing
Julia
17
star
21

CoupledHMC.jl

Jupyter Notebook
14
star
22

TuringExamples

A Bayesian zoo
Julia
14
star
23

TuringCallbacks.jl

Julia
13
star
24

Turing-Workshop

Turing Workshop
Jupyter Notebook
12
star
25

EllipticalSliceSampling.jl

Julia implementation of elliptical slice sampling.
Julia
12
star
26

turinglang.github.io

The home for all Turing website & documentation resources.
JavaScript
6
star
27

MCMCDebugging.jl

MCMCDebugging.jl: debugging utilities for MCMC samplers
Julia
4
star
28

TuringBenchmarking.jl

Julia
4
star
29

TuringTutorialsOutput

HTML
2
star
30

SSMProblems.jl

Common abstractions for state-space models
Julia
1
star
31

SliceSampling.jl

Slice sampling algorithms in Julia
Julia
1
star