Bug fixing the netgraph persistence
[nepi.git] / src / nepi / util / parsers / xml_parser.py
index ca68be1..4f3f1d9 100644 (file)
@@ -121,6 +121,7 @@ class ECXMLParser(object):
         for nid in ec.netgraph.nodes():
             ngnnode = doc.createElement("node")
             ngnnode.setAttribute("nid", xmlencode(nid))
+            ngnnode.setAttribute("nid-type", from_type(nid))
             ngnsnode.appendChild(ngnnode)
 
             # Mark ources and targets
@@ -152,7 +153,9 @@ class ECXMLParser(object):
         for nid1, nid2 in ec.netgraph.edges():
             ngenode = doc.createElement("edge")
             ngenode.setAttribute("nid1", xmlencode(nid1))
+            ngenode.setAttribute("nid1-type", from_type(nid1))
             ngenode.setAttribute("nid2", xmlencode(nid2))
+            ngenode.setAttribute("nid2-type", from_type(nid2))
             ngesnode.appendChild(ngenode)
 
             # Edge annotations
@@ -267,12 +270,18 @@ class ECXMLParser(object):
                 os.environ["NEPI_NTHREADS"] = nthreads
 
                 # Deserialize netgraph
+                topology = None
+                topo_type = None
+
                 netgraph = self._netgraph_from_xml(doc, ecnode)
-                topo_type = netgraph.topo_type if netgraph else None
+                
+                if netgraph:
+                    topo_type = netgraph.topo_type
+                    topology = netgraph.topology
 
                 # Instantiate EC
                 ec = ExperimentController(exp_id = exp_id, local_dir = local_dir, 
-                        topology = netgraph.topology, topo_type = topo_type)
+                        topology = topology, topo_type = topo_type)
 
                 connections = set()
 
@@ -305,6 +314,8 @@ class ECXMLParser(object):
                 ngnsnode = ngnsnode_list[0].getElementsByTagName("node") 
                 for ngnnode in ngnsnode:
                     nid = xmldecode(ngnnode.getAttribute("nid"))
+                    tipe = xmldecode(ngnnode.getAttribute("nid-type"))
+                    nid = to_type(tipe, nid)
                     netgraph.add_node(nid)
 
                     if ngnnode.hasAttribute("source"):
@@ -334,7 +345,13 @@ class ECXMLParser(object):
                 ngesnode = ngesnode_list[0].getElementsByTagName("edge") 
                 for ngenode in ngesnode:
                     nid1 = xmldecode(ngenode.getAttribute("nid1"))
+                    tipe1 = xmldecode(ngenode.getAttribute("nid1-type"))
+                    nid1 = to_type(tipe1, nid1)
+
                     nid2 = xmldecode(ngenode.getAttribute("nid2"))
+                    tipe2 = xmldecode(ngenode.getAttribute("nid2-type"))
+                    nid2 = to_type(tipe2, nid2)
+
                     netgraph.add_edge(nid1, nid2)
 
                     annosnode_list = ngenode.getElementsByTagName("edge-annotations")