def test_score_idiv(self): score_for_comparison = Score(score_for_check / weight_for_check1) score1 = Score(score_for_check) weight1 = weight_for_check1 score1 /= weight1 self.assertEqual(score1, score_for_comparison)
def test_score_imul(self): score_for_comparison = Score(score_for_check * weight_for_check) score1 = Score(score_for_check) weight1 = weight_for_check score1 *= weight1 self.assertEqual(score1, score_for_comparison)
def test_score_add(self): score_for_comparison = Score(score_for_check1 + score_for_check2) score1 = Score(score_for_check1) score2 = Score(score_for_check2) score3 = score1 + score2 self.assertEqual(score3, score_for_comparison)
def test_Chi2Test_chi2(self): """Test χ² comparison (χ²)""" cmpfn = Chi2Test() dqscore = cmpfn.compare(self.hdata, self.href, 'chi2') self.assertGreaterEqual(dqscore['score'], Score(50)) self.assertEqual(dqscore['lvl'], ERROR_LEVELS.OK) dqscore = cmpfn.compare(self.hdata, self.href, 'chi2/ndf') self.assertGreaterEqual(dqscore['score'], Score(50)) self.assertEqual(dqscore['lvl'], ERROR_LEVELS.OK)
def test_Chi2Test_pvalue(self): """Test χ² comparison (pvalue)""" cmpfn = Chi2Test() dqscore = cmpfn.compare(self.hdata, self.href, '') self.assertGreaterEqual(dqscore['score'], Score(5)) self.assertEqual(dqscore['lvl'], ERROR_LEVELS.OK) dqscore = cmpfn.compare(self.hdata_bad, self.href, '') self.assertLess(dqscore['score'], Score(5)) self.assertNotEqual(dqscore['lvl'], ERROR_LEVELS.OK)
def test_KolmogorovSmirnovTest_prob(self): """Test KS comparison (probability)""" cmpfn = KolmogorovSmirnovTest() dqscore = cmpfn.compare(self.hdata, self.href, '') self.assertGreaterEqual(dqscore['score'], Score(5)) self.assertEqual(dqscore['lvl'], ERROR_LEVELS.OK) dqscore = cmpfn.compare(self.hdata_bad, self.href, '') self.assertLess(dqscore['score'], Score(5)) self.assertNotEqual(dqscore['lvl'], ERROR_LEVELS.OK)
def test_score_cmp(self): score1 = Score(score_for_check) score_thesame = Score(score_for_check) score_lower = Score(score_for_check - 1) score_higher = Score(score_for_check + 1) self.assertEqual(score1, score_thesame) self.assertGreater(score1, score_lower) self.assertLess(score1, score_higher)
def test_ceiling_both(self): """Test ceiling threshold""" self.hdata.FillRandom('pol0', 10000) cmpfn = CeilingThreshold() # each bin has ~100 (=10000/100) entires, +/- 3*sqrt(100)=30 dqscore = cmpfn.compare(self.hdata, self.href, 100 + 30) self.assertEqual(Score(100), dqscore['score']) self.assertEqual(ERROR_LEVELS.OK, dqscore['lvl']) dqscore = cmpfn.compare(self.hdata, self.href, 100 + 10) self.assertEqual(Score(0), dqscore['score']) self.assertEqual(ERROR_LEVELS.ERROR, dqscore['lvl'])
def test_mean_width_diff_warn(self): """Test mean and width check with reference (WARNING)""" fn0 = get_fns('TMath::Gaus', (0, 3), (-10, 10)) fn1 = get_fns('TMath::Gaus', (1, 3), (-10, 10)) self.hdata.FillRandom(fn0[0], 20000) self.href.FillRandom(fn1[0], 10000) cmpfn = MeanWidthDiffRef() # mean = 0 & 1, width = 3 (RMS) dqscore = cmpfn.compare(self.hdata, self.href, 0.1) self.assertTrue(dqscore['score'] < Score(40) and dqscore['score'] > Score(20)) self.assertEqual(dqscore['lvl'], ERROR_LEVELS.WARNING)
def test_score_init(self): string_for_check = "{:.2f}%".format(score_for_check) tested_score = Score(score_for_check) self.assertEqual(tested_score.value, score_for_check) self.assertEqual(str(tested_score), string_for_check)
def test_mean_width_diff_ok(self): """Test mean and width check with reference (OK)""" fn = get_fns('TMath::Gaus', (0, 3), (-10, 10)) self.hdata.FillRandom(fn[0], 20000) self.href.FillRandom(fn[0], 10000) cmpfn = MeanWidthDiffRef() # mean = 0, width = 3 (RMS) dqscore = cmpfn.compare(self.hdata, self.href, 0.1) self.assertTrue(dqscore['score'] > Score(90)) self.assertEqual(dqscore['lvl'], ERROR_LEVELS.OK)
def setUp(self): """Create dictionaries needed by combiners.""" dirname = os.path.join(os.path.dirname(__file__), 'fixtures') orfdata = TFile( os.path.abspath(os.path.join(dirname, 'dqm_data.root')), 'read') orfref = TFile(os.path.abspath(os.path.join(dirname, 'dqm_ref.root')), 'read') # valid ROOT files assert (not orfdata.IsZombie()) assert (not orfref.IsZombie()) self.tdir = tempfile.mkdtemp() self.rfdata = TFile(os.path.join(self.tdir, 'fdata.root'), 'recreate') self.rfref = TFile(os.path.join(self.tdir, 'fref.root'), 'recreate') hist_recipes = [ (get_avg_trend, 'Vetra/NoiseMon/ADCCMSuppressed', ('RMSNoise_vs_ChipChannel', 'AvgRMSNoise_trend')), (get_avg_hist, 'Vetra/NoiseMon/ADCCMSuppressed', ('RMSNoise_vs_ChipChannel', 'AvgRMSNoise_all')), (get_avg_hist, 'Vetra/NoiseMon/ADCCMSuppressed', ('RMSNoise_vs_ChipChannel', 'AvgRMSNoise_R', 'r')), (get_avg_hist, 'Vetra/NoiseMon/ADCCMSuppressed', ('RMSNoise_vs_ChipChannel', 'AvgRMSNoise_Phi', 'p')), # (get_avg_hist, 'Vetra/VeloPedestalSubtractorMoni', # ('Ped_Sub_ADCs_Profile', 'Ped_Sub_ADCs_all')) ] # histograms: make, save, and cleanup for recipe in hist_recipes: href = recipe[0](orfref.GetDirectory(recipe[1]), *recipe[2]) self.rfref.WriteTObject(href) del href hdata = recipe[0](orfdata.GetDirectory(recipe[1]), *recipe[2]) self.rfdata.WriteTObject(hdata) del hdata self.rfref.Close() self.rfdata.Close() # Write DQ database to temp directory (rather than run directory) Config().dq_db_file_path = os.path.join(self.tdir, Config().dq_db) configfile = os.path.join(os.path.dirname(__file__), 'analysis_config_test.py') with open(configfile, 'r') as inputFile: exec(inputFile.read()) config = AnalysisConfigWrapper( (analysis_config_branches, analysis_config_leaves)) self.mycombiner = config.getTrunk(orfdata.GetName(), orfref.GetName()) # Results to compare against self.results = {"score": Score(70.62594356001006), "lvl": ERROR}
def test_score_adding(self): with self.assertRaises(AddingScoreException): Score(score_for_check) + Score(score_for_check1)
def test_score_assignment(self): with self.assertRaises(ScoreAssignmentException): Score(score_for_check_exc)
def test_score_iadd(self): score_for_comparison = Score(score_for_check1 + score_for_check2) score1 = Score(score_for_check1) score1 += Score(score_for_check2) self.assertEqual(score1, score_for_comparison)