def convert(self, beam): s = super().convert(beam) column = NamedSeriesColumn('beam energy', 'E0', 'eV', Beam.ENERGY_TOLERANCE_eV) s[column] = beam.energy_eV column = NamedSeriesColumn('beam particle', 'par') s[column] = str(beam.particle) return s
def convert(self, sample): s = super().convert(sample) column = NamedSeriesColumn('sample tilt', 'theta0', 'rad', Sample.TILT_TOLERANCE_rad) s[column] = sample.tilt_rad column = NamedSeriesColumn('sample azimuth', 'phi0', 'rad', Sample.AZIMUTH_TOLERANCE_rad) s[column] = sample.azimuth_rad return s
def convert(self, model): s = super().convert(model) column = NamedSeriesColumn('mass absorption coefficient', 'mac') s[column] = model.name return s
def convert(self, model): s = super().convert(model) column = NamedSeriesColumn('random number generator', 'random') s[column] = model.name return s
def convert(self, model): s = super().convert(model) column = NamedSeriesColumn('ionization potential', 'ioniz. potential') s[column] = model.name return s
def convert(self, material): s = super().convert(material) for z, wf in material.composition.items(): symbol = pyxray.element_symbol(z) name = '{} weight fraction'.format(symbol) abbrev = 'wt{}'.format(symbol) tolerance = Material.WEIGHT_FRACTION_TOLERANCE column = NamedSeriesColumn(name, abbrev, tolerance=tolerance) s[column] = wf column = NamedSeriesColumn('density', 'rho', 'kg/m^3', Material.DENSITY_TOLERANCE_kg_per_m3) s[column] = material.density_kg_per_m3 return s
def convert(self, beam): s = super().convert(beam) column = NamedSeriesColumn('beam diameter', 'd0', 'm', CylindricalBeam.DIAMETER_TOLERANCE_m) s[column] = beam.diameter_m column = NamedSeriesColumn('beam initial x position', 'x0', 'm', CylindricalBeam.POSITION_TOLERANCE_m) s[column] = beam.x0_m column = NamedSeriesColumn('beam initial y position', 'y0', 'm', CylindricalBeam.POSITION_TOLERANCE_m) s[column] = beam.y0_m return s
def convert(self, model): s = super().convert(model) column = NamedSeriesColumn('inelastic cross-section', 'inelastic') s[column] = model.name return s
def convert(self, model): s = super().convert(model) column = NamedSeriesColumn('photon scattering cross-section', 'ph. scatter') s[column] = model.name return s
def convert(self, model): s = super().convert(model) column = NamedSeriesColumn('fluorescence', 'fluo') s[column] = model.name return s
def convert(self, options): s = super().convert(options) column = NamedSeriesColumn('program', 'prog') s[column] = options.program.getidentifier() s_beam = self._find_and_convert(options.beam) s = s.append(s_beam) s_sample = self._find_and_convert(options.sample) s = s.append(s_sample) for detector in options.detectors: s_detector = self._find_and_convert(detector) s = s.append(s_detector) for analysis in options.analyses: s_analysis = self._find_and_convert(analysis) s = s.append(s_analysis) for limit in options.limits: s_limit = self._find_and_convert(limit) s = s.append(s_limit) for model in options.models: s_model = self._find_and_convert(model) s = s.append(s_model) return s
def convert(self, model): s = super().convert(model) column = NamedSeriesColumn('ionization cross-section', 'ioniz. xsection') s[column] = model.name return s
def convert(self, model): s = super().convert(model) column = NamedSeriesColumn('energy loss', 'dE/dS') s[column] = model.name return s
def convert(self, model): s = super().convert(model) column = NamedSeriesColumn('bremsstrahlung emission', 'bremss') s[column] = model.name return s
def convert(self, model): s = super().convert(model) column = NamedSeriesColumn('direction cosine', 'cosine') s[column] = model.name return s
def convert(self, detector): s = super().convert(detector) name = '{} elevation angle'.format(detector.name) abbrev = '{} theta'.format(detector.name) column = NamedSeriesColumn(name, abbrev, 'rad', PhotonDetector.ELEVATION_TOLERANCE_rad) s[column] = detector.elevation_rad name = '{} azimuth angle'.format(detector.name) abbrev = '{} phi'.format(detector.name) column = NamedSeriesColumn(name, abbrev, 'rad', PhotonDetector.AZIMUTH_TOLERANCE_rad) s[column] = detector.azimuth_rad return s
def convert(self, limit): s = super().convert(limit) column = NamedSeriesColumn('number of trajectories', 'N') s[column] = limit.number_trajectories return s
def convert(self, limit): s = super().convert(limit) column = NamedSeriesColumn( 'uncertainty value', 'unc', tolerance=UncertaintyLimit.UNCERTAINTY_TOLERANCE) s[column] = limit.uncertainty return s
def convert(self, layer): s = super().convert(layer) s_material = self._find_and_convert(layer.material) s = s.append(s_material) column = NamedSeriesColumn('thickness', 't', 'm', Layer.THICKNESS_TOLERANCE_m) s[column] = layer.thickness_m return s
def convert(self, sample): s = super().convert(sample) s_material = self._find_and_convert(sample.material, 'sphere ', 'sphere ') s = s.append(s_material) column = NamedSeriesColumn('sphere diameter', 'd', 'm', SphereSample.DIAMETER_TOLERANCE_m) s[column] = sample.diameter_m return s
def convert(self, sample): s = super().convert(sample) s_material = self._find_and_convert(sample.left_material, 'left substrate ', 'left ') s = s.append(s_material) s_material = self._find_and_convert(sample.right_material, 'right substrate ', 'right ') s = s.append(s_material) column = NamedSeriesColumn('vertical layers depth', 'zmax', 'm', VerticalLayerSample.DEPTH_TOLERANCE_m) s[column] = sample.depth_m return s
def convert(self, sample): s = super().convert(sample) s_material = self._find_and_convert(sample.substrate_material, 'substrate ', 'subs ') s = s.append(s_material) s_material = self._find_and_convert(sample.inclusion_material, 'inclusion ', 'incl ') s = s.append(s_material) column = NamedSeriesColumn( 'inclusion diameter', 'd', 'm', InclusionSample.INCLUSION_DIAMETER_TOLERANCE_m) s[column] = sample.inclusion_diameter_m return s
class TestNamedSeriesColumn(TestCase): def setUp(self): super().setUp() self.column0 = NamedSeriesColumn('a', 'b') self.column1 = NamedSeriesColumn('a', 'b', 'm', 0.1) def testcompare(self): self.assertTrue(self.column0.compare('foo', 'foo')) self.assertFalse(self.column0.compare('foo', 'bar')) self.assertTrue(self.column1.compare(0.0, 0.05)) self.assertFalse(self.column1.compare(0.0, 0.2)) def testformat_value(self): self.assertEqual('foo', self.column0.format_value('foo')) self.assertEqual('{:g}'.format(1.0), self.column0.format_value(1.0)) self.assertEqual('{:.1f}'.format(2.0), self.column1.format_value(2.0)) self.assertEqual('{:.1f}'.format(0.2), self.column1.format_value(0.2))
def setUp(self): super().setUp() parent = NamedSeriesColumn('a', 'b', 'm', 0.1) self.column = ErrorSeriesColumn(parent)
def setUp(self): super().setUp() self.column0 = NamedSeriesColumn('a', 'b') self.column1 = NamedSeriesColumn('a', 'b', 'm', 0.1)