Ejemplo n.º 1
0
Archivo: anm.py Proyecto: wilko77/STRIP
 def remove_edges_from(self, ebunch):
     #TODO: check if this try/except consumes generator
     try:
         ebunch = unwrap_edges(ebunch)
     except AttributeError:
         pass # don't need to unwrap
     self._graph.remove_edges_from(ebunch)
Ejemplo n.º 2
0
Archivo: anm.py Proyecto: sk2/ANK-NG
 def remove_edges_from(self, ebunch):
     #TODO: check if this try/except consumes generator
     try:
         ebunch = unwrap_edges(ebunch)
     except AttributeError:
         pass  # don't need to unwrap
     self._graph.remove_edges_from(ebunch)
Ejemplo n.º 3
0
def split(OverlayGraph, edges, retain = []):
    try:
        retain.lower() #TODO: find more efficient operation to test if string-like
        retain = [retain] # was a string, put into list
    except AttributeError:
        pass # already a list

    graph = unwrap_graph(OverlayGraph)
    edges = list(unwrap_edges(edges))
    edges_to_add = []
    added_nodes = []
    for (src, dst) in edges:
        cd_id = "cd_%s_%s" % (src, dst)
        interfaces = graph[src][dst]["_interfaces"]
        data = dict( (key, graph[src][dst][key]) for key in retain)
        #TODO: check how this behaves for directed graphs
        src_data = data.copy()
        if src in interfaces:
            src_int_id = interfaces[src]
            src_data['_interfaces'] = {src: src_int_id}
        dst_data = data.copy()
        if dst in interfaces:
            dst_int_id = interfaces[dst]
            dst_data['_interfaces'] = {dst: dst_int_id}
        edges_to_add.append( (src, cd_id, src_data))
        edges_to_add.append( (dst, cd_id, dst_data))
        added_nodes.append(cd_id)

    graph.remove_edges_from(edges)
    graph.add_edges_from(edges_to_add)

    return wrap_nodes(OverlayGraph, added_nodes)
Ejemplo n.º 4
0
def split(NmGraph, edges, retain = [], id_prepend = ""):
    try:
        retain.lower() #TODO: find more efficient operation to test if string-like
        retain = [retain] # was a string, put into list
    except AttributeError:
        pass # already a list

    graph = unwrap_graph(NmGraph)
    edges = list(unwrap_edges(edges))
    edges_to_add = []
    added_nodes = []
    for (src, dst) in edges:
        if graph.is_directed():
            new_id = "%s%s_%s" % (id_prepend, src, dst)
        else:
            try:
                if float(src) < float(dst):
                    (node_a, node_b) = (src, dst) # numeric ordering
                else:
                    (node_a, node_b) = (dst, src) # numeric ordering
            except ValueError:
                # not numeric, use string sort
                (node_a, node_b) = sorted([src, dst]) # use sorted for consistency
            new_id = "%s%s_%s" % (id_prepend, node_a, node_b)

        interfaces = graph[src][dst]["_interfaces"]
        data = dict( (key, graph[src][dst][key]) for key in retain)
        #TODO: check how this behaves for directed graphs
        src_data = data.copy()
        if src in interfaces:
            src_int_id = interfaces[src]
            src_data['_interfaces'] = {src: src_int_id}
        dst_data = data.copy()
        if dst in interfaces:
            dst_int_id = interfaces[dst]
            dst_data['_interfaces'] = {dst: dst_int_id}
        edges_to_add.append( (src, new_id, src_data))
        edges_to_add.append( (dst, new_id, dst_data))
        added_nodes.append(new_id)

    graph.remove_edges_from(edges)
    graph.add_edges_from(edges_to_add)

    return wrap_nodes(NmGraph, added_nodes)
Ejemplo n.º 5
0
def split(OverlayGraph, edges, retain = [], id_prepend = ""):
    try:
        retain.lower() #TODO: find more efficient operation to test if string-like
        retain = [retain] # was a string, put into list
    except AttributeError:
        pass # already a list

    graph = unwrap_graph(OverlayGraph)
    edges = list(unwrap_edges(edges))
    edges_to_add = []
    added_nodes = []
    for (src, dst) in edges:
        if graph.is_directed():
            new_id = "%s%s_%s" % (id_prepend, src, dst)
        else:
            try:
                if float(src) < float(dst):
                    (node_a, node_b) = (src, dst) # numeric ordering
                else:
                    (node_a, node_b) = (dst, src) # numeric ordering
            except ValueError:
                # not numeric, use string sort
                (node_a, node_b) = sorted([src, dst]) # use sorted for consistency
            new_id = "%s%s_%s" % (id_prepend, node_a, node_b)

        interfaces = graph[src][dst]["_interfaces"]
        data = dict( (key, graph[src][dst][key]) for key in retain)
        #TODO: check how this behaves for directed graphs
        src_data = data.copy()
        if src in interfaces:
            src_int_id = interfaces[src]
            src_data['_interfaces'] = {src: src_int_id}
        dst_data = data.copy()
        if dst in interfaces:
            dst_int_id = interfaces[dst]
            dst_data['_interfaces'] = {dst: dst_int_id}
        edges_to_add.append( (src, new_id, src_data))
        edges_to_add.append( (dst, new_id, dst_data))
        added_nodes.append(new_id)

    graph.remove_edges_from(edges)
    graph.add_edges_from(edges_to_add)

    return wrap_nodes(OverlayGraph, added_nodes)
Ejemplo n.º 6
0
Archivo: ank.py Proyecto: wilko77/STRIP
def split(overlay_graph, edges, retain = []):
    try:
        retain.lower() #TODO: find more efficient operation to test if string-like
        retain = [retain] # was a string, put into list
    except AttributeError:
        pass # already a list

    graph = unwrap_graph(overlay_graph)
    edges = list(unwrap_edges(edges))
    edges_to_add = []
    added_nodes = []
    for (src, dst) in edges:
        cd_id = "cd_%s_%s" % (src, dst)
        data = dict( (key, graph[src][dst][key]) for key in retain)
        edges_to_add.append( (src, cd_id, data))
        edges_to_add.append( (dst, cd_id, data))
        added_nodes.append(cd_id)

    graph.remove_edges_from(edges)
    graph.add_edges_from(edges_to_add)

    return wrap_nodes(overlay_graph, added_nodes)
Ejemplo n.º 7
0
Archivo: ank.py Proyecto: sk2/ANK-NG
def split(overlay_graph, edges, retain=[]):
    try:
        retain.lower()
        retain = [retain]  # was a string, put into list
    except AttributeError:
        pass  # already a list

    graph = unwrap_graph(overlay_graph)
    edges = list(unwrap_edges(edges))
    edges_to_add = []
    added_nodes = []
    for (src, dst) in edges:
        cd_id = "cd_%s_%s" % (src, dst)
        data = dict((key, graph[src][dst][key]) for key in retain)
        edges_to_add.append((src, cd_id, data))
        edges_to_add.append((dst, cd_id, data))
        added_nodes.append(cd_id)

    graph.remove_edges_from(edges)
    graph.add_edges_from(edges_to_add)

    return wrap_nodes(overlay_graph, added_nodes)