Changeset acf8e4a5 in sasview
- Timestamp:
- Mar 31, 2015 11:52:01 AM (10 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:
- 4342107f, c971c98
- Parents:
- 6987c8a
- Files:
-
- 1 deleted
- 13 edited
Legend:
- Unmodified
- Added
- Removed
-
src/sas/perspectives/fitting/basepage.py
r5ce7f17 racf8e4a5 98 98 self.npts = None 99 99 self.num_points = None 100 ## default fitengine type101 self.engine_type = 'bumps'102 100 ## smear default 103 101 self.current_smearer = None … … 947 945 Store current state 948 946 """ 949 self.state.engine_type = copy.deepcopy(self.engine_type)950 947 ## save model option 951 948 if self.model != None: … … 1045 1042 self.state.disp_list = copy.deepcopy(self.disp_list) 1046 1043 self.state.model = self.model.clone() 1047 if hasattr(self, "engine_type"):1048 self.state.engine_type = copy.deepcopy(self.engine_type)1049 1044 1050 1045 self.state.enable2D = copy.deepcopy(self.enable2D) … … 1299 1294 # Backward compatibility (for older state files) 1300 1295 self.magnetic_on = False 1301 self.engine_type = state.engine_type1302 1296 1303 1297 self.disp_cb_dict = state.disp_cb_dict … … 1355 1349 self.multifactorbox.SetSelection(state.multi_factor) 1356 1350 1357 #reset the fitting engine type 1358 self.engine_type = state.engine_type 1359 #draw the pnael according to the new model parameter 1351 #draw the panel according to the new model parameter 1360 1352 self._on_select_model(event=None) 1361 1353 -
src/sas/perspectives/fitting/fitpage.py
r682c432 racf8e4a5 183 183 return True 184 184 return False 185 186 def _on_engine_change(self, name):187 """188 get the current name of the fit engine type189 and update the panel accordingly190 """191 192 self.engine_type = str(name)193 self.state.engine_type = self.engine_type194 if not self.is_mac:195 if len(self.parameters) == 0:196 self.Layout()197 return198 self.Layout()199 self.Refresh()200 185 201 186 def _fill_range_sizer(self): … … 2834 2819 self.SetupScrolling() 2835 2820 return 2836 ## the panel is drawn using the current value of the fit engine2837 if self.engine_type == None and self._manager != None:2838 self.engine_type = self._manager._return_engine_type()2839 2821 2840 2822 box_description = wx.StaticBox(self, -1, str("Model Parameters")) -
src/sas/perspectives/fitting/fitpanel.py
r2f4b430 racf8e4a5 64 64 self.sim_page = None 65 65 self.batch_page = None 66 self.fit_engine_type = "bumps"67 66 ## get the state of a page 68 67 self.Bind(basepage.EVT_PAGE_INFO, self._onGetstate) -
src/sas/perspectives/fitting/fitting.py
ra3f125f0 racf8e4a5 32 32 from sas.guiframe.plugin_base import PluginBase 33 33 from sas.guiframe.data_processor import BatchCell 34 from sas.fit. Fitting importFit34 from sas.fit.BumpsFitting import BumpsFit as Fit 35 35 from sas.perspectives.fitting.console import ConsoleUpdate 36 36 from sas.perspectives.fitting.fitproblem import FitProblemDictionary … … 84 84 ## dictionary of page closed and id 85 85 self.closed_page_dict = {} 86 ## Fit engine87 self._fit_engine = 'bumps'88 self._gui_engine = None89 86 ## Relative error desired in the sum of squares (float) 90 87 self.batch_reset_flag = True … … 751 748 def stop_fit(self, uid): 752 749 """ 753 Stop the fit engine750 Stop the fit 754 751 """ 755 752 if uid in self.fit_thread_list.keys(): … … 877 874 """ 878 875 Get series of data, model, associates parameters and range and send then 879 to series of fit engines. Fit data and model, display result to876 to series of fitters. Fit data and model, display result to 880 877 corresponding panels. 881 878 :param uid: id related to the panel currently calling this fit function. … … 896 893 sim_fitter = None 897 894 if fit_type == 'simultaneous': 898 # simulatanous fit only one engine need to be created899 sim_fitter = Fit( self._fit_engine)895 # for simultaneous fitting only one fitter is needed 896 sim_fitter = Fit() 900 897 sim_fitter.fitter_id = self.sim_page.uid 901 898 fitter_list.append(sim_fitter) … … 936 933 for fitproblem in fitproblem_list: 937 934 if sim_fitter is None: 938 fitter = Fit( self._fit_engine)935 fitter = Fit() 939 936 fitter.fitter_id = page_id 940 937 fitter_list.append(fitter) … … 965 962 wx.PostEvent(self.parent, StatusEvent(status=msg, type="progress")) 966 963 967 #Handler used for fit engine displayedmessage964 #Handler used to display fit message 968 965 handler = ConsoleUpdate(parent=self.parent, 969 966 manager=self, … … 1148 1145 def _add_problem_to_fit(self, fitproblem, pars, fitter, fit_id): 1149 1146 """ 1150 Create and set fit engine with series of data and model 1151 :param pars: list of fittable parameters 1152 :param fitter_list: list of fit engine 1153 :param value: structure storing data mapped to their model, range etc. 1147 Create and set fitter with series of data and model 1154 1148 """ 1155 1149 data = fitproblem.get_fit_data() … … 1207 1201 """ 1208 1202 Display fit result in batch 1209 :param result: list of objects received from t fit engines1203 :param result: list of objects received from fitters 1210 1204 :param pars: list of fitted parameters names 1211 1205 :param page_id: list of page ids which called fit function … … 1308 1302 batch_inputs["error on %s" % str(param)].append(ERROR) 1309 1303 else: 1310 # T oDo: Why sometimes res.pvec comes with numpy.float64?1311 # Need to fix it within ScipyEngine1304 # TODO: Why sometimes res.pvec comes with numpy.float64? 1305 # probably from scipy lmfit 1312 1306 if res.pvec.__class__ == numpy.float64: 1313 1307 res.pvec = [res.pvec] … … 1921 1915 dy = numpy.ones(len(data_copy.y)) 1922 1916 else: 1923 ## Set consi tently w/AbstractFitengine:1917 ## Set consistently w/AbstractFitengine: 1924 1918 # But this should be corrected later. 1925 1919 dy = deepcopy(data_copy.dy) -
src/sas/perspectives/fitting/pagestate.py
rb1e609c racf8e4a5 42 42 ["name", "name", "string"], 43 43 ["data_name", "data_name", "string"]] 44 LIST_OF_STATE_ATTRIBUTES = [["engine_type", "engine_type", "string"], 45 ["qmin", "qmin", "float"], 44 LIST_OF_STATE_ATTRIBUTES = [["qmin", "qmin", "float"], 46 45 ["qmax", "qmax", "float"], 47 46 ["npts", "npts", "float"], … … 173 172 self.reset = False 174 173 175 #engine type176 self.engine_type = None177 174 # flag to allow data2D plot 178 175 self.enable2D = False … … 288 285 obj.is_data = self.is_data 289 286 obj.model_list_box = copy.deepcopy(self.model_list_box) 290 obj.engine_type = copy.deepcopy(self.engine_type)291 287 292 288 obj.categorycombobox = self.categorycombobox -
src/sas/perspectives/fitting/simfitpage.py
r2f4b430 racf8e4a5 152 152 153 153 ## making sure all parameters content a constraint 154 ## validity of the constraint expression is own by fit engine155 154 if not self.batch_on and self.show_constraint.GetValue(): 156 155 if not self._set_constraint(): -
test/pr_inversion/test/test_output.txt
r9f7fbd9 racf8e4a5 3 3 #alpha=0.0007 4 4 #chi2=836.797 5 #elapsed=0.0003 778935 #elapsed=0.000389099 6 6 #qmin=None 7 7 #qmax=None -
test/sasfit/test/batch_fit.py
refa5e44 racf8e4a5 3 3 import unittest 4 4 from sas.dataloader.loader import Loader 5 from sas.fit.Fitting import Fit5 from sas.fit.Fitting import BumpsFit as Fit 6 6 from sas.models.CylinderModel import CylinderModel 7 7 import sas.models.dispersion_models … … 42 42 self.qmax = qmax 43 43 44 def _reset_helper(self, path=None, engine="bumps",npts=NPTS):44 def _reset_helper(self, path=None, npts=NPTS): 45 45 """ 46 Set value to fitter engineand prepare inputs for map function46 Set value to fitter and prepare inputs for map function 47 47 """ 48 48 for i in range(npts): 49 49 data = Loader().load(path) 50 fitter = Fit( engine)50 fitter = Fit() 51 51 #create model 52 52 model = CylinderModel() … … 77 77 self.list_of_mapper.append(classMapper) 78 78 79 def reset_value(self , engine='bumps'):79 def reset_value(self): 80 80 """ 81 81 Initialize inputs for the map function … … 88 88 89 89 path = "testdata_line3.txt" 90 self._reset_helper(path=path, engine=engine,npts=NPTS)90 self._reset_helper(path=path, npts=NPTS) 91 91 path = "testdata_line.txt" 92 self._reset_helper(path=path, engine=engine,npts=NPTS)92 self._reset_helper(path=path, npts=NPTS) 93 93 path = "SILIC010_noheader.DAT" 94 self._reset_helper(path=path, engine=engine,npts=NPTS)94 self._reset_helper(path=path, npts=NPTS) 95 95 path = "cyl_400_20.txt" 96 self._reset_helper(path=path, engine=engine,npts=NPTS)96 self._reset_helper(path=path, npts=NPTS) 97 97 path = "sphere_80.txt" 98 self._reset_helper(path=path, engine=engine,npts=NPTS)98 self._reset_helper(path=path, npts=NPTS) 99 99 path = "PolySpheres.txt" 100 self._reset_helper(path=path, engine=engine,npts=NPTS)100 self._reset_helper(path=path, npts=NPTS) 101 101 path = "latex_qdev.txt" 102 self._reset_helper(path=path, engine=engine,npts=NPTS)102 self._reset_helper(path=path, npts=NPTS) 103 103 path = "latex_qdev2.txt" 104 self._reset_helper(path=path, engine=engine,npts=NPTS)104 self._reset_helper(path=path, npts=NPTS) 105 105 106 106 -
test/sasfit/test/utest_fit_cylinder.py
rc3caa49 racf8e4a5 7 7 8 8 from sas.fit.AbstractFitEngine import Model 9 from sas.fit. Fitting importFit9 from sas.fit.BumpsFitting import BumpsFit as Fit 10 10 from sas.dataloader.loader import Loader 11 11 … … 15 15 """ initialize data""" 16 16 self.data = Loader().load("cyl_400_20.txt") 17 # Create model that fitt ing engineunderstands17 # Create model that fitter understands 18 18 from sas.models.CylinderModel import CylinderModel 19 19 self.model = CylinderModel() … … 27 27 self.pars1 =['length','radius','scale'] 28 28 29 def _fit(self, name="bumps"):30 """ return fit result"""31 fitter = Fit( name)29 def test_fit(self): 30 """Simple cylinder model fit""" 31 fitter = Fit() 32 32 fitter.set_data(self.data,1) 33 33 fitter.set_model(self.model,1,self.pars1) … … 43 43 self.assertTrue( math.fabs(result1.pvec[2]-1.0)/3.0 < result1.stderr[2] ) 44 44 self.assertTrue( result1.fitness < 1.0 ) 45 46 47 def test_bumps(self):48 """ Simple cylinder model fit """49 self._fit("bumps")50 45 51 46 … … 82 77 def test_constrained_bumps(self): 83 78 """ Simultaneous cylinder model fit """ 84 self._run_fit(Fit( 'bumps'))79 self._run_fit(Fit()) 85 80 86 81 #@unittest.skip("") … … 92 87 93 88 for n, v, dv in zip(result1.param_list, result1.pvec, result1.stderr): 94 #print "%s M1.%s = %s +/- %s"%(fitter._engine.__class__.__name__,n,v,dv)95 89 if n == "length": 96 90 self.assertTrue( math.fabs(v-400.0)/3.0 < dv ) … … 100 94 self.assertTrue( math.fabs(v-1.0)/3.0 < dv ) 101 95 for n, v, dv in zip(result2.param_list, result2.pvec, result2.stderr): 102 #print "%s M2.%s = %s +/- %s"%(fitter._engine.__class__.__name__,n,v,dv)103 96 if n=='radius': 104 97 self.assertTrue( math.fabs(v-40.0)/3.0 < dv ) -
test/sasfit/test/utest_fit_line.py
refa5e44 racf8e4a5 8 8 from sas.fit.AbstractFitEngine import Model, FitHandler 9 9 from sas.dataloader.loader import Loader 10 from sas.fit. Fitting importFit10 from sas.fit.BumpsFitting import BumpsFit as Fit 11 11 from sas.models.LineModel import LineModel 12 12 from sas.models.Constant import Constant … … 16 16 17 17 def test_bad_pars(self): 18 fitter = Fit( 'bumps')18 fitter = Fit() 19 19 20 20 data = Loader().load("testdata_line.txt") … … 34 34 raise AssertionError("No error raised for fitting with wrong parameters name to fit") 35 35 36 def fit_single(self, fitter_name,isdream=False):37 fitter = Fit( fitter_name)36 def fit_single(self, isdream=False): 37 fitter = Fit() 38 38 39 39 data = Loader().load("testdata_line.txt") … … 74 74 #print "fitting",alg,opts 75 75 #kprint "options",fitters.FIT_OPTIONS[alg].__dict__ 76 self.fit_single( 'bumps',isdream=(alg=='dream'))76 self.fit_single(isdream=(alg=='dream')) 77 77 78 78 def test_bumps_de(self): … … 102 102 103 103 #Importing the Fit module 104 fitter = Fit( 'bumps')104 fitter = Fit() 105 105 # Receives the type of model for the fitting 106 106 model11 = LineModel() … … 161 161 162 162 #Importing the Fit module 163 fitter = Fit( 'bumps')163 fitter = Fit() 164 164 fitter.set_data(data1,1) 165 165 fitter.set_model(model1,1,pars1) … … 194 194 #Importing the Fit module 195 195 196 fitter = Fit( 'bumps')196 fitter = Fit() 197 197 fitter.set_data(data1,1,qmin=0, qmax=7) 198 198 fitter.set_model(model,1,pars1) -
test/sasfit/test/utest_fit_smeared.py
ra3f125f0 racf8e4a5 8 8 import numpy 9 9 from sas.fit.AbstractFitEngine import Model 10 from sas.fit. Fitting importFit10 from sas.fit.BumpsFitting import BumpsFit as Fit 11 11 from sas.dataloader.loader import Loader 12 12 from sas.models.qsmearing import smear_selection … … 24 24 #out.dy = out.y 25 25 26 fitter = Fit( 'bumps')26 fitter = Fit() 27 27 fitter.set_data(out,1) 28 28 … … 62 62 #fitters.FIT_OPTIONS[alg].options.update(opts) 63 63 fitters.FIT_OPTIONS[alg].options.update(monitors=[]) 64 self._dispersion(fitter = Fit( 'bumps'))64 self._dispersion(fitter = Fit()) 65 65 66 66 def _dispersion(self, fitter): … … 94 94 #import time; T0 = time.time() 95 95 result1, = fitter.fit() 96 #print "time",time.time()-T0,fitter._engine.__class__.__name__ 97 96 98 97 self.assert_(result1) 99 98 self.assertTrue(len(result1.pvec)>0) … … 137 136 138 137 # Fit 139 fitter = Fit( 'bumps')138 fitter = Fit() 140 139 141 140 # Data: right now this is the only way to set the smearer object … … 143 142 # data for a given fit. 144 143 fitter.set_data(self.data_res,1) 145 fitter. _engine.fit_arrange_dict[1].data_list[0].smearer = smear144 fitter.fit_arrange_dict[1].data_list[0].smearer = smear 146 145 147 146 # Model: maybe there's a better way to do this. … … 169 168 #self.assertEqual(smear.__class__.__name__, 'PySmearer') 170 169 171 fitter = Fit( 'bumps')170 fitter = Fit() 172 171 173 172 # Data: right now this is the only way to set the smearer object … … 175 174 # data for a given fit. 176 175 fitter.set_data(self.data_slit,1) 177 fitter. _engine.fit_arrange_dict[1].data_list[0].smearer = smear178 fitter. _engine.fit_arrange_dict[1].data_list[0].qmax = 0.003176 fitter.fit_arrange_dict[1].data_list[0].smearer = smear 177 fitter.fit_arrange_dict[1].data_list[0].qmax = 0.003 179 178 180 179 # Model -
test/sasfit/test/utest_multiplicative_model.py
r769a422 racf8e4a5 8 8 from sas.dataloader.data_info import Data1D 9 9 from sas.fit.AbstractFitEngine import Model,FitData1D 10 from sas.fit. Fitting importFit10 from sas.fit.BumpsFitting import BumpsFit as Fit 11 11 from sas.dataloader.loader import Loader 12 12 from sas.models.MultiplicationModel import MultiplicationModel … … 38 38 39 39 pars1 =['length','radius','scale_factor'] 40 fitter = Fit( 'bumps')40 fitter = Fit() 41 41 fitter.set_data(data,1) 42 42 fitter.set_model(model,1,pars1) -
test/sasfit/test/utest_small_test.py
refa5e44 racf8e4a5 4 4 import unittest 5 5 import math 6 from sas.fit. Fitting importFit6 from sas.fit.BumpsFitting import BumpsFit as Fit 7 7 from sas.dataloader.loader import Loader 8 8 import bumps.fitters … … 16 16 out= Loader().load("cyl_400_20.txt") 17 17 18 fitter = Fit( 'bumps')18 fitter = Fit() 19 19 # Receives the type of model for the fitting 20 20 from sas.models.CylinderModel import CylinderModel
Note: See TracChangeset
for help on using the changeset viewer.