def checkSolverScip(self,modelMatrix,predVal,delta=1e-3): lp = LPSolver() lp.setModel(modelMatrix) lp.runIntOpt() scipPredVal = lp.getMipPredictionMap() (testRows,badRows) = self.checkValues(modelMatrix.data,scipPredVal,modelMatrix.getRowLimits()) if self.verbose: print "--Debug: number of failed rows %s" % (len(badRows)) lp.clear() solverDiff = self.debugCompareFluxes(predVal,scipPredVal) if self.verbose: print "--Debug: difference in glpk / scip %s" % (len(solverDiff)) return (testRows,badRows,solverDiff)
def productionLevels(originalModel,options,minBio=0.20,verbose=False): naturalObjectiveName = options.bioObj syntheticObjectiveName = options.synthObj cellularObjective = {naturalObjectiveName:-1.0} syntheticObjective = {syntheticObjectiveName:-1.0} lo = LPSolver() lo.setModel(originalModel) oPredVal = lo.run(objective = cellularObjective) oBioVal = oPredVal[naturalObjectiveName] oSynthVal = oPredVal[syntheticObjectiveName] if verbose: print "Max cellular: Biological [%s] Synthetic: [%s]" % (oBioVal, oSynthVal) #--------------------------------------- # Values for Max Synthetic Objective #--------------------------------------- sPredVal = lo.run(objective = syntheticObjective) sBioVal = sPredVal[naturalObjectiveName] sSynthVal = sPredVal[syntheticObjectiveName] lo.clear() if verbose: print "Max synthetic: Biological [%s] Synthetic: [%s]" % (sBioVal, sSynthVal) #----------------------------------- # Values for minimum Natural objective #----------------------------------- minObjVal = oBioVal*0.20 originalModel.addColumnLimit(naturalObjectiveName,(minObjVal,None)) lo = LPSolver() s2PredVal = lo.run(model=originalModel,objective = syntheticObjective) s2BioVal = s2PredVal[naturalObjectiveName] s2SynthVal = s2PredVal[syntheticObjectiveName] lo.clear() return (oPredVal,sPredVal,s2PredVal)