def setUp(self): TestCase.setUp(self) geometry = MultiLayers(pure(29)) geometry.add_layer(Material("AuPd", {79: 0.5, 46: 0.5}), 100e-9) baseops = Options() baseops.detectors['xray'] = PhotonIntensityDetector((0, 1), (0, 3)) meas = Measurement(baseops) meas.add_kratio(Ka(29), 0.2470, 0.004) getter = lambda geometry: geometry.layers[0].thickness_m setter = lambda geometry, val: setattr(geometry.layers[0], 'thickness_m', val) param = Parameter(getter, setter, 100e-9, 10e-9, 500e-9) self.exp = Experiment(geometry, [meas], [param])
class TestMeasurement(TestCase): def setUp(self): TestCase.setUp(self) baseops = Options() baseops.detectors["xray"] = PhotonIntensityDetector((0, 1), (0, 3)) self.m = Measurement(baseops) self.m.add_kratio(Ka(29), 0.2470, 0.004) def tearDown(self): TestCase.tearDown(self) def testskeleton(self): self.assertTrue(True) def testadd_kratio(self): standard = Material("U90", {92: 0.9, 49: 0.1}) self.m.add_kratio(La(92), 0.5, standard=standard) self.assertTrue(self.m.has_kratio(La(92))) self.assertAlmostEqual(0.5, self.m.get_kratios()[1], 4) self.m.add_kratio(Ka(13), 0.2, unc=0.125) self.assertTrue(self.m.has_kratio(Ka(13))) self.assertAlmostEqual(0.2, self.m.get_kratios()[0], 4) self.assertRaises(ValueError, self.m.add_kratio, La(92), 0.1) self.assertRaises(ValueError, self.m.add_kratio, Ka(14), -0.1) def testremove_kratio(self): self.m.remove_kratio(Ka(29)) self.assertFalse(self.m.has_kratio(Ka(29))) self.assertEqual(0, len(self.m.get_kratios())) def testclear_kratios(self): self.m.clear_kratios() self.assertEqual(0, len(self.m.get_kratios())) def testhas_kratio(self): self.assertTrue(self.m.has_kratio(Ka(29))) self.assertFalse(self.m.has_kratio(La(29))) def testget_kratios(self): kratios = self.m.get_kratios() self.assertEqual(1, len(kratios)) self.assertAlmostEqual(0.247, kratios[0], 4) def testfrom_xml(self): element = self.m.to_xml() m = Measurement.from_xml(element) kratios = m.get_kratios() self.assertEqual(1, len(kratios)) self.assertAlmostEqual(0.247, kratios[0], 4) def testto_xml(self): element = self.m.to_xml() self.assertEqual(1, len(element.findall("kratio"))) def testcreate_standard_options(self): list_options = self.m.create_standard_options("std") self.assertEqual(1, len(list_options)) def testextract_standard_intensities(self): list_options = self.m.create_standard_options("std") stdoptions = list_options[0] intensities = create_intensity_dict(Ka(29), et=(8.0, 0.0)) results = {"xray": PhotonIntensityResult(intensities)} stdresults = Results(stdoptions, results) dict_results = {"std+Cu Ka": stdresults} stdintensities = self.m.extract_standard_intensities("std", dict_results) self.assertEqual(1, len(stdintensities)) self.assertAlmostEqual(8.0, stdintensities[0], 4) def testcreate_unknown_options(self): unkgeometry = Substrate(pure(49)) options = self.m.create_unknown_options("meas", unkgeometry) self.assertEqual("meas", options.name) def testextract_unknown_intensities(self): unkgeometry = Substrate(pure(49)) options = self.m.create_unknown_options("meas", unkgeometry) intensities = create_intensity_dict(Ka(29), et=(4.0, 0.0)) results = Results(options, {"xray": PhotonIntensityResult(intensities)}) unkintensities = self.m.extract_unknown_intensities(results) self.assertEqual(1, len(unkintensities)) self.assertAlmostEqual(4.0, unkintensities[0], 4)
from pymontecarlo.reconstruction.experiment import Experiment from pymontecarlo.reconstruction.measurement import Measurement from pymontecarlo.reconstruction.parameter import Parameter from pymontecarlo.reconstruction.reconstructor import Reconstructor from pymontecarlo.input import Inclusion, pure, Material, Options, ShowersLimit, PhotonIntensityDetector, composition_from_formula baseops = Options() baseops.beam.energy_eV = 10e3 baseops.beam.diameter_m = 50e-9 baseops.detectors['xray'] = PhotonIntensityDetector.annular(radians(40.0), radians(5.0)) baseops.limits.add(ShowersLimit(1000)) meas1 = Measurement(baseops) meas1.add_kratio(Ka(6), 0.5, standard=Material('Fe3C', composition_from_formula('Fe3C'))) def setter1(geometry, val): geometry.inclusion_material.composition = {26: val, 6: '?'} param1 = Parameter(setter1, 0.95, 0.0, 1.0) def setter2(geometry, val): geometry.inclusion_diameter_m = val param2 = Parameter(setter2, 200e-9, 150e-9, 250e-9) inclusion_material = Material('CrC', {26: 0.95, 6: 0.05}) geometry = Inclusion(pure(26), inclusion_material, 200e-9) exp = Experiment(geometry, [meas1], [param1, param2]) runner = LocalRunner(NISTMonte, '/tmp', nbprocesses=1)
from pymontecarlo.reconstruction.measurement import Measurement from pymontecarlo.reconstruction.parameter import Parameter from pymontecarlo.reconstruction.reconstructor import Reconstructor from pymontecarlo.input import Inclusion, pure, Material, Options, ShowersLimit, PhotonIntensityDetector, composition_from_formula baseops = Options() baseops.beam.energy_eV = 10e3 baseops.beam.diameter_m = 50e-9 baseops.detectors['xray'] = PhotonIntensityDetector.annular( radians(40.0), radians(5.0)) baseops.limits.add(ShowersLimit(1000)) meas1 = Measurement(baseops) meas1.add_kratio(Ka(6), 0.5, standard=Material('Fe3C', composition_from_formula('Fe3C'))) def setter1(geometry, val): geometry.inclusion_material.composition = {26: val, 6: '?'} param1 = Parameter(setter1, 0.95, 0.0, 1.0) def setter2(geometry, val): geometry.inclusion_diameter_m = val param2 = Parameter(setter2, 200e-9, 150e-9, 250e-9)
class TestMeasurement(TestCase): def setUp(self): TestCase.setUp(self) baseops = Options() baseops.detectors['xray'] = PhotonIntensityDetector((0, 1), (0, 3)) self.m = Measurement(baseops) self.m.add_kratio(Ka(29), 0.2470, 0.004) def tearDown(self): TestCase.tearDown(self) def testskeleton(self): self.assertTrue(True) def testadd_kratio(self): standard = Material('U90', {92: 0.9, 49: 0.1}) self.m.add_kratio(La(92), 0.5, standard=standard) self.assertTrue(self.m.has_kratio(La(92))) self.assertAlmostEqual(0.5, self.m.get_kratios()[1], 4) self.m.add_kratio(Ka(13), 0.2, unc=0.125) self.assertTrue(self.m.has_kratio(Ka(13))) self.assertAlmostEqual(0.2, self.m.get_kratios()[0], 4) self.assertRaises(ValueError, self.m.add_kratio, La(92), 0.1) self.assertRaises(ValueError, self.m.add_kratio, Ka(14), -0.1) def testremove_kratio(self): self.m.remove_kratio(Ka(29)) self.assertFalse(self.m.has_kratio(Ka(29))) self.assertEqual(0, len(self.m.get_kratios())) def testclear_kratios(self): self.m.clear_kratios() self.assertEqual(0, len(self.m.get_kratios())) def testhas_kratio(self): self.assertTrue(self.m.has_kratio(Ka(29))) self.assertFalse(self.m.has_kratio(La(29))) def testget_kratios(self): kratios = self.m.get_kratios() self.assertEqual(1, len(kratios)) self.assertAlmostEqual(0.247, kratios[0], 4) def testfrom_xml(self): element = self.m.to_xml() m = Measurement.from_xml(element) kratios = m.get_kratios() self.assertEqual(1, len(kratios)) self.assertAlmostEqual(0.247, kratios[0], 4) def testto_xml(self): element = self.m.to_xml() self.assertEqual(1, len(element.findall('kratio'))) def testcreate_standard_options(self): list_options = self.m.create_standard_options('std') self.assertEqual(1, len(list_options)) def testextract_standard_intensities(self): list_options = self.m.create_standard_options('std') stdoptions = list_options[0] intensities = create_intensity_dict(Ka(29), et=(8.0, 0.0)) results = {'xray': PhotonIntensityResult(intensities)} stdresults = Results(stdoptions, results) dict_results = {'std+Cu Ka': stdresults} stdintensities = self.m.extract_standard_intensities('std', dict_results) self.assertEqual(1, len(stdintensities)) self.assertAlmostEqual(8.0, stdintensities[0], 4) def testcreate_unknown_options(self): unkgeometry = Substrate(pure(49)) options = self.m.create_unknown_options('meas', unkgeometry) self.assertEqual('meas', options.name) def testextract_unknown_intensities(self): unkgeometry = Substrate(pure(49)) options = self.m.create_unknown_options('meas', unkgeometry) intensities = create_intensity_dict(Ka(29), et=(4.0, 0.0)) results = Results(options, {'xray': PhotonIntensityResult(intensities)}) unkintensities = self.m.extract_unknown_intensities(results) self.assertEqual(1, len(unkintensities)) self.assertAlmostEqual(4.0, unkintensities[0], 4)