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))
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))
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)
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)
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)
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)