Technical Guide

Technical Guide#

This document gives a structural overview of the pm package. The abstract base class ProbabilisticModel defines an interface for probabilistic models that support all tractable query types.

The class inheritance diagram for parametric distributions is shown below.

        classDiagram
  ContinuousDistribution <|-- ContinuousDistributionWithFiniteSupport
  ContinuousDistribution <|-- DiracDeltaDistribution
  ContinuousDistribution <|-- GaussianDistribution
  ContinuousDistribution <|-- IntegerDistribution
  ContinuousDistributionWithFiniteSupport <|-- TruncatedGaussianDistribution
  ContinuousDistributionWithFiniteSupport <|-- UniformDistribution
  DiscreteDistribution <|-- IntegerDistribution
  DiscreteDistribution <|-- SymbolicDistribution
  DrawIOInterface <|-- UnivariateDistribution
  GaussianDistribution <|-- TruncatedGaussianDistribution
  ProbabilisticModel <|-- MultinomialDistribution
  ProbabilisticModel <|-- UnivariateDistribution
  UnivariateDistribution <|-- ContinuousDistribution
  UnivariateDistribution <|-- DiscreteDistribution
    

Fig. 1 Inheritance Diagram for parametric distributions.#

For bayesian networks, the next class diagram is relevant.

        classDiagram
  Node <|-- ConditionalProbabilisticCircuit
  Node <|-- ConditionalProbabilityTable
  Node <|-- Root
    

Fig. 2 Inheritance Diagram for baysian networks.#

For networkx based probabilistic circuits the next class diagram is relevant.

        classDiagram
  DrawIOInterface <|-- Unit
  InnerUnit <|-- ProductUnit
  InnerUnit <|-- SumUnit
  LeafUnit <|-- UnivariateLeaf
  ProbabilisticCircuit <|-- ShallowProbabilisticCircuit
  ProbabilisticModel <|-- ProbabilisticCircuit
  Unit <|-- InnerUnit
  Unit <|-- LeafUnit
  UnivariateLeaf <|-- UnivariateContinuousLeaf
  UnivariateLeaf <|-- UnivariateDiscreteLeaf
    

Fig. 3 Inheritance Diagram for probabilistic circuits implemented with rustworkx.#

Finally, for jax based faster circuits with limited inference, this class diagram is relevant.

        classDiagram
  Conditioner <|-- LinearConditioner
  ContinuousLayer <|-- ContinuousLayerWithFiniteSupport
  ContinuousLayer <|-- DiracDeltaLayer
  ContinuousLayer <|-- GaussianLayer
  ContinuousLayerWithFiniteSupport <|-- UniformLayer
  InnerLayer <|-- ProductLayer
  InnerLayer <|-- SumLayer
  InputLayer <|-- ContinuousLayer
  InputLayer <|-- DiscreteLayer
  Layer <|-- InnerLayer
  Layer <|-- InputLayer
  SumLayer <|-- DenseSumLayer
  SumLayer <|-- SparseSumLayer
    

Fig. 4 Inheritance Diagram for probabilistic circuits implemented with jax.#