コード例 #1
0
    def test_transfer(self):
        thickness = np.linspace(0, 0.01, 16).reshape(4, 4) * q.mm
        energy = 10 * q.keV
        wavelength = physics.energy_to_wavelength(energy)
        refractive_index = 1e-6 + 1e-9j
        wavefield = physics.transfer(thickness, refractive_index, wavelength).get()

        exponent = -2 * np.pi * thickness.simplified / wavelength.simplified
        truth = np.exp(exponent * np.complex(refractive_index.imag, refractive_index.real))
        np.testing.assert_almost_equal(truth, wavefield)

        # Exponent
        wavefield = physics.transfer(thickness, refractive_index, wavelength, exponent=True).get()
        np.testing.assert_almost_equal(truth, np.exp(wavefield))
コード例 #2
0
ファイル: test_physics.py プロジェクト: ufo-kit/syris
    def test_transfer(self):
        thickness = np.linspace(0, 0.01, 16).reshape(4, 4) * q.mm
        energy = 10 * q.keV
        wavelength = physics.energy_to_wavelength(energy)
        refractive_index = 1e-6 + 1e-9j
        wavefield = physics.transfer(thickness, refractive_index, wavelength).get()

        exponent = - 2 * np.pi * thickness.simplified / wavelength.simplified
        truth = np.exp(exponent * np.complex(refractive_index.imag, refractive_index.real))
        np.testing.assert_almost_equal(truth, wavefield)

        # Exponent
        wavefield = physics.transfer(thickness, refractive_index, wavelength, exponent=True).get()
        np.testing.assert_almost_equal(truth, np.exp(wavefield))
コード例 #3
0
ファイル: base.py プロジェクト: ufo-kit/syris
    def _transfer(
        self,
        shape,
        pixel_size,
        energy,
        offset,
        exponent=False,
        t=None,
        queue=None,
        out=None,
        check=True,
        block=False,
    ):
        """Transfer function implementation based on a refractive index."""
        ri = self.material.get_refractive_index(energy)
        lam = energy_to_wavelength(energy)
        proj = self.project(shape,
                            pixel_size,
                            offset=offset,
                            t=t,
                            queue=queue,
                            out=out,
                            block=block)

        return transfer(proj,
                        ri,
                        lam,
                        exponent=exponent,
                        queue=queue,
                        out=out,
                        check=check,
                        block=block)
コード例 #4
0
 def test_transfer(self):
     go = StaticBody(np.arange(4 ** 2).reshape(4, 4) * q.um, 1 * q.um, material=self.material)
     transferred = go.transfer((4, 4), 1 * q.um, self.energy).get()
     gt = transfer(
         go.thickness,
         self.material.get_refractive_index(self.energy),
         energy_to_wavelength(self.energy),
     ).get()
     np.testing.assert_almost_equal(gt, transferred)
コード例 #5
0
ファイル: base.py プロジェクト: ufo-kit/syris
    def _transfer(self, shape, pixel_size, energy, offset, exponent=False, t=None,
                  queue=None, out=None, check=True, block=False):
        """Transfer function implementation based on a refractive index."""
        ri = self.material.get_refractive_index(energy)
        lam = energy_to_wavelength(energy)
        proj = self.project(shape, pixel_size, offset=offset, t=t, queue=queue,
                            out=out, block=block)

        return transfer(proj, ri, lam, exponent=exponent, queue=queue, out=out,
                        check=check, block=block)
コード例 #6
0
ファイル: test_opticalelements.py プロジェクト: ufo-kit/syris
 def test_transfer(self):
     go = StaticBody(np.arange(4 ** 2).reshape(4, 4) * q.um, 1 * q.um, material=self.material)
     transferred = go.transfer((4, 4), 1 * q.um, self.energy).get()
     gt = transfer(go.thickness, self.material.get_refractive_index(self.energy),
                   energy_to_wavelength(self.energy)).get()
     np.testing.assert_almost_equal(gt, transferred)