コード例 #1
0
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
コード例 #2
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))
コード例 #3
0
    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)
コード例 #4
0
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)
コード例 #5
0
        (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

コード例 #6
0
 def test_compose_sample_sphere(self):
     sample = SphereSample(self.mat_au, 0.5)
     self._compose_sample(sample, (1, 1, 1))
コード例 #7
0
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)
コード例 #8
0
    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()
コード例 #9
0
 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)