Source code for pybel_tools.mutation.deletion

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

"""This module contains convenient functions for removing nodes/edges that are returned from selection functions"""

from pybel.struct.pipeline import in_place_transformation

from ..summary.edge_summary import pair_is_consistent

__all__ = [
    'remove_inconsistent_edges',
]


def get_inconsistent_edges(graph):
    """Returns an iterator over inconsistent edges

    :param pybel.BELGraph graph: A BEL graph
    :return: An iterator over (source, target) node pairs corresponding to edges with many inconsistent relations
    :rtype: iter
    """
    for u, v in graph.edges():
        if not pair_is_consistent(graph, u, v):
            yield u, v


[docs]@in_place_transformation def remove_inconsistent_edges(graph): """Remove all edges between node paris with consistent edges. This is the all-or-nothing approach. It would be better to do more careful investigation of the evidences during curation. :param pybel.BELGraph graph: A BEL graph """ for u, v in get_inconsistent_edges(graph): edges = [(u, v, k) for k in graph[u][v]] graph.remove_edges_from(edges)