Stability Analysis

pybel_tools.analysis.stability.get_contradiction_summary(graph)[source]

Yield triplets of (source node, target node, set of relations) for (source node, target node) pairs that have multiple, contradictory relations.

Return type

Iterable[Tuple[BaseEntity, BaseEntity, str]]

pybel_tools.analysis.stability.get_regulatory_pairs(graph)[source]

Find pairs of nodes that have mutual causal edges that are regulating each other such that A -> B and B -| A.

Return type

Set[Tuple[BaseEntity, BaseEntity]]

Returns

A set of pairs of nodes with mutual causal edges

pybel_tools.analysis.stability.get_chaotic_pairs(graph)[source]

Find pairs of nodes that have mutual causal edges that are increasing each other such that A -> B and B -> A.

Return type

Set[Tuple[BaseEntity, BaseEntity]]

Returns

A set of pairs of nodes with mutual causal edges

pybel_tools.analysis.stability.get_dampened_pairs(graph)[source]

Find pairs of nodes that have mutual causal edges that are decreasing each other such that A -| B and B -| A.

Return type

Set[Tuple[BaseEntity, BaseEntity]]

Returns

A set of pairs of nodes with mutual causal edges

pybel_tools.analysis.stability.get_correlation_graph(graph)[source]

Extract an undirected graph of only correlative relationships.

Return type

Graph

pybel_tools.analysis.stability.get_correlation_triangles(graph)[source]

Return a set of all triangles pointed by the given node.

Return type

Set[Tuple[BaseEntity, BaseEntity, BaseEntity]]

pybel_tools.analysis.stability.get_triangles(graph)[source]

Get a set of triples representing the 3-cycles from a directional graph.

Each 3-cycle is returned once, with nodes in sorted order.

Return type

Set[Tuple[BaseEntity, BaseEntity, BaseEntity]]

pybel_tools.analysis.stability.get_separate_unstable_correlation_triples(graph)[source]

Yield all triples of nodes A, B, C such that A pos B, A pos C, and B neg C.

Return type

Iterable[Tuple[BaseEntity, BaseEntity, BaseEntity]]

Returns

An iterator over triples of unstable graphs, where the second two are negative

pybel_tools.analysis.stability.get_mutually_unstable_correlation_triples(graph)[source]

Yield triples of nodes (A, B, C) such that A neg B, B neg C, and C neg A.

Return type

Iterable[Tuple[BaseEntity, BaseEntity, BaseEntity]]

pybel_tools.analysis.stability.jens_transformation_alpha(graph)[source]

Apply Jens’ transformation (Type 1) to the graph.

  1. Induce a sub-graph over causal + correlative edges

  2. Transform edges by the following rules:
    • increases => increases

    • decreases => backwards increases

    • positive correlation => two way increases

    • negative correlation => delete

The resulting graph can be used to search for 3-cycles, which now symbolize unstable triplets where A -> B, A -| C and B positiveCorrelation C.

Return type

DiGraph

pybel_tools.analysis.stability.jens_transformation_beta(graph)[source]

Apply Jens’ Transformation (Type 2) to the graph.

  1. Induce a sub-graph over causal and correlative relations

  2. Transform edges with the following rules:
    • increases => backwards decreases

    • decreases => decreases

    • positive correlation => delete

    • negative correlation => two way decreases

The resulting graph can be used to search for 3-cycles, which now symbolize stable triples where A -> B, A -| C and B negativeCorrelation C.

Return type

DiGraph

pybel_tools.analysis.stability.get_jens_unstable(graph)[source]

Yield triples of nodes (A, B, C) where A -> B, A -| C, and C positiveCorrelation A.

Calculated efficiently using the Jens Transformation.

Return type

Iterable[Tuple[BaseEntity, BaseEntity, BaseEntity]]

pybel_tools.analysis.stability.get_increase_mismatch_triplets(graph)[source]

Yield triples of nodes (A, B, C) where A -> B, A -> C, and C negativeCorrelation A.

Return type

Iterable[Tuple[BaseEntity, BaseEntity, BaseEntity]]

pybel_tools.analysis.stability.get_decrease_mismatch_triplets(graph)[source]

Yield triples of nodes (A, B, C) where A -| B, A -| C, and C negativeCorrelation A.

Return type

Iterable[Tuple[BaseEntity, BaseEntity, BaseEntity]]

pybel_tools.analysis.stability.get_chaotic_triplets(graph)[source]

Yield triples of nodes (A, B, C) that mutually increase each other, such as when A -> B, B -> C, and C -> A.

Return type

Iterable[Tuple[BaseEntity, BaseEntity, BaseEntity]]

pybel_tools.analysis.stability.get_dampened_triplets(graph)[source]

Yield triples of nodes (A, B, C) that mutually decreases each other, such as when A -| B, B -| C, and C -| A.

Return type

Iterable[Tuple[BaseEntity, BaseEntity, BaseEntity]]

pybel_tools.analysis.stability.summarize_stability(graph)[source]

Summarize the stability of the graph.

Return type

Mapping[str, int]