Changeset b768e92 in sasview for src/sas/sasgui/perspectives/fitting


Ignore:
Timestamp:
Jun 2, 2016 10:14:35 AM (9 years ago)
Author:
Gonzalez, Miguel <gonzalez@…>
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.2.2, ticket-1009, ticket-1094-headless, ticket-1242-2d-resolution, ticket-1243, ticket-1249, ticket885, unittest-saveload
Children:
ec30905
Parents:
6afc14b (diff), 70305bd2 (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 branch 'master' of https://github.com/SasView/sasview

Location:
src/sas/sasgui/perspectives/fitting
Files:
1 added
6 edited

Legend:

Unmodified
Added
Removed
  • src/sas/sasgui/perspectives/fitting/__init__.py

    r9e531f2 ra7c4ad2  
    3939    data_files = [] 
    4040    path = os.path.dirname(__file__) 
    41     # p_path = os.path.join(path, 'plugin_models') 
    42     # for f in findall(p_path): 
    43     #     data_files.append(('plugin_models', [f])) 
     41    p_path = os.path.join(path, 'plugin_models') 
     42    for f in findall(p_path): 
     43        data_files.append(('plugin_models', [f])) 
    4444    # path = get_data_path(media="media") 
    4545    for f in findall(path): 
  • src/sas/sasgui/perspectives/fitting/fitpage.py

    rcb4ef58 r934ce649  
    13301330                                              qmin=float(self.qmin_x), 
    13311331                                              qmax=float(self.qmax_x), 
    1332                                               enable_smearer=enable_smearer, 
    1333                                               draw=True) 
     1332                                              enable_smearer=enable_smearer) 
    13341333                if flag: 
    13351334                    #self.compute_chisqr(smearer= temp_smearer) 
     
    26062605                     qmin=float(self.qmin_x), 
    26072606                     qmax=float(self.qmax_x), 
    2608                      enable_smearer=enable_smearer, 
    2609                      draw=True) 
     2607                     enable_smearer=enable_smearer) 
    26102608 
    26112609        self.state.enable_smearer = self.enable_smearer.GetValue() 
  • src/sas/sasgui/perspectives/fitting/fitpanel.py

    rf60251f r05228b0  
    1717import models 
    1818_BOX_WIDTH = 80 
    19  
    2019 
    2120class FitPanel(nb, PanelBase): 
     
    154153        """ 
    155154        """ 
    156         from bumps.options import FIT_CONFIG 
    157         current = FIT_CONFIG.selected_name 
    158         self.parent.SetTitle(self.window_name + " - Active Fitting Optimizer: " + current) 
    159155        pos = self.GetSelection() 
    160156        if pos != -1: 
  • src/sas/sasgui/perspectives/fitting/fitting.py

    r86b049b r934ce649  
    1919import time 
    2020from copy import deepcopy 
    21 import models 
     21import traceback 
    2222 
    2323from sas.sascalc.dataloader.loader import Loader 
     
    4646from sas.sasgui.guiframe.documentation_window import DocumentationWindow 
    4747 
     48from . import models 
     49 
    4850MAX_NBR_DATA = 4 
    4951 
     
    5658    ON_MAC = True 
    5759 
    58  
     60import bumps.options 
     61from bumps.gui.fit_dialog import show_fit_config 
     62try: 
     63    from bumps.gui.fit_dialog import EVT_FITTER_CHANGED 
     64except ImportError: 
     65    # CRUFT: bumps 0.7.5.8 and below 
     66    EVT_FITTER_CHANGED = None  # type: wx.PyCommandEvent 
    5967 
    6068class Plugin(PluginBase): 
     
    254262                msg += "and try it again." 
    255263                wx.MessageBox(msg, 'Info') 
    256                 #wx.PostEvent(self.parent, StatusEvent(status=msg, type='stop', 
    257                 #                                      info='warning')) 
     264                #evt = StatusEvent(status=msg, type='stop', info='warning') 
     265                #wx.PostEvent(self.parent, evt) 
    258266            else: 
    259267                self.delete_menu.Delete(event_id) 
     
    262270                        self.edit_menu.DeleteItem(item) 
    263271                        msg = "The custom model, %s, has been deleted." % label 
    264                         wx.PostEvent(self.parent, StatusEvent(status=msg, 
    265                                                 type='stop', info='info')) 
     272                        evt = StatusEvent(status=msg, type='stop', info='info') 
     273                        wx.PostEvent(self.parent, evt) 
    266274                        break 
    267275        except: 
     
    501509        self.parent.Bind(EVT_SLICER_PANEL, self._on_slicer_event) 
    502510        self.parent.Bind(EVT_SLICER_PARS_UPDATE, self._onEVT_SLICER_PANEL) 
     511 
     512        # CRUFT: EVT_FITTER_CHANGED is not None for bumps 0.7.5.9 and above 
     513        if EVT_FITTER_CHANGED is not None: 
     514            self.parent.Bind(EVT_FITTER_CHANGED, self.on_fitter_changed) 
     515        self._set_fitter_label(bumps.options.FIT_CONFIG) 
     516 
    503517        #self.parent._mgr.Bind(wx.aui.EVT_AUI_PANE_CLOSE,self._onclearslicer) 
    504518        #Create reader when fitting panel are created 
     
    567581            except: 
    568582                msg = "Fitting: cannot deal with the theory received" 
     583                evt = StatusEvent(status=msg, info="error") 
    569584                logging.error("set_theory " + msg + "\n" + str(sys.exc_value)) 
    570                 wx.PostEvent(self.parent, 
    571                              StatusEvent(status=msg, info="error")) 
     585                wx.PostEvent(self.parent, evt) 
    572586 
    573587    def set_state(self, state=None, datainfo=None, format=None): 
     
    763777        Open the bumps options panel. 
    764778        """ 
    765         try: 
    766             from bumps.gui.fit_dialog import show_fit_config 
    767             show_fit_config(self.parent, help=self.on_help) 
    768         except ImportError: 
    769             # CRUFT: Bumps 0.7.5.6 and earlier do not have the help button 
    770             from bumps.gui.fit_dialog import OpenFitOptions 
    771             OpenFitOptions() 
     779        show_fit_config(self.parent, help=self.on_help) 
     780 
     781    def on_fitter_changed(self, event): 
     782        self._set_fitter_label(event.config) 
     783 
     784    def _set_fitter_label(self, config): 
     785        self.fit_panel.parent.SetTitle(self.fit_panel.window_name 
     786                                       + " - Active Fitting Optimizer: " 
     787                                       + config.selected_name) 
    772788 
    773789    def on_help(self, algorithm_id): 
     
    954970                    if not page.param_toFit: 
    955971                        msg = "No fitting parameters for %s" % page.window_caption 
    956                         wx.PostEvent(page.parent.parent, 
    957                                      StatusEvent(status=msg, info="error", 
    958                                                  type="stop")) 
     972                        evt = StatusEvent(status=msg, info="error", type="stop") 
     973                        wx.PostEvent(page.parent.parent, evt) 
    959974                        return False 
    960975                    if not page._update_paramv_on_fit(): 
     
    962977                        msg += " invalid in %s" % \ 
    963978                                    page.window_caption 
    964                         wx.PostEvent(page.parent.parent, 
    965                                      StatusEvent(status=msg, info="error", 
    966                                      type="stop")) 
     979                        evt = StatusEvent(status=msg, info="error", type="stop") 
     980                        wx.PostEvent(page.parent.parent, evt) 
    967981                        return False 
    968982 
     
    985999            except KeyboardInterrupt: 
    9861000                msg = "Fitting terminated" 
    987                 wx.PostEvent(self.parent, StatusEvent(status=msg, info="info", 
    988                                                       type="stop")) 
     1001                evt = StatusEvent(status=msg, info="info", type="stop") 
     1002                wx.PostEvent(self.parent, evt) 
    9891003                return True 
    9901004            except: 
    9911005                raise 
    9921006                msg = "Fitting error: %s" % str(sys.exc_value) 
    993                 wx.PostEvent(self.parent, StatusEvent(status=msg, info="error", 
    994                                                       type="stop")) 
     1007                evt = StatusEvent(status=msg, info="error", type="stop") 
     1008                wx.PostEvent(self.parent, evt) 
    9951009                return False 
    9961010        ## If a thread is already started, stop it 
     
    10871101            # add data associated to the page created 
    10881102            if page != None: 
    1089                 wx.PostEvent(self.parent, StatusEvent(status="Page Created", 
    1090                                                info="info")) 
     1103                evt = StatusEvent(status="Page Created", info="info") 
     1104                wx.PostEvent(self.parent, evt) 
    10911105            else: 
    10921106                msg = "Page was already Created" 
    1093                 wx.PostEvent(self.parent, StatusEvent(status=msg, 
    1094                                                        info="warning")) 
     1107                evt = StatusEvent(status=msg, info="warning") 
     1108                wx.PostEvent(self.parent, evt) 
    10951109        except: 
    10961110            msg = "Creating Fit page: %s" % sys.exc_value 
     
    12541268        msg = "Fit completed on %s \n" % str_time 
    12551269        msg += "Duration time: %s s.\n" % str(elapsed) 
    1256         wx.PostEvent(self.parent, StatusEvent(status=msg, info="info", 
    1257                                               type="stop")) 
     1270        evt = StatusEvent(status=msg, info="info", type="stop") 
     1271        wx.PostEvent(self.parent, evt) 
    12581272 
    12591273        if batch_outputs is None: 
     
    14051419                                         batch_inputs=batch_inputs) 
    14061420 
    1407         wx.PostEvent(self.parent, StatusEvent(status=msg, error="info", 
    1408                                               type="stop")) 
     1421        evt = StatusEvent(status=msg, error="info", type="stop") 
     1422        wx.PostEvent(self.parent, evt) 
    14091423        # Remove parameters that are not shown 
    14101424        cpage = self.fit_panel.get_page_by_id(uid) 
     
    14851499        msg = "Fit completed on %s \n" % str_time 
    14861500        msg += "Duration time: %s s.\n" % str(elapsed) 
    1487         wx.PostEvent(self.parent, StatusEvent(status=msg, info="info", 
    1488                                                       type="stop")) 
     1501        evt = StatusEvent(status=msg, info="info", type="stop") 
     1502        wx.PostEvent(self.parent, evt) 
    14891503        wx.PostEvent(self.result_panel, PlotResultEvent(result=result)) 
    14901504        wx.CallAfter(self._update_fit_button, page_id) 
     
    15101524                    not numpy.all(numpy.isfinite(res.pvec)): 
    15111525                    msg = "Fitting did not converge!!!" 
    1512                     wx.PostEvent(self.parent, 
    1513                              StatusEvent(status=msg, 
    1514                                          info="warning", 
    1515                                          type="stop")) 
     1526                    evt = StatusEvent(status=msg, info="warning", type="stop") 
     1527                    wx.PostEvent(self.parent, evt) 
    15161528                    wx.CallAfter(self._update_fit_button, page_id) 
    15171529                else: 
     
    15371549                    except KeyboardInterrupt: 
    15381550                        msg = "Singular point: Fitting Stoped." 
    1539                         wx.PostEvent(self.parent, StatusEvent(status=msg, 
    1540                                                               info="info", 
    1541                                                               type="stop")) 
     1551                        evt = StatusEvent(status=msg, info="info", type="stop") 
     1552                        wx.PostEvent(self.parent, evt) 
    15421553                    except: 
    15431554                        msg = "Singular point: Fitting Error occurred." 
    1544                         wx.PostEvent(self.parent, StatusEvent(status=msg, 
    1545                                                               info="error", 
    1546                                                               type="stop")) 
     1555                        evt = StatusEvent(status=msg, info="error", type="stop") 
     1556                        wx.PostEvent(self.parent, evt) 
    15471557 
    15481558        except: 
     
    15501560                   % sys.exc_value) 
    15511561            #import traceback; msg = "\n".join((traceback.format_exc(), msg)) 
    1552             wx.PostEvent(self.parent, StatusEvent(status=msg, info="warning", 
    1553                                                   type="stop")) 
     1562            evt = StatusEvent(status=msg, info="warning", type="stop") 
     1563            wx.PostEvent(self.parent, evt) 
    15541564 
    15551565    def _update_fit_button(self, page_id): 
     
    15881598        ## post a message to status bar 
    15891599        msg = "Set Chain Fitting: %s" % str(not self.batch_reset_flag) 
    1590         wx.PostEvent(self.parent, 
    1591                      StatusEvent(status=msg)) 
     1600        wx.PostEvent(self.parent, StatusEvent(status=msg)) 
    15921601 
    15931602 
     
    17351744            raise 
    17361745 
     1746    def _calc_exception(self, etype, value, tb): 
     1747        """ 
     1748        Handle exception from calculator by posting it as an error. 
     1749        """ 
     1750        logging.error("".join(traceback.format_exception(etype, value, tb))) 
     1751        msg = traceback.format_exception(etype, value, tb, limit=1) 
     1752        evt = StatusEvent(status="".join(msg), type="stop", info="error") 
     1753        wx.PostEvent(self.parent, evt) 
     1754 
    17371755    def _update2D(self, output, time=None): 
    17381756        """ 
    17391757        Update the output of plotting model 
    17401758        """ 
    1741         wx.PostEvent(self.parent, StatusEvent(status="Plot \ 
    1742         #updating ... ", type="update")) 
    1743         #self.ready_fit() 
     1759        msg = "Plot updating ... " 
     1760        wx.PostEvent(self.parent, StatusEvent(msg, type="update")) 
    17441761 
    17451762    def _complete2D(self, image, data, model, page_id, elapsed, index, qmin, 
     
    18471864                    time.sleep(0.1) 
    18481865            self.calc_2D = Calc2D(model=model, 
    1849                                     data=data, 
    1850                                     page_id=page_id, 
    1851                                     smearer=smearer, 
    1852                                     qmin=qmin, 
    1853                                     qmax=qmax, 
    1854                                     weight=weight, 
    1855                                     fid=fid, 
    1856                                     toggle_mode_on=toggle_mode_on, 
    1857                                     state=state, 
    1858                                     completefn=self._complete2D, 
    1859                                     update_chisqr=update_chisqr, source=source) 
     1866                                  data=data, 
     1867                                  page_id=page_id, 
     1868                                  smearer=smearer, 
     1869                                  qmin=qmin, 
     1870                                  qmax=qmax, 
     1871                                  weight=weight, 
     1872                                  fid=fid, 
     1873                                  toggle_mode_on=toggle_mode_on, 
     1874                                  state=state, 
     1875                                  completefn=self._complete2D, 
     1876                                  update_chisqr=update_chisqr, 
     1877                                  exception_handler=self._calc_exception, 
     1878                                  source=source) 
    18601879            self.calc_2D.queue() 
    18611880        except: 
     
    19121931                                  #updatefn = self._update1D, 
    19131932                                  update_chisqr=update_chisqr, 
     1933                                  exception_handler=self._calc_exception, 
    19141934                                  source=source) 
    19151935            self.calc_1D.queue() 
  • src/sas/sasgui/perspectives/fitting/model_thread.py

    rd85c194 r934ce649  
    2525                 source='model', 
    2626                 yieldtime=0.04, 
    27                  worktime=0.04 
     27                 worktime=0.04, 
     28                 exception_handler=None, 
    2829                 ): 
    29         CalcThread.__init__(self, completefn, updatefn, yieldtime, worktime) 
     30        CalcThread.__init__(self, completefn, updatefn, yieldtime, worktime, 
     31                            exception_handler=exception_handler) 
    3032        self.qmin = qmin 
    3133        self.qmax = qmax 
     
    133135                 updatefn=None, 
    134136                 yieldtime=0.01, 
    135                  worktime=0.01 
     137                 worktime=0.01, 
     138                 exception_handler=None, 
    136139                 ): 
    137140        """ 
    138141        """ 
    139         CalcThread.__init__(self, completefn, 
    140                  updatefn, 
    141                  yieldtime, 
    142                  worktime) 
     142        CalcThread.__init__(self, completefn, updatefn, yieldtime, worktime, 
     143                            exception_handler=exception_handler) 
    143144        self.fid = fid 
    144145        self.data = data 
  • src/sas/sasgui/perspectives/fitting/models.py

    rcb4ef58 r6afc14b  
    147147    try: 
    148148        import compileall 
    149         compileall.compile_dir(dir=dir, ddir=dir, force=1, 
     149        compileall.compile_dir(dir=dir, ddir=dir, force=0, 
    150150                               quiet=report_problem) 
    151151    except: 
Note: See TracChangeset for help on using the changeset viewer.