from pysqg.sqg import Sqg sqg = Sqg(includes=[ "ungappedOverlapGraph" ], \ sharedVariables={ "Created":"Assemblathon File Format Working Group using Richard Durbin's example", "Date":"24/11/2011"}) from pysqg.arrayList import InMemoryArrayList nodes = InMemoryArrayList(type="node") sqg.setArrayList(nodes) sqg.getArrayList("node") nodes.getArrayNames() nodes.getArrayTypes() _1 = 0 nodes.addArray([ _1 ]) _2 = 1 nodes.addDict({ "nodeName":_2 }) from pysqg.arrayList import OnDiskArrayList segmentEdges = OnDiskArrayList(file="./segmentEdges", type="multiLabelledSegment") sqg.setArrayList(segmentEdges) segmentEdges.getArrayNames() segmentEdges.getArrayTypes() aL, aR = 2, 3 nodes.addArray([ aL ]) nodes.addArray([ aR ]) segmentEdges.addDict({ "inNode":aL, "outNode":aR, "length":10, \ "sequence":"acggtcagca", "degree":1 }) b1L, b1R = 4, 5 nodes.addArray([ b1L ]) nodes.addArray([ b1R ]) segmentEdges.addDict({ "inNode":b1L, "outNode":b1R, "length":6, \ "sequence":"catact", "degree":2 }) b2L, b2R = 6, 7 nodes.addArray([ b2L ]) nodes.addArray([ b2R ])
if file[-5:] == ".json": Sqg(includes=[file[:-5]]) #This ensures the graphs are in memory graphNode = i i = i+1 sqgs.addDict({ "nodeName":graphNode, "name":file[:-5] }) #Now iterate through the new array list types fileHandle = open(os.path.join(getPysqgIncludeDir(), file), 'r') jsonSqg = json.load(fileHandle) fileHandle.close() for arrayListType in jsonSqg.keys(): if arrayListType not in ("name", "include", "parents", "sharedVariables"): #This is very hacky, it would be nice to have a clean way to know which sqg defined which array list. arrayList = InMemoryArrayList(type=arrayListType) arrayNode = i i = i+1 typeStringsToNodeNamesAndArrays[arrayListType] = (arrayNode, arrayList) arrayLists.addDict({ "nodeName":arrayNode, "name":arrayListType, "arrayNames":" ".join(arrayList.getArrayNames()), "arrayTypes":" ".join(arrayList.getArrayTypes()) }) graphEdges.addDict({ "outNode":graphNode, "inNode":arrayNode }) #Add in the inherits edges for typeString in typeStringsToNodeNamesAndArrays.keys(): arrayNode, arrayList = typeStringsToNodeNamesAndArrays[typeString] if arrayList.getInherits() != None: parentArrayNode, parentArrayList = typeStringsToNodeNamesAndArrays[arrayList.getInherits().getType()] inheritEdges.addDict({ "outNode":parentArrayNode, "inNode":arrayNode }) #We're done print makeJsonSqgFromSqg(inheritanceGraph) #Here we dump a dot version of the graph, using the networkX interface. nxGraph, nxSubgraphs = networkxWrite(inheritanceGraph)