def node_sort(upper_limit, lower_limit, location_code, file_append): with open ('data/nodes-%s.txt' %file_append, 'r') as nodes_file: devices = nodes_file.read().splitlines() nodes_dict = layers.nodes_dict() layers_key = layers.layers_key() for i in range (0, len(devices)): device_type = devices[i][devices[i].find("-") + 1 : devices[i].find("-") + 3] node_location_code = devices[i][0:len(location_code)] if device_type in ['ma','lc','ic','sc']: device_type = 'cc' elif device_type in ['ra','ea','ha']: device_type = 'a1' elif device_type in ['la','da','sa','ia']: device_type = 'a2' elif device_type not in layers.layers_list(): print "Device Type '%s' not found" %device_type continue if (node_location_code != location_code) and (location_code != 'all'): continue elif (int(layers.layers_dict(device_type)) < int(layers.layers_dict(upper_limit))) or (int(layers.layers_dict(device_type)) > int(layers.layers_dict(lower_limit))): continue else: nodes_dict[device_type].append(devices[i]) for i in nodes_dict: for j in nodes_dict[i]: nodes_dict[i] = natsort.natsorted(nodes_dict[i]) return nodes_dict
def hlink_detect(upper_limit, lower_limit, location_code, file_append): with open('data/links_scoped-%s.txt' % file_append, 'r') as links_file: lines = links_file.readlines() h_node = [] k1 = 0 k2 = 0 current_line_k1 = 0 current_line_k2 = 0 both_found = 0 first_match = False nodes = node_sort.node_sort(upper_limit, lower_limit, location_code, file_append) for i in range(0, len(nodes)): layers_key = layers.layers_key()[i] temp_list = nodes[str(layers_key)] if len(temp_list) != 0: for m in range(0, len(lines)): delimited = lines[m].split() if delimited[0] in temp_list: k1 = temp_list.index(delimited[0]) current_line_k1 = m if delimited[1] in temp_list: k2 = temp_list.index(delimited[1]) current_line_k2 = m if k2 - k1 == 1 and current_line_k1 == current_line_k2 and first_match == False: first_match = True if (temp_list.index(delimited[0]) not in h_node) and (temp_list.index(delimited[1]) not in h_node): h_node.append(delimited[0]) first_match = False k1 = 9999999 k2 = 9999999 return h_node
def hlink_detect (upper_limit, lower_limit, location_code, file_append): with open ('data/links_scoped-%s.txt' %file_append, 'r') as links_file: lines = links_file.readlines() h_node = [] k1 = 0 k2 = 0 current_line_k1 = 0 current_line_k2 = 0 both_found = 0 first_match = False nodes = node_sort.node_sort(upper_limit, lower_limit, location_code, file_append) for i in range (0, len(nodes)): layers_key = layers.layers_key()[i] temp_list = nodes[str(layers_key)] if len(temp_list) != 0: for m in range (0, len(lines)): delimited = lines[m].split() if delimited[0] in temp_list: k1 = temp_list.index(delimited[0]) current_line_k1 = m if delimited[1] in temp_list: k2 = temp_list.index(delimited[1]) current_line_k2 = m if k2-k1 == 1 and current_line_k1 == current_line_k2 and first_match == False: first_match = True if (temp_list.index(delimited[0]) not in h_node) and (temp_list.index(delimited[1]) not in h_node): h_node.append (delimited[0]) first_match = False k1 = 9999999 k2 = 9999999 return h_node
def plot(upper_limit, lower_limit, location_code, file_append, interface_labels, graph_type): with open('data/links_scoped-%s.txt' % file_append, 'r') as links_file: lines = links_file.readlines() g1 = pydot.Dot(graph_type='graph', splines=graph_type, ranksep="6.0", nodesep="0.3") for j in range(0, len(lines)): delimited = lines[j].split() device_type_1 = delimited[0][delimited[0].find("-") + 1:delimited[0].find("-") + 3] device_type_2 = delimited[1][delimited[1].find("-") + 1:delimited[1].find("-") + 3] if (int(layers.layers_dict(device_type_1)) < int( layers.layers_dict(upper_limit))) or (int( layers.layers_dict(device_type_2)) < int( layers.layers_dict(upper_limit))): continue if (int(layers.layers_dict(device_type_1)) > int( layers.layers_dict(lower_limit))) or (int( layers.layers_dict(device_type_2)) > int( layers.layers_dict(lower_limit))): continue if interface_labels is 'y': t_label = str(delimited[2]) h_label = str(delimited[3]) else: t_label = ' ' h_label = ' ' edge = pydot.Edge(str(delimited[0]), str(delimited[1]), color="black", fontsize='10', minlen="2.5", penwidth="1.0", labeldistance="1.2", taillabel=t_label, headlabel=h_label) g1.add_edge(edge) nodes = node_sort.node_sort(upper_limit, lower_limit, location_code, file_append) layer = pydot.Subgraph(rank='same') h_node = hlink_detect.hlink_detect(upper_limit, lower_limit, location_code, file_append) for i in range(0, len(nodes)): layers_key = layers.layers_key()[i] list = nodes[str(layers_key)] if len(list) != 0: if (layers_key == 'ec'): v_shape = "box3d" v_width = "3.0" v_height = "2.0" v_penwidth = "1.1" v_style = "rounded, filled, bold" v_align = "center" v_fontsize = "20.0" v_fontname = "arial" elif (layers_key == 'ed'): v_shape = "box3d" v_width = "3.0" v_height = "2.0" v_penwidth = "1.1" v_style = "rounded, filled, bold" v_align = "center" v_fontsize = "20.0" v_fontname = "arial" elif (layers_key == 'a1') or (layers_key == 'a2'): v_shape = "box3d" v_width = "1.0" v_height = "0.5" v_penwidth = "0.8" v_style = "rounded, filled, bold" v_align = "center" v_fontsize = "12.0" v_fontname = "arial" else: v_shape = "box3d" v_width = "3.0" v_height = "2.0" v_penwidth = "1.1" v_style = "rounded, filled, bold" v_align = "center" v_fontsize = "20.0" v_fontname = "arial" for k in range(0, len(list)): node = pydot.Node(str(list[k]), shape=v_shape, width=v_width, height=v_height, penwidth=v_penwidth, style=v_style, align=v_align, fontsize=v_fontsize, fontname=v_fontname) layer.add_node(node) g1.add_subgraph(layer) layer = pydot.Subgraph(rank='same') if len(list) != 0: for k in range(0, len(list) - 1): if list[k] not in h_node: edge = pydot.Edge(str(list[k]), str(list[k + 1]), minlen="1.0", style='invis') g1.add_edge(edge) g1.write_svg('img/topology-%s.svg' % file_append)
color="black", fontsize='10', minlen="2.5", penwidth="1.0", labeldistance="1.2", taillabel=t_label, headlabel=h_label) g1.add_edge (edge) nodes = node_sort.node_sort(upper_limit,lower_limit, location_code, file_append) layer = pydot.Subgraph(rank='same') h_node = hlink_detect.hlink_detect(upper_limit,lower_limit, location_code, file_append) for i in range (0, len(nodes)): layers_key = layers.layers_key()[i] list = nodes[str(layers_key)] if len(list) != 0: if (layers_key == 'ec'): v_shape="box3d" v_width="3.0" v_height="2.0" v_penwidth="1.1" v_style="rounded, filled, bold" v_align="center" v_fontsize="20.0" v_fontname="arial" elif (layers_key == 'ed'): v_shape="box3d" v_width="3.0"
def plot (upper_limit,lower_limit, location_code, file_append, interface_labels, graph_type): with open ('data/links_scoped-%s.txt' %file_append, 'r') as links_file: lines = links_file.readlines() g1 = pydot.Dot (graph_type = 'graph', splines=graph_type, ranksep="6.0", nodesep="0.3") for j in range (0, len(lines)): delimited = lines[j].split() device_type_1 = delimited[0][delimited[0].find("-") + 1 : delimited[0].find("-") + 3] device_type_2 = delimited[1][delimited[1].find("-") + 1 : delimited[1].find("-") + 3] if (int(layers.layers_dict(device_type_1)) < int(layers.layers_dict(upper_limit))) or (int(layers.layers_dict(device_type_2)) < int(layers.layers_dict(upper_limit))): continue if (int(layers.layers_dict(device_type_1)) > int(layers.layers_dict(lower_limit))) or (int(layers.layers_dict(device_type_2)) > int(layers.layers_dict(lower_limit))): continue if interface_labels is 'y': t_label=str(delimited[2]) h_label=str(delimited[3]) else: t_label=' ' h_label=' ' edge = pydot.Edge (str(delimited[0]), str(delimited[1]), color="black", fontsize='10', minlen="2.5", penwidth="1.0", labeldistance="1.2", taillabel=t_label, headlabel=h_label) g1.add_edge (edge) nodes = node_sort.node_sort(upper_limit,lower_limit, location_code, file_append) layer = pydot.Subgraph(rank='same') h_node = hlink_detect.hlink_detect(upper_limit,lower_limit, location_code, file_append) for i in range (0, len(nodes)): layers_key = layers.layers_key()[i] list = nodes[str(layers_key)] if len(list) != 0: if (layers_key == 'ec'): v_shape="box3d" v_width="3.0" v_height="2.0" v_penwidth="1.1" v_style="rounded, filled, bold" v_align="center" v_fontsize="20.0" v_fontname="arial" elif (layers_key == 'ed'): v_shape="box3d" v_width="3.0" v_height="2.0" v_penwidth="1.1" v_style="rounded, filled, bold" v_align="center" v_fontsize="20.0" v_fontname="arial" elif (layers_key == 'a1') or (layers_key == 'a2'): v_shape="box3d" v_width="1.0" v_height="0.5" v_penwidth="0.8" v_style="rounded, filled, bold" v_align="center" v_fontsize="12.0" v_fontname="arial" else: v_shape="box3d" v_width="3.0" v_height="2.0" v_penwidth="1.1" v_style="rounded, filled, bold" v_align="center" v_fontsize="20.0" v_fontname="arial" for k in range (0, len(list)): node = pydot.Node(str(list[k]), shape=v_shape, width=v_width, height=v_height, penwidth=v_penwidth, style=v_style, align=v_align, fontsize=v_fontsize, fontname=v_fontname) layer.add_node(node) g1.add_subgraph(layer) layer = pydot.Subgraph(rank='same') if len(list) != 0: for k in range (0, len(list)-1): if list[k] not in h_node: edge = pydot.Edge (str(list[k]), str(list[k+1]), minlen="1.0", style='invis') g1.add_edge (edge) g1.write_svg('img/topology-%s.svg' %file_append)
color="black", fontsize='10', minlen="3.0", penwidth="0.4", labeldistance="1.2") g1.add_edge(edge) nodes = node_sort.node_sort(upper_limit, lower_limit, location_code, file_append) layer = pydot.Subgraph(rank='same') h_node = hlink_detect.hlink_detect(upper_limit, lower_limit, location_code, file_append) for i in range(0, len(nodes)): layers_key = layers.layers_key()[i] list = nodes[str(layers_key)] if len(list) != 0: if (layers_key == 'br') or (layers_key == 'xr'): for k in range(0, len(list)): node = pydot.Node(str(list[k]), shape="record", width="15.0", height="4.0", penwidth="10.0", style="rounded, filled, bold", align="center", fontsize="120.0", fontname="arial") layer.add_node(node)
def plot(upper_limit, lower_limit, location_code, file_append): with open('data/links_sorted-%s.txt' % file_append, 'r') as links_file: lines = links_file.readlines() g1 = pydot.Dot(graph_type='graph', splines='spline', ranksep="8.5", nodesep="0.01") for j in range(0, len(lines)): delimited = lines[j].split() device_type_1 = delimited[0][delimited[0].find("-") + 1:delimited[0].find("-") + 3] device_type_2 = delimited[1][delimited[1].find("-") + 1:delimited[1].find("-") + 3] if (int(layers.layers_dict(device_type_1)) < int( layers.layers_dict(upper_limit))) or (int( layers.layers_dict(device_type_2)) < int( layers.layers_dict(upper_limit))): continue if (int(layers.layers_dict(device_type_1)) > int( layers.layers_dict(lower_limit))) or (int( layers.layers_dict(device_type_2)) > int( layers.layers_dict(lower_limit))): continue edge = pydot.Edge(str(delimited[0]), str(delimited[1]), color="black", fontsize='10', minlen="3.0", penwidth="0.4", labeldistance="1.2") g1.add_edge(edge) nodes = node_sort.node_sort(upper_limit, lower_limit, location_code) layer = pydot.Subgraph(rank='same') h_node = hlink_detect.hlink_detect(upper_limit, lower_limit, location_code, file_append) for i in range(0, len(nodes)): layers_key = layers.layers_key()[i] list = nodes[str(layers_key)] if len(list) != 0: if (layers_key == 'br') or (layers_key == 'xr'): for k in range(0, len(list)): node = pydot.Node(str(list[k]), shape="record", width="15.0", height="4.0", penwidth="10.0", style="rounded, filled, bold", align="center", fontsize="120.0", fontname="arial") layer.add_node(node) elif (layers_key == 'ar'): for k in range(0, len(list)): node = pydot.Node(str(list[k]), shape="oval", width="10.0", height="2.5", penwidth="10.0", style="rounded, filled, bold", align="center", fontsize="100.0", fontname="arial") layer.add_node(node) elif (layers_key == 'ec'): for k in range(0, len(list)): node = pydot.Node(str(list[k]), shape="record", width="10.0", height="2.5", penwidth="10.0", style="rounded, filled, bold", align="center", fontsize="100.0", fontname="arial") layer.add_node(node) elif (layers_key == 'ed'): for k in range(0, len(list)): node = pydot.Node(str(list[k]), shape="record", width="4.5", height="2.0", penwidth="2.0", style="rounded, filled, bold", align="center", fontsize="40.0", fontname="arial") layer.add_node(node) elif (layers_key == 'a1') or (layers_key == 'a2'): for k in range(0, len(list)): node = pydot.Node(str(list[k]), shape="record", width="0.1", height="0.1", penwidth="3.0", color="white", style="rounded, filled, bold", align="center", fontsize="5.0", fontname="arial") layer.add_node(node) else: for k in range(0, len(list)): node = pydot.Node(str(list[k]), shape="record", width="10.0", height="2.5", penwidth="10.0", style="rounded, filled, bold", align="center", fontsize="100.0", fontname="arial") layer.add_node(node) g1.add_subgraph(layer) layer = pydot.Subgraph(rank='same') if len(list) != 0: for k in range(0, len(list) - 1): if list[k] not in h_node: edge = pydot.Edge(str(list[k]), str(list[k + 1]), minlen="2.0", style='invis') g1.add_edge(edge) g1.write_svg('img/topology-%s.svg' % file_append)