pub fn identify_effect(
project: &Project,
source: &str,
target: &str,
) -> CausalEffectVerdictExpand description
v0.44: Find an adjustment set that satisfies the back-door
criterion for the effect of source on target, or report that
no such set exists in the observed graph.
Algorithm (conservative search):
- Enumerate all paths from source to target up to a length cap.
- Filter to back-door paths (those starting with an incoming edge to source).
- Build the candidate set: all nodes that are not descendants of source and not source/target themselves.
- Try the empty set first. If every back-door path is d-separated by the empty set, return identified-empty.
- Try each single candidate. If any candidate blocks all back-door paths and is not a descendant of source, return identified-with-Z.
- Try pairs (bounded). If found, return identified.
- Otherwise underidentified, with the open back-door paths.
Subset search is bounded at size 2 by default. For larger graphs this is incomplete but the existing graph density on Vela is low enough that empty / singleton / pair coverage is typical.