Changeset 76f132a in sasview for test/park_integration


Ignore:
Timestamp:
May 8, 2014 4:19:29 PM (11 years ago)
Author:
pkienzle
Branches:
master, ESS_GUI, ESS_GUI_Docs, ESS_GUI_batch_fitting, ESS_GUI_bumps_abstraction, ESS_GUI_iss1116, ESS_GUI_iss879, ESS_GUI_iss959, ESS_GUI_opencl, ESS_GUI_ordering, ESS_GUI_sync_sascalc, costrafo411, magnetic_scatt, release-4.1.1, release-4.1.2, release-4.2.2, release_4.0.1, ticket-1009, ticket-1094-headless, ticket-1242-2d-resolution, ticket-1243, ticket-1249, ticket885, unittest-saveload
Children:
e3efa6b3
Parents:
8d074d9
Message:

test resolution and dispersion

Location:
test/park_integration/test
Files:
2 edited
1 moved

Legend:

Unmodified
Added
Removed
  • test/park_integration/test/utest_fit_line.py

    r95d58d3 r76f132a  
    3030        except ValueError,exc: 
    3131            #print "ValueError was correctly raised: "+str(msg) 
    32             assert str(exc).startswith('wrong parameter') 
     32            assert str(exc).startswith('parameter param1') 
    3333        else: 
    3434            raise AssertionError("No error raised for scipy fitting with wrong parameters name to fit") 
     
    5454        # The target values were generated from the following statements 
    5555        p,s,fx = result1.pvec, result1.stderr, result1.fitness 
    56         #print "p0,p1,s0,s1,fx_ = %g, %g, %g, %g, %g"%(p[0],p[1],s[0],s[1],fx) 
     56        #print "p0,p1,s0,s1,fx = %g, %g, %g, %g, %g"%(p[0],p[1],s[0],s[1],fx) 
    5757        p0,p1,s0,s1,fx_ = 3.68353, 2.61004, 0.336186, 0.105244, 1.20189 
    5858 
     
    6565            self.assertTrue( abs(p[0]-p0) <= 1e-5 ) 
    6666            self.assertTrue( abs(p[1]-p1) <= 1e-5 ) 
    67             self.assertTrue( abs(fx-fx_) <= 1e-2 ) 
     67            self.assertTrue( abs(fx-fx_) <= 1e-5 ) 
    6868 
    6969    def fit_bumps(self, alg, **opts): 
  • test/park_integration/test/utest_fit_smeared.py

    r6c00702 r76f132a  
    2121        out=Loader().load("cyl_400_20.txt") 
    2222        # This data file has not error, add them 
    23         out.dy = out.y 
     23        #out.dy = out.y 
    2424         
    2525        fitter = Fit('scipy') 
     
    2828        # Receives the type of model for the fitting 
    2929        model1  = CylinderModel() 
    30         model1.setParam('sldCyl', 3.0e-6) 
    31         model1.setParam('sldSolv', 0.0) 
     30        model1.setParam("scale", 1.0) 
     31        model1.setParam("radius",18) 
     32        model1.setParam("length", 397) 
     33        model1.setParam("sldCyl",3e-006 ) 
     34        model1.setParam("sldSolv",0.0 ) 
     35        model1.setParam("background", 0.0) 
    3236        model = Model(model1) 
    33         model.set(scale=1e-10) 
    3437        pars1 =['length','radius','scale'] 
    3538        fitter.set_model(model,1,pars1) 
     
    3841        fitter.select_problem_for_fit(id=1,value=1) 
    3942        result1, = fitter.fit() 
    40          
     43        #print "result1",result1 
     44 
    4145        self.assert_(result1) 
    42         self.assertTrue(len(result1.pvec)>0 or len(result1.pvec)==0 ) 
    43         self.assertTrue(len(result1.stderr)> 0 or len(result1.stderr)==0) 
     46        self.assertTrue(len(result1.pvec) > 0) 
     47        self.assertTrue(len(result1.stderr) > 0) 
    4448         
    4549        self.assertTrue( math.fabs(result1.pvec[0]-400.0)/3.0 < result1.stderr[0] ) 
    4650        self.assertTrue( math.fabs(result1.pvec[1]-20.0)/3.0  < result1.stderr[1] ) 
    47         self.assertTrue( math.fabs(result1.pvec[2]-9.0e-12)/3.0   < result1.stderr[2] ) 
     51        self.assertTrue( math.fabs(result1.pvec[2]-1)/3.0   < result1.stderr[2] ) 
    4852        self.assertTrue( result1.fitness < 1.0 ) 
    49          
     53 
     54    def test_park_dispersion(self): 
     55        """ 
     56            Cylinder fit with dispersion 
     57        """ 
     58        self._dispersion(fitter = Fit('park')) 
     59 
     60    def test_bumps_dispersion(self): 
     61        """ 
     62            Cylinder fit with dispersion 
     63        """ 
     64        alg = 'amoeba' 
     65        from bumps import fitters 
     66        fitters.FIT_DEFAULT = alg 
     67        #fitters.FIT_OPTIONS[alg].options.update(opts) 
     68        fitters.FIT_OPTIONS[alg].options.update(monitors=[]) 
     69        self._dispersion(fitter = Fit('bumps')) 
     70 
    5071    def test_scipy_dispersion(self): 
    5172        """ 
    5273            Cylinder fit with dispersion 
    5374        """ 
     75        self._dispersion(fitter = Fit('scipy')) 
     76 
     77    def _dispersion(self, fitter): 
    5478        # Load data 
    5579        # This data is for a cylinder with  
     
    6084            out.dy[i] = math.sqrt(out.y[i]) 
    6185         
    62         # Set up the fit 
    63         fitter = Fit('scipy') 
    6486        # Receives the type of model for the fitting 
    6587        model1  = CylinderModel() 
    66         model1.setParam('sldCyl', 3.0e-6) 
    67         model1.setParam('sldSolv', 0.0) 
     88        model1.setParam("scale", 10.0) 
     89        model1.setParam("radius",18) 
     90        model1.setParam("length", 397) 
     91        model1.setParam("sldCyl",3e-006 ) 
     92        model1.setParam("sldSolv",0.0 ) 
     93        model1.setParam("background", 0.0) 
    6894 
    6995        # Dispersion parameters 
    70         model1.dispersion['radius']['width'] = 0.001 
    71         model1.dispersion['radius']['npts'] = 50         
    72          
     96        model1.dispersion['radius']['width'] = 0.25 
     97        model1.dispersion['radius']['npts'] = 50 
     98 
    7399        model = Model(model1) 
    74          
     100 
    75101        pars1 =['length','radius','scale','radius.width'] 
    76102        fitter.set_data(out,1) 
    77         model.set(scale=1e-10) 
    78103        fitter.set_model(model,1,pars1) 
    79104        fitter.select_problem_for_fit(id=1,value=1) 
     
    81106         
    82107        self.assert_(result1) 
    83         self.assertTrue(len(result1.pvec)>0 or len(result1.pvec)==0 ) 
    84         self.assertTrue(len(result1.stderr)> 0 or len(result1.stderr)==0) 
    85          
    86         self.assertTrue( math.fabs(result1.pvec[0]-400.0)/3.0 < result1.stderr[0] ) 
    87         self.assertTrue( math.fabs(result1.pvec[1]-20.0)/3.0  < result1.stderr[1] ) 
    88         self.assertTrue( math.fabs(result1.pvec[2]-1.0e-10)/3.0   < result1.stderr[2] ) 
    89         self.assertTrue( math.fabs(result1.pvec[3]-5.0)/3.0   < result1.stderr[3] ) 
     108        self.assertTrue(len(result1.pvec)>0) 
     109        self.assertTrue(len(result1.stderr)>0) 
     110 
     111        self.assertTrue( math.fabs(result1.pvec[0]-399.8)/3.0 < result1.stderr[0] ) 
     112        self.assertTrue( math.fabs(result1.pvec[1]-17.5)/3.0  < result1.stderr[1] ) 
     113        self.assertTrue( math.fabs(result1.pvec[2]-11.1)/3.0   < result1.stderr[2] ) 
     114        self.assertTrue( math.fabs(result1.pvec[3]-0.276)/3.0   < result1.stderr[3] ) 
    90115        self.assertTrue( result1.fitness < 1.0 ) 
    91116         
     
    98123    """ 
    99124    def setUp(self): 
    100         print "TEST DONE WITHOUT PROPER OUTPUT CHECK:" 
    101         print "   ---> TEST NEEDS TO BE COMPLETED" 
    102125        data = Loader().load("latex_smeared.xml") 
    103126        self.data_res = data[0] 
     
    105128         
    106129        self.sphere = SphereModel() 
     130        self.sphere.setParam('background', 0) 
    107131        self.sphere.setParam('radius', 5000.0) 
    108         self.sphere.setParam('scale', 1.0e-13) 
    109         self.sphere.setParam('radius.npts', 30) 
    110         self.sphere.setParam('radius.width',500) 
    111          
     132        self.sphere.setParam('scale', 0.4) 
     133        self.sphere.setParam('sldSolv',0) 
     134        self.sphere.setParam('sldSph',1e-6) 
     135        #self.sphere.setParam('radius.npts', 30) 
     136        #self.sphere.setParam('radius.width',50) 
     137 
    112138    def test_reso(self): 
    113139 
     
    125151        fitter.set_data(self.data_res,1) 
    126152        fitter._engine.fit_arrange_dict[1].data_list[0].smearer = smear 
    127         print "smear ",smear 
     153 
    128154        # Model: maybe there's a better way to do this. 
    129155        # Ideally we should have to create a new model from our sans model. 
    130         fitter.set_model(Model(self.sphere),1, ['radius','scale']) 
     156        fitter.set_model(Model(self.sphere),1, ['radius','scale', 'background']) 
    131157         
    132158        # Why do we have to do this...? 
    133159        fitter.select_problem_for_fit(id=1,value=1) 
    134          
     160 
    135161        # Perform the fit (might take a while) 
    136162        result1, = fitter.fit() 
    137163         
    138         # Replace this with proper test once we know what the 
    139         # result should be  
    140         print result1.pvec 
    141         print result1.stderr 
    142          
     164        #print "v",result1.pvec 
     165        #print "dv",result1.stderr 
     166        #print "chisq(v)",result1.fitness 
     167 
     168        self.assertTrue( math.fabs(result1.pvec[0]-5000) < 20 ) 
     169        self.assertTrue( math.fabs(result1.pvec[1]-0.48) < 0.02 ) 
     170        self.assertTrue( math.fabs(result1.pvec[2]-0.060)  < 0.002 ) 
     171 
     172 
    143173    def test_slit(self): 
    144174        smear = smear_selection(self.data_slit) 
    145175        self.assertEqual(smear.__class__.__name__, 'SlitSmearer') 
    146176 
    147         # Fit 
    148177        fitter = Fit('scipy') 
    149178         
     
    161190        result1, = fitter.fit() 
    162191         
    163         # Replace this with proper test once we know what the 
    164         # result should be  
    165         print result1.pvec 
    166         print result1.stderr 
    167          
    168         
    169         
     192        #print "v",result1.pvec 
     193        #print "dv",result1.stderr 
     194        #print "chisq(v)",result1.fitness 
     195         
     196        self.assertTrue( math.fabs(result1.pvec[0]-2340) < 20 ) 
     197        self.assertTrue( math.fabs(result1.pvec[1]-0.010) < 0.002 ) 
     198 
    170199if __name__ == '__main__': 
    171200    unittest.main() 
  • test/park_integration/test/utest_small_test.py

    r4de1fed r76f132a  
    2727        fitter.select_problem_for_fit(id=1,value=1) 
    2828        result1, = fitter.fit() 
    29          
     29        #print result1 
     30        #print result1.__dict__ 
     31 
    3032        self.assert_(result1) 
    3133        self.assertTrue(len(result1.pvec)>0 or len(result1.pvec)==0 ) 
Note: See TracChangeset for help on using the changeset viewer.