Abstract Syntax Tree for Do-Calculus
The causal module computes every causal query as an Abstract Syntax Tree (AST) that represents the exact probabilistic computations needed to answer a causal query.
The AST is an internal C++ data structure built by the do-calculus identification algorithm. It is organised as a hierarchy of node types:
Leaf nodes: joint probability \(P(X,Y,\ldots)\) and posterior probability \(P(X \mid Y,\ldots)\)
Binary operations: \(+\), \(-\), \(\times\), \(\div\)
Sum-out node: marginalisation over a set of variables
Accessing the AST
pyagrum.causalImpact() returns a tuple (formula, tensor, explanation) where formula
is a pyagrum.CausalImpact object carrying the identified AST. From it you can:
import pyagrum as gum
bn = gum.fastBN("X->Y->Z;X->Z")
cm = gum.CausalModel(bn)
formula, tensor, explanation = gum.causalImpact(cm, on="Z", doing="X")
# Render the identified formula as a LaTeX string
print(formula.toLatex())
# Inspect the AST as a nested dict
print(formula.toDict())
# Pretty-print the AST in the terminal
formula.print_ast()
Note
The AST node classes are internal to the C++ library and are not directly exposed in
the Python API. Use pyagrum.causalImpact() to obtain and inspect a causal formula.
See also
- Causal computation in pyAgrum
pyagrum.causalImpact()andpyagrum.CausalImpact— the entry point for obtaining an AST.