Skip to main content

Crate prodef

Crate prodef 

Source
Expand description

§ProDeF - Probability Density Functions

A simple Rust crate for handling probability distributions, primarily intended for use with Bayesian inference. Provides efficient, type-safe APIs for evaluating, sampling, and manipulating probability densities across univariate, multivariate, and non-parametric representations.

All probability density functions (PDFs) implement the Density trait, the core trait of this crate, providing common operations like:

  • Evaluation: Compute probability density (non-normalized) for a given sample point
  • Sampling: Generate random samples according to the given distribution
  • Domain queries: Checking valid input ranges

The Domain type defines the valid input space for any density function. A domain may be bounded, unbounded, or have a special structure. Currently only unbounded domains or hypercubes are supported.

§Distribution Types

  • MultivariateDensity Combines multiple independent univariate distributions into a multivariate distribution. Use when the individual dimensions are statistically independent.
  • MultivariateNormalDensity A multivariate normal distribution with arbitrary covariance. Use when modeling correlated multi-dimensional data.
  • ParticleDensity A non-parametric density represented by weighted particles / samples. Use for complex distributions that can’t be expressed analytically or for particle filters.

For the univariate case, one can use the following distributions directly:

§Disclaimer

Some documentation and tests were created or enhanced using AI assistance. All code has been manually reviewed and verified to ensure correctness and adherence to project standards.

Modules§

pytypes
Python types to be used with pyo3.

Structs§

ConstantDensity
A constant (point mass) PDF.
CosineDensity
A cosine PDF defined on [-π/2, π/2].
LogUniformDensity
A loguniform PDF.
LognormalDensity
A lognormal PDF.
MultivariateDensity
A D-dimensional distribution where each dimension is independent with potentially different univariate distributions. This is a product distribution:
MultivariateNormalDensity
A D-dimensional Gaussian distribution N(μ, Σ) with:
NormalDensity
A univariate normal PDF.
ParticleDensity
A non-parametric distribution defined by a population of D-dimensional particles.
UniformDensity
A uniform PDF.

Enums§

Domain
A generic function domain specifying valid input regions for PDFs.
SamplingMode
Sampling mode for the Density::sample function.
UnivariateDensity
An algebraic data type (ADT) that contains all univariate PDFs.

Traits§

Density
A trait that is shared by all probability density functions.
RejectionSampler
Helper for implementing acceptance-rejection sampling with configurable modes.