Changeset a9807efa in sasview for src/sans/perspectives


Ignore:
Timestamp:
Aug 28, 2014 11:42:48 AM (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:
72c969b
Parents:
c915053 (diff), f4167637 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Message:

merge from trunk to bumps

Location:
src/sans/perspectives
Files:
1 added
10 edited

Legend:

Unmodified
Added
Removed
  • src/sans/perspectives/fitting/fitting.py

    rbf5e985 ra9807efa  
    19621962            if (self.calc_2D is not None) and self.calc_2D.isrunning(): 
    19631963                self.calc_2D.stop() 
     1964                ## stop just raises a flag to tell the thread to kill 
     1965                ## itself -- see the fix in Calc1D implemented to fix 
     1966                ## an actual problem.  Seems the fix should also go here 
     1967                ## and may be the cause of other noted instabilities 
     1968                ## 
     1969                ##    -PDB August 12, 2014  
     1970                while self.calc_2D.isrunning(): 
     1971                    time.sleep(0.1) 
    19641972            self.calc_2D = Calc2D(model=model, 
    19651973                                    data=data, 
     
    19992007            if (self.calc_1D is not None) and self.calc_1D.isrunning(): 
    20002008                self.calc_1D.stop() 
     2009                ## stop just raises the flag -- the thread is supposed to  
     2010                ## then kill itself but cannot.  Paul Kienzle came up with 
     2011                ## this fix to prevent threads from stepping on each other 
     2012                ## which was causing a simple custom model to crash Sasview. 
     2013                ## We still don't know why the fit sometimes lauched a second 
     2014                ## thread -- something which should also be investigated. 
     2015                ## The thread approach was implemented in order to be able 
     2016                ## to lauch a computation in a separate thread from the GUI so 
     2017                ## that the GUI can still respond to user input including 
     2018                ## a request to stop the computation. 
     2019                ## It seems thus that the whole thread approach used here 
     2020                ## May need rethinking   
     2021                ## 
     2022                ##    -PDB August 12, 2014                   
     2023                while self.calc_1D.isrunning(): 
     2024                    time.sleep(0.1) 
    20012025            self.calc_1D = Calc1D(data=data, 
    20022026                                  model=model, 
  • src/sans/perspectives/pr/pr.py

    r5777106 rf4167637  
    724724        if self.calc_thread != None and self.calc_thread.isrunning(): 
    725725            self.calc_thread.stop() 
     726            ## stop just raises the flag -- the thread is supposed to  
     727            ## then kill itself but cannot.  Paul Kienzle came up with 
     728            ## this fix to prevent threads from stepping on each other 
     729            ## in Calc1D of fitting.py which was causing a simple custom model 
     730            ## to crash Sasview.  See rest of notes under Calc1D. 
     731            ## 
     732            ##    -PDB August 13, 2014                   
     733            while self.calc_thread.isrunning(): 
     734                time.sleep(0.1) 
    726735                 
    727736        pr = self.pr.clone() 
     
    11431152            self.estimation_thread.isrunning(): 
    11441153            self.estimation_thread.stop() 
     1154            ## stop just raises the flag -- the thread is supposed to  
     1155            ## then kill itself but cannot.  Paul Kienzle came up with 
     1156            ## this fix to prevent threads from stepping on each other 
     1157            ## in Calc1D of fitting.py which was causing a simple custom model 
     1158            ## to crash Sasview.  See rest of notes under Calc1D. 
     1159            ## 
     1160            ##    -PDB August 13, 2014                   
     1161            while self.estimation_thread.isrunning(): 
     1162                time.sleep(0.1) 
     1163                 
    11451164                 
    11461165        pr = self.pr.clone() 
     
    11611180        if self.estimation_thread != None and self.estimation_thread.isrunning(): 
    11621181            self.estimation_thread.stop() 
    1163                  
     1182            ## stop just raises the flag -- the thread is supposed to  
     1183            ## then kill itself but cannot.  Paul Kienzle came up with 
     1184            ## this fix to prevent threads from stepping on each other 
     1185            ## in Calc1D of fitting.py which was causing a simple custom model 
     1186            ## to crash Sasview.  See rest of notes under Calc1D. 
     1187            ## 
     1188            ##    -PDB August 13, 2014                   
     1189            while self.estimation_thread.isrunning(): 
     1190                time.sleep(0.1) 
     1191                                 
    11641192        pr = self.pr.clone() 
    11651193        # Skip the slit settings for the estimation 
  • src/sans/perspectives/simulation/simulation.py

    ra855fec rf4167637  
    213213        if self.calc_thread_1D != None and self.calc_thread_1D.isrunning(): 
    214214            self.calc_thread_1D.stop() 
     215            ## stop just raises the flag -- the thread is supposed to  
     216            ## then kill itself but cannot.  Paul Kienzle came up with 
     217            ## this fix to prevent threads from stepping on each other 
     218            ## in Calc1D of fitting.py which was causing a simple custom model 
     219            ## to crash Sasview.  See rest of notes under Calc1D. 
     220            ## 
     221            ##    -PDB August 13, 2014                   
     222            while self.calc_thread_1D.isrunning(): 
     223                time.sleep(0.1) 
    215224             
    216225        # Create a computation thread 
  • src/sans/perspectives/fitting/basepage.py

    r116e1a7 rbf5e985  
    9696        self.num_points = None 
    9797        ## default fitengine type 
    98         self.engine_type = 'scipy' 
     98        self.engine_type = 'bumps' 
    9999        ## smear default 
    100100        self.current_smearer = None 
     
    835835            infor = "warning" 
    836836        else: 
    837             msg = "Error was occured " 
    838             msg += ": No valid parameter values to paste from the clipboard..." 
     837            msg = "Error occured: " 
     838            msg += "No valid parameter values to paste from the clipboard..." 
    839839            infor = "error" 
    840840            wx.PostEvent(self._manager.parent, 
     
    21832183                else: 
    21842184                    tcrtl.SetBackgroundColour("pink") 
    2185                     msg = "Model Error:wrong value entered: %s" % sys.exc_value 
     2185                    msg = "Model Error: wrong value entered: %s" % sys.exc_value 
    21862186                    wx.PostEvent(self.parent, StatusEvent(status=msg)) 
    21872187                    return 
    21882188            except: 
    21892189                tcrtl.SetBackgroundColour("pink") 
    2190                 msg = "Model Error:wrong value entered: %s" % sys.exc_value 
     2190                msg = "Model Error: wrong value entered: %s" % sys.exc_value 
    21912191                wx.PostEvent(self.parent, StatusEvent(status=msg)) 
    21922192                return 
     
    21992199                        #is_modified = True 
    22002200                else: 
    2201                     msg = "Cannot Plot :No npts in that Qrange!!!  " 
     2201                    msg = "Cannot plot: No points in Q range!!!  " 
    22022202                    wx.PostEvent(self.parent, StatusEvent(status=msg)) 
    22032203        else: 
    22042204            tcrtl.SetBackgroundColour("pink") 
    2205             msg = "Model Error:wrong value entered!!!" 
     2205            msg = "Model Error: wrong value entered!!!" 
    22062206            wx.PostEvent(self.parent, StatusEvent(status=msg)) 
    22072207        self.save_current_state() 
     
    22402240                else: 
    22412241                    tcrtl.SetBackgroundColour("pink") 
    2242                     msg = "Model Error:wrong value entered: %s" % sys.exc_value 
     2242                    msg = "Model Error: wrong value entered: %s" % sys.exc_value 
    22432243                    wx.PostEvent(self._manager.parent, StatusEvent(status=msg)) 
    22442244                    return 
    22452245            except: 
    22462246                tcrtl.SetBackgroundColour("pink") 
    2247                 msg = "Model Error:wrong value entered: %s" % sys.exc_value 
     2247                msg = "Model Error: wrong value entered: %s" % sys.exc_value 
    22482248                wx.PostEvent(self._manager.parent, StatusEvent(status=msg)) 
    22492249                return 
     
    22562256                        is_modified = True 
    22572257                else: 
    2258                     msg = "Cannot Plot :No npts in that Qrange!!!  " 
     2258                    msg = "Cannot Plot: No points in Q range!!!  " 
    22592259                    wx.PostEvent(self._manager.parent, StatusEvent(status=msg)) 
    22602260        else: 
    22612261            tcrtl.SetBackgroundColour("pink") 
    2262             msg = "Model Error:wrong value entered!!!" 
     2262            msg = "Model Error: wrong value entered!!!" 
    22632263            wx.PostEvent(self._manager.parent, StatusEvent(status=msg)) 
    22642264        self.save_current_state() 
     
    24312431                self.qmax.SetBackgroundColour("pink") 
    24322432                self.qmax.Refresh() 
    2433                 msg = "Npts of Data Error :" 
    2434                 msg += "No or too little npts of %s." % data.name 
     2433                msg = "Data Error: " 
     2434                msg += "Too few points in %s." % data.name 
    24352435                wx.PostEvent(self._manager.parent, StatusEvent(status=msg)) 
    24362436                self.fitrange = False 
     
    24662466                self.qmax.SetBackgroundColour("pink") 
    24672467                self.qmax.Refresh() 
    2468                 msg = "Npts of Data Error :" 
    2469                 msg += "No or too little npts of %s." % data.name 
     2468                msg = "Data Error: " 
     2469                msg += "Too few points in %s." % data.name 
    24702470                wx.PostEvent(self._manager.parent, StatusEvent(status=msg)) 
    24712471                self.fitrange = False 
     
    25182518                                            
    25192519                        except: 
    2520                             msg = "Wrong Fit parameter range entered " 
     2520                            msg = "Wrong fit parameter range entered" 
    25212521                            wx.PostEvent(self._manager.parent, 
    25222522                                         StatusEvent(status=msg)) 
     
    29862986            self.qmin.SetValue(str(self.qmin_x)) 
    29872987            self.qmax.SetValue(str(self.qmax_x)) 
    2988             self.set_npts2fit() 
     2988            self.show_npts2fit() 
    29892989            # At this point, some button and variables satatus (disabled?) 
    29902990            # should be checked such as color that should be reset to 
     
    38743874        to fit if implemented 
    38753875        """ 
    3876     def set_npts2fit(self): 
     3876    def show_npts2fit(self): 
    38773877        """ 
    38783878        setValue Npts for fitting if implemented 
  • src/sans/perspectives/fitting/console.py

    r5777106 r35086c3  
    55import time 
    66import wx 
    7 import park 
    8 from park.fitresult import FitHandler 
     7from sans.fit import FitHandler 
    98 
    109class ConsoleUpdate(FitHandler): 
     
    8887        Print result object 
    8988        """ 
    90         msg = " \n %s \n" % self.result.__str__() 
     89        msg = " \n %s \n" % str(self.result) 
    9190        wx.PostEvent(self.parent, StatusEvent(status=msg)) 
    9291                      
     
    129128             
    130129         
    131     def update_fit(self, msg="", last=False): 
     130    def update_fit(self, last=False): 
    132131        """ 
    133132        """ 
     
    136135        self.update_duration = t1 
    137136        self.fit_duration += self.elapsed_time 
    138         str_time = time.strftime("%a, %d %b %Y %H:%M:%S ", time.localtime(t1)) 
    139         UPDATE_INTERVAL = 0.5 
     137        str_time = time.strftime("%Y-%m-%d %H:%M:%S ", time.localtime(t1)) 
     138        UPDATE_INTERVAL = 5.0 
    140139        u_flag = False 
    141140        if self.fit_duration >= UPDATE_INTERVAL: 
    142141            self.fit_duration = 0 
    143142            u_flag = True 
    144         if not last: 
    145             msg += "Fit Updates ... %s \n" % str_time     
    146         else: 
    147             msg += "Final updates ........." 
     143        msg = str_time 
    148144        if u_flag or last: 
    149145            if self.result is not None: 
     
    164160                msg +=  str(self.result) 
    165161                msg += "\n" 
    166                 if not last: 
    167                     msg += "About %s s elapsed......... \n" % \ 
    168                                             str (UPDATE_INTERVAL) 
    169162            else: 
    170163                msg += "No result available\n" 
  • src/sans/perspectives/fitting/fit_thread.py

    ra855fec re3efa6b3  
    1818     
    1919    def __init__(self,  
    20                   fn, 
    21                   page_id, 
    22                    handler, 
    23                     batch_outputs, 
    24                     batch_inputs=None,              
    25                   pars=None, 
     20                 fn, 
     21                 page_id, 
     22                 handler, 
     23                 batch_outputs, 
     24                 batch_inputs=None, 
     25                 pars=None, 
    2626                 completefn = None, 
    2727                 updatefn   = None, 
     
    3030                 ftol       = None, 
    3131                 reset_flag = False): 
    32         CalcThread.__init__(self,completefn, 
     32        CalcThread.__init__(self, 
     33                 completefn, 
    3334                 updatefn, 
    3435                 yieldtime, 
     
    8081                list_map_get_attr.append(map_getattr) 
    8182            #from multiprocessing import Pool 
    82             inputs = zip(list_map_get_attr,self.fitter, list_fit_function, 
    83                           list_q, list_q, list_handler,list_curr_thread,list_ftol, 
     83            inputs = zip(list_map_get_attr, self.fitter, list_fit_function, 
     84                         list_q, list_q, list_handler,list_curr_thread,list_ftol, 
    8485                         list_reset_flag) 
    8586            result =  map(map_apply, inputs) 
     
    8788            self.complete(result=result, 
    8889                          batch_inputs=self.batch_inputs, 
    89                            batch_outputs=self.batch_outputs, 
     90                          batch_outputs=self.batch_outputs, 
    9091                          page_id=self.page_id, 
    9192                          pars = self.pars, 
  • src/sans/perspectives/fitting/fitpage.py

    rd44648e rbf5e985  
    661661                          wx.EXPAND | wx.ADJUST_MINSIZE, 0) 
    662662         
    663         if self.engine_type == "park": 
    664             self.text_disp_max.Show(True) 
    665             self.text_disp_min.Show(True) 
     663        self.text_disp_max.Show(True) 
     664        self.text_disp_min.Show(True) 
    666665 
    667666        for item in self.model.dispersion.keys(): 
     
    738737                                          wx.EXPAND | wx.ADJUST_MINSIZE, 0) 
    739738 
    740                         if self.engine_type == "park": 
    741                             ctl3.Show(True) 
    742                             ctl4.Show(True) 
     739                        ctl3.Show(True) 
     740                        ctl4.Show(True) 
    743741                                                               
    744742                    elif p == "npts": 
     
    10051003            return 
    10061004 
    1007         if len(self._manager.fit_thread_list) > 0 and\ 
    1008                     self._manager._fit_engine != "park" and\ 
    1009                     self._manager.sim_page != None and \ 
    1010                     self._manager.sim_page.uid == self.uid: 
     1005        if (len(self._manager.fit_thread_list) > 0 
     1006                and self._manager._fit_engine not in ("park","bumps") 
     1007                and self._manager.sim_page != None 
     1008                and self._manager.sim_page.uid == self.uid): 
    10111009            msg = "The FitEnging will be set to 'ParkMC'\n" 
    10121010            msg += " to fit with more than one data set..." 
     
    12681266        if check_float(tcrtl): 
    12691267            flag = self._onparamEnter_helper() 
    1270             self.set_npts2fit() 
     1268            self.show_npts2fit() 
    12711269            if self.fitrange: 
    12721270                temp_smearer = None 
     
    14681466                    #self.data.mask = index_data 
    14691467                    #self.Npts_fit.SetValue(str(len(self.data.mask))) 
    1470                     self.set_npts2fit() 
     1468                    self.show_npts2fit() 
    14711469            else: 
    14721470                index_data = ((self.qmin_x <= self.data.x) & \ 
     
    17661764            # try re draw the model plot if it exists 
    17671765            self._draw_model() 
    1768             self.set_npts2fit() 
     1766            self.show_npts2fit() 
    17691767        elif self.model == None: 
    17701768            self.panel.MakeModal(False) 
    17711769            event.Skip() 
    1772             self.set_npts2fit() 
     1770            self.show_npts2fit() 
    17731771            msg = "No model is found on updating MASK in the model plot... " 
    17741772            wx.PostEvent(self._manager.parent, StatusEvent(status=msg)) 
     
    20562054        return npts2fit 
    20572055 
    2058     def set_npts2fit(self): 
     2056    def show_npts2fit(self): 
    20592057        """ 
    20602058        setValue Npts for fitting 
     
    20682066        return self.tcChi.GetValue() 
    20692067         
    2070     def get_param_list(self): 
    2071         """ 
    2072         :return self.param_toFit: list containing  references to TextCtrl 
    2073             checked.Theses TextCtrl will allow reference to parameters to fit. 
    2074          
    2075         :raise: if return an empty list of parameter fit will nnote work 
    2076             properly so raise ValueError,"missing parameter to fit" 
    2077         """ 
    2078         if self.param_toFit != []: 
    2079             return self.param_toFit 
    2080         else: 
    2081             msg = "missing parameters to fit" 
    2082             wx.MessageBox(msg, 'warning') 
    2083             return False 
    2084        
    20852068    def onsetValues(self, chisqr, p_name, out, cov): 
    20862069        """ 
     
    21082091        if chisqr != None and numpy.isfinite(chisqr): 
    21092092            #format chi2 
    2110             if self.engine_type == "park": 
    2111                 npt_fit = float(self.get_npts2fit()) 
    21122093            chi2 = format_number(chisqr, True) 
    21132094            self.tcChi.SetValue(chi2) 
  • src/sans/perspectives/fitting/fitpanel.py

    rb6a181b reff93b8  
    6464        self.sim_page = None 
    6565        self.batch_page = None 
    66         self.fit_engine_type = "scipy" 
     66        self.fit_engine_type = "bumps" 
    6767        ## get the state of a page 
    6868        self.Bind(basepage.EVT_PAGE_INFO, self._onGetstate) 
  • src/sans/perspectives/fitting/fitproblem.py

    r5777106 r5bf0331  
    454454        return self.itervalues() 
    455455     
    456     def  set_result(self, result, fid): 
     456    def set_result(self, result, fid): 
    457457        """ 
    458458        """ 
  • src/sans/perspectives/fitting/simfitpage.py

    r5777106 rbf5e985  
    138138                self.Layout() 
    139139                break 
    140         self._onAdd_constraint(None) 
     140 
     141        #self._onAdd_constraint(None) 
    141142              
    142143    def onFit(self, event): 
     
    152153        ## making sure all parameters content a constraint 
    153154        ## validity of the constraint expression is own by fit engine 
    154         if self.parent._manager._fit_engine != "park" and flag: 
     155        if self.parent._manager._fit_engine not in ("park","bumps") and flag: 
    155156            msg = "The FitEnging will be set to 'Park' fit engine\n" 
    156157            msg += " for the simultaneous fit..." 
     
    378379        box_description = wx.StaticBox(self, -1,"Easy Setup ") 
    379380        boxsizer = wx.StaticBoxSizer(box_description, wx.HORIZONTAL)      
    380         sizer_constraint = wx.BoxSizer(wx.HORIZONTAL|wx.LEFT|wx.RIGHT|wx.EXPAND) 
     381        sizer_constraint = wx.BoxSizer(wx.HORIZONTAL) 
    381382        self.model_cbox_left = wx.ComboBox(self, -1, style=wx.CB_READONLY) 
    382383        self.model_cbox_left.Clear() 
     
    814815                         
    815816                    for fid in self.page_finder[id].iterkeys(): 
    816                         self.page_finder[id].set_model_param(param, 
    817                                                         constraint, fid=fid) 
     817                        # wrap in param/constraint in str() to remove unicode 
     818                        self.page_finder[id].set_model_param(str(param), 
     819                                                        str(constraint), fid=fid) 
    818820                    break 
    819821        return True 
Note: See TracChangeset for help on using the changeset viewer.