def test_validate_sample_sphere_invalid(exporter, options): sample = SphereSample(VACUUM, -1.0) erracc = ErrorAccumulator() exporter._validate_sample_sphere(sample, options, erracc) assert len(erracc.exceptions) == 2 assert len(erracc.warnings) == 0
def testvalidate_sample_sphere_exception(self): sample = SphereSample(VACUUM, -1.0) self.assertRaises(ValidationError, self.v.validate_sample, sample, self.options) errors = set() self.v._validate_sample(sample, self.options, errors) self.assertEqual(2, len(errors))
def _validate_sample_sphere(self, sample, options, errors): material = \ self._validate_sample_sphere_material(sample.material, options, errors) diameter_m = \ self._validate_sample_sphere_diameter_m(sample.diameter_m, options, errors) tilt_rad = \ self._validate_sample_base_tilt_rad(sample.tilt_rad, options, errors) azimuth_rad = \ self._validate_sample_base_azimuth_rad(sample.azimuth_rad, options, errors) return SphereSample(material, diameter_m, tilt_rad, azimuth_rad)
def _create_samples(number_layers=2): yield SubstrateSample(Material.pure(39)) yield InclusionSample(Material.pure(39), Material.pure(40), 20e-9) sample = HorizontalLayerSample(Material.pure(39)) for i in range(number_layers): sample.add_layer(Material.pure(50 + i), 20e-9) yield sample sample = VerticalLayerSample(Material.pure(39), Material.pure(40)) for i in range(number_layers): sample.add_layer(Material.pure(40 + i), 20e-9) yield sample yield SphereSample(Material.pure(39), 20e-9)
(SubstrateSample(MATERIAL_DS), Perspective.XY, 1), (SubstrateSample(MATERIAL_DS), Perspective.XZ, 1), (SubstrateSample(MATERIAL_DS), Perspective.YZ, 1), (InclusionSample(MATERIAL_DS, MATERIAL_RG, 0.5), Perspective.XY, 2), (InclusionSample(MATERIAL_DS, MATERIAL_RG, 0.5), Perspective.XZ, 2), (InclusionSample(MATERIAL_DS, MATERIAL_RG, 0.5), Perspective.YZ, 2), (HorizontalLayerSample(MATERIAL_DS, LAYERS), Perspective.XY, 1), (HorizontalLayerSample(MATERIAL_DS, LAYERS), Perspective.XZ, 5), (HorizontalLayerSample(MATERIAL_DS, LAYERS), Perspective.YZ, 5), (VerticalLayerSample(MATERIAL_DS, MATERIAL_AU, LAYERS), Perspective.XY, 6), (VerticalLayerSample(MATERIAL_DS, MATERIAL_AU, LAYERS), Perspective.XZ, 6), (VerticalLayerSample(MATERIAL_DS, MATERIAL_AU, LAYERS), Perspective.YZ, 1), (SphereSample(MATERIAL_DS, 0.5), Perspective.XY, 1), (SphereSample(MATERIAL_DS, 0.5), Perspective.XZ, 1), (SphereSample(MATERIAL_DS, 0.5), Perspective.YZ, 1), ], ) def test_samplefigure_draw_sample(samplefigure, ax, sample, perspective, expected_path_count): samplefigure.sample = sample samplefigure.perspective = perspective samplefigure.draw(ax) assert len(ax.collections) == 1 assert len(ax.collections[0]._paths) == expected_path_count
def test_compose_sample_sphere(self): sample = SphereSample(self.mat_au, 0.5) self._compose_sample(sample, (1, 1, 1))
async def test_exporter_sphere(event_loop, exporter, options, tmp_path, dry_run): mat1 = Material("Mat1", {79: 0.5, 47: 0.5}, 2.0) options.sample = SphereSample(mat1, 250e-6) await exporter.export(options, tmp_path, dry_run=dry_run) _test_export(tmp_path, 1, 1, dry_run)
def plot(self): tilt_rad = math.radians(self._slider_tilt_deg.value()) rotation_rad = math.radians(self._slider_rotation_deg.value()) layer = [ Layer(RE, 10e-9), Layer(OS, 15e-9), Layer(IR, 20e-9), Layer(PT, 5e-9) ] sample_cls = self._combo_sample.currentData() if sample_cls == SubstrateSample: sample = SubstrateSample(DS, tilt_rad=tilt_rad, rotation_rad=rotation_rad) elif sample_cls == InclusionSample: sample = InclusionSample(DS, AU, 0.5e-6, tilt_rad=tilt_rad, rotation_rad=rotation_rad) elif sample_cls == HorizontalLayerSample: sample = HorizontalLayerSample(DS, layer, tilt_rad=tilt_rad, rotation_rad=rotation_rad) elif sample_cls == VerticalLayerSample: sample = VerticalLayerSample(DS, RG, layer, tilt_rad=tilt_rad, rotation_rad=rotation_rad) elif sample_cls == SphereSample: sample = SphereSample(AU, 0.5e-6, tilt_rad=tilt_rad, rotation_rad=rotation_rad) else: sample = None beam_cls = self._combo_beam.currentData() if beam_cls == GaussianBeam: beams = [GaussianBeam(42.0, 5e-9)] else: beams = [] # trajectory_cls = self._combo_trajectory.currentData() # TODO handle trajectories trajectories = [] sf = SampleFigure(sample, beams, trajectories) if self.radio_yz.isChecked(): sf.perspective = Perspective.YZ elif self.radio_xy.isChecked(): sf.perspective = Perspective.XY else: sf.perspective = Perspective.XZ self._figure.clf() ax = self._figure.add_subplot(111) ax.xaxis.set_visible(False) ax.yaxis.set_visible(False) sf.draw(ax) scalebar = ScaleBar(1.0, location="lower left") ax.add_artist(scalebar) self._canvas.draw_idle()
def testvalidate_sample_sphere(self): sample = SphereSample(COPPER, 1.0) sample2 = self.v.validate_sample(sample, self.options) self.assertEqual(sample2, sample) self.assertIsNot(sample2, sample)