Beispiel #1
0
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
Beispiel #2
0
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")