Changeset 6c00702 in sasview


Ignore:
Timestamp:
Apr 4, 2014 12:44:59 PM (10 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:
d44648e
Parents:
e6d9703
Message:

correct fitting tests so that they run (though not yet automatically)

Files:
1 added
8 edited

Legend:

Unmodified
Added
Removed
  • src/sans/fit/AbstractFitEngine.py

    rf87dc4c r6c00702  
    172172            do the following: :: 
    173173             
    174                 from DataLoader.qsmearing import smear_selection 
     174                from sans.models.qsmearing import smear_selection 
    175175                smearer = smear_selection(some_data) 
    176176                fitdata1d = FitData1D( x= [1,3,..,], 
  • test/park_integration/test/test_fit_cylinder.py

    r5777106 r6c00702  
    44""" 
    55import unittest 
     6import math 
    67 
    78from sans.fit.AbstractFitEngine import Model 
    8 import math 
    99from sans.fit.Fitting import Fit 
    10 from DataLoader.loader import Loader 
     10from sans.dataloader.loader import Loader 
    1111 
    1212class TestSingleFit(unittest.TestCase): 
     
    2121        self.model.setParam("radius",18) 
    2222        self.model.setParam("length", 397) 
    23         self.model.setParam("contrast",3e-006 ) 
     23        self.model.setParam("sldCyl",3e-006 ) 
     24        self.model.setParam("sldSolv",0.0 ) 
    2425        self.model.setParam("background", 0.0) 
    2526        #select parameters to fit 
     
    3132        fitter.set_data(self.data,1) 
    3233        fitter.set_model(self.model,1,self.pars1) 
    33         fitter.select_problem_for_fit(Uid=1,value=1) 
     34        fitter.select_problem_for_fit(id=1,value=1) 
    3435        return  fitter.fit() 
    3536        
     
    3839        """ Simple cylinder model fit (scipy)  """ 
    3940         
    40         result1 = self._fit("scipy") 
     41        result1, = self._fit("scipy") 
    4142         
    4243        self.assert_(result1) 
     
    5253    def test_park(self): 
    5354        """ Simple cylinder model fit (park)  """ 
    54         result1 = self._fit("park") 
     55        #raise NotImplementedError() 
     56        result1, = self._fit("park") 
    5557         
    5658        self.assert_(result1) 
     
    8183        self.model1.set(radius=18) 
    8284        self.model1.set(length=396) 
    83         self.model1.set(contrast=3e-006 ) 
     85        self.model1.set(sldCyl=3e-006, sldSolv=0.0) 
    8486        self.model1.set(background=0.0) 
    8587         
     
    9092        self.model2.set(radius=37) 
    9193        self.model2.set(length='C1.length') 
    92         self.model2.set(contrast=3e-006 ) 
     94        self.model2.set(sldCyl=3e-006, sldSolv=0.0) 
    9395        self.model2.set(background=0.0) 
    9496        
     
    101103        fitter.set_data(self.data2,2) 
    102104        fitter.set_model(self.model2, 2, ['radius','scale']) 
    103         fitter.select_problem_for_fit(Uid=1,value=1) 
    104         fitter.select_problem_for_fit(Uid=2,value=1) 
     105        fitter.select_problem_for_fit(id=1,value=1) 
     106        fitter.select_problem_for_fit(id=2,value=1) 
    105107        return fitter.fit() 
    106108     
     
    108110    def test_park2(self): 
    109111        """ Simultaneous cylinder model fit (park)  """ 
    110          
    111         result1= self._fit('park') 
     112        #raise NotImplementedError() 
     113        result1,= self._fit('park') 
    112114        self.assert_(result1) 
    113115        self.assertTrue(len(result1.pvec)>=0  ) 
  • test/park_integration/test/test_fit_line.py

    r5777106 r6c00702  
    66 
    77from sans.fit.AbstractFitEngine import Model 
     8from sans.dataloader.loader import Loader 
     9from sans.fit.Fitting import Fit 
     10from sans.models.LineModel import LineModel 
     11from sans.models.Constant import Constant 
     12 
    813import math 
    914class testFitModule(unittest.TestCase): 
     
    1318        """ Fit 1 data (testdata_line.txt)and 1 model(lineModel) """ 
    1419        #load data 
    15         from DataLoader.loader import Loader 
    1620        data = Loader().load("testdata_line.txt") 
    1721        #Importing the Fit module 
    18         from sans.fit.Fitting import Fit 
    1922        fitter = Fit('scipy') 
    2023        # Receives the type of model for the fitting 
    21         from sans.models.LineModel import LineModel 
    2224        model1  = LineModel() 
    2325        model1.name = "M1" 
    24         model = Model(model1) 
     26        model = Model(model1,data) 
    2527        #fit with scipy test 
    2628         
     
    2830        fitter.set_data(data,1) 
    2931        try:fitter.set_model(model,1,pars1) 
    30         except ValueError,msg: 
    31             print "ValueError was raised: "+str(msg) 
    32             #assert str(msg)=="wrong paramter %s used to set model %s. Choose\ 
    33             #                 parameter name within %s"%('param1', model.model.name,str(model.model.getParamList())) 
    34         else: raise AssertError,"No error raised for scipy fitting with wrong parameters name to fit" 
    35         pars1= ['A','B'] 
    36         fitter.set_model(model,1,pars1) 
    37         fitter.select_problem_for_fit(id=1,value=1) 
    38         result1 = fitter.fit() 
    39         self.assert_(result1) 
    40          
    41         self.assertTrue( math.fabs(result1.pvec[0]-4)/3 <= result1.stderr[0] ) 
    42         self.assertTrue( math.fabs(result1.pvec[1]-2.5)/3 <= result1.stderr[1]) 
    43         self.assertTrue( result1.fitness/len(data.x) < 2 ) 
    44          
     32        except ValueError,exc: 
     33            #print "ValueError was correctly raised: "+str(msg) 
     34            assert str(exc).startswith('wrong parameter') 
     35        else: raise AssertionError("No error raised for scipy fitting with wrong parameters name to fit") 
     36        pars1= ['A','B'] 
     37        fitter.set_model(model,1,pars1) 
     38        fitter.select_problem_for_fit(id=1,value=1) 
     39        result, = fitter.fit() 
     40 
     41        self.assertTrue( math.fabs(result.pvec[0]-4)/3 <= result.stderr[0] ) 
     42        self.assertTrue( math.fabs(result.pvec[1]-2.5)/3 <= result.stderr[1]) 
     43        self.assertTrue( result.fitness/len(data.x) < 2 ) 
     44 
    4545        #fit with park test 
    4646        fitter = Fit('park') 
     
    6666        """ fit 2 data and 2 model with no constrainst""" 
    6767        #load data 
    68         from DataLoader.loader import Loader 
    6968        l = Loader() 
    7069        data1=l.load("testdata_line.txt") 
     
    7372      
    7473        #Importing the Fit module 
    75         from sans.fit.Fitting import Fit 
    7674        fitter = Fit('scipy') 
    7775        # Receives the type of model for the fitting 
    78         from sans.models.LineModel import LineModel 
    7976        model11  = LineModel() 
    8077        model11.name= "M1" 
     
    9390        fitter.select_problem_for_fit(id=2,value=0) 
    9491         
    95         try: result1 = fitter.fit() 
     92        try: result1, = fitter.fit() 
    9693        except RuntimeError,msg: 
    9794           assert str(msg)=="No Assembly scheduled for Scipy fitting." 
     
    9996        fitter.select_problem_for_fit(id=1,value=1) 
    10097        fitter.select_problem_for_fit(id=2,value=1) 
    101         try: result1 = fitter.fit() 
     98        try: result1, = fitter.fit() 
    10299        except RuntimeError,msg: 
    103100           assert str(msg)=="Scipy can't fit more than a single fit problem at a time." 
     
    123120        """ fit 2 data and 2 model with 1 constrainst""" 
    124121        #load data 
    125         from DataLoader.loader import Loader 
    126122        l = Loader() 
    127123        data1= l.load("testdata_line.txt") 
     
    129125        
    130126        # Receives the type of model for the fitting 
    131         from sans.models.LineModel import LineModel 
    132127        model11  = LineModel() 
    133128        model11.name= "line" 
     
    135130        model11.setParam("B",1.0) 
    136131         
    137         from sans.models.Constant import Constant 
    138132        model22  = Constant() 
    139133        model22.name= "cst" 
     
    151145         
    152146        #Importing the Fit module 
    153         from sans.fit.Fitting import Fit 
    154147        fitter = Fit('park') 
    155148        fitter.set_data(data1,1) 
     
    170163        """ fit 2 data concatenates with limited range of x and  one model """ 
    171164            #load data 
    172         from DataLoader.loader import Loader 
    173165        l = Loader() 
    174166        data1 = l.load("testdata_line.txt") 
     
    177169        
    178170        # Receives the type of model for the fitting 
    179         from sans.models.LineModel import LineModel 
    180171        model1  = LineModel() 
    181172        model1.name= "M1" 
     
    187178        pars1= ['A','B'] 
    188179        #Importing the Fit module 
    189         from sans.fit.Fitting import Fit 
    190180        fitter = Fit('scipy') 
    191181        fitter.set_data(data1,1,qmin=0, qmax=7) 
     
    194184        fitter.select_problem_for_fit(id=1,value=1) 
    195185         
    196         result1 = fitter.fit() 
     186        result1, = fitter.fit() 
    197187        self.assert_(result1) 
    198188 
  • test/park_integration/test/test_fit_smeared.py

    r5777106 r6c00702  
    44""" 
    55import unittest 
    6 from sans.fit.AbstractFitEngine import Model 
    76import math 
    87import numpy 
     8from sans.fit.AbstractFitEngine import Model 
    99from sans.fit.Fitting import Fit 
    10 from DataLoader.loader import Loader 
     10from sans.dataloader.loader import Loader 
     11from sans.models.qsmearing import smear_selection 
     12from sans.models.CylinderModel import CylinderModel 
     13from sans.models.SphereModel import SphereModel 
    1114 
    1215class testFitModule(unittest.TestCase): 
     
    2427         
    2528        # Receives the type of model for the fitting 
    26         from sans.models.CylinderModel import CylinderModel 
    2729        model1  = CylinderModel() 
    28         model1.setParam('contrast', 1) 
     30        model1.setParam('sldCyl', 3.0e-6) 
     31        model1.setParam('sldSolv', 0.0) 
    2932        model = Model(model1) 
    3033        model.set(scale=1e-10) 
     
    3336         
    3437        # What the hell is this line for? 
    35         fitter.select_problem_for_fit(Uid=1,value=1) 
    36         result1 = fitter.fit() 
     38        fitter.select_problem_for_fit(id=1,value=1) 
     39        result1, = fitter.fit() 
    3740         
    3841        self.assert_(result1) 
     
    6063        fitter = Fit('scipy') 
    6164        # Receives the type of model for the fitting 
    62         from sans.models.CylinderModel import CylinderModel 
    6365        model1  = CylinderModel() 
    64         model1.setParam('contrast', 1) 
    65          
     66        model1.setParam('sldCyl', 3.0e-6) 
     67        model1.setParam('sldSolv', 0.0) 
     68 
    6669        # Dispersion parameters 
    6770        model1.dispersion['radius']['width'] = 0.001 
     
    7477        model.set(scale=1e-10) 
    7578        fitter.set_model(model,1,pars1) 
    76         fitter.select_problem_for_fit(Uid=1,value=1) 
    77         result1 = fitter.fit() 
     79        fitter.select_problem_for_fit(id=1,value=1) 
     80        result1, = fitter.fit() 
    7881         
    7982        self.assert_(result1) 
     
    97100        print "TEST DONE WITHOUT PROPER OUTPUT CHECK:" 
    98101        print "   ---> TEST NEEDS TO BE COMPLETED" 
    99         from sans.models.SphereModel import SphereModel 
    100102        data = Loader().load("latex_smeared.xml") 
    101103        self.data_res = data[0] 
     
    109111         
    110112    def test_reso(self): 
    111         from DataLoader.qsmearing import smear_selection 
    112          
     113 
    113114        # Let the data module find out what smearing the 
    114115        # data needs 
     
    123124        # data for a given fit. 
    124125        fitter.set_data(self.data_res,1) 
    125         fitter._engine.fitArrangeDict[1].dList[0].smearer = smear 
     126        fitter._engine.fit_arrange_dict[1].data_list[0].smearer = smear 
    126127        print "smear ",smear 
    127128        # Model: maybe there's a better way to do this. 
     
    130131         
    131132        # Why do we have to do this...? 
    132         fitter.select_problem_for_fit(Uid=1,value=1) 
     133        fitter.select_problem_for_fit(id=1,value=1) 
    133134         
    134135        # Perform the fit (might take a while) 
    135         result1 = fitter.fit() 
     136        result1, = fitter.fit() 
    136137         
    137138        # Replace this with proper test once we know what the 
     
    141142         
    142143    def test_slit(self): 
    143         from DataLoader.qsmearing import smear_selection 
    144          
    145144        smear = smear_selection(self.data_slit) 
    146145        self.assertEqual(smear.__class__.__name__, 'SlitSmearer') 
     
    153152        # data for a given fit. 
    154153        fitter.set_data(self.data_slit,1) 
    155         fitter._engine.fitArrangeDict[1].dList[0].smearer = smear 
    156         fitter._engine.fitArrangeDict[1].dList[0].qmax = 0.003 
     154        fitter._engine.fit_arrange_dict[1].data_list[0].smearer = smear 
     155        fitter._engine.fit_arrange_dict[1].data_list[0].qmax = 0.003 
    157156         
    158157        # Model 
    159158        fitter.set_model(Model(self.sphere),1, ['radius','scale']) 
    160         fitter.select_problem_for_fit(Uid=1,value=1) 
     159        fitter.select_problem_for_fit(id=1,value=1) 
    161160         
    162         result1 = fitter.fit() 
     161        result1, = fitter.fit() 
    163162         
    164163        # Replace this with proper test once we know what the 
  • test/park_integration/test/test_park_scipy.py

    r5777106 r6c00702  
    44""" 
    55import unittest 
     6import math 
    67 
    78from sans.guiframe.dataFitting import Data1D  
    89from sans.fit.AbstractFitEngine import Model,FitData1D 
    9 import math 
    1010from sans.fit.Fitting import Fit 
    11 from DataLoader.loader import Loader 
     11from sans.dataloader.loader import Loader 
     12from sans.models.MultiplicationModel import MultiplicationModel 
     13from sans.models.CylinderModel import CylinderModel 
     14from sans.models.SquareWellStructure import SquareWellStructure 
    1215 
    1316class testFitModule(unittest.TestCase): 
     
    2124        data = Data1D(x=out.x, y=out.y, dx=out.dx, dy=out.dy) 
    2225        # Receives the type of model for the fitting 
    23         from sans.models.MultiplicationModel import MultiplicationModel 
    24         from sans.models.CylinderModel import CylinderModel 
    25         from sans.models.SquareWellStructure import SquareWellStructure 
    2626        model1  =  MultiplicationModel(CylinderModel(),SquareWellStructure()) 
    2727        model1.setParam('background', 0.0) 
    28         model1.setParam('contrast', 3e-006) 
    29         model1.setParam('length', 600) 
    30         model1.setParam('radius', 20) 
    31         model1.setParam('scale', 10) 
     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) 
    3233        model1.setParam('volfraction', 0.04) 
    3334        model1.setParam('welldepth', 1.5) 
     
    3637        model = Model(model1) 
    3738     
    38         pars1 =['length','radius','scale'] 
     39        pars1 =['length','radius','scale_factor'] 
    3940        fitter = Fit('scipy') 
    4041        fitter.set_data(data,1) 
    4142        fitter.set_model(model,1,pars1) 
    42         fitter.select_problem_for_fit(Uid=1,value=1) 
    43         result1 = fitter.fit() 
    44        
     43        fitter.select_problem_for_fit(id=1,value=1) 
     44        result1, = fitter.fit() 
     45 
    4546        self.assert_(result1) 
    4647        self.assertTrue(len(result1.pvec)>=0 ) 
    4748        self.assertTrue(len(result1.stderr)>= 0) 
    48          
     49 
     50        print "results",list(zip(result1.pvec, result1.stderr)) 
    4951        self.assertTrue( math.fabs(result1.pvec[0]-605)/3.0 <= result1.stderr[0] ) 
    5052        self.assertTrue( math.fabs(result1.pvec[1]-20.0)/3.0  <= result1.stderr[1] ) 
  • test/pr_inversion/test/test_output.txt

    r57986a1 r6c00702  
    33#alpha=0.0007 
    44#chi2=836.797 
    5 #elapsed=0.000468969 
     5#elapsed=0.000999928 
    66#qmin=None 
    77#qmax=None 
  • test/run_one.py

    rbbd97e5 r6c00702  
    1212#print "\n".join(sys.path) 
    1313test_path,test_file = splitpath(sys.argv[1]) 
     14print "test file",sys.argv[1] 
    1415#print test_path, test_file 
    1516sys.argv = [sys.argv[0]] 
  • test/utest_sansview.py

    rbbd97e5 r6c00702  
    2626#    COMMAND_SEP = '&' 
    2727 
    28 def run_tests(): 
     28def run_tests(dirs=None, all=False): 
    2929    test_root = os.path.abspath(os.path.dirname(__file__)) 
    3030    run_one_py = os.path.join(test_root, 'run_one.py') 
     
    3535    n_failures = 0 
    3636     
    37     for d in os.listdir(test_root): 
     37    for d in (dirs if dirs else os.listdir(test_root)): 
    3838         
    3939        # Check for modules to be skipped 
     
    7676                        passed += 1 
    7777                        print "Result for %s: SUCCESS" % module_name 
    78                          
     78 
    7979    print "\n----------------------------------------------" 
    80     print "Results by test modules:" 
    81     print "    PASSED: %d" % passed 
    82     ratio = 100.0*failed/(failed+passed) 
    83     print "    FAILED: %d    (%.0f%%)" % (failed,ratio)  
    84      
    85     print "Results by tests:" 
    86     print "    Tests run:    %d" % n_tests 
    87     print "    Tests failed: %d" % n_failures 
    88     print "    Test errors:  %d" % n_errors  
     80    if n_tests == 0: 
     81        print "No tests." 
     82    else: 
     83        print "Results by test modules:" 
     84        print "    PASSED: %d" % passed 
     85        ratio = 100.0*failed/(failed+passed) 
     86        print "    FAILED: %d    (%.0f%%)" % (failed,ratio) 
     87 
     88        print "Results by tests:" 
     89        print "    Tests run:    %d" % n_tests 
     90        print "    Tests failed: %d" % n_failures 
     91        print "    Test errors:  %d" % n_errors 
    8992    print "----------------------------------------------" 
    9093     
     
    9295 
    9396if __name__ == '__main__': 
    94     if run_tests()>0: 
     97    all = (len(sys.argv) > 1 and sys.argv[1] == '-all') 
     98    dirs = sys.argv[1:] if not all else sys.argv[2:] 
     99    if run_tests(dirs=dirs, all=all)>0: 
    95100        sys.exit(1) 
    96101     
Note: See TracChangeset for help on using the changeset viewer.