Changeset ed2ea6a in sasview for sansview/perspectives/fitting/fitting.py
- Timestamp:
- Feb 27, 2009 6:53:16 PM (15 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:
- b491d6e
- Parents:
- 6d920cd
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
sansview/perspectives/fitting/fitting.py
rc98b1d5 red2ea6a 4 4 5 5 from copy import deepcopy 6 from danse.common.plottools.plottables import Data1D, Theory1D,Data2D 7 from danse.common.plottools.PlotPanel import PlotPanel 6 from danse.common.plottools.plottables import Theory1D,Data2D 8 7 from sans.guicomm.events import NewPlotEvent, StatusEvent 9 from sans.guicomm.events import EVT_SLICER_PANEL,E VT_MODEL2D_PANEL,ERR_DATA10 11 from sans.fit.AbstractFitEngine import Model ,FitData1D,FitData2D#,Data,8 from sans.guicomm.events import EVT_SLICER_PANEL,ERR_DATA 9 10 from sans.fit.AbstractFitEngine import Model 12 11 from fitproblem import FitProblem 13 12 from fitpanel import FitPanel 14 13 from fit_thread import FitThread 15 import models #,modelpage14 import models 16 15 import fitpage1D 17 #import park 16 18 17 DEFAULT_BEAM = 0.005 19 18 DEFAULT_QMIN = 0.0 20 19 DEFAULT_QMAX = 0.1 21 20 DEFAULT_NPTS = 50 22 import time23 import thread24 print "main",thread.get_ident()25 21 26 22 class Plugin: … … 34 30 ## Reference to the parent window 35 31 self.parent = None 32 #Provide list of models existing in the application 36 33 self.menu_mng = models.ModelManager() 37 34 ## List of panels for the simulation perspective (names) 38 35 self.perspective = [] 36 #list of panel to send to guiframe 39 37 self.mypanels=[] 38 # reference to the current running thread 40 39 self.calc_thread = None 41 self.done = False42 40 # Start with a good default 43 41 self.elapsed = 0.022 42 # the type of optimizer selected, park or scipy 44 43 self.fitter = None 45 46 #Flag to let the plug-in know that it is running standalone 44 #Flag to let the plug-in know that it is running stand alone 47 45 self.standalone=True 48 46 ## Fit engine 49 47 self._fit_engine = 'scipy' 50 self.enable_model2D=False 51 # list of selcted data 48 #List of selected data 52 49 self.selected_data_list=[] 53 50 # Log startup … … 55 52 # model 2D view 56 53 self.model2D_id=None 54 #keep reference of the simultaneous fit page 57 55 self.sim_page=None 56 #dictionary containing data name and error on dy of that data 58 57 self.err_dy={} 59 58 60 59 def _on_data_error(self, event): 60 """ 61 receives and event from plotting plu-gins to store the data name and 62 their errors of y coordinates for 1Data hide and show error 63 """ 61 64 self.err_dy= event.err_dy 62 65 … … 68 71 @ return : list of information to populate the main menu 69 72 """ 70 self.parent.Bind(EVT_MODEL2D_PANEL, self._on_model2D_show)71 73 #Menu for fitting 72 74 self.menu1 = wx.Menu() … … 94 96 95 97 def on_add_sim_page(self, event): 98 """ 99 """ 96 100 self.sim_page= self.fit_panel.add_sim_page() 97 101 self.sim_page.add_model(self.page_finder) … … 113 117 114 118 115 116 117 119 def get_context_menu(self, graph=None): 118 120 """ … … 160 162 self.mypanels.append(self.fit_panel) 161 163 return self.mypanels 162 163 164 def _on_model2D_show(self, event ): 165 print "model2D get the id ", event.id 166 164 167 165 168 166 def _on_slicer_event(self, event): 169 print "fitting:slicer event ", event.panel 167 """ 168 """ 169 #print "fitting:slicer event ", event.panel 170 170 if event.panel!=None: 171 171 new_panel = event.panel … … 178 178 new_panel 179 179 self.mypanels.append(new_panel) 180 return 180 return 181 182 181 183 def _on_show_panel(self, event): 182 184 print "_on_show_panel: fitting" 183 185 186 184 187 def get_perspective(self): 185 188 """ … … 205 208 self.parent.set_perspective(self.perspective) 206 209 210 207 211 def copy_data(self, item, dy): 212 """ 213 """ 208 214 detector=None 209 215 source=None … … 224 230 data.source= source 225 231 return data 232 226 233 227 234 def _onSelect(self,event): … … 253 260 item.__class__.__name__ is "Data2D": 254 261 #find a name for the page created for notebook 255 print "fitting", self.panel262 #print "fitting", self.panel 256 263 try: 257 264 … … 273 280 wx.PostEvent(self.parent, StatusEvent(status="Page was already Created")) 274 281 except: 275 raise 276 #wx.PostEvent(self.parent, StatusEvent(status="Creating Fit page: %s"\ 277 #%sys.exc_value)) 282 #raise 283 wx.PostEvent(self.parent, StatusEvent(status="Creating Fit page: %s"\ 284 %sys.exc_value)) 285 return 278 286 279 287 … … 311 319 list=value.get_model() 312 320 model=list[0] 313 print "fitting",model.name,modelname, values321 #print "fitting",model.name,modelname, values 314 322 if model.name== modelname: 315 323 value.set_model_param(names,values) … … 360 368 model.setParam(name,result.pvec) 361 369 else: 362 print "fitting result : chisqr",result.fitness363 print "fitting result : pvec",result.pvec364 print "fitting result : stderr",result.stderr370 #print "fitting result : chisqr",result.fitness 371 #print "fitting result : pvec",result.pvec 372 #print "fitting result : stderr",result.stderr 365 373 #model.setParam(name,result.pvec[i]) 366 374 # print "fitting: single fit", name, result.pvec[i] … … 374 382 xmin=xmin, xmax=xmax,title=None) 375 383 except: 376 raise 377 #wx.PostEvent(self.parent, StatusEvent(status="Fitting error: %s" % sys.exc_value)) 378 #return 384 #raise 385 wx.PostEvent(self.parent, StatusEvent(status="Fitting error: %s" % sys.exc_value)) 386 return 387 379 388 380 389 def _simul_fit_completed(self,result,qmin,qmax, elapsed,pars=None,cpage=None, … … 394 403 wx.PostEvent(self.parent, StatusEvent(status="Simultaneous fit \ 395 404 complete ", type="stop")) 396 print "result",cpage,str(result),result.parameters,result.fitness,result.stderr405 #print "result",cpage,str(result),result.parameters,result.fitness,result.stderr 397 406 398 407 try: … … 426 435 wx.PostEvent(self.parent, StatusEvent(status="Simultaneous Fitting error: %s" % sys.exc_value)) 427 436 return 437 438 428 439 def stop_fit(self): 440 """ 441 """ 429 442 if self.calc_thread != None and self.calc_thread.isrunning(): 430 443 #self.calc_thread.interrupt() 431 444 self.calc_thread.stop() 432 445 wx.PostEvent(self.parent, StatusEvent(status="Fitting \ 433 is cancelled" , type="stop")) 446 is cancelled" , type="stop")) 447 448 434 449 def _on_single_fit(self,id=None,qmin=None, qmax=None,ymin=None, ymax=None,xmin=None,xmax=None): 435 450 """ … … 526 541 self.calc_thread.queue() 527 542 self.calc_thread.ready(2.5) 528 #while not self.done: 529 #print "when here" 530 # time.sleep(1) 531 532 543 533 544 except: 534 545 wx.PostEvent(self.parent, StatusEvent(status="Single Fit error: %s" % sys.exc_value)) … … 585 596 586 597 self.fitter.set_model(new_model, self.fit_id, pars) 587 print "sim-->model",metadata,model,self.fit_id, pars598 #print "sim-->model",metadata,model,self.fit_id, pars 588 599 dy=[] 589 600 x=[] … … 603 614 metadata.x=x 604 615 self.fitter.set_data(metadata,self.fit_id,qmin,qmax,ymin,ymax) 605 print "sim---->value of problem",value.get_scheduled()616 #print "sim---->value of problem",value.get_scheduled() 606 617 self.fitter.select_problem_for_fit(Uid=self.fit_id,value=value.get_scheduled()) 607 618 self.fit_id += 1 … … 646 657 647 658 def _onset_engine(self,event): 648 """ set engine to scipy""" 659 """ 660 set engine to scipy 661 """ 649 662 if self._fit_engine== 'park': 650 663 self._on_change_engine('scipy') … … 670 683 name = evt.name 671 684 672 print "name fitting", name685 #print "name fitting", name 673 686 #sim_page=self.fit_panel.GetPage(1) 674 687 sim_page=self.sim_page … … 695 708 self.sim_page.add_model(self.page_finder) 696 709 697 def set_smearer(self,smearer): 698 current_pg=self.fit_panel.get_current_page() 699 self.page_finder[current_pg].set_smearer(smearer) 710 def set_smearer(self,smearer): 711 """ 712 713 """ 714 current_pg=self.fit_panel.get_current_page() 715 self.page_finder[current_pg].set_smearer(smearer) 700 716 701 717 def redraw_model(self,qmin= None,qmax= None): … … 725 741 model=list[0] 726 742 break 727 print "model in fitting",model743 #print "model in fitting",model 728 744 if data!=None and data.__class__.__name__ != 'Data2D': 729 745 theory = Theory1D(x=[], y=[]) 730 746 theory.name = model.name 731 747 theory.group_id = data.group_id 732 """733 if hasattr(data, "id"):734 import string735 if string.find("Model",data.id )!=None:736 #allow plotting on the same panel737 theory.id =str(data.id )+" "+str(self.index_theory)738 self.index_theory +=1739 else:740 """741 748 theory.id = "Model" 742 749 … … 777 784 wx.PostEvent(self.parent, StatusEvent(status="fitting \ 778 785 skipping point x %g %s" %(qmin, sys.exc_value)) ) 786 779 787 wx.PostEvent(self.parent, NewPlotEvent(plot=theory, 780 788 title=str(data.name))) … … 841 849 if hasattr(evt.model, "name"): 842 850 name = evt.model.name 843 print "on model menu", name851 #print "on model menu", name 844 852 model=evt.model() 845 853 description=model.description … … 869 877 def _draw_model1D(self,model,name,description=None, enable1D=True, 870 878 qmin=DEFAULT_QMIN, qmax=DEFAULT_QMAX, qstep=DEFAULT_NPTS): 879 """ 880 881 """ 871 882 872 883 if enable1D: … … 894 905 wx.PostEvent(self.parent, StatusEvent(status="Draw model 1D error: %s" % sys.exc_value)) 895 906 #raise 907 return 896 908 else: 897 909 for i in range(xlen): … … 899 911 try: 900 912 new_plot = Theory1D(x, y) 901 print "draw model 1D", name913 #print "draw model 1D", name 902 914 new_plot.name = name 903 915 new_plot.xaxis("\\rm{Q}", 'A^{-1}') … … 914 926 #raise 915 927 wx.PostEvent(self.parent, StatusEvent(status="Draw model 1D error: %s" % sys.exc_value)) 928 return 929 930 931 916 932 def update(self, output,time): 933 """ 934 """ 917 935 pass 918 936 919 937 def complete(self, output, elapsed, model, qmin, qmax,qstep=DEFAULT_NPTS): 920 938 """ 939 """ 921 940 wx.PostEvent(self.parent, StatusEvent(status="Calc \ 922 941 complete !" , type="stop")) … … 1007 1026 try: 1008 1027 from sans.guiframe.model_thread import Calc2D 1009 print "in draw model 2d ",self.model1028 # print "in draw model 2d ",self.model 1010 1029 self.calc_thread = Calc2D(parent =self.parent,x=x, 1011 1030 y=y,model= self.model,
Note: See TracChangeset
for help on using the changeset viewer.