  Chain event graphs (CEGs) are a recent family of probabilistic graphical
models that generalise the popular Bayesian networks (BNs) family. Crucially,
unlike BNs, a CEG is able to embed, within its graph and its statistical model,
asymmetries exhibited by a process. These asymmetries might be in the
conditional independence relationships or in the structure of the graph and its
underlying event space. Structural asymmetries are common in many domains, and
can occur naturally (e.g. a defendant vs prosecutor's version of events) or by
design (e.g. a public health intervention). However, there currently exists no
software that allows a user to leverage the theoretical developments of the CEG
model family in modelling processes with structural asymmetries. This paper
introduces cegpy, the first Python package for learning and analysing complex
processes using CEGs. The key feature of cegpy is that it is the first CEG
package in any programming language that can model processes with symmetric as
well as asymmetric structures. cegpy contains an implementation of Bayesian
model selection and probability propagation algorithms for CEGs. We illustrate
the functionality of cegpy using a structurally asymmetric dataset.
