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
Example #3
0
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
Example #4
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="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"
Example #6
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)
Example #7
0
                      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)
Example #8
0
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)