Changes in / [c721b1a:b9b612a] in sasview
- Files:
-
- 1 added
- 1 deleted
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
LICENSE.TXT
ra3e3ef5 r7c05b63 1 Copyright (c) 2009-201 7, SasView Developers1 Copyright (c) 2009-2016, SasView Developers 2 2 All rights reserved. 3 3 -
src/sas/sasgui/perspectives/fitting/basepage.py
rb301db9 r7a5aedd 120 120 self.dxw = None 121 121 # pinhole smear 122 self.dx_percent = None 122 self.dx_min = None 123 self.dx_max = None 123 124 # smear attrbs 124 125 self.enable_smearer = None … … 848 849 self.state.pinhole_smearer = \ 849 850 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) 851 853 self.state.dxl = copy.deepcopy(self.dxl) 852 854 self.state.dxw = copy.deepcopy(self.dxw) … … 1245 1247 # we have two more options for smearing 1246 1248 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)) 1252 1255 self.onPinholeSmear(event=None) 1253 1256 elif self.slit_smearer.GetValue(): -
src/sas/sasgui/perspectives/fitting/fitpage.py
rd85f1d8a r2d568f6 29 29 _BOX_WIDTH = 76 30 30 _DATA_BOX_WIDTH = 300 31 SMEAR_SIZE_L = 0.00 31 32 SMEAR_SIZE_H = 0.00 32 33 CUSTOM_MODEL = 'Plugin Models' … … 209 210 "Please enter only the value of interest to customize smearing..." 210 211 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..." 212 213 smear_message_2d_x_title = "<dQp>[1/A]:" 213 214 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]:" 215 217 smear_message_slit_height_title = "Slit height[1/A]:" 216 218 smear_message_slit_width_title = "Slit width[1/A]:" … … 305 307 306 308 # 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) 312 317 self.smear_slit_height = ModelTextCtrl(self, wx.ID_ANY, 313 318 size=(_BOX_WIDTH - 25, 20), … … 328 333 329 334 # 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)) 331 337 self.smear_slit_height.SetValue(str(self.dxl)) 332 338 self.smear_slit_width.SetValue(str(self.dxw)) … … 420 426 self.smear_description_2d_y.SetToolTipString( 421 427 " 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) 425 432 self.smear_description_slit_height = wx.StaticText(self, wx.ID_ANY, 426 433 smear_message_slit_height_title, style=wx.ALIGN_LEFT) … … 446 453 self.sizer_new_smear.Add((15, -1)) 447 454 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) 448 457 self.sizer_new_smear.Add(self.smear_description_slit_height, 449 458 0, wx.CENTER, 10) 450 459 460 self.sizer_new_smear.Add(self.smear_pinhole_min, 0, wx.CENTER, 10) 451 461 self.sizer_new_smear.Add(self.smear_slit_height, 0, wx.CENTER, 10) 452 462 self.sizer_new_smear.Add(self.smear_data_left, 0, wx.CENTER, 10) … … 454 464 self.sizer_new_smear.Add(self.smear_description_2d_y, 455 465 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, 457 467 0, wx.CENTER, 10) 458 468 self.sizer_new_smear.Add(self.smear_description_slit_width, 459 469 0, wx.CENTER, 10) 460 470 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) 462 472 self.sizer_new_smear.Add(self.smear_slit_width, 0, wx.CENTER, 10) 463 473 self.sizer_new_smear.Add(self.smear_data_right, 0, wx.CENTER, 10) … … 1571 1581 if self.dxw is None: 1572 1582 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 1575 1587 1576 1588 def _get_smear_info(self): … … 1634 1646 self.smear_description_2d_y.Show(True) 1635 1647 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) 1637 1650 # smear from data 1638 1651 elif self.enable_smearer.GetValue(): … … 1645 1658 self.smear_description_slit_width.Show(True) 1646 1659 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) 1648 1662 self.smear_description_smear_type.Show(True) 1649 1663 self.smear_description_type.Show(True) … … 1654 1668 if self.smear_type == 'Pinhole': 1655 1669 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) 1659 1675 # custom slit smear 1660 1676 elif self.slit_smearer.GetValue(): … … 1681 1697 self.smear_data_left.Hide() 1682 1698 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() 1685 1703 self.smear_description_slit_height.Hide() 1686 1704 self.smear_slit_height.Hide() … … 2231 2249 # event case of radio button 2232 2250 if tcrtl.GetValue(): 2233 self.dx_percent = 0.0 2251 self.dx_min = 0.0 2252 self.dx_max = 0.0 2234 2253 is_new_pinhole = True 2235 2254 else: … … 2268 2287 """ 2269 2288 # 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 2271 2299 2272 2300 # Check changes in slit heigth 2273 2301 try: 2274 dx_ percent = float(pin_percent)2302 dx_max = float(pin_max) 2275 2303 except: 2276 2304 return True 2277 if self.dx_ percent != dx_percent:2305 if self.dx_max != dx_max: 2278 2306 return True 2279 2307 return False … … 2301 2329 msg = None 2302 2330 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") 2307 2339 msg = "Model Error:wrong value entered!!!" 2308 2340 else: 2309 2341 if len_data < 2: 2310 2342 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") 2314 2347 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: 2317 2352 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 2320 2357 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 2322 2372 self.current_smearer = smear_selection(data, self.model) 2323 2373 # 2D need to set accuracy … … 2329 2379 wx.PostEvent(self._manager.parent, StatusEvent(status=msg)) 2330 2380 else: 2331 get_pin_percent.SetBackgroundColour("white") 2381 get_pin_min.SetBackgroundColour("white") 2382 get_pin_max.SetBackgroundColour("white") 2332 2383 # set smearing value whether or not the data contain the smearing info 2333 2384 -
src/sas/sasgui/perspectives/fitting/media/plugin.rst
r984f3fc r5295cf5 364 364 - the limits will show up as the default limits for the fit making it easy, 365 365 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.369 366 370 367 - **"type"** can be one of: "", "sld", "volume", or "orientation". -
src/sas/sasgui/perspectives/fitting/pagestate.py
rd5aff7f r71601312 74 74 ["dq_l", "dq_l", "float"], 75 75 ["dq_r", "dq_r", "float"], 76 ["dx_percent", "dx_percent", "float"], 76 ["dx_max", "dx_max", "float"], 77 ["dx_min", "dx_min", "float"], 77 78 ["dxl", "dxl", "float"], 78 79 ["dxw", "dxw", "float"]] … … 214 215 self.dq_l = None 215 216 self.dq_r = None 216 self.dx_ percent= None217 self.dx_ old = False217 self.dx_max = None 218 self.dx_min = None 218 219 self.dxl = None 219 220 self.dxw = None … … 342 343 obj.dq_l = copy.deepcopy(self.dq_l) 343 344 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) 346 347 obj.dxl = copy.deepcopy(self.dxl) 347 348 obj.dxw = copy.deepcopy(self.dxw) … … 561 562 rep += "dq_l : %s\n" % self.dq_l 562 563 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) 564 566 rep += "dxl : %s\n" % str(self.dxl) 565 567 rep += "dxw : %s\n" % str(self.dxw) … … 1046 1048 setattr(self, item[0], parse_entry_helper(node, item)) 1047 1049 1048 dx_old_node = get_content('ns:%s' % 'dx_min', entry)1049 1050 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)) 1058 1053 1059 1054 for item in LIST_OF_STATE_PARAMETERS:
Note: See TracChangeset
for help on using the changeset viewer.