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)
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)
def test_esk408(self): """Test Esk-408: Classification error propagation after fit""" # run Eskapade self.run_eskapade( 'esk408_classification_error_propagation_after_fit.py') ds = ProcessManager().service(DataStore) ws = ProcessManager().service(RooFitManager).ws # data-generation checks self.assertIn('n_df_pvalues', ds) self.assertEqual(500, ds['n_df_pvalues']) self.assertIn('df_pvalues', ds) self.assertIsInstance(ds['df_pvalues'], pd.DataFrame) df = ds['df_pvalues'] self.assertTrue('high_risk_pvalue' in df.columns) self.assertTrue('high_risk_perror' in df.columns) # roofit objects check in workspace fit_result = ws.obj('fit_result') self.assertFalse(not fit_result) self.assertIsInstance(fit_result, ROOT.RooFitResult) # test for successful fit result self.assertEqual(0, fit_result.status()) self.assertEqual(3, fit_result.covQual()) frac = ws.var('frac') self.assertFalse(not frac) self.assertTrue(frac.getVal() > 0) self.assertTrue(frac.getError() > 0)