def test_evalformat(self): ex = Experiment() ex.addOutputFile(test_out) ex.collectData() for (index, indexsplit) in ((index, indexsplit) for index in eval_index for indexsplit in eval_indexsplit): for (cols, fgs) in ((cols, fgs) for cols in self.test_cols for fgs in self.test_fgs): ev = IPETEvaluation(index=index, indexsplit=indexsplit) if cols is not None: for (ind_c, ind_a) in cols: col = IPETEvaluationColumn(**columns[ind_c]) if col_filters[ind_c] is not None: colfilter = IPETFilter(**col_filters[ind_c]) col.addFilter(colfilter) if ind_a: agg = Aggregation(**aggs[ind_c]) col.addAggregation(agg) ev.addColumn(col) if fgs is not None: for ind in fgs: fg = IPETFilterGroup(**filtergroups[ind]) if filters[ind] is not None: fgfilter = IPETFilter(**filters[ind]) fg.addFilter(fgfilter) ev.addFilterGroup(fg) try: tab_long, tab_agg = ev.evaluate(ex) except AttributeError as e: self.assertTrue(( cols is None or fgs is None ), "Either the number of columns or the number of filtergroups should be 0." ) continue self.assertEqual(type(tab_long), pd.DataFrame, "Type of long table wrong.") self.assertEqual(type(tab_agg), pd.DataFrame, "Type of aggregated table wrong.") # do not allow rowindex to be empty if indexsplit == 0: indexsplit = 1 rowindex_level = len(index.split()[:indexsplit]) columns_level = len(index.split()[indexsplit:]) self.assertEqual(tab_long.columns.nlevels, columns_level + 1, "Level of columnindex of long table wrong.") self.assertEqual(tab_agg.index.nlevels, columns_level + 1, "Level of rowindex of agg table wrong.") self.assertEqual(tab_long.index.nlevels, rowindex_level, "Level of rowindex of long table wrong.")
def test_datacollection_from_stdin(self): fname = "bell3a.out" out_file = os.path.join(DATADIR, fname) with open(out_file, "r") as f: sys.stdin = f self.experiment.addStdinput() self.experiment.collectData() sys.stdin = sys.__stdin__ experimentFromFile = Experiment() experimentFromFile.addOutputFile(out_file) experimentFromFile.collectData() trstdin = self.experiment.getTestRuns()[0] trfile = experimentFromFile.getTestRuns()[0] columns = ["PrimalBound", "DualBound", "SolvingTime"] self.checkTestrunsEqual(trstdin, trfile, columns)
def resetExperiment(): global _experiment _experiment = Experiment()
def setUp(self): try: os.mkdir(TMPDIR) except FileExistsError: pass self.experiment = Experiment()
def get_data_from_ipet(self): """ Import data from IPET. Create ipet.experiment, add files and execute ipet.collectData. Returns ------- ipet.testrun object """ try: c = Experiment() # Metafiles will be loaded automatically if they are placed next to outfiles c.addOutputFile(self.files[".out"]) if self.files[".err"] is not None: c.addOutputFile(self.files[".err"]) if self.files[".set"] is not None: c.addOutputFile(self.files[".set"]) if self.files[".solu"] is None: msg = "No solu file found." path = ALL_SOLU if os.path.isfile(path): msg = "Adding SoluFile." self.files[".solu"] = path else: msg = "Adding SoluFile." self.logger.info(msg) if self.files[".solu"] is not None: c.addSoluFile(self.files[".solu"]) path = ADD_READERS if os.path.isfile(path): for r in loader.loadAdditionalReaders([path]): c.readermanager.registerReader(r) self.logger.info("Added additional reader: " + r.getName()) for solver in loader.loadAdditionalSolvers(): c.readermanager.addSolver(solver) self.logger.info("Added additional solver: " + solver.getName()) c.collectData() except Exception: traceback.print_exc() msg = "Some kind of ipet error. Aborting..." self._log_failure(msg) raise testruns = c.getTestRuns() if len(testruns) != 1: msg = "Unexpected number of testruns. Expected 1, got: {}".format( len(testruns)) self._log_failure(msg) raise Exception(msg) return testruns[0]
""" tree = ElementTree.fromstring(xmlstring) return IPETFilterGroup.processXMLElem(tree) @staticmethod def fromXMLFile(xmlfilename): """ parse a file containing an xml string matching the filter group XML representation syntax """ tree = ElementTree.parse(xmlfilename) return IPETFilterGroup.processXMLElem(tree.getroot()) if __name__ == '__main__': comp = Experiment(files=[ '../test/check.short.scip-3.1.0.1.linux.x86_64.gnu.dbg.spx.opt85.testmode.out' ]) comp.addSoluFile('../test/short.solu') comp.collectData() operator = 'ge' expression1 = 'Nodes' expression2 = '2' filter1 = IPETFilter(expression1, expression2, operator, anytestrun="all") filter2 = IPETFilter(expression1, expression2, operator, anytestrun="one") print(filter1.getName()) print(len(comp.getProblemNames())) print( len( filter1.getFilteredList( comp.getProblemNames(), comp.getManager('testrun').getManageables())))