Changeset 55bb249c in sasview


Ignore:
Timestamp:
Sep 7, 2011 6:24:56 PM (13 years ago)
Author:
Jae Cho <jhjcho@…>
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:
44f9c8b
Parents:
7ad194fa
Message:

added custom weighting for single fit

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

Legend:

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

    r2e95da4 r55bb249c  
    869869        self.state.qmax_x = self.qmax_x 
    870870        self.state.qmin_x = self.qmin_x 
    871        
     871        self.state.dI_noweight = copy.deepcopy(self.dI_noweight.GetValue()) 
     872        self.state.dI_didata = copy.deepcopy(self.dI_didata.GetValue()) 
     873        self.state.dI_sqrdata = copy.deepcopy(self.dI_sqrdata.GetValue()) 
     874        self.state.dI_idata = copy.deepcopy(self.dI_idata.GetValue()) 
    872875        if hasattr(self,"enable_disp"): 
    873876            self.state.enable_disp= self.enable_disp.GetValue() 
     
    950953                                copy.deepcopy(self.pinhole_smearer.GetValue()) 
    951954        self.state.slit_smearer = copy.deepcopy(self.slit_smearer.GetValue())   
    952              
     955        self.state.dI_noweight = copy.deepcopy(self.dI_noweight.GetValue()) 
     956        self.state.dI_didata = copy.deepcopy(self.dI_didata.GetValue()) 
     957        self.state.dI_sqrdata = copy.deepcopy(self.dI_sqrdata.GetValue()) 
     958        self.state.dI_idata = copy.deepcopy(self.dI_idata.GetValue())   
    953959        if hasattr(self,"disp_box"): 
    954960            self.state.disp_box = self.disp_box.GetCurrentSelection() 
     
    10881094        self.pinhole_smearer.SetValue(state.pinhole_smearer) 
    10891095        self.slit_smearer.SetValue(state.slit_smearer) 
     1096         
     1097        self.dI_noweight.SetValue(state.dI_noweight) 
     1098        self.dI_didata.SetValue(state.dI_didata) 
     1099        self.dI_sqrdata.SetValue(state.dI_sqrdata) 
     1100        self.dI_idata.SetValue(state.dI_idata) 
     1101         
    10901102        ## we have two more options for smearing 
    10911103        if self.pinhole_smearer.GetValue(): self.onPinholeSmear(event=None) 
     
    12051217        self.pinhole_smearer.SetValue(state.pinhole_smearer) 
    12061218        self.slit_smearer.SetValue(state.slit_smearer) 
     1219         
     1220        self.dI_noweight.SetValue(state.dI_noweight) 
     1221        self.dI_didata.SetValue(state.dI_didata) 
     1222        self.dI_sqrdata.SetValue(state.dI_sqrdata) 
     1223        self.dI_idata.SetValue(state.dI_idata) 
     1224         
     1225         
    12071226        ## we have two more options for smearing 
    12081227        if self.pinhole_smearer.GetValue(): self.onPinholeSmear(event=None) 
    12091228        elif self.slit_smearer.GetValue(): self.onSlitSmear(event=None) 
    1210         
     1229         
    12111230        ## reset state of checkbox,textcrtl  and dispersity parameters value 
    12121231        self._reset_parameters_state(self.fittable_param,state.fittable_param) 
     
    17661785                if not self.disable_smearer.GetValue(): 
    17671786                    temp_smear= self.current_smearer 
     1787            weight = self.get_weight() 
    17681788            toggle_mode_on = self.model_view.IsEnabled() 
    17691789            self._manager.draw_model(self.model,  
     
    17761796                                    state = self.state, 
    17771797                                    enable2D=self.enable2D, 
    1778                                     update_chisqr=update_chisqr) 
     1798                                    update_chisqr=update_chisqr, 
     1799                                    weight=weight) 
    17791800         
    17801801        
  • fittingview/src/sans/perspectives/fitting/fitpage.py

    r2c60cb69 r55bb249c  
    4747        self.is_2D = None 
    4848        self.fit_started = False 
     49        self.weightbt_string = None 
    4950        # get smear info from data 
    5051        self._get_smear_info() 
     
    185186        smear_message_none  =  "No smearing is selected..." 
    186187        smear_message_dqdata  =  "The dQ data is being used for smearing..." 
    187         smear_message_2d  =  "Higher accuracy is very time-expensive. Use it with care..." 
    188         smear_message_new_ssmear  =  "Please enter only the value of interest to customize smearing..." 
    189         smear_message_new_psmear  =  "Please enter both; the dQ will be generated by interpolation..." 
     188        smear_message_2d  =  \ 
     189              "Higher accuracy is very time-expensive. Use it with care..." 
     190        smear_message_new_ssmear  = \ 
     191              "Please enter only the value of interest to customize smearing..." 
     192        smear_message_new_psmear  = \ 
     193              "Please enter both; the dQ will be generated by interpolation..." 
    190194        smear_message_2d_x_title = "<dQp>[1/A]:" 
    191195        smear_message_2d_y_title = "<dQs>[1/A]:"         
     
    207211        smear_set_box= wx.StaticBox(self, -1,'Set Instrumental Smearing') 
    208212        sizer_smearer_box = wx.StaticBoxSizer(smear_set_box, wx.HORIZONTAL) 
    209         sizer_smearer_box.SetMinSize((_DATA_BOX_WIDTH,85)) 
     213        sizer_smearer_box.SetMinSize((_DATA_BOX_WIDTH, 60)) 
     214         
     215        weighting_set_box= wx.StaticBox(self, -1,\ 
     216                                'Set Weighting by Selecting dI Source') 
     217        weighting_box = wx.StaticBoxSizer(weighting_set_box, wx.HORIZONTAL) 
     218        sizer_weighting = wx.BoxSizer(wx.HORIZONTAL) 
     219        weighting_box.SetMinSize((_DATA_BOX_WIDTH, 40)) 
     220        #Filling the sizer containing weighting info. 
     221        self.dI_noweight = wx.RadioButton(self, -1, 'No Weighting',  
     222                                          style=wx.RB_GROUP) 
     223        self.dI_didata = wx.RadioButton(self, -1, 'Use dI Data') 
     224        self.dI_sqrdata = wx.RadioButton(self, -1, 'Use |sqrt(I Data)|') 
     225        self.dI_idata = wx.RadioButton(self, -1, 'Use |I Data|') 
     226        self.Bind(wx.EVT_RADIOBUTTON, self.onWeighting,  
     227                  id=self.dI_noweight.GetId()) 
     228        self.Bind(wx.EVT_RADIOBUTTON, self.onWeighting,  
     229                  id=self.dI_didata.GetId()) 
     230        self.Bind(wx.EVT_RADIOBUTTON, self.onWeighting,  
     231                  id=self.dI_sqrdata.GetId()) 
     232        self.Bind(wx.EVT_RADIOBUTTON, self.onWeighting,  
     233                  id=self.dI_idata.GetId()) 
     234        self.dI_didata.SetValue(True) 
     235        # add 4 types of weighting to the sizer 
     236        sizer_weighting.Add( self.dI_noweight,0, wx.LEFT, 10) 
     237        sizer_weighting.Add((14,10)) 
     238        sizer_weighting.Add( self.dI_didata) 
     239        sizer_weighting.Add((14,10)) 
     240        sizer_weighting.Add( self.dI_sqrdata)  
     241        sizer_weighting.Add((14,10)) 
     242        sizer_weighting.Add( self.dI_idata)  
     243        sizer_weighting.Add((10,10))   
     244        self.dI_noweight.Enable(False) 
     245        self.dI_didata.Enable(False) 
     246        self.dI_sqrdata.Enable(False) 
     247        self.dI_idata.Enable(False) 
     248        weighting_box.Add(sizer_weighting) 
     249         
    210250        sizer_fit = wx.GridSizer(2, 4, 2, 6) 
    211251         
    212252        # combobox for smear2d accuracy selection 
    213         self.smear_accuracy = wx.ComboBox(self, -1,size=(50,-1),style=wx.CB_READONLY) 
     253        self.smear_accuracy = wx.ComboBox(self, -1,size=(50,-1), 
     254                                          style=wx.CB_READONLY) 
    214255        self._set_accuracy_list() 
    215256        self.smear_accuracy.SetValue(self.smear2d_accuracy) 
    216257        self.smear_accuracy.SetSelection(0) 
    217         self.smear_accuracy.SetToolTipString("'Higher' uses more Gaussian points for smearing computation.") 
     258        self.smear_accuracy.SetToolTipString(\ 
     259            "'Higher' uses more Gaussian points for smearing computation.") 
    218260                    
    219261        wx.EVT_COMBOBOX(self.smear_accuracy,-1, self._on_select_accuracy) 
     
    226268         
    227269        #textcntrl for custom resolution 
    228         self.smear_pinhole_max = self.ModelTextCtrl(self, -1,size=(_BOX_WIDTH-25,20),style=wx.TE_PROCESS_ENTER, 
    229                                             text_enter_callback = self.onPinholeSmear) 
    230         self.smear_pinhole_min = self.ModelTextCtrl(self, -1,size=(_BOX_WIDTH-25,20),style=wx.TE_PROCESS_ENTER, 
    231                                             text_enter_callback = self.onPinholeSmear) 
    232         self.smear_slit_height= self.ModelTextCtrl(self, -1,size=(_BOX_WIDTH-25,20),style=wx.TE_PROCESS_ENTER, 
    233                                             text_enter_callback = self.onSlitSmear) 
    234         self.smear_slit_width = self.ModelTextCtrl(self, -1,size=(_BOX_WIDTH-25,20),style=wx.TE_PROCESS_ENTER, 
    235                                             text_enter_callback = self.onSlitSmear) 
     270        self.smear_pinhole_max = self.ModelTextCtrl(self, -1, 
     271                            size=(_BOX_WIDTH-25,20),style=wx.TE_PROCESS_ENTER, 
     272                            text_enter_callback = self.onPinholeSmear) 
     273        self.smear_pinhole_min = self.ModelTextCtrl(self, -1, 
     274                            size=(_BOX_WIDTH-25,20),style=wx.TE_PROCESS_ENTER, 
     275                            text_enter_callback = self.onPinholeSmear) 
     276        self.smear_slit_height= self.ModelTextCtrl(self, -1, 
     277                            size=(_BOX_WIDTH-25,20),style=wx.TE_PROCESS_ENTER, 
     278                            text_enter_callback = self.onSlitSmear) 
     279        self.smear_slit_width = self.ModelTextCtrl(self, -1, 
     280                            size=(_BOX_WIDTH-25,20),style=wx.TE_PROCESS_ENTER, 
     281                            text_enter_callback = self.onSlitSmear) 
    236282 
    237283        ## smear 
    238         self.smear_data_left= BGTextCtrl(self, -1, size=(_BOX_WIDTH-25,20), style=0) 
     284        self.smear_data_left= BGTextCtrl(self, -1,  
     285                                        size=(_BOX_WIDTH-25,20), style=0) 
    239286        self.smear_data_left.SetValue(str(self.dq_l)) 
    240         self.smear_data_right = BGTextCtrl(self, -1, size=(_BOX_WIDTH-25,20), style=0) 
     287        self.smear_data_right = BGTextCtrl(self, -1,  
     288                                        size=(_BOX_WIDTH-25,20), style=0) 
    241289        self.smear_data_right.SetValue(str(self.dq_r)) 
    242290 
     
    248296 
    249297        #Filling the sizer containing instruments smearing info. 
    250         self.disable_smearer = wx.RadioButton(self, -1, 'None', style=wx.RB_GROUP) 
    251         self.enable_smearer = wx.RadioButton(self, -1, 'Use dQ Data') 
    252         #self.enable_smearer.SetToolTipString("Click to use the loaded dQ data for smearing.") 
    253         self.pinhole_smearer = wx.RadioButton(self, -1, 'Custom Pinhole Smear') 
    254         #self.pinhole_smearer.SetToolTipString("Click to input custom resolution for pinhole smearing.") 
     298        self.disable_smearer = wx.RadioButton(self, -1,  
     299                                              'None', style=wx.RB_GROUP) 
     300        self.enable_smearer = wx.RadioButton(self, -1,  
     301                                             'Use dQ Data') 
     302        #self.enable_smearer.SetToolTipString( 
     303        #"Click to use the loaded dQ data for smearing.") 
     304        self.pinhole_smearer = wx.RadioButton(self, -1,  
     305                                              'Custom Pinhole Smear') 
     306        #self.pinhole_smearer.SetToolTipString 
     307        #("Click to input custom resolution for pinhole smearing.") 
    255308        self.slit_smearer = wx.RadioButton(self, -1, 'Custom Slit Smear') 
    256         #self.slit_smearer.SetToolTipString("Click to input custom resolution for slit smearing.") 
    257         self.Bind(wx.EVT_RADIOBUTTON, self.onSmear, id=self.disable_smearer.GetId()) 
    258         self.Bind(wx.EVT_RADIOBUTTON, self.onSmear, id=self.enable_smearer.GetId()) 
    259         self.Bind(wx.EVT_RADIOBUTTON, self.onPinholeSmear, id=self.pinhole_smearer.GetId()) 
    260         self.Bind(wx.EVT_RADIOBUTTON, self.onSlitSmear, id=self.slit_smearer.GetId()) 
     309        #self.slit_smearer.SetToolTipString 
     310        #("Click to input custom resolution for slit smearing.") 
     311        self.Bind(wx.EVT_RADIOBUTTON, self.onSmear,  
     312                  id=self.disable_smearer.GetId()) 
     313        self.Bind(wx.EVT_RADIOBUTTON, self.onSmear,  
     314                  id=self.enable_smearer.GetId()) 
     315        self.Bind(wx.EVT_RADIOBUTTON, self.onPinholeSmear,  
     316                  id=self.pinhole_smearer.GetId()) 
     317        self.Bind(wx.EVT_RADIOBUTTON, self.onSlitSmear,  
     318                  id=self.slit_smearer.GetId()) 
    261319        self.disable_smearer.SetValue(True) 
    262320         
     
    277335        self.Npts_fit.SetToolTipString(\ 
    278336                            " Npts : number of points selected for fitting") 
    279         self.Npts_total  =  self.ModelTextCtrl(self, -1, size=(_BOX_WIDTH, 20),  
     337        self.Npts_total  =  self.ModelTextCtrl(self, -1,  
     338                        size=(_BOX_WIDTH, 20),  
    280339                        style=wx.TE_PROCESS_ENTER,  
    281340                        text_enter_callback=self._onQrangeEnter) 
     
    326385                         smear_message_new_ssmear, style=wx.ALIGN_LEFT) 
    327386        self.smear_message_new_p = wx.StaticText(self, -1, 
    328                                  smear_message_new_psmear , style=wx.ALIGN_LEFT) 
    329         self.smear_description_2d_x     =  wx.StaticText(self, -1, smear_message_2d_x_title  , style=wx.ALIGN_LEFT) 
    330         self.smear_description_2d_x.SetToolTipString("  dQp(parallel) in q_r direction.") 
    331         self.smear_description_2d_y     =  wx.StaticText(self, -1, smear_message_2d_y_title  , style=wx.ALIGN_LEFT) 
    332         self.smear_description_2d_y.SetToolTipString(" dQs(perpendicular) in q_phi direction.") 
    333         self.smear_description_pin_min     =  wx.StaticText(self, -1, smear_message_pinhole_min_title  , style=wx.ALIGN_LEFT) 
    334         self.smear_description_pin_max     =  wx.StaticText(self, -1, smear_message_pinhole_max_title  , style=wx.ALIGN_LEFT) 
    335         self.smear_description_slit_height    =  wx.StaticText(self, -1, smear_message_slit_height_title   , style=wx.ALIGN_LEFT) 
    336         self.smear_description_slit_width    =  wx.StaticText(self, -1, smear_message_slit_width_title   , style=wx.ALIGN_LEFT) 
     387                            smear_message_new_psmear , style=wx.ALIGN_LEFT) 
     388        self.smear_description_2d_x     =  wx.StaticText(self, -1,  
     389                            smear_message_2d_x_title  , style=wx.ALIGN_LEFT) 
     390        self.smear_description_2d_x.SetToolTipString(\ 
     391                                        "  dQp(parallel) in q_r direction.") 
     392        self.smear_description_2d_y     =  wx.StaticText(self, -1,  
     393                            smear_message_2d_y_title  , style=wx.ALIGN_LEFT) 
     394        self.smear_description_2d_y.SetToolTipString(\ 
     395                                    " dQs(perpendicular) in q_phi direction.") 
     396        self.smear_description_pin_min     =  wx.StaticText(self, -1,  
     397                        smear_message_pinhole_min_title  , style=wx.ALIGN_LEFT) 
     398        self.smear_description_pin_max     =  wx.StaticText(self, -1,  
     399                        smear_message_pinhole_max_title  , style=wx.ALIGN_LEFT) 
     400        self.smear_description_slit_height    =  wx.StaticText(self, -1,  
     401                        smear_message_slit_height_title   , style=wx.ALIGN_LEFT) 
     402        self.smear_description_slit_width    =  wx.StaticText(self, -1,  
     403                        smear_message_slit_width_title   , style=wx.ALIGN_LEFT) 
    337404         
    338405        #arrange sizers  
     
    340407        self.sizer_set_smearer.Add(sizer_smearer ) 
    341408        self.sizer_set_smearer.Add((10,10)) 
    342         self.sizer_set_smearer.Add( self.smear_description_none,0, wx.CENTER, 10 )  
    343         self.sizer_set_smearer.Add( self.smear_description_dqdata,0, wx.CENTER, 10 ) 
    344         self.sizer_set_smearer.Add( self.smear_description_2d,0, wx.CENTER, 10 ) 
    345         self.sizer_new_smear.Add( self.smear_description_type,0, wx.CENTER, 10 ) 
    346         self.sizer_new_smear.Add( self.smear_description_accuracy_type,0, wx.CENTER, 10 ) 
     409        self.sizer_set_smearer.Add( self.smear_description_none, 
     410                                    0, wx.CENTER, 10 )  
     411        self.sizer_set_smearer.Add( self.smear_description_dqdata, 
     412                                    0, wx.CENTER, 10 ) 
     413        self.sizer_set_smearer.Add( self.smear_description_2d, 
     414                                    0, wx.CENTER, 10 ) 
     415        self.sizer_new_smear.Add( self.smear_description_type, 
     416                                  0, wx.CENTER, 10 ) 
     417        self.sizer_new_smear.Add( self.smear_description_accuracy_type, 
     418                                  0, wx.CENTER, 10 ) 
    347419        self.sizer_new_smear.Add( self.smear_accuracy ) 
    348         self.sizer_new_smear.Add( self.smear_description_smear_type,0, wx.CENTER, 10 ) 
     420        self.sizer_new_smear.Add( self.smear_description_smear_type, 
     421                                  0, wx.CENTER, 10 ) 
    349422        self.sizer_new_smear.Add((15,-1)) 
    350         self.sizer_new_smear.Add( self.smear_description_2d_x,0, wx.CENTER, 10 ) 
    351         self.sizer_new_smear.Add( self.smear_description_pin_min,0, wx.CENTER, 10 ) 
    352         self.sizer_new_smear.Add( self.smear_description_slit_height,0, wx.CENTER, 10 ) 
    353  
    354         self.sizer_new_smear.Add( self.smear_pinhole_min,0, wx.CENTER, 10 ) 
    355         self.sizer_new_smear.Add( self.smear_slit_height,0, wx.CENTER, 10 ) 
    356         self.sizer_new_smear.Add( self.smear_data_left,0, wx.CENTER, 10 ) 
     423        self.sizer_new_smear.Add( self.smear_description_2d_x, 
     424                                  0, wx.CENTER, 10 ) 
     425        self.sizer_new_smear.Add( self.smear_description_pin_min, 
     426                                  0, wx.CENTER, 10 ) 
     427        self.sizer_new_smear.Add( self.smear_description_slit_height, 
     428                                  0, wx.CENTER, 10 ) 
     429 
     430        self.sizer_new_smear.Add( self.smear_pinhole_min, 
     431                                  0, wx.CENTER, 10 ) 
     432        self.sizer_new_smear.Add( self.smear_slit_height, 
     433                                  0, wx.CENTER, 10 ) 
     434        self.sizer_new_smear.Add( self.smear_data_left, 
     435                                  0, wx.CENTER, 10 ) 
    357436        self.sizer_new_smear.Add((20,-1)) 
    358         self.sizer_new_smear.Add( self.smear_description_2d_y,0, wx.CENTER, 10 ) 
    359         self.sizer_new_smear.Add( self.smear_description_pin_max,0, wx.CENTER, 10 ) 
    360         self.sizer_new_smear.Add( self.smear_description_slit_width,0, wx.CENTER, 10 ) 
     437        self.sizer_new_smear.Add( self.smear_description_2d_y, 
     438                                  0, wx.CENTER, 10 ) 
     439        self.sizer_new_smear.Add( self.smear_description_pin_max, 
     440                                  0, wx.CENTER, 10 ) 
     441        self.sizer_new_smear.Add( self.smear_description_slit_width, 
     442                                  0, wx.CENTER, 10 ) 
    361443 
    362444        self.sizer_new_smear.Add( self.smear_pinhole_max,0, wx.CENTER, 10 ) 
     
    370452         
    371453        # add all to chi2 sizer  
    372         sizer_smearer_box.Add(self.sizer_set_smearer)        
     454        sizer_smearer_box.Add(self.sizer_set_smearer)     
    373455        sizer_chi2.Add(sizer_smearer_box) 
     456        sizer_chi2.Add((-1,5)) 
     457        sizer_chi2.Add(weighting_box)  
    374458        sizer_chi2.Add((-1,5)) 
    375459         
     
    10241108        self._manager._reset_schedule_problem(value=0, uid=self.uid) 
    10251109        self._manager.schedule_for_fit(uid=self.uid,value=1)  
     1110        self._manager.set_fit_weight(uid=self.uid,  
     1111                                     weight=self.get_weight(), 
     1112                                     is2d = self.is_2D) 
    10261113        self._manager.set_fit_range(uid=self.uid,qmin=self.qmin_x,  
    10271114                                   qmax=self.qmax_x) 
     
    10311118        self.bind_fit_button() 
    10321119            
    1033     
     1120    def get_weight(self): 
     1121        """ 
     1122        Get weighting dI data 
     1123        """ 
     1124        button_list = [self.dI_noweight, 
     1125                       self.dI_didata, 
     1126                       self.dI_sqrdata, 
     1127                       self.dI_idata] 
     1128        if self.is_2D: 
     1129            dy_data = self.data.err_data  
     1130            data = self.data.data 
     1131        else: 
     1132            dy_data = self.data.dy 
     1133            data = self.data.y 
     1134        dy = dy_data 
     1135        for item in button_list: 
     1136            if item.GetValue(): 
     1137                if button_list.index(item) == 0: 
     1138                    dy = numpy.ones_like(dy_data) 
     1139                elif button_list.index(item) == 1: 
     1140                    dy = dy_data 
     1141                elif button_list.index(item) == 2: 
     1142                    dy = numpy.sqrt(data) 
     1143                elif button_list.index(item) == 3: 
     1144                    dy = data 
     1145                break 
     1146        return dy 
     1147                 
    10341148    def bind_fit_button(self): 
    10351149        """ 
     
    17351849                self.pinhole_smearer.Enable(True)  
    17361850                self.default_mask = copy.deepcopy(self.data.mask) 
     1851                if self.data.err_data == None or\ 
     1852                        (self.data.err_data == 1).all() or\ 
     1853                        (self.data.err_data == 0).all(): 
     1854                    self.dI_didata.Enable(False) 
     1855                    self.dI_noweight.SetValue(True) 
     1856                    self.weightbt_string = self.dI_noweight.GetLabelText() 
     1857                else: 
     1858                    self.dI_didata.Enable(True) 
     1859                    self.dI_didata.SetValue(True) 
     1860                    self.weightbt_string = self.dI_didata.GetLabelText() 
    17371861            else: 
    17381862                self.slit_smearer.Enable(True)  
    1739                 self.pinhole_smearer.Enable(True)       
    1740                  
     1863                self.pinhole_smearer.Enable(True)  
     1864                if self.data.dy == None or\ 
     1865                     (self.data.dy == 1).all() or\ 
     1866                     (self.data.dy == 0).all(): 
     1867                    self.dI_didata.Enable(False) 
     1868                    self.dI_noweight.SetValue(True) 
     1869                    self.weightbt_string = self.dI_noweight.GetLabelText() 
     1870                else: 
     1871                    self.dI_didata.Enable(True) 
     1872                    self.dI_didata.SetValue(True) 
     1873                    self.weightbt_string = self.dI_didata.GetLabelText() 
     1874            # Enable weighting radio uttons      
     1875            self.dI_noweight.Enable(True)    
     1876            self.dI_sqrdata.Enable(True) 
     1877            self.dI_idata.Enable(True) 
     1878               
    17411879            self.formfactorbox.Enable() 
    17421880            self.structurebox.Enable() 
     
    20102148        #msg = "Fit completed!dddd " 
    20112149        #wx.PostEvent(self._manager.parent, StatusEvent(status=msg)) 
    2012  
     2150     
     2151    def onWeighting(self, event): 
     2152        """ 
     2153        On Weighting radio button event, sets the weightbt_string 
     2154        """ 
     2155        self.weightbt_string = event.GetEventObject().GetLabelText() 
     2156     
    20132157    def onPinholeSmear(self, event): 
    20142158        """ 
  • fittingview/src/sans/perspectives/fitting/fitpanel.py

    raefc09f r55bb249c  
    326326        if self.batch_on: 
    327327            self.batch_page_index += 1 
    328             caption = "BatchPage " + str(self.batch_page_index) 
     328            caption = "BatchPage" + str(self.batch_page_index) 
    329329            panel.set_index_model(self.batch_page_index) 
    330330        else: 
    331331            #Increment index of fit page 
    332332            self.fit_page_index += 1 
    333             caption = "FitPage " + str(self.fit_page_index) 
     333            caption = "FitPage" + str(self.fit_page_index) 
    334334            panel.set_index_model(self.fit_page_index) 
    335335        panel.populate_box(dict=self.model_list_box) 
  • fittingview/src/sans/perspectives/fitting/fitproblem.py

    r3e3ab46 r55bb249c  
    8787        """ 
    8888        :return: fitting range 
     89        """ 
     90    def set_weight(self, weight=None): 
     91        """ 
     92        set fitting range  
     93        """ 
     94    def get_weight(self): 
     95        """ 
     96        get fitting weight 
    8997        """ 
    9098    def clear_model_param(self): 
     
    257265                self[d.id].set_model(self.model) 
    258266                self[d.id].set_range(self.qmin, self.qmax) 
    259            
     267                #self[d.id].set_smearer(self[d.id].get_smearer()) 
    260268    def get_fit_data(self, fid): 
    261269        """ 
     
    322330            return self[fid].get_range() 
    323331         
    324      
     332    def set_weight(self, weight, is2d, fid=None): 
     333        """ 
     334        fit weight 
     335        """ 
     336        if fid is None: 
     337            for value in self.itervalues(): 
     338                value.set_weight(weight, is2d) 
     339        else: 
     340            if fid in self.iterkeys(): 
     341                self[fid].value.set_weight(weight, is2d) 
     342                 
     343    def get_weight(self, fid=None): 
     344        """ 
     345        return fit weight 
     346        """ 
     347        if fid in self.iterkeys(): 
     348            return self[fid].get_weight() 
     349                  
    325350    def clear_model_param(self, fid=None): 
    326351        """ 
     
    381406        self.qmin = None 
    382407        self.qmax = None 
     408        # fit weight 
     409        self.weight = None 
    383410         
    384411         
     
    459486        :param data: list of data selected 
    460487        """ 
    461         self.fit_data = data 
     488        self.fit_data = copy.deepcopy(data) 
    462489             
    463490    def get_fit_data(self): 
     
    467494        return self.fit_data 
    468495     
     496    def set_weight(self, weight, is2d): 
     497        """ 
     498        Set weight array 
     499        """ 
     500        self.weight = weight 
     501        if is2d: 
     502            self.fit_data.err_data = self.weight 
     503        else: 
     504            self.fit_data.dy = self.weight 
     505 
     506    def get_weight(self): 
     507        """ 
     508        returns weight array 
     509        """ 
     510        return self.weight 
     511         
    469512    def set_model_param(self,name,value=None): 
    470513        """  
  • fittingview/src/sans/perspectives/fitting/fitting.py

    r53cf669 r55bb249c  
    6969        self.fit_thread_list = {} 
    7070        self.residuals = None 
     71        self.weight = None 
    7172        self.fit_panel = None 
    7273        # Start with a good default 
     
    430431        """ 
    431432        self.state_reader.write(filename=filepath, fitstate=fitstate) 
    432          
     433 
     434    def set_fit_weight(self, uid, weight, is2d=False, fid=None): 
     435        """ 
     436        Set the fit weights of a given page for all 
     437        its data by default. If fid is provide then set the range  
     438        only for the data with fid as id 
     439        :param uid: id corresponding to a fit page 
     440        :param fid: id corresponding to a fit problem (data, model) 
     441        :param weight: current dy data 
     442        """ 
     443        if uid in self.page_finder.keys(): 
     444            self.page_finder[uid].set_weight(weight=weight, is2d=is2d) 
     445                     
    433446    def set_fit_range(self, uid, qmin, qmax, fid=None): 
    434447        """ 
     
    582595            self.draw_model(model=model, data=data, page_id=uid, smearer=smear, 
    583596                enable1D=enable1D, enable2D=enable2D, 
    584                 qmin=qmin, qmax=qmax) 
     597                qmin=qmin, qmax=qmax, weight=None) 
    585598            self._mac_sleep(0.2) 
    586599             
     
    597610                   toggle_mode_on=False, 
    598611                   qmin=None, qmax=None,  
    599                    update_chisqr=True): 
     612                   update_chisqr=True, weight=None): 
    600613        """ 
    601614        Draw model. 
     
    613626              
    614627        """ 
     628        self.weight = weight 
    615629        if issubclass(data.__class__, Data1D) or not enable2D:     
    616630            ## draw model 1D with no loaded data 
     
    14291443        instead of calling expansive CalcChisqr in guithread 
    14301444        """ 
     1445        data = deepcopy(data) 
     1446         
    14311447        # default chisqr 
    14321448        chisqr = None 
     
    14401456            if index == None:  
    14411457                index = numpy.ones(len(data.data),ntype=bool) 
     1458            if self.weight != None: 
     1459                data.err_data = self.weight 
    14421460            # get rid of zero error points 
    14431461            index = index & (data.err_data != 0)   
     
    14511469            if index == None:  
    14521470                index = numpy.ones(len(data.y), ntype=bool) 
     1471            if self.weight != None: 
     1472                data.dy = self.weight 
    14531473            if data.dy == None or data.dy == []: 
    14541474                dy = numpy.ones(len(data.y)) 
     
    14681488        chisqr = numpy.average(residuals * residuals) 
    14691489        self._plot_residuals(page_id, data, index) 
     1490        #reset weight 
     1491        self.weight = None 
    14701492        return chisqr 
    14711493     
  • fittingview/src/sans/perspectives/fitting/pagestate.py

    rc21e87b r55bb249c  
    5454                      ["enable_disp","enable_disp","bool"], 
    5555                      ["disable_disp","disable_disp","bool"], 
    56                       ["slit_smearer","slit_smearer","bool"], 
     56                      ["dI_noweight","dI_noweight","bool"], 
     57                      ["dI_didata","dI_didata","bool"], 
     58                      ["dI_sqrdata","dI_sqrdata","bool"], 
     59                      ["dI_idata","dI_idata","bool"], 
    5760                      ["enable2D","enable2D","bool"], 
    5861                      ["cb1","cb1","bool"], 
    5962                      ["tcChi","tcChi","float"], 
    60                      ["smearer", "smearer", "float"], 
    61                      ["smear_type","smear_type", "string"], 
    62                      ["dq_l", "dq_l", "string"], 
    63                      ["dq_r","dq_r", "string"]] 
     63                      ["smearer", "smearer", "float"], 
     64                      ["smear_type","smear_type", "string"], 
     65                      ["dq_l", "dq_l", "string"], 
     66                      ["dq_r","dq_r", "string"]] 
    6467 
    6568list_of_model_attributes = [["values", "values"], 
     
    242245        self.pinhole_smearer = False 
    243246        self.slit_smearer   = False 
     247        # weighting options 
     248        self.dI_noweight = False 
     249        self.dI_didata = True 
     250        self.dI_sqrdata = False 
     251        self.dI_idata   = False 
    244252        ## disperity selection 
    245253        self.enable_disp = False 
     
    309317        obj.slit_smearer = copy.deepcopy(self.slit_smearer) 
    310318        obj.smear_type = copy.deepcopy(self.smear_type) 
     319        obj.dI_noweight = copy.deepcopy(self.dI_noweight) 
     320        obj.dI_didata = copy.deepcopy(self.dI_didata) 
     321        obj.dI_sqrdata = copy.deepcopy(self.dI_sqrdata) 
     322        obj.dI_idata = copy.deepcopy(self.dI_idata) 
    311323        obj.dq_l = copy.deepcopy(self.dq_l) 
    312324        obj.dq_r = copy.deepcopy(self.dq_r) 
     
    373385        rep += "Dispersity disable : %s\n"%str(self.disable_disp) 
    374386        rep += "Slit smearer enable: %s\n"%str(self.slit_smearer) 
     387         
     388        rep += "dI_noweight : %s\n"%str(self.dI_noweight) 
     389        rep += "dI_didata : %s\n"%str(self.dI_didata) 
     390        rep += "dI_sqrdata : %s\n"%str(self.dI_sqrdata) 
     391        rep += "dI_idata : %s\n"%str(self.dI_idata) 
     392         
     393         
    375394        rep += "2D enable : %s\n"%str(self.enable2D) 
    376395        rep += "All parameters checkbox selected: %s\n"%(self.cb1) 
Note: See TracChangeset for help on using the changeset viewer.