Changeset 62f851f in sasview


Ignore:
Timestamp:
Sep 30, 2011 2:11:23 PM (13 years ago)
Author:
Gervaise Alina <gervyh@…>
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:
647df0d1
Parents:
2b440504
Message:

working on plot for batch

Location:
fittingview/src/sans/perspectives/fitting
Files:
4 edited

Legend:

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

    ra624e76 r62f851f  
    19281928        if flag: 
    19291929            #set model view button 
     1930            self.current_smearer = smear_selection(self.data, self.model) 
    19301931            if self.data.__class__.__name__ == "Data2D": 
    19311932                self.enable2D = True 
  • fittingview/src/sans/perspectives/fitting/fitproblem.py

    r5e48acb r62f851f  
    4343        :return: saved model 
    4444        """ 
     45    def set_residuals(self, residuals): 
     46        """  
     47        save a copy of residual 
     48        :param data: data selected 
     49        """ 
     50    def get_residuals(self): 
     51        """ 
     52        :return: residuals 
     53        """ 
     54         
    4555    def set_theory_data(self, data): 
    4656        """  
     
    177187        return smear object 
    178188        """ 
    179         result = [] 
    180         if fid is None: 
    181             for value in self.itervalues(): 
    182                 result.append(value.get_smearer()) 
    183         else: 
    184             if fid in self.iterkeys(): 
    185                 result.append(self[fid].get_smearer()) 
    186         return result 
     189        if fid in self.iterkeys(): 
     190            return self[fid].get_smearer() 
     191      
    187192     
    188193    def save_model_name(self, name, fid=None): 
     
    227232        """ 
    228233        if fid in self.iterkeys(): 
    229             self[fid].get_model() 
     234            return self[fid].get_model() 
    230235        
    231236    def set_fit_tab_caption(self, caption): 
     
    241246        return self.fit_tab_caption 
    242247     
     248    def set_residuals(self, residuals, fid): 
     249        """  
     250        save a copy of residual 
     251        :param data: data selected 
     252        """ 
     253        if fid in self.iterkeys(): 
     254            self[fid].set_residuals(residuals) 
     255             
     256    def get_residuals(self, fid): 
     257        """ 
     258        :return: residuals 
     259        """ 
     260        if fid in self.iterkeys(): 
     261            return self[fid].get_residuals() 
     262         
    243263    def set_theory_data(self, fid, data=None): 
    244264        """  
     
    434454        self.fit_data = None 
    435455        self.theory_data = None 
     456        self.residuals = None 
    436457        # original data: should not be modified 
    437458        self.original_data = None 
     
    509530        """ 
    510531        return self.model 
    511    
     532    
     533    def set_residuals(self, residuals): 
     534        """  
     535        save a copy of residual 
     536        :param data: data selected 
     537        """ 
     538        self.residuals = residuals 
     539             
     540    def get_residuals(self): 
     541        """ 
     542        :return: residuals 
     543        """ 
     544        return self.residuals 
     545         
    512546    def set_theory_data(self, data): 
    513547        """  
  • fittingview/src/sans/perspectives/fitting/fitting.py

    r29a4024 r62f851f  
    653653              
    654654        """ 
    655         self.weight = weight 
     655        #self.weight = weight 
    656656        if issubclass(data.__class__, Data1D) or not enable2D:     
    657657            ## draw model 1D with no loaded data 
     
    663663                               qmin=qmin, 
    664664                               qmax=qmax,  
     665                               weight=weight, 
    665666                               toggle_mode_on=toggle_mode_on, 
    666667                               state=state, 
     
    675676                                qmin=qmin, 
    676677                                qmax=qmax, 
     678                                weigth=weight, 
    677679                                state=state, 
    678680                                toggle_mode_on=toggle_mode_on, 
     
    10481050                        batch_outputs[pars[index]].append(null_value) 
    10491051                        item = null_value 
    1050                         batch_outputs["error on %s" % pars[index]].append(item) 
     1052                        batch_inputs["error on %s" % pars[index]].append(item) 
    10511053                else: 
    10521054                    batch_outputs["Chi2"].append(res.fitness) 
     
    10541056                        batch_outputs[pars[index]].append(res.pvec[index]) 
    10551057                        item = res.stderr[index] 
    1056                         batch_outputs["error on %s" % pars[index]].append(item) 
     1058                        batch_inputs["error on %s" % pars[index]].append(item) 
    10571059            pid = page_id[0] 
    10581060            self.page_finder[pid].set_result(result=batch_outputs)    
     1061            
     1062            """ 
     1063            draw_model(self, model, page_id, data=None, smearer=None, 
     1064                   enable1D=True, enable2D=False, 
     1065                   state=None, 
     1066                   toggle_mode_on=False, 
     1067                   qmin=None, qmax=None,  
     1068                   update_chisqr=True, weight=None): 
     1069            """ 
     1070            for pid in page_id: 
     1071                cpage = self.fit_panel.get_page_by_id(pid) 
     1072                cpage._on_fit_complete() 
     1073                for fid in self.page_finder[pid].keys(): 
     1074                    data = self.page_finder[pid].get_fit_data(fid) 
     1075                    model = self.page_finder[pid].get_model(fid) 
     1076                    smearer = self.page_finder[pid].get_smearer(fid) 
     1077                    qmin, qmax = self.page_finder[pid].get_range(fid) 
     1078                    weight = self.page_finder[pid].get_weight(fid) 
     1079                    flag = issubclass(data.__class__, Data2D) 
     1080                    self.draw_model(model=model, 
     1081                                      page_id=pid,  
     1082                                      data=data,  
     1083                                      smearer=smearer, 
     1084                                      enable1D=not flag,  
     1085                                      enable2D=flag, 
     1086                                      state=None, 
     1087                                      toggle_mode_on=False, 
     1088                                      qmin=qmin, qmax=qmax,  
     1089                                      update_chisqr=False,  
     1090                                      weight=weight) 
     1091                     
    10591092            self.parent.on_set_batch_result(data_outputs=batch_outputs,  
    10601093                                            data_inputs=batch_inputs, 
    10611094                                            plugin_name=self.sub_menu) 
    1062             for uid in page_id: 
    1063                 cpage = self.fit_panel.get_page_by_id(uid) 
    1064                 cpage._on_fit_complete() 
    1065              
     1095              
     1096              
    10661097    def _single_fit_completed(self, result, pars, page_id, batch_outputs, 
    10671098                          batch_inputs=None,  elapsed=None): 
     
    13311362         
    13321363    def _complete1D(self, x, y, page_id, elapsed, index, model, 
     1364                    weight=None, 
    13331365                    toggle_mode_on=False, state=None,  
    13341366                    data=None, update_chisqr=True): 
     
    13781410                                 Chi2UpdateEvent(output=self._cal_chisqr( 
    13791411                                                                data=data, 
     1412                                                                weight=weight, 
    13801413                                                            page_id=page_id, 
    13811414                                                            index=index))) 
    13821415                else: 
    1383                     self._plot_residuals(page_id, data, index) 
     1416                    self._plot_residuals(page_id=page_id, data=data, 
     1417                                          index=index, weight=weight) 
    13841418 
    13851419            msg = "Computation  completed!" 
     
    14001434   
    14011435    def _complete2D(self, image, data, model, page_id,  elapsed, index, qmin, 
    1402                      qmax, toggle_mode_on=False, state=None,  
     1436                     
     1437                     qmax, weight=None, toggle_mode_on=False, state=None,  
    14031438                     update_chisqr=True): 
    14041439        """ 
     
    14501485                wx.PostEvent(current_pg, 
    14511486                             Chi2UpdateEvent(output=self._cal_chisqr(data=data, 
     1487                                                                    weight=weight, 
    14521488                                                         page_id=page_id, 
    14531489                                                         index=index))) 
    14541490            else: 
    1455                 self._plot_residuals(page_id, data, index) 
     1491                self._plot_residuals(page_id=page_id, data=data, 
     1492                                      index=index, weight=weight) 
    14561493        msg = "Computation  completed!" 
    14571494        wx.PostEvent(self.parent, StatusEvent(status=msg, type="stop")) 
     
    14621499                      description=None, enable2D=False, 
    14631500                      state=None, 
     1501                      weight=None, 
    14641502                      toggle_mode_on=False, 
    14651503                       update_chisqr=True): 
     
    14881526                                    qmin=qmin, 
    14891527                                    qmax=qmax, 
     1528                                    weight=weight,  
    14901529                                    toggle_mode_on=toggle_mode_on, 
    14911530                                    state=state, 
     
    15031542                      qmin, qmax, smearer=None, 
    15041543                state=None, 
     1544                weight=None, 
    15051545                toggle_mode_on=False, update_chisqr=True,  
    15061546                enable1D=True): 
     
    15261566                                  smearer=smearer, 
    15271567                                  state=state, 
     1568                                  weight=weight, 
    15281569                                  toggle_mode_on=toggle_mode_on, 
    15291570                                  completefn=self._complete1D, 
     
    15381579   
    15391580     
    1540     def _cal_chisqr(self, page_id, data, index=None):  
     1581    def _cal_chisqr(self, page_id, data, weight, index=None):  
    15411582        """ 
    15421583        Get handy Chisqr using the output from draw1D and 2D,  
     
    15551596            if index == None:  
    15561597                index = numpy.ones(len(data_copy.data),ntype=bool) 
    1557             if self.weight != None: 
    1558                 data_copy.err_data = self.weight 
     1598            if weight != None: 
     1599                data_copy.err_data = weight 
    15591600            # get rid of zero error points 
    15601601            index = index & (data_copy.err_data != 0)   
     
    15701611            if index == None:  
    15711612                index = numpy.ones(len(data_copy.y), ntype=bool) 
    1572             if self.weight != None: 
    1573                 data_copy.dy = self.weight 
     1613            if weight != None: 
     1614                data_copy.dy = weight 
    15741615            if data_copy.dy == None or data_copy.dy == []: 
    15751616                dy = numpy.ones(len(data_copy.y)) 
     
    15911632        # get chisqr only w/finite 
    15921633        chisqr = numpy.average(residuals * residuals) 
    1593         self._plot_residuals(page_id, data_copy, index) 
     1634        self._plot_residuals(page_id=page_id, data=data_copy,  
     1635                             weight=weight, index=index) 
    15941636         
    15951637        return chisqr 
    15961638     
    1597     def _plot_residuals(self, page_id, data=None, index=None):  
     1639    def _plot_residuals(self, page_id, weight, data=None, index=None):  
    15981640        """ 
    15991641        Plot the residuals 
     
    16151657            theory_data = self.page_finder[page_id].get_theory_data(fid=data_copy.id) 
    16161658            gn = theory_data.data#[index] 
    1617             en = self.weight#data_copy.err_data#[index] 
     1659            en = weight#data_copy.err_data#[index] 
    16181660            residuals.data = (fn - gn) / en  
    16191661            residuals.qx_data = data_copy.qx_data#[index] 
     
    16361678                dy = numpy.ones(len(data_copy.y)) 
    16371679            else: 
    1638                 if self.weight == None: 
     1680                if weight == None: 
    16391681                    dy = numpy.ones(len(data_copy.y)) 
    16401682                ## Set consitently w/AbstractFitengine:  
    16411683                ## But this should be corrected later. 
    16421684                else: 
    1643                     dy = self.weight#deepcopy(data_copy.dy) 
     1685                    dy = weight#deepcopy(data_copy.dy) 
    16441686                dy[dy==0] = 1   
    16451687            fn = data_copy.y[index]  
     
    16731715        ##post data to plot 
    16741716        title = new_plot.name  
     1717        self.page_finder[page_id].set_residuals(residuals=new_plot, fid=data.id) 
    16751718        # plot data 
    16761719        wx.PostEvent(self.parent, NewPlotEvent(plot=new_plot, title=title))  
    16771720        #reset weight   
    1678         self.weight = None 
     1721        #self.weight = None 
    16791722#def profile(fn, *args, **kw): 
    16801723#    import cProfile, pstats, os 
  • fittingview/src/sans/perspectives/fitting/model_thread.py

    r7e7e806 r62f851f  
    1717    def __init__(self, data, model, smearer, qmin, qmax,  page_id, 
    1818                 state=None, 
     19                 weight=None, 
    1920                 toggle_mode_on=False, 
    2021                 completefn=None, 
     
    3031        self.qmin = qmin 
    3132        self.qmax = qmax 
     33        self.weight = weight 
    3234        #self.qstep = qstep 
    3335        self.toggle_mode_on = toggle_mode_on 
     
    104106                       qmin=self.qmin, 
    105107                       qmax=self.qmax, 
     108                       weight=self.weight, 
    106109                       #qstep=self.qstep, 
    107110                       update_chisqr = self.update_chisqr) 
     
    117120                 qmin=None, 
    118121                 qmax=None, 
     122                 weight=None, 
    119123                 smearer=None, 
    120124                 toggle_mode_on=False, 
     
    136140        self.qmax = qmax 
    137141        self.model = model 
     142        self.weight = weight 
    138143        self.toggle_mode_on = toggle_mode_on 
    139144        self.state = state 
     
    166171                      page_id=self.page_id, 
    167172                      state=self.state, 
     173                      weight=self.weight, 
    168174                      toggle_mode_on=self.toggle_mode_on, 
    169175                      elapsed=elapsed,index=index, model=self.model, 
Note: See TracChangeset for help on using the changeset viewer.