def reactionBasedAtomizationFile(xmlFile, outputDataFrame, options): """ get atomization metrics from a bng-xml file """ ratomizationDict = {} try: # console.bngl2xml('complex/output{0}.bngl'.format(element),timeout=10) molecules, reactions, _ = readBNGXML.parseXML(xmlFile) atomizedProcesses = 0 trueProcessesCounter = 0 for reaction in reactions: if '0' in [str(x) for x in reaction[0].reactants] or '0' in \ [str(x) for x in reaction[0].products]: continue trueProcessesCounter += 1 # if len([x for x in action.action if x in ['Add','Delete']]) == 0: # atomizedProcesses +=1 for action in reaction[0].actions: if action.action in [ 'AddBond', 'DeleteBond', 'StateChange', 'ChangeCompartment' ]: atomizedProcesses += 1 break #ato, nonato = stoichiometryAnalysis(rules) #atomizedDistro.extend(ato) #nonAtomizedDistro.extend(nonato) score = atomizedProcesses * 1.0 / trueProcessesCounter if trueProcessesCounter != 0 else 0 #outputDataFrame = outputDataFrame.set_value(xmlFile,'score',score) #outputDataFrame = outputDataFrame.set_value(xmlFile,'lenght',len(rules)) ccompression = len(molecules) * 1.0 / readBNGXML.getNumObservablesXML( xmlFile) if readBNGXML.getNumObservablesXML(xmlFile) > 0 else 1 return xmlFile, score, len(reactions), ccompression #ratomizationDict['score'] = score #ratomizationDict['weight'] = weight #ratomizationDict['length'] = len(rules) except IOError: print 'io', xmlFile
def reactionBasedAtomizationFile(xmlFile,outputDataFrame,options): """ get atomization metrics from a bng-xml file """ ratomizationDict = {} try: # console.bngl2xml('complex/output{0}.bngl'.format(element),timeout=10) molecules, reactions, _ = readBNGXML.parseXML(xmlFile) atomizedProcesses = 0 trueProcessesCounter = 0 for reaction in reactions: if '0' in [str(x) for x in reaction[0].reactants] or '0' in \ [str(x) for x in reaction[0].products]: continue trueProcessesCounter += 1 # if len([x for x in action.action if x in ['Add','Delete']]) == 0: # atomizedProcesses +=1 for action in reaction[0].actions: if action.action in ['AddBond', 'DeleteBond', 'StateChange', 'ChangeCompartment']: atomizedProcesses += 1 break #ato, nonato = stoichiometryAnalysis(rules) #atomizedDistro.extend(ato) #nonAtomizedDistro.extend(nonato) score = atomizedProcesses * 1.0 / trueProcessesCounter if trueProcessesCounter != 0 else 0 #outputDataFrame = outputDataFrame.set_value(xmlFile,'score',score) #outputDataFrame = outputDataFrame.set_value(xmlFile,'lenght',len(rules)) ccompression = len(molecules)*1.0/readBNGXML.getNumObservablesXML(xmlFile) if readBNGXML.getNumObservablesXML(xmlFile) > 0 else 1 return xmlFile,score,len(reactions),ccompression #ratomizationDict['score'] = score #ratomizationDict['weight'] = weight #ratomizationDict['length'] = len(rules) except IOError: print 'io',xmlFile
def spaceCoveredCDF(): spaceCoveredArray = [] atomizationDict = {} with open("sortedD.dump", "rb") as f: atomizationStats = pickle.load(f) for element in atomizationStats: try: atomizationDict[element["index"]] = element["atomization"] except: continue for element in range(1, 491): try: if element in atomizationDict and atomizationDict[element] > 0: console.bngl2xml("complex/output{0}.bngl".format(element), timeout=10) species, _, _ = readBNGXML.parseXML("output{0}.xml".format(element)) observablesLen = readBNGXML.getNumObservablesXML("output{0}.xml".format(element)) try: spaceCoveredArray.append([atomizationDict[element], spaceCovered(species, observablesLen)]) print element, spaceCoveredArray[-1] except CycleError: spaceCoveredArray.append([atomizationDict[element], 0]) print element, -1 except (IOError, IndexError): print continue with open("spaceCovered.dump", "wb") as f: pickle.dump(spaceCoveredArray, f) atomization, space = zip(*spaceCoveredArray) heatmap, xedges, yedges = np.histogram2d(space, atomization, bins=8) extent = [xedges[0], xedges[-1], yedges[0], yedges[-1]] plt.clf() plt.imshow(heatmap, extent=extent) plt.xlabel("space") plt.ylabel("atomization") plt.show() plt.savefig("spaceCovered.png")