Ignore:
Timestamp:
Mar 7, 2017 9:50:13 AM (7 years ago)
Author:
krzywon
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, ticket-1009, ticket-1094-headless, ticket-1242-2d-resolution, ticket-1243, ticket-1249, ticket885, unittest-saveload
Children:
d85f1d8a
Parents:
09f2328
Message:

Custom pinhole smearing accepts a constant %Q and applies it across entire Q space. #850

File:
1 edited

Legend:

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

    r8c0d9eb r7e98655  
    2929_BOX_WIDTH = 76 
    3030_DATA_BOX_WIDTH = 300 
    31 SMEAR_SIZE_L = 0.00 
    3231SMEAR_SIZE_H = 0.00 
    3332CUSTOM_MODEL = 'Plugin Models' 
     
    210209              "Please enter only the value of interest to customize smearing..." 
    211210        smear_message_new_psmear = \ 
    212               "Please enter both; the dQ will be generated by interpolation..." 
     211              "Please enter a fixed percentage to be applied to all Q values..." 
    213212        smear_message_2d_x_title = "<dQp>[1/A]:" 
    214213        smear_message_2d_y_title = "<dQs>[1/A]:" 
    215         smear_message_pinhole_min_title = "dQ_low[1/A]:" 
    216         smear_message_pinhole_max_title = "dQ_high[1/A]:" 
     214        smear_message_pinhole_percent_title = "dQ[%]:" 
    217215        smear_message_slit_height_title = "Slit height[1/A]:" 
    218216        smear_message_slit_width_title = "Slit width[1/A]:" 
     
    307305         
    308306        # textcntrl for custom resolution 
    309         self.smear_pinhole_max = ModelTextCtrl(self, wx.ID_ANY, 
    310                             size=(_BOX_WIDTH - 25, 20), 
    311                             style=wx.TE_PROCESS_ENTER, 
    312                             text_enter_callback=self.onPinholeSmear) 
    313         self.smear_pinhole_min = ModelTextCtrl(self, wx.ID_ANY, 
    314                             size=(_BOX_WIDTH - 25, 20), 
    315                             style=wx.TE_PROCESS_ENTER, 
    316                             text_enter_callback=self.onPinholeSmear) 
     307        self.smear_pinhole_percent = ModelTextCtrl(self, wx.ID_ANY, 
     308                                                   size=(_BOX_WIDTH - 25, 20), 
     309                                                   style=wx.TE_PROCESS_ENTER, 
     310                                                   text_enter_callback= 
     311                                                   self.onPinholeSmear) 
    317312        self.smear_slit_height = ModelTextCtrl(self, wx.ID_ANY, 
    318313                            size=(_BOX_WIDTH - 25, 20), 
     
    333328 
    334329        # set default values for smear 
    335         self.smear_pinhole_max.SetValue(str(self.dx_max)) 
    336         self.smear_pinhole_min.SetValue(str(self.dx_min)) 
     330        self.smear_pinhole_percent.SetValue(str(self.dx_percent)) 
    337331        self.smear_slit_height.SetValue(str(self.dxl)) 
    338332        self.smear_slit_width.SetValue(str(self.dxw)) 
     
    426420        self.smear_description_2d_y.SetToolTipString( 
    427421                                    " dQs(perpendicular) in q_phi direction.") 
    428         self.smear_description_pin_min = wx.StaticText(self, wx.ID_ANY, 
    429                         smear_message_pinhole_min_title, style=wx.ALIGN_LEFT) 
    430         self.smear_description_pin_max = wx.StaticText(self, wx.ID_ANY, 
    431                         smear_message_pinhole_max_title, style=wx.ALIGN_LEFT) 
     422        self.smear_description_pin_percent = wx.StaticText(self, wx.ID_ANY, 
     423                                            smear_message_pinhole_percent_title, 
     424                                            style=wx.ALIGN_LEFT) 
    432425        self.smear_description_slit_height = wx.StaticText(self, wx.ID_ANY, 
    433426                        smear_message_slit_height_title, style=wx.ALIGN_LEFT) 
     
    453446        self.sizer_new_smear.Add((15, -1)) 
    454447        self.sizer_new_smear.Add(self.smear_description_2d_x, 0, wx.CENTER, 10) 
    455         self.sizer_new_smear.Add(self.smear_description_pin_min, 
    456                                  0, wx.CENTER, 10) 
    457448        self.sizer_new_smear.Add(self.smear_description_slit_height, 
    458449                                 0, wx.CENTER, 10) 
    459450 
    460         self.sizer_new_smear.Add(self.smear_pinhole_min, 0, wx.CENTER, 10) 
    461451        self.sizer_new_smear.Add(self.smear_slit_height, 0, wx.CENTER, 10) 
    462452        self.sizer_new_smear.Add(self.smear_data_left, 0, wx.CENTER, 10) 
     
    464454        self.sizer_new_smear.Add(self.smear_description_2d_y, 
    465455                                 0, wx.CENTER, 10) 
    466         self.sizer_new_smear.Add(self.smear_description_pin_max, 
     456        self.sizer_new_smear.Add(self.smear_description_pin_percent, 
    467457                                 0, wx.CENTER, 10) 
    468458        self.sizer_new_smear.Add(self.smear_description_slit_width, 
    469459                                 0, wx.CENTER, 10) 
    470460 
    471         self.sizer_new_smear.Add(self.smear_pinhole_max, 0, wx.CENTER, 10) 
     461        self.sizer_new_smear.Add(self.smear_pinhole_percent, 0, wx.CENTER, 10) 
    472462        self.sizer_new_smear.Add(self.smear_slit_width, 0, wx.CENTER, 10) 
    473463        self.sizer_new_smear.Add(self.smear_data_right, 0, wx.CENTER, 10) 
     
    15811571        if self.dxw is None: 
    15821572            self.dxw = "" 
    1583         if self.dx_min is None: 
    1584             self.dx_min = SMEAR_SIZE_L 
    1585         if self.dx_max is None: 
    1586             self.dx_max = SMEAR_SIZE_H 
     1573        if self.dx_percent is None: 
     1574            self.dx_percent = SMEAR_SIZE_H 
    15871575 
    15881576    def _get_smear_info(self): 
     
    16461634            self.smear_description_2d_y.Show(True) 
    16471635            if self.pinhole_smearer.GetValue(): 
    1648                 self.smear_pinhole_min.Show(True) 
    1649                 self.smear_pinhole_max.Show(True) 
     1636                self.smear_pinhole_percent.Show(True) 
    16501637        # smear from data 
    16511638        elif self.enable_smearer.GetValue(): 
     
    16581645                    self.smear_description_slit_width.Show(True) 
    16591646                elif self.smear_type == 'Pinhole': 
    1660                     self.smear_description_pin_min.Show(True) 
    1661                     self.smear_description_pin_max.Show(True) 
     1647                    self.smear_description_pin_percent.Show(True) 
    16621648                self.smear_description_smear_type.Show(True) 
    16631649                self.smear_description_type.Show(True) 
     
    16681654            if self.smear_type == 'Pinhole': 
    16691655                self.smear_message_new_p.Show(True) 
    1670                 self.smear_description_pin_min.Show(True) 
    1671                 self.smear_description_pin_max.Show(True) 
    1672  
    1673             self.smear_pinhole_min.Show(True) 
    1674             self.smear_pinhole_max.Show(True) 
     1656                self.smear_description_pin_percent.Show(True) 
     1657 
     1658            self.smear_pinhole_percent.Show(True) 
    16751659        # custom slit smear 
    16761660        elif self.slit_smearer.GetValue(): 
     
    16971681        self.smear_data_left.Hide() 
    16981682        self.smear_data_right.Hide() 
    1699         self.smear_description_pin_min.Hide() 
    1700         self.smear_pinhole_min.Hide() 
    1701         self.smear_description_pin_max.Hide() 
    1702         self.smear_pinhole_max.Hide() 
     1683        self.smear_description_pin_percent.Hide() 
     1684        self.smear_pinhole_percent.Hide() 
    17031685        self.smear_description_slit_height.Hide() 
    17041686        self.smear_slit_height.Hide() 
     
    22492231            # event case of radio button 
    22502232            if tcrtl.GetValue(): 
    2251                 self.dx_min = 0.0 
    2252                 self.dx_max = 0.0 
     2233                self.dx_percent = 0.0 
    22532234                is_new_pinhole = True 
    22542235            else: 
     
    22872268        """ 
    22882269        # get the values 
    2289         pin_min = self.smear_pinhole_min.GetValue() 
    2290         pin_max = self.smear_pinhole_max.GetValue() 
    2291  
    2292         # Check changes in slit width 
     2270        pin_percent = self.smear_pinhole_percent.GetValue() 
     2271 
     2272        # Check changes in slit heigth 
    22932273        try: 
    2294             dx_min = float(pin_min) 
     2274            dx_percent = float(pin_percent) 
    22952275        except: 
    22962276            return True 
    2297         if self.dx_min != dx_min: 
    2298             return True 
    2299  
    2300         # Check changes in slit heigth 
    2301         try: 
    2302             dx_max = float(pin_max) 
    2303         except: 
    2304             return True 
    2305         if self.dx_max != dx_max: 
     2277        if self.dx_percent != dx_percent: 
    23062278            return True 
    23072279        return False 
     
    23292301        msg = None 
    23302302 
    2331         get_pin_min = self.smear_pinhole_min 
    2332         get_pin_max = self.smear_pinhole_max 
    2333  
    2334         if not check_float(get_pin_min): 
    2335             get_pin_min.SetBackgroundColour("pink") 
    2336             msg = "Model Error:wrong value entered!!!" 
    2337         elif not check_float(get_pin_max): 
    2338             get_pin_max.SetBackgroundColour("pink") 
     2303        get_pin_percent = self.smear_pinhole_percent 
     2304 
     2305        if not check_float(get_pin_percent): 
     2306            get_pin_percent.SetBackgroundColour("pink") 
    23392307            msg = "Model Error:wrong value entered!!!" 
    23402308        else: 
    23412309            if len_data < 2: 
    23422310                len_data = 2 
    2343             self.dx_min = float(get_pin_min.GetValue()) 
    2344             self.dx_max = float(get_pin_max.GetValue()) 
    2345             if self.dx_min < 0: 
    2346                 get_pin_min.SetBackgroundColour("pink") 
     2311            self.dx_percent = float(get_pin_percent.GetValue()) / 100 
     2312            if self.dx_percent < 0: 
     2313                get_pin_percent.SetBackgroundColour("pink") 
    23472314                msg = "Model Error:This value can not be negative!!!" 
    2348             elif self.dx_max < 0: 
    2349                 get_pin_max.SetBackgroundColour("pink") 
    2350                 msg = "Model Error:This value can not be negative!!!" 
    2351             elif self.dx_min is not None and self.dx_max is not None: 
     2315            elif self.dx_percent is not None: 
    23522316                if self._is_2D(): 
    2353                     data.dqx_data[data.dqx_data == 0] = self.dx_min 
    2354                     data.dqy_data[data.dqy_data == 0] = self.dx_max 
    2355                 elif self.dx_min == self.dx_max: 
    2356                     data.dx[data.dx == 0] = self.dx_min 
     2317                    data.dqx_data[data.dqx_data == 0] = \ 
     2318                        self.dx_percent * data.qx_data 
     2319                    data.dqy_data[data.dqy_data == 0] = \ 
     2320                        self.dx_percent * data.qy_data 
    23572321                else: 
    2358                     step = (self.dx_max - self.dx_min) / (len_data - 1) 
    2359                     data.dx = numpy.arange(self.dx_min, 
    2360                                            self.dx_max + step / 1.1, 
    2361                                            step) 
    2362             elif self.dx_min is not None: 
    2363                 if self._is_2D(): 
    2364                     data.dqx_data[data.dqx_data == 0] = self.dx_min 
    2365                 else: 
    2366                     data.dx[data.dx == 0] = self.dx_min 
    2367             elif self.dx_max is not None: 
    2368                 if self._is_2D(): 
    2369                     data.dqy_data[data.dqy_data == 0] = self.dx_max 
    2370                 else: 
    2371                     data.dx[data.dx == 0] = self.dx_max 
     2322                    data.dx = self.dx_percent * data.x 
    23722323            self.current_smearer = smear_selection(data, self.model) 
    23732324            # 2D need to set accuracy 
     
    23792330            wx.PostEvent(self._manager.parent, StatusEvent(status=msg)) 
    23802331        else: 
    2381             get_pin_min.SetBackgroundColour("white") 
    2382             get_pin_max.SetBackgroundColour("white") 
     2332            get_pin_percent.SetBackgroundColour("white") 
    23832333        # set smearing value whether or not the data contain the smearing info 
    23842334 
Note: See TracChangeset for help on using the changeset viewer.