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)
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