source: sasview/test/sasfit/test/utest_multiplicative_model.py @ b699768

ESS_GUIESS_GUI_DocsESS_GUI_batch_fittingESS_GUI_bumps_abstractionESS_GUI_iss1116ESS_GUI_iss879ESS_GUI_iss959ESS_GUI_openclESS_GUI_orderingESS_GUI_sync_sascalccostrafo411magnetic_scattrelease-4.1.1release-4.1.2release-4.2.2release_4.0.1ticket-1009ticket-1094-headlessticket-1242-2d-resolutionticket-1243ticket-1249ticket885unittest-saveload
Last change on this file since b699768 was b699768, checked in by Piotr Rozyczko <piotr.rozyczko@…>, 8 years ago

Initial commit of the refactored SasCalc? module.

  • Property mode set to 100644
File size: 2.1 KB
Line 
1"""
2    Unit tests for fitting module
3    @author: G. Alina
4"""
5import unittest
6import math
7
8from sas.sascalc.dataloader.data_info import Data1D
9from sas.sascalc.fit.AbstractFitEngine import Model,FitData1D
10from sas.sascalc.fit.BumpsFitting import BumpsFit as Fit
11from sas.sascalc.dataloader.loader import Loader
12from sas.models.MultiplicationModel import MultiplicationModel
13from sas.models.CylinderModel import CylinderModel
14from sas.models.SquareWellStructure import SquareWellStructure
15
16class testFitModule(unittest.TestCase):
17    """ test fitting """
18   
19       
20    def test_cyl_times_square(self):
21        """ Simple cylinder model fit  """
22       
23        out=Loader().load("cyl_400_20.txt")
24        data = Data1D(x=out.x, y=out.y, dx=out.dx, dy=out.dy)
25        # Receives the type of model for the fitting
26        model1  =  MultiplicationModel(CylinderModel(),SquareWellStructure())
27        model1.setParam('background', 0.0)
28        model1.setParam('sldCyl', 3e-006)
29        model1.setParam('sldSolv', 0.0)
30        model1.setParam('length', 420)
31        model1.setParam('radius', 40)
32        model1.setParam('scale_factor', 2)
33        model1.setParam('volfraction', 0.04)
34        model1.setParam('welldepth', 1.5)
35        model1.setParam('wellwidth', 1.2)
36     
37        model = Model(model1)
38   
39        pars1 =['length','radius','scale_factor']
40        fitter = Fit()
41        fitter.set_data(data,1)
42        fitter.set_model(model,1,pars1)
43        fitter.select_problem_for_fit(id=1,value=1)
44        result1, = fitter.fit()
45
46        self.assert_(result1)
47        self.assertTrue(len(result1.pvec)>=0 )
48        self.assertTrue(len(result1.stderr)>= 0)
49
50        #print "results",list(zip(result1.pvec, result1.stderr))
51        self.assertTrue( math.fabs(result1.pvec[0]-612)/3.0 <= result1.stderr[0] )
52        self.assertTrue( math.fabs(result1.pvec[1]-20.3)/3.0  <= result1.stderr[1] )
53        self.assertTrue( math.fabs(result1.pvec[2]-25)/3.0 <= result1.stderr[2] )
54       
55        self.assertTrue( result1.fitness/len(data.x) < 1.0 )
56       
57       
58if __name__ == '__main__':
59    unittest.main() 
Note: See TracBrowser for help on using the repository browser.