Source code for falass.test.test_compare

from numpy.testing import assert_almost_equal
from falass import compare, dataformat, reflect
import numpy as np
import unittest

[docs]class TestCompare(unittest.TestCase):
[docs] def test_compare(self): data1 = dataformat.QData(0.05, 3., 0.3, 0.05 * 0.05) data2 = dataformat.QData(0.25, 2., 0.2, 0.05 * 0.25) data3 = dataformat.QData(0.50, 1., 0.1, 0.05 * 0.50) data = [data1, data2, data3] sdata1 = dataformat.QData(0.05, 1., 0.1, 0.05 * 0.05) sdata2 = dataformat.QData(0.25, 2., 0.2, 0.05 * 0.25) sdata3 = dataformat.QData(0.50, 3., 0.3, 0.05 * 0.50) sdata = [sdata1, sdata2, sdata3] a = compare.Compare(data, sdata, 1., 0.) assert_almost_equal(a.exp_data[0].q, 0.05) assert_almost_equal(a.exp_data[0].i, 3.) assert_almost_equal(a.exp_data[0].di, 0.3) assert_almost_equal(a.exp_data[0].dq, 0.05 * 0.05) assert_almost_equal(a.exp_data[1].q, 0.25) assert_almost_equal(a.exp_data[1].i, 2.) assert_almost_equal(a.exp_data[1].di, 0.2) assert_almost_equal(a.exp_data[1].dq, 0.05 * 0.25) assert_almost_equal(a.exp_data[2].q, 0.50) assert_almost_equal(a.exp_data[2].i, 1.) assert_almost_equal(a.exp_data[2].di, 0.1) assert_almost_equal(a.exp_data[2].dq, 0.05 * 0.50) assert_almost_equal(a.sim_data[0].q, 0.05) assert_almost_equal(a.sim_data[0].i, 1.) assert_almost_equal(a.sim_data[0].di, 0.1) assert_almost_equal(a.sim_data[0].dq, 0.05 * 0.05) assert_almost_equal(a.sim_data[1].q, 0.25) assert_almost_equal(a.sim_data[1].i, 2.) assert_almost_equal(a.sim_data[1].di, 0.2) assert_almost_equal(a.sim_data[1].dq, 0.05 * 0.25) assert_almost_equal(a.sim_data[2].q, 0.50) assert_almost_equal(a.sim_data[2].i, 3.) assert_almost_equal(a.sim_data[2].di, 0.3) assert_almost_equal(a.sim_data[2].dq, 0.05 * 0.50) assert_almost_equal(a.scale, 1.) assert_almost_equal(a.background, 0.)
[docs] def test_fit_noq(self): data11 = dataformat.QData(0.05, 0.1, 0., 0.05 * 0.05) data12 = dataformat.QData(0.25, 0.05, 0., 0.05 * 0.25) data13 = dataformat.QData(0.50, 0.01, 0., 0.05 * 0.50) data1 = [data11, data12, data13] data21 = dataformat.QData(0.05, 0.12, 0., 0.05 * 0.05) data22 = dataformat.QData(0.25, 0.03, 0., 0.05 * 0.25) data23 = dataformat.QData(0.50, 0.015, 0., 0.05 * 0.50) data2 = [data21, data22, data23] data31 = dataformat.QData(0.05, 0.14, 0., 0.05 * 0.05) data32 = dataformat.QData(0.25, 0.07, 0., 0.05 * 0.25) data33 = dataformat.QData(0.50, 0.005, 0., 0.05 * 0.50) data3 = [data31, data32, data33] layer1 = dataformat.SLDPro(1., 0., 0.) layer2 = dataformat.SLDPro(1., 5., 0.) sld = [[layer1, layer2]] ddata1 = dataformat.QData(0.05, 0., 0., 0.05 * 0.05) ddata2 = dataformat.QData(0.25, 0., 0., 0.05 * 0.25) ddata3 = dataformat.QData(0.50, 0., 0., 0.05 * 0.50) ddata = [ddata1, ddata2, ddata3] a = reflect.Reflect(sld, ddata) a.reflect = [data1, data2, data3] a.average_ref() ddata = [] k = compare.Compare(ddata, a.averagereflect, 1, 0) with self.assertRaises(ValueError) as context: k.fit() self.assertTrue('No q vectors have been defined -- either read a .dat file or get q vectors.' in str(context.exception))
[docs] def test_fit_noi(self): data11 = dataformat.QData(0.05, 0.1, 0., 0.05 * 0.05) data12 = dataformat.QData(0.25, 0.05, 0., 0.05 * 0.25) data13 = dataformat.QData(0.50, 0.01, 0., 0.05 * 0.50) data1 = [data11, data12, data13] data21 = dataformat.QData(0.05, 0.12, 0., 0.05 * 0.05) data22 = dataformat.QData(0.25, 0.03, 0., 0.05 * 0.25) data23 = dataformat.QData(0.50, 0.015, 0., 0.05 * 0.50) data2 = [data21, data22, data23] data31 = dataformat.QData(0.05, 0.14, 0., 0.05 * 0.05) data32 = dataformat.QData(0.25, 0.07, 0., 0.05 * 0.25) data33 = dataformat.QData(0.50, 0.005, 0., 0.05 * 0.50) data3 = [data31, data32, data33] layer1 = dataformat.SLDPro(1., 0., 0.) layer2 = dataformat.SLDPro(1., 5., 0.) sld = [[layer1, layer2]] ddata1 = dataformat.QData(0.05, 0., 0., 0.05 * 0.05) ddata2 = dataformat.QData(0.25, 0., 0., 0.05 * 0.25) ddata3 = dataformat.QData(0.50, 0., 0., 0.05 * 0.50) ddata = [ddata1, ddata2, ddata3] a = reflect.Reflect(sld, ddata) a.reflect = [data1, data2, data3] a.average_ref() ddata1 = dataformat.QData(0.05, None, 0., 0.05 * 0.05) ddata2 = dataformat.QData(0.25, 0., 0., 0.05 * 0.25) ddata3 = dataformat.QData(0.50, 0., 0., 0.05 * 0.50) ddata = [ddata1, ddata2, ddata3] k = compare.Compare(ddata, a.averagereflect, 1, 0) with self.assertRaises(ValueError) as context: k.fit() self.assertTrue('No experimental data has been set for comparison, please read in a a .dat file.' in str(context.exception))
[docs] def test_return_fitted(self): data1 = dataformat.QData(0.05, 3., 0.3, 0.05 * 0.05) data2 = dataformat.QData(0.25, 2., 0.2, 0.05 * 0.25) data3 = dataformat.QData(0.50, 1., 0.1, 0.05 * 0.50) data = [data1, data2, data3] sdata1 = dataformat.QData(0.05, 1., 0.1, 0.05 * 0.05) sdata2 = dataformat.QData(0.25, 2., 0.2, 0.05 * 0.25) sdata3 = dataformat.QData(0.50, 3., 0.3, 0.05 * 0.50) sdata = [sdata1, sdata2, sdata3] a = compare.Compare(data, sdata, 2., 0.) a.return_fitted() assert_almost_equal(a.sim_data_fitted[0].i, 2.) assert_almost_equal(a.sim_data_fitted[1].i, 4.) assert_almost_equal(a.sim_data_fitted[2].i, 6.) assert_almost_equal(a.sim_data_fitted[0].di, 0.2) assert_almost_equal(a.sim_data_fitted[1].di, 0.4) assert_almost_equal(a.sim_data_fitted[2].di, 0.6)
[docs] def test_scale_and_background(self): a = np.array([1., 2., 3.]) scale = 2. background = 1. b = compare.scale_and_background(a, scale, background) assert_almost_equal(b[0], 3) assert_almost_equal(b[1], 5) assert_almost_equal(b[2], 7)