Changeset 792db7d5 in sasview for park_integration/test/testfitting.py
- Timestamp:
- Jul 8, 2008 11:48:38 AM (16 years ago)
- 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:
- 6e0f53a
- Parents:
- 1c94a9f1
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
park_integration/test/testfitting.py
rcf3b781 r792db7d5 53 53 54 54 def testfit_1Data_1Model(self): 55 """ test fitting for one data and one model """55 """ test fitting for one data and one model park vs scipy""" 56 56 #load data 57 57 from sans.fit.Loader import Load … … 69 69 # Receives the type of model for the fitting 70 70 from sans.guitools.LineModel import LineModel 71 model = LineModel() 71 model1 = LineModel() 72 model2 = LineModel() 72 73 73 74 #Do the fit SCIPY 74 75 engine.set_data(data1,1) 75 engine.set_param( model,"M1", {'A':2,'B':4})76 engine.set_model(model ,1)76 #engine.set_param( model1,"M1", {'A':2,'B':4}) 77 engine.set_model(model1,1) 77 78 78 79 chisqr1, out1, cov1=engine.fit({'A':2,'B':1},None,None) … … 88 89 #Do the fit 89 90 engine.set_data(data1,1) 90 engine.set_param( model 1,"M1", {'A':2,'B':4})91 engine.set_model(model ,1)91 engine.set_param( model2,"M1", {'A':2,'B':1}) 92 engine.set_model(model2,1) 92 93 93 engine.fit({'A':2,'B':1},None,None)94 chisqr2, out2, cov2=engine.fit({'A':2,'B':1},None,None) 94 95 95 96 self.assert_(math.fabs(out2[1]-2.5)/math.sqrt(cov2[1][1]) < 2) 96 97 self.assert_(math.fabs(out2[0]-4.0)/math.sqrt(cov2[0][0]) < 2) 97 98 self.assert_(chisqr2/len(data1.x) < 2) 98 99 self.assertEqual(out1[1], out2[1]) 100 self.assertEquals(out1[0], out2[0]) 101 self.assertEquals(cov1[0][0], cov2[0][0]) 102 self.assertEquals(cov1[1][1], cov2[1][1]) 103 self.assertEquals(chisqr1, chisqr2) 99 print "scipy",chisqr1, out1, cov1 100 print "park",chisqr2, out2, cov2 101 self.assertAlmostEquals(out1[1], out2[1],0) 102 self.assertAlmostEquals(out1[0], out2[0],0) 103 self.assertAlmostEquals(cov1[0][0], cov2[0][0],1) 104 self.assertAlmostEquals(cov1[1][1], cov2[1][1],1) 105 self.assertAlmostEquals(chisqr1, chisqr2) 104 106 105 def testfit_2Data_1Model(self):106 """ test fitting for two set of data and one model"""107 from sans.fit.Loader import Load108 load= Load()109 #Load the first set of data110 load.set_filename("testdata1.txt")111 load.set_values()112 data1 = Data1D(x=[], y=[],dx=None, dy=None)113 load.load_data(data1)114 115 #Load the second set of data116 load.set_filename("testdata2.txt")117 load.set_values()118 data2 = Data1D(x=[], y=[],dx=None, dy=None)119 load.load_data(data2)120 121 #Importing the Fit module122 from sans.fit.Fitting import Fit123 fitter= Fit()124 # Receives the type of model for the fitting125 from sans.guitools.LineModel import LineModel126 model = LineModel()127 #set engine for scipy128 fitter.fit_engine('scipy')129 engine = fitter.returnEngine()130 #Do the fit131 engine.set_param( model,"M1", {'A':2,'B':4})132 engine.set_model(model,1)133 134 engine.set_data(data1,1)135 engine.set_data(data2,1)136 137 138 chisqr1, out1, cov1= engine.fit({'A':2,'B':1},None,None)139 107 140 """ Testing results for SCIPY"""141 self.assert_(math.fabs(out1[1]-2.5)/math.sqrt(cov1[1][1]) < 2)142 self.assert_(math.fabs(out1[0]-4.0)/math.sqrt(cov1[0][0]) < 2)143 self.assert_(chisqr1/len(data1.x+data2.x) < 2)144 #self.assert_(chisqr1/len(data2.x) < 2)145 146 #set engine for park147 fitter= Fit()148 fitter.fit_engine('park')149 engine = fitter.returnEngine()150 #Do the fit151 engine.set_data(data1,1)152 engine.set_model(model,1)153 engine.set_data(data2,1)154 engine.fit({'A':2,'B':1},None,None)155 156 chisqr2, out2, cov2= engine.fit({'A':2,'B':1},None,None)157 #print "park",chisqr2, out2, cov2158 self.assert_(math.fabs(out2[1]-2.5)/math.sqrt(cov2[1][1]) < 2)159 self.assert_(math.fabs(out2[0]-4.0)/math.sqrt(cov2[0][0]) < 2)160 self.assert_(chisqr2/len(data1.x) < 2)161 self.assert_(chisqr2/len(data2.x) < 2)162 163 self.assertEqual(out1[0],out2[0])164 self.assertEqual(out1[1],out2[1])165 self.assertEqual(chisqr1,chisqr2)166 self.assertEqual(cov1[0][0],cov2[0][0])167 self.assertEqual(cov1[1][1],cov2[1][1])168 169 def test2models2dataonconstraint(self):170 """ test for 2 Models two data one constraint"""171 from sans.fit.Loader import Load172 load= Load()173 #Load the first set of data174 load.set_filename("testdata1.txt")175 load.set_values()176 data1 = Data1D(x=[], y=[],dx=None, dy=None)177 load.load_data(data1)178 179 #Load the second set of data180 load.set_filename("testdata2.txt")181 load.set_values()182 data2 = Data1D(x=[], y=[],dx=None, dy=None)183 load.load_data(data2)184 185 #Importing the Fit module186 from sans.fit.Fitting import Fit187 fitter= Fit()188 # Receives the type of model for the fitting189 from sans.guitools.LineModel import LineModel190 model1 = LineModel()191 model2 = LineModel()192 193 #set engine for scipy194 """195 fitter.fit_engine('scipy')196 engine = fitter.returnEngine()197 #Do the fit198 engine.set_param( model1,"M1", {'A':2,'B':4})199 engine.set_model(model1,1)200 engine.set_data(data1,1)201 engine.set_param( model1,"M2", {'A':2.1,'B':3})202 engine.set_model(model2,2)203 engine.set_data(data2,2)204 205 try: engine.fit({'A':2,'B':1},None,None)206 except ValueError,msg:207 assert str(msg)=="cannot fit more than one model",'Message: <%s>'%(msg)208 """209 #set engine for park210 fitter= Fit()211 fitter.fit_engine('park')212 engine = fitter.returnEngine()213 #Do the fit214 engine.set_data(data1,1)215 engine.set_param(model1,"M1",{'A':2,'B':1})216 engine.set_model(model1,1)217 218 engine.set_param(model2,"M2",{'A':3,'B':'M1.B'})219 engine.set_model(model2,2)220 engine.set_data(data2,2)221 chisqr2, out2, cov2= engine.fit({'A':2,'B':1},None,None)222 223 224 self.assert_(math.fabs(out2[1]-2.5)/math.sqrt(cov2[1][1]) < 2)225 self.assert_(math.fabs(out2[0]-4.0)/math.sqrt(cov2[0][0]) < 2)226 self.assert_(chisqr2/len(data1.x) < 2)227 self.assert_(chisqr2/len(data2.x) < 2)228
Note: See TracChangeset
for help on using the changeset viewer.