def xml2HNautySpeciesDefinitions(self, inputMDLRFile): """ Temporary function for translating xml bng definitions to nautty species definition strings it call the nfsim library to get the list of possible complexes in the system, however the function right now returns the species in question + all molecule types (if we are sending a lone molecule tye as initialization it still returns all molecule types), which means the list requires filterinng. and the filtering is not pretty How to solve: make it so that nfsim returns a more sensible complex list (filtering out unrelated molecule types) or create a nauty label creation mechanism locally """ #get a bng-xml file call([self.config['bionetgen'], '-xml', '-check', inputMDLRFile + '.bngl']) #extract seed species defition seed, rest = splitBNGXML.extractSeedBNG(inputMDLRFile + '.xml') #store xml with non-seed sections and load up nfsim library with open(namespace.input + '_total.xml', 'w') as f: f.write(rest) #load up nfsim library self.nfsim.initNFsim(namespace.input + '_total.xml', 0) # remove encapsulating tags seed = seed[30:-30] #get the seed species definitions as a list seedDict = self.tokenizeSeedElements(seed) nautyDict = {} for seed in seedDict: #initialize nfsim with each species definition and get back a dirty list where one of the entries is the one we want #XXX: i think i've solved it on the nfsim side, double check tmpList = self.getNautyString(seedDict[seed]) #and now filter it out... #get species names from species definition string speciesNames = self.getNamesFromDefinitionString(seed) nautyDict[seed] = [x for x in tmpList if all(y in x for y in speciesNames)][0] return nautyDict
import xmlrpclib import splitBNGXML def getCannonicalLabels(seeds): pass seed, _ = splitBNGXML.extractSeedBNG('example.mdlr.xml') #print seed proxy = xmlrpclib.ServerProxy("http://localhost:8080/RPC2") proxy.nfsim.reset() #print seed initMap = {"c:a~NO_STATE!4!2,c:l~NO_STATE!3,c:l~NO_STATE!3!0,m:Lig!2!1,m:Rec!0,":1} proxy.nfsim.initNauty(initMap) #proxy.nfsim.step() #proxy.nfsim.init(seed) print '---' print proxy.nfsim.query(2) print '---' print proxy.nfsim.query(1) print proxy.nfsim.printInfo("complex")