def parseAnsSetFromPredicates(self, predicates_list): """ compose as a string every solution in the predicate list given""" model_mgr = ModelManager() # parse predicates for each time step # TODO: add applicable and selected heuristics for predicate_string in predicates_list: pred_obj = pred_parser.predicateStringToParsedPredicate(predicate_string) time = pred_parser.getTimeFromPredObject(pred_obj) if time != None: self.addPredicateForTimeStep(time, pred_obj) # look for substitution data, to swap variables if pred_obj.name == 'substitutedDegree': _, degree = pred_parser.argsToListOfStrings(pred_obj) self.sub_data['degree'] = degree self.sub_data['step'] = int(time.step) if pred_obj.name == 'solutionValue' : # rational numbers are represented as numer, denom ordered pairs _, numer, denom = pred_parser.argsToListOfStrings(pred_obj) soln_value = numer if denom == '1' else numer +'/' + denom self.soln_list.append(soln_value) # add predicate to model manager model_mgr.addPredicate(predicate_string) # handle post processing at solution level, and step level self.solutionLevelPostProcessing() for eqn_step in self.solution_steps.values(): eqn_step.postProcessStepData(model_mgr)
def getTestModelMgr(): mgr = ModelManager() mgr.addPredicate('_areBeingMultiplied(_time(0,1), _id(2,1), _id(2,2))') mgr.addPredicate('__isLessThan(_id(2,1), _id(2,2))') #mgr.addPredicate('_isSumOfTerms(_time(0,1), _id(2,1))') return mgr