def testTabLisRead(self): res = {"AlBa-1s": OrderedDict([(PQ.Isotope(75, 32, 0), StoredData(PQ.Activity(2.0663E+05, unc=0.99 * 2.0663E+05))), (PQ.Isotope(26, 13, 1), StoredData(PQ.Activity(2.2300E+10, unc=0.001845 * 2.2300E+10)))])} data = self.reader.load(join(_basedir, "test_data/ResnucInputTest_tab.lis")) self.assertEqual(data, res)
def testMultiFileReadMultiDetWeighted(self): data = self.reader.load(["test_data/ResnucInputTest_tab.lis", "test_data/ResnucInputTest2_tab.lis"]) res = {"AlBa-1s": {"Isotope": [PQ.Isotope(75, 32, 0), PQ.Isotope(26, 13, 1)], "Activity": [PQ.Activity(2.0663E+05, unc=0.99 * 2.0663E+05), PQ.Activity(2.2300E+10, unc=0.001845 * 2.2300E+10)]}} self.assertFalse(True, "To be implemented")
def setUp(self): self.sum_op = SummationOperator("Activity") self.single_det_data = { "det1": { PQ.Isotope(3, 1, 0): StoredData(PQ.Activity(10.)), PQ.Isotope(3, 2, 0): StoredData(PQ.Activity(15.)) } }
def testMultiFileReadSingleDet(self): data = self.reader.load([join(_basedir, "test_data/ResnucInputTest_tab.lis"), join(_basedir, "test_data/ResnucInputTest_tab.lis")]) res = {"AlBa-1s": OrderedDict([(PQ.Isotope(75, 32, 0), StoredData(PQ.Activity(2. * 2.0663E+05, unc=0.99 * sqrt(2.) * 2.0663E+05))), (PQ.Isotope(26, 13, 1), StoredData(PQ.Activity(2. * 2.2300E+10, unc=0.001845 * sqrt(2.) * 2.2300E+10)))])} self.assertEqual(data, res)
def test_multi_file_merge_diff_isotopes(self): data = self.reader.load(["test_data/ResnucInputTest_tab.lis", "test_data/ResnucInputTest2_tab.lis"]) res = {"AlBa-1s": {"Isotope": [PQ.Isotope(75, 32, 0), PQ.Isotope(-1, -1, -1), PQ.Isotope(26, 13, 1)], "Activity": [PQ.Activity(2.0663E+05, unc=0.99 * 2.0663E+05), PQ.Activity(-1, unc= -1), PQ.Activity(2.2300E+10, unc=0.001845 * 2.2300E+10)]}} self.assertEqual(data, res)
def test_named_store_add(self): res = { "det1": OrderedDict([(PQ.Isotope(3, 1, 0), StoredData(PQ.Activity(10., 2.), ScaledActivity=PQ.Activity(50., 2.)))]) } self.singleElementData["det1"][PQ.Isotope( 3, 1, 0)].append(ScaledActivity=PQ.Activity(50., 2.)) self.assertEqual(self.singleElementData, res)
def test_add_single_element_to_existing(self): res = { "det1": OrderedDict([(PQ.Isotope(3, 1, 0), StoredData(PQ.Activity(20., sqrt(8.))))]) } self.singleElementData["det1"][PQ.Isotope(3, 1, 0)].append( PQ.Activity(10., 2.)) self.assertEqual(self.singleElementData, res)
def test_scalar_const_multiplication(self): mul_op = MultiplicationOperator(**self.config_scalar_const) mul_op.invoke(self.dataActivity) res = { "det1": OrderedDict([(PQ.Isotope(3, 1, 0), StoredData(PQ.Activity(10., 2.), ScaledActivity=PQ.Activity(50., 2.)))]) } self.assertEqual(self.dataActivity, res)
def test_global_data_equal_op(self): from collections import defaultdict _global_data.data = defaultdict(dict) _global_data.add("NoOfProtons", 10) _global_data.add("det1", "TotalActivity", PQ.Activity(10., 2.)) res = { "NoOfProtons": 10, "det1": { "TotalActivity": PQ.Activity(10., 2.) } } self.assertEqual(_global_data, res)
def test_comparison(self): res = { "det1": OrderedDict([(PQ.Isotope(3, 1, 0), StoredData(PQ.Activity(10., 2.)))]) } self.assertEqual(self.singleElementData, res)
def test_comparison_unequal_different_unit(self): res = { "det1": OrderedDict([(PQ.Isotope(3, 1, 0), StoredData(PQ.Activity(10., 2., ureg.kBq)))]) } self.assertNotEqual(self.singleElementData, res)
def setUp(self): self.tabConfig = {"cols": ["Isotope", "Activity"]} self.data = { "det1": OrderedDict([(PQ.Isotope(3, "H"), StoredData(PQ.Activity(10.00101010101)))]) } self.dataMultiDet = { "det1": OrderedDict([(PQ.Isotope(3, "H"), StoredData(PQ.Activity(10.00101010101)))]), "det2": OrderedDict([(PQ.Isotope(3, "H"), StoredData(PQ.Activity(100.00101010101)))]) } self.tm = TM(self.tabConfig)
def test_multi_file_read_weighted(self): sf = 1.5 self.reader.weights = [0.8, 0.7] data = self.reader.load([join(_basedir, "test_data/ResnucInputTest_tab.lis"), join(_basedir, "test_data/ResnucInputTest_tab.lis")]) res = {"AlBa-1s": OrderedDict([(PQ.Isotope(75, 32, 0), StoredData(PQ.Activity(sf * 2.0663E+05, unc= sqrt(pow(0.8, 2) + pow(0.7, 2)) * 0.99 * 2.0663E+05))), (PQ.Isotope(26, 13, 1), StoredData(PQ.Activity(sf * 2.2300E+10, unc=sqrt(pow(0.8, 2) + pow(0.7, 2)) * 0.001845 * 2.2300E+10)))])} self.assertAlmostEqual(data["AlBa-1s"][PQ.Isotope(26, 13, 1)]["Activity"], res["AlBa-1s"][PQ.Isotope(26, 13, 1)]["Activity"]) self.assertAlmostEqual(data["AlBa-1s"][PQ.Isotope(75, 32, 0)]["Activity"], res["AlBa-1s"][PQ.Isotope(75, 32, 0)]["Activity"])
def setUp(self): self.decorator = Decorator(["EInh"]) self.data = { "det1": OrderedDict([(PQ.Isotope(3, 1, 0), StoredData(PQ.Activity(10., 2.)))]) }
def setUp(self): plotConfigDict = {'type': "2D", 'quantity': "Activity"} self.plotConfig = [PC("foo", plotConfigDict)] self.pm = PM([plotConfigDict], "foo") rawDataArr = np.array([PQ.Activity(i) for i in range(1000)]) self.rawData = {"Det1": {'Activity': rawDataArr, "Binning": [(0, 1, 1), (0, 100, 20), (0, 150, 50)]}} self.data = np.reshape(rawDataArr, [20, 50, 1]).transpose()
def test_invoke(self): self.decorator.invoke(self.data) res = { "det1": OrderedDict([(PQ.Isotope(3, 1, 0), StoredData(PQ.Activity(10., 2.), PQ.EInh(4.10E-011)))]) } self.assertEqual(self.data, res)
def test_add_multiple_elements_not_existing(self): res = { "det1": OrderedDict([(PQ.Isotope(3, 1, 0), StoredData(PQ.Activity(10., 2.), PQ.AoverLE(10., 2.), PQ.DoseRate(20., 3.)))]) } self.singleElementData["det1"][PQ.Isotope(3, 1, 0)].append( PQ.AoverLE(10., 2.), PQ.DoseRate(20., 3.)) self.assertEqual(self.singleElementData, res)
def test_dict_builtin_dh_multiplication(self): mul_op = MultiplicationOperator(**self.config_dict_builtin) mul_op.invoke(self.dataActivity) res = { "det1": OrderedDict([ (PQ.Isotope(3, 1, 0), StoredData(PQ.Activity(10., 2.), InhalationDose=PQ.Dose(10. * 4.10E-011, -1., ureg.Sv))) ]) } self.assertEqual(self.dataActivity, res)
def setUp(self): self.dataActivity = { "det1": OrderedDict([(PQ.Isotope(3, 1, 0), StoredData(PQ.Activity(10., 2.)))]) } self.dataActivityEinh = { "det1": OrderedDict([(PQ.Isotope(3, 1, 0), StoredData(PQ.Activity(10., 2.), inhalationcoeff=PQ.EInh(10.)))]) } self.config_scalar_const = d = { "type": "scalar", "multiplier": "Activity", "multiplicand": "const:5", "product": "ScaledActivity:Activity" } self.config_dict_builtin = d = { "type": "dict", "multiplier": "Activity", "multiplicand": "builtin:einh", "product": "InhalationDose:Dose" }
def test_dict_multiplication_det(self): d = { "type": "dict", "multiplier": "Activity", "multiplicand": "global:mass", "product": "SpecificActivity" } _global_data.add("det1", "mass", PQ.Mass(10., "kg")) mul_op = MultiplicationOperator(**d) data = { "det1": OrderedDict([(PQ.Isotope(3, 1, 0), StoredData(PQ.Activity(100., 0.)))]) } mul_op.invoke(data) res = PQ.SpecificActivity(10.) self.assertEqual(data["det1"][PQ.Isotope(3, 1, 0)]["SpecificActivity"], res)
def setUp(self): self.reader = UR("Activity") dataraw = [ 4.3201E-07, 1.5970E-06, 4.6090E-05, 1.5935E-06, 5.0045E-07, 8.6618E-07, 4.1063E-06, 9.8403E-05, 3.5158E-06, 7.2260E-07 ] dataraw = [PQ.Activity(i) for i in dataraw] binning = [(-45., 45., 1), (-54., 54., 5), (-33., 36., 2)] binning_reverse = [2, 5, 1] self.data_tutorial = { "EneDep2": { "Weight": (100., 100.), "Binning": binning, "Activity": np.reshape(np.array(dataraw), binning_reverse).transpose() } }
def test_dict_multiplication_stored_quantity(self): d = { "type": "dict", "multiplier": "Activity", "multiplicand": "inhalationcoeff", "product": "InhalationDose:Dose" } mul_op = MultiplicationOperator(**d) mul_op.invoke(self.dataActivityEinh) res = { "det1": OrderedDict([ (PQ.Isotope(3, 1, 0), StoredData(PQ.Activity(10., 2.), inhalationcoeff=PQ.EInh(10.), InhalationDose=PQ.Dose(100., -1., ureg.Sv))) ]) } self.assertEqual(self.dataActivityEinh, res)
def test_dict_multiplication_global_data(self): d = { "type": "scalar", "multiplier": "ProductionYield", "multiplicand": "global:NoOfPrimaries", "product": "Activity" } _global_data.add("NoOfPrimaries", 10.) data = { "det1": OrderedDict([(PQ.Isotope(3, 1, 0), StoredData(PQ.ProductionYield(10., 0.)))]) } mul_op = MultiplicationOperator(**d) mul_op.invoke(data) res = { "det1": OrderedDict([(PQ.Isotope(3, 1, 0), StoredData(PQ.ProductionYield(10., 0.), PQ.Activity(100., 0.)))]) } self.assertEqual(data, res)
def test_set_item(self): data = StoredData(PQ.Activity(10., 2.)) data["Activity"] = PQ.Activity(20., 2.) res = PQ.Activity(20., 2.) self.assertEqual(data["Activity"], res)
def test_calculation_single_detector_custom_name(self): sum_op = SummationOperator("Activity", "TotalActivity") sum_op.invoke(self.single_det_data) self.assertEqual(_global_data["det1"]["TotalActivity"], PQ.Activity(25.))
def _calc(self, data): return sum([elem["Activity"] for elem in data], PQ.Activity(0.))
def test_access_none(self): data = StoredData(PQ.Activity(10., 2.)) self.assertEqual(data["foo"], None)
def test_operator_access(self): self.assertEqual( self.singleElementData["det1"][PQ.Isotope(3, 1, 0)]["Activity"], PQ.Activity(10., 2.))
def setUp(self): self.singleElementData = { "det1": OrderedDict([(PQ.Isotope(3, 1, 0), StoredData(PQ.Activity(10., 2.)))]) }
def test_named_store_constructor(self): inp = StoredData(PQ.Activity(10., 2.), ScaledActivity=PQ.Activity(50., 2.)) self.assertEqual(inp["ScaledActivity"], PQ.Activity(50., 2.))