Source code for tests.test_var_cut

"""
Tests some functions inside var_cut/var_cut.py
"""

import unittest
import os
import matplotlib.pyplot as plt
from var_cut.var_cut import var_cut


current_dir = os.path.dirname(__file__)

# uniformly distributed between 0 and 1.0
path_A = os.path.join(current_dir, 'dummy/dummy_A.root')
# uniformly distributed between 0.5 and 1.5
path_B = os.path.join(current_dir, 'dummy/dummy_B.root')


[docs]class TestVarCut(unittest.TestCase):
[docs] def test_uniform(self): """ Test var_cut() with a two uniformly distributed histograms """ rootpaths = (path_A, path_B, path_A) eff = 0.9 fr, stats, _, = var_cut(rootpaths=rootpaths, tree='dummytree', cut_var='dummyvar', eff=eff, error_optimization=False, inverse_mode=False, specificity_mode=False, savefig=False) efficiency = stats[0] misid = stats[1] cut = stats[2] self.assertGreaterEqual(efficiency, misid) self.assertAlmostEqual(fr[0], 0, delta=1e-3) self.assertAlmostEqual(efficiency, eff, delta=1e-3) self.assertAlmostEqual(misid, 0.4, delta=1e-3) self.assertAlmostEqual(cut, 0.6, delta=1e-3)
[docs] def test_uniform_inverse(self): """ Test var_cut() with a two uniformly distributed histograms in inverse mode """ rootpaths = (path_B, path_A, path_B) eff = 0.9 fr, stats, _, = var_cut(rootpaths=rootpaths, tree='dummytree', cut_var='dummyvar', eff=eff, error_optimization=False, inverse_mode=True, specificity_mode=False, savefig=False) efficiency = stats[0] misid = stats[1] cut = stats[2] self.assertGreaterEqual(efficiency, misid) self.assertAlmostEqual(fr[0], 0, delta=1e-3) self.assertAlmostEqual(efficiency, eff, delta=1e-3) self.assertAlmostEqual(misid, 0.4, delta=1e-3) self.assertAlmostEqual(cut, 0.9, delta=1e-3)
[docs] def test_uniform_specificity(self): """ Test var_cut() with a two uniformly distributed histograms in specificity mode """ rootpaths = (path_A, path_B, path_A) eff = 0.9 fr, stats, _, = var_cut(rootpaths=rootpaths, tree='dummytree', cut_var='dummyvar', eff=eff, error_optimization=False, inverse_mode=False, specificity_mode=True, savefig=False) efficiency = stats[0] misid = stats[1] cut = stats[2] self.assertGreaterEqual(efficiency, misid) self.assertAlmostEqual(fr[0], 0, delta=1e-3) self.assertAlmostEqual(efficiency, 0.6, delta=1e-3) self.assertAlmostEqual(misid, 1-eff, delta=1e-3) self.assertAlmostEqual(cut, 0.9, delta=1e-3)
[docs] def test_uniform_inverse_specificity(self): """ Test var_cut() with a two uniformly distributed histograms in inverse and specificity mode """ rootpaths = (path_B, path_A, path_B) eff = 0.9 fr, stats, _, = var_cut(rootpaths=rootpaths, tree='dummytree', cut_var='dummyvar', eff=eff, error_optimization=False, inverse_mode=True, specificity_mode=True, savefig=False) efficiency = stats[0] misid = stats[1] cut = stats[2] self.assertGreaterEqual(efficiency, misid) self.assertAlmostEqual(fr[0], 0, delta=1e-3) self.assertAlmostEqual(efficiency, 0.6, delta=1e-3) self.assertAlmostEqual(misid, 1-eff, delta=1e-3) self.assertAlmostEqual(cut, 0.6, delta=1e-3)
[docs] def test_uniform_false_inverse(self): """ Test var_cut() with a two uniformly distributed histograms when inverse mode is given but should not be """ rootpaths = (path_A, path_B, path_A) eff = 0.9 fr, stats, _, = var_cut(rootpaths=rootpaths, tree='dummytree', cut_var='dummyvar', eff=eff, error_optimization=False, inverse_mode=True, specificity_mode=False, savefig=False) efficiency = stats[0] misid = stats[1] cut = stats[2] self.assertGreaterEqual(efficiency, misid) self.assertAlmostEqual(fr[0], 0, delta=1e-3) self.assertAlmostEqual(efficiency, eff, delta=1e-3) self.assertAlmostEqual(misid, 0.4, delta=1e-3) self.assertAlmostEqual(cut, 0.6, delta=1e-3)
if __name__ == '__main__': unittest.main() plt.show()