# -*- coding: utf-8 -*-
"""Functions for expanding a graph based on the upstream/downstream edges."""
from ..utils import expand_by_edge_filter
from ...filters.edge_predicate_builders import (
build_downstream_edge_predicate,
build_upstream_edge_predicate,
)
from ...pipeline import uni_in_place_transformation
__all__ = [
"expand_upstream_causal",
"expand_downstream_causal",
]
[docs]@uni_in_place_transformation
def expand_upstream_causal(universe, graph):
"""Add the upstream causal relations to the given sub-graph.
:param pybel.BELGraph universe: A BEL graph representing the universe of all knowledge
:param pybel.BELGraph graph: The target BEL graph to enrich with upstream causal controllers of contained nodes
"""
expand_by_edge_filter(universe, graph, build_upstream_edge_predicate(graph))
[docs]@uni_in_place_transformation
def expand_downstream_causal(universe, graph):
"""Add the downstream causal relations to the given sub-graph.
:param pybel.BELGraph universe: A BEL graph representing the universe of all knowledge
:param pybel.BELGraph graph: The target BEL graph to enrich with upstream causal controllers of contained nodes
"""
expand_by_edge_filter(universe, graph, build_downstream_edge_predicate(graph))