Mapping of node numbers

varun7rs at gmail.com varun7rs at gmail.com
Tue May 6 05:07:22 EDT 2014


Hello Everyone,

I need to map the node ID to a number. I am using this xml file as of now. 
http://sndlib.zib.de/coredata.download.action?objectName=germany50&format=xml&objectType=network
Also, I need to use the same node number whenever there is a node occurrence in the source and destination. If I have assigned numbers '4' and '32' to node IDs Berlin and Leipzig, I need to use the same node numbers at the links as well. For example, L22 has <source>Leipzig</source>
    <target>Berlin</target>
I need two attributes next to them saying that sourceID = '32'targetID = '4'



class PHY_NODES:
    def __init__(self, nodeID, nodenum, x, y, capacity_proc, capacity_stor, capacity_switch):
        self.id = nodeID
        self.nodenum = nodenum
        self.x = x
        self.y = y
        self.inEdges = []
        self.outEdges = []
        self.capacity_proc = capacity_proc
        self.capacity_stor = capacity_stor
        self.capacity_switch = capacity_switch
        self.capacity_bidirect = 0.0
        
    def __str__(self):
        return "Physical Node ID: " % (self.id) "nodenum: %4d x: %.3f y: %.3f capProc: %.3f capStor: %.3f capSwitch: %.3f" %(self.nodenum, self.x, self.y, self.capacity_proc, self.capacity_stor, self.capacity_switch)
     
    def addInEdge (self, edge):
        self.inEdges.append(edge)
        self.capacity_bidirect = capacity_bidirect + edge.capacity
        
    def addOutEdge (self, edge):
        self.outEdges.append(edge)
        self.capacity_bidirect = capacity_bidirect + edge.capacity
        
        
class PHY_LINKS:
    def __init__(self, linkID, source, destination, tailNodeId, headNodeId, capacity_bdw):
        self.linkID = linkID
        self.source = source
        self.destination = destination
        self.tailNodeId = tailNodeId
        self.headNodeId = headNodeId
        self.capacity_bdw = capacity_bdw
        
    def __str__(self):
        return "Physical Link ID: " % (self.linkID) "source: %s destination: %s tailNodeId: %4d headNodeId: %4d capacity_bdw: %.3f" %(self.source, self.destination, self.tailNodeId, self.headNodeId, self.capacity_bdw)
        
class PHY_NETWORK:
    def __init__(self, nodes, edges, nameToIdMap)
        self.nodes = nodes
        self.edges = edges  
        self.nameToIdMap = nameToIdMap
        
    def getEdge(self, tailId, headId):
		if tailId < 0 or tailId >= len( self.nodes ) or headId < 0 or headId >= len( self.nodes ):
			return None
		else:
			for edge in self.nodes[ tailId ].outEdges:
				if edge.headNodeId == headId:
					return self.edges[ edge.linkID ]

			for edge in self.nodes[ headId ].outEdges:
				if edge.headNodeId == tailId:
					return self.edges[ edge.linkID ]
			return None

	def hasEdge( self, tailId, headId ):
		if len( self.nodes ) <= tailId or len( self.nodes ) <= headId :
			return False
		for edge in self.nodes[tailId].outEdges:
			if edge.headNodeId == headId:
				return True
		for edge in self.nodes[tailId].inEdges:
			if edge.tailNodeId == tailId:
				return True

		return False


	def addNode(self, node):
		self.nodes.append( node )
		self.nameToIdMap[ node.name ] = node.id

	def addEdge(self, edge):
		self.edges.append( edge )
		self.nodes[ edge.headNodeId ].addInEdge( edge )
		self.nodes[ edge.tailNodeId ].addOutEdge( edge )











    nodes = []
    edges = []
    nodeNameToIdMap = {}
    Read_Data = parse(filename) # "germany50.xml"
    
    # Reading Nodes
    
    nodelist = Read_Data.getElementsByTagName("node")
    
    num = 0
    
    for node in nodelist :
        nodes.append(node.getAttribute("id"))
        #nodeid = node.getAttribute("id")
        xCoordinates = node.getElementsByTagName("x") [0]
	    yCoordinates = node.getElementsByTagName("y") [0]
	    proc = random.randint(3500, 5000)
	    stor = random.randint(7200, 8200)
	    switch = random.randint(7000, 10000)
	    num = num + 1
	    
	    nodes.append(PHY_NODES( node.getAttribute("id"), int(num), float(xCoodinates.firstChild.data), float(yCoordinates.firstChild.data), float(proc), float(stor), float(switch)))
	    
	    nodeNameToIdMap[ nodes[-1].num ] = nodes[-1].id
	    
    # Reading Links 
	    
    linklist = Read_Data.getElementsByTagName("link")
    
    for link in linklist :
	    linkid = link.getAttribute("id")
	    Source = link.getElementsByTagName("source") [0]
	    Destination = link.getElementsByTagName("target") [0]
	    Capacity = link.getElementsByTagName("capacity") [0]
	    SourceID = 
	    
	    
	    edges.append(PHY_LINKS( link.getAttribute("id"), Source.firstChild.data, Destination.firstChild.data, int(Capacity.firstChild.data) ))		
		
	    nodes[ edges[-1].source ].addInEdge( edges[-1] )
		nodes[ edges[-1].destination ].addOutEdge( edges[-1] )	 

Could you please help me with this problem?

Thanks a lot



More information about the Python-list mailing list