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
-- 
https://mail.python.org/mailman/listinfo/python-list

Reply via email to