Esempio n. 1
0
    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.")
Esempio n. 2
0
    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)
Esempio n. 3
0
def resetExperiment():
    global _experiment
    _experiment = Experiment()
Esempio n. 4
0
 def setUp(self):
     try:
         os.mkdir(TMPDIR)
     except FileExistsError:
         pass
     self.experiment = Experiment()
Esempio n. 5
0
    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]
Esempio n. 6
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())))