Changes in / [c721b1a:b9b612a] in sasview


Ignore:
Files:
1 added
1 deleted
5 edited

Legend:

Unmodified
Added
Removed
  • LICENSE.TXT

    ra3e3ef5 r7c05b63  
    1 Copyright (c) 2009-2017, SasView Developers 
     1Copyright (c) 2009-2016, SasView Developers 
    22All rights reserved. 
    33 
  • src/sas/sasgui/perspectives/fitting/basepage.py

    rb301db9 r7a5aedd  
    120120        self.dxw = None 
    121121        # pinhole smear 
    122         self.dx_percent = None 
     122        self.dx_min = None 
     123        self.dx_max = None 
    123124        # smear attrbs 
    124125        self.enable_smearer = None 
     
    848849        self.state.pinhole_smearer = \ 
    849850                                copy.deepcopy(self.pinhole_smearer.GetValue()) 
    850         self.state.dx_percent = copy.deepcopy(self.dx_percent) 
     851        self.state.dx_max = copy.deepcopy(self.dx_max) 
     852        self.state.dx_min = copy.deepcopy(self.dx_min) 
    851853        self.state.dxl = copy.deepcopy(self.dxl) 
    852854        self.state.dxw = copy.deepcopy(self.dxw) 
     
    12451247        # we have two more options for smearing 
    12461248        if self.pinhole_smearer.GetValue(): 
    1247             self.dx_percent = state.dx_percent 
    1248             if self.dx_percent is not None: 
    1249                 if state.dx_old: 
    1250                     self.dx_percent = 100 * (self.dx_percent / self.data.x[0]) 
    1251                 self.smear_pinhole_percent.SetValue("%.2f" % self.dx_percent) 
     1249            self.dx_min = state.dx_min 
     1250            self.dx_max = state.dx_max 
     1251            if self.dx_min is not None: 
     1252                self.smear_pinhole_min.SetValue(str(self.dx_min)) 
     1253            if self.dx_max is not None: 
     1254                self.smear_pinhole_max.SetValue(str(self.dx_max)) 
    12521255            self.onPinholeSmear(event=None) 
    12531256        elif self.slit_smearer.GetValue(): 
  • src/sas/sasgui/perspectives/fitting/fitpage.py

    rd85f1d8a r2d568f6  
    2929_BOX_WIDTH = 76 
    3030_DATA_BOX_WIDTH = 300 
     31SMEAR_SIZE_L = 0.00 
    3132SMEAR_SIZE_H = 0.00 
    3233CUSTOM_MODEL = 'Plugin Models' 
     
    209210              "Please enter only the value of interest to customize smearing..." 
    210211        smear_message_new_psmear = \ 
    211               "Please enter a fixed percentage to be applied to all Q values..." 
     212              "Please enter both; the dQ will be generated by interpolation..." 
    212213        smear_message_2d_x_title = "<dQp>[1/A]:" 
    213214        smear_message_2d_y_title = "<dQs>[1/A]:" 
    214         smear_message_pinhole_percent_title = "dQ[%]:" 
     215        smear_message_pinhole_min_title = "dQ_low[1/A]:" 
     216        smear_message_pinhole_max_title = "dQ_high[1/A]:" 
    215217        smear_message_slit_height_title = "Slit height[1/A]:" 
    216218        smear_message_slit_width_title = "Slit width[1/A]:" 
     
    305307         
    306308        # textcntrl for custom resolution 
    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) 
     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) 
    312317        self.smear_slit_height = ModelTextCtrl(self, wx.ID_ANY, 
    313318                            size=(_BOX_WIDTH - 25, 20), 
     
    328333 
    329334        # set default values for smear 
    330         self.smear_pinhole_percent.SetValue(str(self.dx_percent)) 
     335        self.smear_pinhole_max.SetValue(str(self.dx_max)) 
     336        self.smear_pinhole_min.SetValue(str(self.dx_min)) 
    331337        self.smear_slit_height.SetValue(str(self.dxl)) 
    332338        self.smear_slit_width.SetValue(str(self.dxw)) 
     
    420426        self.smear_description_2d_y.SetToolTipString( 
    421427                                    " dQs(perpendicular) in q_phi direction.") 
    422         self.smear_description_pin_percent = wx.StaticText(self, wx.ID_ANY, 
    423                                             smear_message_pinhole_percent_title, 
    424                                             style=wx.ALIGN_LEFT) 
     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) 
    425432        self.smear_description_slit_height = wx.StaticText(self, wx.ID_ANY, 
    426433                        smear_message_slit_height_title, style=wx.ALIGN_LEFT) 
     
    446453        self.sizer_new_smear.Add((15, -1)) 
    447454        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) 
    448457        self.sizer_new_smear.Add(self.smear_description_slit_height, 
    449458                                 0, wx.CENTER, 10) 
    450459 
     460        self.sizer_new_smear.Add(self.smear_pinhole_min, 0, wx.CENTER, 10) 
    451461        self.sizer_new_smear.Add(self.smear_slit_height, 0, wx.CENTER, 10) 
    452462        self.sizer_new_smear.Add(self.smear_data_left, 0, wx.CENTER, 10) 
     
    454464        self.sizer_new_smear.Add(self.smear_description_2d_y, 
    455465                                 0, wx.CENTER, 10) 
    456         self.sizer_new_smear.Add(self.smear_description_pin_percent, 
     466        self.sizer_new_smear.Add(self.smear_description_pin_max, 
    457467                                 0, wx.CENTER, 10) 
    458468        self.sizer_new_smear.Add(self.smear_description_slit_width, 
    459469                                 0, wx.CENTER, 10) 
    460470 
    461         self.sizer_new_smear.Add(self.smear_pinhole_percent, 0, wx.CENTER, 10) 
     471        self.sizer_new_smear.Add(self.smear_pinhole_max, 0, wx.CENTER, 10) 
    462472        self.sizer_new_smear.Add(self.smear_slit_width, 0, wx.CENTER, 10) 
    463473        self.sizer_new_smear.Add(self.smear_data_right, 0, wx.CENTER, 10) 
     
    15711581        if self.dxw is None: 
    15721582            self.dxw = "" 
    1573         if self.dx_percent is None: 
    1574             self.dx_percent = SMEAR_SIZE_H 
     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 
    15751587 
    15761588    def _get_smear_info(self): 
     
    16341646            self.smear_description_2d_y.Show(True) 
    16351647            if self.pinhole_smearer.GetValue(): 
    1636                 self.smear_pinhole_percent.Show(True) 
     1648                self.smear_pinhole_min.Show(True) 
     1649                self.smear_pinhole_max.Show(True) 
    16371650        # smear from data 
    16381651        elif self.enable_smearer.GetValue(): 
     
    16451658                    self.smear_description_slit_width.Show(True) 
    16461659                elif self.smear_type == 'Pinhole': 
    1647                     self.smear_description_pin_percent.Show(True) 
     1660                    self.smear_description_pin_min.Show(True) 
     1661                    self.smear_description_pin_max.Show(True) 
    16481662                self.smear_description_smear_type.Show(True) 
    16491663                self.smear_description_type.Show(True) 
     
    16541668            if self.smear_type == 'Pinhole': 
    16551669                self.smear_message_new_p.Show(True) 
    1656                 self.smear_description_pin_percent.Show(True) 
    1657  
    1658             self.smear_pinhole_percent.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) 
    16591675        # custom slit smear 
    16601676        elif self.slit_smearer.GetValue(): 
     
    16811697        self.smear_data_left.Hide() 
    16821698        self.smear_data_right.Hide() 
    1683         self.smear_description_pin_percent.Hide() 
    1684         self.smear_pinhole_percent.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() 
    16851703        self.smear_description_slit_height.Hide() 
    16861704        self.smear_slit_height.Hide() 
     
    22312249            # event case of radio button 
    22322250            if tcrtl.GetValue(): 
    2233                 self.dx_percent = 0.0 
     2251                self.dx_min = 0.0 
     2252                self.dx_max = 0.0 
    22342253                is_new_pinhole = True 
    22352254            else: 
     
    22682287        """ 
    22692288        # get the values 
    2270         pin_percent = self.smear_pinhole_percent.GetValue() 
     2289        pin_min = self.smear_pinhole_min.GetValue() 
     2290        pin_max = self.smear_pinhole_max.GetValue() 
     2291 
     2292        # Check changes in slit width 
     2293        try: 
     2294            dx_min = float(pin_min) 
     2295        except: 
     2296            return True 
     2297        if self.dx_min != dx_min: 
     2298            return True 
    22712299 
    22722300        # Check changes in slit heigth 
    22732301        try: 
    2274             dx_percent = float(pin_percent) 
     2302            dx_max = float(pin_max) 
    22752303        except: 
    22762304            return True 
    2277         if self.dx_percent != dx_percent: 
     2305        if self.dx_max != dx_max: 
    22782306            return True 
    22792307        return False 
     
    23012329        msg = None 
    23022330 
    2303         get_pin_percent = self.smear_pinhole_percent 
    2304  
    2305         if not check_float(get_pin_percent): 
    2306             get_pin_percent.SetBackgroundColour("pink") 
     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") 
    23072339            msg = "Model Error:wrong value entered!!!" 
    23082340        else: 
    23092341            if len_data < 2: 
    23102342                len_data = 2 
    2311             self.dx_percent = float(get_pin_percent.GetValue()) 
    2312             if self.dx_percent < 0: 
    2313                 get_pin_percent.SetBackgroundColour("pink") 
     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") 
    23142347                msg = "Model Error:This value can not be negative!!!" 
    2315             elif self.dx_percent is not None: 
    2316                 percent = self.dx_percent/100 
     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: 
    23172352                if self._is_2D(): 
    2318                     data.dqx_data[data.dqx_data == 0] = percent * data.qx_data 
    2319                     data.dqy_data[data.dqy_data == 0] = percent * data.qy_data 
     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 
    23202357                else: 
    2321                     data.dx = percent * data.x 
     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 
    23222372            self.current_smearer = smear_selection(data, self.model) 
    23232373            # 2D need to set accuracy 
     
    23292379            wx.PostEvent(self._manager.parent, StatusEvent(status=msg)) 
    23302380        else: 
    2331             get_pin_percent.SetBackgroundColour("white") 
     2381            get_pin_min.SetBackgroundColour("white") 
     2382            get_pin_max.SetBackgroundColour("white") 
    23322383        # set smearing value whether or not the data contain the smearing info 
    23332384 
  • src/sas/sasgui/perspectives/fitting/media/plugin.rst

    r984f3fc r5295cf5  
    364364  - the limits will show up as the default limits for the fit making it easy, 
    365365    for example, to force the radius to always be greater than zero. 
    366  
    367   - these are hard limits defining the valid range of parameter values; 
    368     polydisperity distributions will be truncated at the limits. 
    369366 
    370367- **"type"** can be one of: "", "sld", "volume", or "orientation". 
  • src/sas/sasgui/perspectives/fitting/pagestate.py

    rd5aff7f r71601312  
    7474                            ["dq_l", "dq_l", "float"], 
    7575                            ["dq_r", "dq_r", "float"], 
    76                             ["dx_percent", "dx_percent", "float"], 
     76                            ["dx_max", "dx_max", "float"], 
     77                            ["dx_min", "dx_min", "float"], 
    7778                            ["dxl", "dxl", "float"], 
    7879                            ["dxw", "dxw", "float"]] 
     
    214215        self.dq_l = None 
    215216        self.dq_r = None 
    216         self.dx_percent = None 
    217         self.dx_old = False 
     217        self.dx_max = None 
     218        self.dx_min = None 
    218219        self.dxl = None 
    219220        self.dxw = None 
     
    342343        obj.dq_l = copy.deepcopy(self.dq_l) 
    343344        obj.dq_r = copy.deepcopy(self.dq_r) 
    344         obj.dx_percent = copy.deepcopy(self.dx_percent) 
    345         obj.dx_old = copy.deepcopy(self.dx_old) 
     345        obj.dx_max = copy.deepcopy(self.dx_max) 
     346        obj.dx_min = copy.deepcopy(self.dx_min) 
    346347        obj.dxl = copy.deepcopy(self.dxl) 
    347348        obj.dxw = copy.deepcopy(self.dxw) 
     
    561562        rep += "dq_l  : %s\n" % self.dq_l 
    562563        rep += "dq_r  : %s\n" % self.dq_r 
    563         rep += "dx_percent  : %s\n" % str(self.dx_percent) 
     564        rep += "dx_max  : %s\n" % str(self.dx_max) 
     565        rep += "dx_min : %s\n" % str(self.dx_min) 
    564566        rep += "dxl  : %s\n" % str(self.dxl) 
    565567        rep += "dxw : %s\n" % str(self.dxw) 
     
    10461048                    setattr(self, item[0], parse_entry_helper(node, item)) 
    10471049 
    1048                 dx_old_node = get_content('ns:%s' % 'dx_min', entry) 
    10491050                for item in LIST_OF_STATE_ATTRIBUTES: 
    1050                     if item[0] == "dx_percent" and dx_old_node is not None: 
    1051                         dxmin = ["dx_min", "dx_min", "float"] 
    1052                         setattr(self, item[0], parse_entry_helper(dx_old_node, 
    1053                                                                   dxmin)) 
    1054                         self.dx_old = True 
    1055                     else: 
    1056                         node = get_content('ns:%s' % item[0], entry) 
    1057                         setattr(self, item[0], parse_entry_helper(node, item)) 
     1051                    node = get_content('ns:%s' % item[0], entry) 
     1052                    setattr(self, item[0], parse_entry_helper(node, item)) 
    10581053 
    10591054                for item in LIST_OF_STATE_PARAMETERS: 
Note: See TracChangeset for help on using the changeset viewer.