def findBoundaryProduction(originalModel, bounds, combiLimits, objectiveName, productionName):
    model = LinearModel()
    model.extend(originalModel)
    if combiLimits != None:
        for (targetValues,limit) in combiLimits:
            model = addCombinationLimit(model, targetValues,limit)
    #objectiveMap = {objectiveName:-1.0}
    objectiveMap = {productionName:1.0}
    model.addColumnLimits(bounds)
    lp = LPSolver()
    fluxMap = lp.run(model,objectiveMap)
    objectiveValue = fluxMap[objectiveName]
    productionValue = fluxMap[productionName]
    return (fluxMap,objectiveValue,productionValue)
Пример #2
0
    def generateModel(self, modelName=None):
        if modelName == None:
            modelName = self.modelName
        dir = self.basedir
        
        model = None
        fluxLimits = None
        objective = None

        if self.rxnfile != '':
            rxnFile =dir + self.rxnfile
            model = self.rxnParser.parse(rxnFile)
        else:
            model = LinearModel()
        
        if self.fluxlimitfile != '':
            fluxLimitFile = dir + self.fluxlimitfile
            fluxLimits = self.limitParser.parse(fluxLimitFile)
        else:
            fluxLimits = {}
            
        if self.objectivefile != '':
            objectiveFile = dir + self.objectivefile
            objective = self.objParser.parse(objectiveFile)
        else:
            objective = {}
            
        if self.directionCheck:
            #fluxLimits = self.checkDirectionality(network, fluxLimits)
            pass
        
        model.addColumnLimits(fluxLimits)
        
        for (key,value) in objective.items():
            model.addObjective(key, value)
            
        for name in model.getRowNames():
            model.addRowLimit(name, (0.0,0.0))
                        
        return model