Source code for pybel.struct.mutation.deletion.deletion

# -*- coding: utf-8 -*-

"""Functions for deleting nodes and edges in networks."""

from ...filters.edge_filters import filter_edges
from ...filters.edge_predicates import is_associative_relation, not_causal_relation
from ...filters.node_filters import filter_nodes
from ...filters.node_predicates import (
    is_biological_process,
    is_isolated_list_abundance,
    is_pathology,
)
from ...pipeline import in_place_transformation

__all__ = [
    "remove_filtered_edges",
    "remove_filtered_nodes",
    "remove_associations",
    "remove_pathologies",
    "remove_biological_processes",
    "remove_isolated_list_abundances",
    "remove_non_causal_edges",
]


[docs]@in_place_transformation def remove_filtered_edges(graph, edge_predicates=None): """Remove edges passing the given edge predicates. :param pybel.BELGraph graph: A BEL graph :param edge_predicates: A predicate or list of predicates :type edge_predicates: None or ((pybel.BELGraph, tuple, tuple, int) -> bool) or iter[(pybel.BELGraph, tuple, tuple, int) -> bool]] :return: """ edges = list(filter_edges(graph, edge_predicates=edge_predicates)) graph.remove_edges_from(edges)
[docs]@in_place_transformation def remove_filtered_nodes(graph, node_predicates=None): """Remove nodes passing the given node predicates. :param pybel.BELGraph graph: A BEL graph :type node_predicates: None or ((pybel.BELGraph, tuple) -> bool) or iter[(pybel.BELGraph, tuple) -> bool)] """ nodes = list(filter_nodes(graph, node_predicates=node_predicates)) graph.remove_nodes_from(nodes)
[docs]@in_place_transformation def remove_associations(graph): """Remove all associative relationships from the graph. :param pybel.BELGraph graph: A BEL graph """ remove_filtered_edges(graph, is_associative_relation)
[docs]@in_place_transformation def remove_pathologies(graph): """Remove pathology nodes from the graph. :param pybel.BELGraph graph: A BEL graph """ remove_filtered_nodes(graph, node_predicates=is_pathology)
[docs]@in_place_transformation def remove_biological_processes(graph): """Remove biological process nodes from the graph. :param pybel.BELGraph graph: A BEL graph """ remove_filtered_nodes(graph, node_predicates=is_biological_process)
[docs]@in_place_transformation def remove_isolated_list_abundances(graph): """Remove isolated list abundances from the graph. :param pybel.BELGraph graph: A BEL graph """ remove_filtered_nodes(graph, is_isolated_list_abundance)
[docs]@in_place_transformation def remove_non_causal_edges(graph): """Remove non-causal edges from the graph.""" remove_filtered_edges(graph, not_causal_relation)