示例#1
0
    def test_esk407(self):
        """Test Esk-407: Classification unbiased fit estimate"""

        # run Eskapade
        self.run_eskapade('esk407_classification_unbiased_fit_estimate.py')
        ds = ProcessManager().service(DataStore)
        ws = ProcessManager().service(RooFitManager).ws

        # roofit objects check in datastore
        self.assertIn('fit_result', ds)
        self.assertIsInstance(ds['fit_result'], ROOT.RooFitResult)

        # roofit objects check in workspace
        mdata = ws.data('data')
        self.assertFalse(not mdata)
        self.assertEqual(1000, mdata.numEntries())
        mpdf = ws.pdf('hist_model')
        self.assertFalse(not mpdf)

        # successful fit result
        fit_result = ds['fit_result']
        self.assertEqual(0, fit_result.status())
        self.assertEqual(3, fit_result.covQual())

        lo_risk = ws.var('N_low_risk')
        self.assertFalse(not lo_risk)
        self.assertTrue(lo_risk.getVal() < 1000)
        self.assertTrue(lo_risk.getError() > 0)
        hi_risk = ws.var('N_high_risk')
        self.assertFalse(not hi_risk)
        self.assertTrue(hi_risk.getVal() > 0)
        self.assertTrue(hi_risk.getError() > 0)
示例#2
0
    def test_esk411(self):
        """Test Esk-411: Predictive maintenance Weibull fit"""

        # run Eskapade
        self.run_eskapade('esk411_weibull_predictive_maintenance.py')
        ds = ProcessManager().service(DataStore)
        ws = ProcessManager().service(RooFitManager).ws

        # roofit objects check in datastore
        self.assertIn('fit_result', ds)
        self.assertIsInstance(ds['fit_result'], ROOT.RooFitResult)

        # roofit objects check in workspace
        self.assertIn('binnedData', ds)
        self.assertIsInstance(ds['binnedData'], ROOT.RooDataHist)
        mdata = ds['binnedData']
        self.assertTrue(mdata)
        self.assertEqual(300, mdata.numEntries())
        mpdf = ws.pdf('sum3pdf')
        self.assertTrue(mpdf)

        # successful fit result
        fit_result = ds['fit_result']
        self.assertEqual(0, fit_result.status())
        self.assertEqual(3, fit_result.covQual())

        n1 = ws.var('N1')
        self.assertTrue(n1)
        self.assertGreater(n1.getVal(), 2.e5)
        n2 = ws.var('N2')
        self.assertTrue(n2)
        self.assertGreater(n2.getVal(), 4.e5)
        n3 = ws.var('N3')
        self.assertTrue(n3)
        self.assertGreater(n3.getVal(), 5.e4)

        # data-summary checks
        io_conf = ProcessManager().service(ConfigObject).io_conf()
        file_names = [
            'weibull_fit_report.tex', 'correlation_matrix_fit_result.pdf',
            'floating_pars_fit_result.tex',
            'fit_of_time_difference_medium_range.pdf'
        ]
        for fname in file_names:
            path = persistence.io_path('results_data', io_conf,
                                       'report/{}'.format(fname))
            self.assertTrue(os.path.exists(path))
            statinfo = os.stat(path)
            self.assertGreater(statinfo.st_size, 0)