Skip to content
Snippets Groups Projects
Forked from empyre / empyre
382 commits behind the upstream repository.
test_phasemapper.py 2.79 KiB
# -*- coding: utf-8 -*-
"""Testcase for the phasemapper module."""


import os
import unittest
import numpy as np

import pyramid.phasemapper as pm


class TestCasePhaseMapper(unittest.TestCase):

    def setUp(self):
        self.path = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'test_phasemapper')
        self.projection = (np.zeros((4, 4)), np.zeros((4, 4)), np.zeros((4, 4)))
        self.projection[0][1:-1, 1:-1] = 1
        self.projection[1][1:-1, 1:-1] = 1
        self.projection[2][1:-1, 1:-1] = 1
        self.res = 10.0

    def tearDown(self):
        self.path = None
        self.projection = None

    def test_phase_mag_fourier(self):
        phase = pm.phase_mag_fourier(self.res, self.projection, padding=10)
        reference = np.load(os.path.join(self.path, 'ref_phase_mag_fft.npy'))
        np.testing.assert_almost_equal(phase, reference, 7,
                                       'Unexpected behavior in phase_mag_fourier()')

    def test_phase_mag_real(self):
        phase_slab = pm.phase_mag_real(self.res, self.projection, method='slab')
        phase_disc = pm.phase_mag_real(self.res, self.projection, method='disc')
        ref_slab = np.load(os.path.join(self.path, 'ref_phase_mag_slab.npy'))
        ref_disc = np.load(os.path.join(self.path, 'ref_phase_mag_disc.npy'))
        np.testing.assert_almost_equal(phase_slab, ref_slab, 7,
                                       'Unexpected behavior in phase_mag_real() (slab)')
        np.testing.assert_almost_equal(phase_disc, ref_disc, 7,
                                       'Unexpected behavior in phase_mag_real() (disc)')

    def test_phase_mag_real_conv(self):
        phase_slab = pm.phase_mag_real_conv(self.res, self.projection, method='slab')
        phase_disc = pm.phase_mag_real_conv(self.res, self.projection, method='disc')
        ref_slab = np.load(os.path.join(self.path, 'ref_phase_mag_slab.npy'))
        ref_disc = np.load(os.path.join(self.path, 'ref_phase_mag_disc.npy'))
        np.testing.assert_almost_equal(phase_slab, ref_slab, 7,
                                       'Unexpected behavior in phase_mag_real_conv() (slab)')
        np.testing.assert_almost_equal(phase_disc, ref_disc, 7,
                                       'Unexpected behavior in phase_mag_real_conv() (disc)')

    def test_phase_elec(self):
        phase = pm.phase_elec(self.res, self.projection, v_0=1, v_acc=30000)
        reference = np.load(os.path.join(self.path, 'ref_phase_elec.npy'))
        np.testing.assert_almost_equal(phase, reference, 7,
                                       'Unexpected behavior in phase_elec()')


if __name__ == '__main__':
    suite = unittest.TestLoader().loadTestsFromTestCase(TestCasePhaseMapper)
    unittest.TextTestRunner(verbosity=2).run(suite)