Source code for falass.test.test_sld

from numpy.testing import assert_equal, assert_almost_equal
from falass import readwrite, job, sld, dataformat
import os
import unittest


[docs]class TestSLD(unittest.TestCase):
[docs] def test_sld(self): self.path = os.path.dirname(os.path.abspath(__file__)) a = readwrite.Files(os.path.join(self.path, 'test.pdb'), lgtfile=os.path.join(self.path, 'test.lgt'), datfile=os.path.join(self.path, 'test3.dat')) a.read_pdb() a.read_lgt() a.read_dat() b = job.Job(a, 1., 5.) b.set_times(times = [0., 20000., 10000.]) b.set_lgts() c = sld.SLD(b) assert_equal(len(c.assigned_job.files.times), 6) assert_equal(c.assigned_job.files.times, [0, 10000., 20000., 30000., 40000., 50000.]) assert_equal(len(c.assigned_job.times), 3) assert_equal(c.assigned_job.times, [0, 10000., 20000.]) assert_equal(c.assigned_job.layer_thickness, 1.) assert_equal(c.assigned_job.cut_off_size, 5.) return
[docs] def test_set_sld_profile(self): c = None a = dataformat.SLDPro(5., 5., 0.) b = dataformat.SLDPro(5., 0., 0.) slda = [a, b] a = sld.SLD(c) a.set_sld_profile(slda) assert_almost_equal(a.sld_profile[0].thick, 5.) assert_almost_equal(a.sld_profile[0].real, 5.) assert_almost_equal(a.sld_profile[0].imag, 0.) assert_almost_equal(a.sld_profile[1].thick, 5.) assert_almost_equal(a.sld_profile[1].real, 0.) assert_almost_equal(a.sld_profile[1].imag, 0.) return
[docs] def test_set_av_sld_profile(self): c = None a = dataformat.SLDPro(5., 5., 0.) b = dataformat.SLDPro(5., 0., 0.) slda = [a, b] a = dataformat.SLDPro(5., 2., 0.) b = dataformat.SLDPro(5., 0., 0.) slda_err = [a, b] a = sld.SLD(c) a.set_av_sld_profile(slda, slda_err) assert_almost_equal(a.av_sld_profile[0].thick, 5.) assert_almost_equal(a.av_sld_profile[0].real, 5.) assert_almost_equal(a.av_sld_profile[0].imag, 0.) assert_almost_equal(a.av_sld_profile[1].thick, 5.) assert_almost_equal(a.av_sld_profile[1].real, 0.) assert_almost_equal(a.av_sld_profile[1].imag, 0.) assert_almost_equal(a.av_sld_profile_err[0].thick, 5.) assert_almost_equal(a.av_sld_profile_err[0].real, 2.) assert_almost_equal(a.av_sld_profile_err[0].imag, 0.) assert_almost_equal(a.av_sld_profile_err[1].thick, 5.) assert_almost_equal(a.av_sld_profile_err[1].real, 0.) assert_almost_equal(a.av_sld_profile_err[1].imag, 0.) return
[docs] def test_get_sld_profile(self): self.path = os.path.dirname(os.path.abspath(__file__)) a = readwrite.Files(os.path.join(self.path, 'test.pdb'), lgtfile=os.path.join(self.path, 'test.lgt'), datfile=os.path.join(self.path, 'test3.dat')) a.read_pdb() a.read_lgt() a.read_dat() b = job.Job(a, 1., 0.) b.set_times(times=[0., 20000., 10000.]) b.set_lgts() c = sld.SLD(b) c.get_sld_profile() assert_equal(len(c.sld_profile), 3) for i in range(0, len(c.sld_profile)): assert_equal(len(c.sld_profile[i]), 4) assert_almost_equal(c.sld_profile[0][0].thick, 1.) assert_almost_equal(c.sld_profile[0][0].real, 0.) assert_almost_equal(c.sld_profile[0][0].imag, 0.) assert_almost_equal(c.sld_profile[0][1].thick, 1.) assert_almost_equal(c.sld_profile[0][1].real, 1e-5) assert_almost_equal(c.sld_profile[0][1].imag, 0.) assert_almost_equal(c.sld_profile[0][2].thick, 1.) assert_almost_equal(c.sld_profile[0][2].real, 2e-5) assert_almost_equal(c.sld_profile[0][2].imag, 1e-5) assert_almost_equal(c.sld_profile[0][3].thick, 1.) assert_almost_equal(c.sld_profile[0][3].real, 3e-5) assert_almost_equal(c.sld_profile[0][3].imag, 2e-5) assert_almost_equal(c.sld_profile[1][0].thick, 1.) assert_almost_equal(c.sld_profile[1][0].real, 0. / 2.) assert_almost_equal(c.sld_profile[1][0].imag, 0. / 2.) assert_almost_equal(c.sld_profile[1][1].thick, 1.) assert_almost_equal(c.sld_profile[1][1].real, 2e-5 / 2.) assert_almost_equal(c.sld_profile[1][1].imag, 1e-5 / 2.) assert_almost_equal(c.sld_profile[1][2].thick, 1.) assert_almost_equal(c.sld_profile[1][2].real, 3e-5 / 2.) assert_almost_equal(c.sld_profile[1][2].imag, 2e-5 / 2.) assert_almost_equal(c.sld_profile[1][3].thick, 1.) assert_almost_equal(c.sld_profile[1][3].real, 1e-5 / 2.) assert_almost_equal(c.sld_profile[1][3].imag, 0 / 2.) assert_almost_equal(c.sld_profile[2][0].thick, 1.) assert_almost_equal(c.sld_profile[2][0].real, 0. / 3.) assert_almost_equal(c.sld_profile[2][0].imag, 0. / 3.) assert_almost_equal(c.sld_profile[2][1].thick, 1.) assert_almost_equal(c.sld_profile[2][1].real, 3e-5 / 3.) assert_almost_equal(c.sld_profile[2][1].imag, 2e-5 / 3.) assert_almost_equal(c.sld_profile[2][2].thick, 1.) assert_almost_equal(c.sld_profile[2][2].real, 1e-5 / 3.) assert_almost_equal(c.sld_profile[2][2].imag, 0 / 3.) assert_almost_equal(c.sld_profile[2][3].thick, 1.) assert_almost_equal(c.sld_profile[2][3].real, 2e-5 / 3.) assert_almost_equal(c.sld_profile[2][3].imag, 1e-5 / 3.) return
[docs] def test_average_sld_profile(self): self.path = os.path.dirname(os.path.abspath(__file__)) a = readwrite.Files(os.path.join(self.path, 'test.pdb'), lgtfile=os.path.join(self.path, 'test.lgt'), datfile=os.path.join(self.path, 'test3.dat')) a.read_pdb() a.read_lgt() a.read_dat() b = job.Job(a, 1., 0.) b.set_times(times=[0., 20000., 10000.]) b.set_lgts() c = sld.SLD(b) c.get_sld_profile() c.average_sld_profile() assert_equal(len(c.av_sld_profile), 4) assert_almost_equal(c.av_sld_profile[0].real, 0.) assert_almost_equal(c.av_sld_profile[0].imag, 0.) assert_almost_equal(c.av_sld_profile[1].real, (1e-5 + (2e-5 / 2.) + (3e-5 / 3.)) / 3.) assert_almost_equal(c.av_sld_profile[1].imag, (0 + (1e-5 / 2.) + (2e-5 / 3.)) / 3.) assert_almost_equal(c.av_sld_profile[2].real, (2e-5 + (3e-5 / 2.) + (1e-5 / 3.)) / 3.) assert_almost_equal(c.av_sld_profile[2].imag, ((1e-5) + (2e-5 / 2.) + (0 / 3.)) / 3.) assert_almost_equal(c.av_sld_profile[3].real, (3e-5 + (1e-5 / 2.) + (2e-5 / 3.)) / 3.) assert_almost_equal(c.av_sld_profile[3].imag, ((2e-5) + (0 / 2.) + (1e-5 / 3.)) / 3.) return
[docs] def test_get_scatlen(self): atom1 = dataformat.ScatLens('C1', 1.0, 0.0) atom2 = dataformat.ScatLens('C2', 2.0, 1.0) atom3 = dataformat.ScatLens('C3', 3.0, 2.0) array = [atom1, atom2, atom3] real, imag = sld.get_scatlen('C3', array) assert_almost_equal(real, 3.0e-5) assert_almost_equal(imag, 2.0e-5) return
[docs] def test_get_scatlen_fail(self): atom1 = dataformat.ScatLens('C1', 1.0, 0.0) atom2 = dataformat.ScatLens('C2', 2.0, 1.0) atom3 = dataformat.ScatLens('C3', 3.0, 2.0) array = [atom1, atom2, atom3] with self.assertRaises(ValueError) as context: sld.get_scatlen('C4', array) self.assertTrue("Attempt to get the scattering length of the atom type {} failed. This should never " "happen. Please contact the developers".format('C4') in str(context.exception)) return