Changeset 5156918 in sasview for src/sas/sasgui/perspectives/fitting/fitpage.py
- Timestamp:
- Mar 31, 2017 5:20:15 AM (8 years ago)
- 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.2.2, ticket-1009, ticket-1094-headless, ticket-1242-2d-resolution, ticket-1243, ticket-1249, ticket885, unittest-saveload
- Children:
- 7b15990
- Parents:
- 1a8e13f0 (diff), 7cbbacd (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent. - File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/sas/sasgui/perspectives/fitting/fitpage.py
r1a8e13f0 r5156918 29 29 _BOX_WIDTH = 76 30 30 _DATA_BOX_WIDTH = 300 31 SMEAR_SIZE_L = 0.0032 31 SMEAR_SIZE_H = 0.00 33 32 CUSTOM_MODEL = 'Plugin Models' 34 33 35 34 class FitPage(BasicPage): … … 164 163 On_select_data 165 164 """ 166 if event is None and self.dataSource.GetCount() > 0: 167 data = self.dataSource.GetClientData(0) 168 self.set_data(data) 169 elif self.dataSource.GetCount() > 0: 170 pos = self.dataSource.GetSelection() 165 if self.dataSource.GetCount() > 0: 166 pos = self.dataSource.GetSelection() if event is not None else 0 171 167 data = self.dataSource.GetClientData(pos) 172 168 self.set_data(data) … … 213 209 "Please enter only the value of interest to customize smearing..." 214 210 smear_message_new_psmear = \ 215 "Please enter both; the dQ will be generated by interpolation..."211 "Please enter a fixed percentage to be applied to all Q values..." 216 212 smear_message_2d_x_title = "<dQp>[1/A]:" 217 213 smear_message_2d_y_title = "<dQs>[1/A]:" 218 smear_message_pinhole_min_title = "dQ_low[1/A]:" 219 smear_message_pinhole_max_title = "dQ_high[1/A]:" 214 smear_message_pinhole_percent_title = "dQ[%]:" 220 215 smear_message_slit_height_title = "Slit height[1/A]:" 221 216 smear_message_slit_width_title = "Slit width[1/A]:" … … 256 251 self.Bind(wx.EVT_RADIOBUTTON, self.onWeighting, 257 252 id=self.dI_idata.GetId()) 258 self.dI_ didata.SetValue(True)253 self.dI_noweight.SetValue(True) 259 254 # add 4 types of weighting to the sizer 260 255 sizer_weighting.Add(self.dI_noweight, 0, wx.LEFT, 10) … … 266 261 sizer_weighting.Add(self.dI_idata) 267 262 sizer_weighting.Add((10, 10)) 268 self.dI_noweight.Enable( False)263 self.dI_noweight.Enable(True) 269 264 self.dI_didata.Enable(False) 270 265 self.dI_sqrdata.Enable(False) … … 310 305 311 306 # textcntrl for custom resolution 312 self.smear_pinhole_max = ModelTextCtrl(self, wx.ID_ANY, 313 size=(_BOX_WIDTH - 25, 20), 314 style=wx.TE_PROCESS_ENTER, 315 text_enter_callback=self.onPinholeSmear) 316 self.smear_pinhole_min = ModelTextCtrl(self, wx.ID_ANY, 317 size=(_BOX_WIDTH - 25, 20), 318 style=wx.TE_PROCESS_ENTER, 319 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) 320 312 self.smear_slit_height = ModelTextCtrl(self, wx.ID_ANY, 321 313 size=(_BOX_WIDTH - 25, 20), … … 336 328 337 329 # set default values for smear 338 self.smear_pinhole_max.SetValue(str(self.dx_max)) 339 self.smear_pinhole_min.SetValue(str(self.dx_min)) 330 self.smear_pinhole_percent.SetValue(str(self.dx_percent)) 340 331 self.smear_slit_height.SetValue(str(self.dxl)) 341 332 self.smear_slit_width.SetValue(str(self.dxw)) … … 362 353 self.Bind(wx.EVT_RADIOBUTTON, self.onSlitSmear, 363 354 id=self.slit_smearer.GetId()) 364 self. enable_smearer.SetValue(True)355 self.disable_smearer.SetValue(True) 365 356 366 357 sizer_smearer.Add(self.disable_smearer, 0, wx.LEFT, 10) … … 429 420 self.smear_description_2d_y.SetToolTipString( 430 421 " dQs(perpendicular) in q_phi direction.") 431 self.smear_description_pin_min = wx.StaticText(self, wx.ID_ANY, 432 smear_message_pinhole_min_title, style=wx.ALIGN_LEFT) 433 self.smear_description_pin_max = wx.StaticText(self, wx.ID_ANY, 434 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) 435 425 self.smear_description_slit_height = wx.StaticText(self, wx.ID_ANY, 436 426 smear_message_slit_height_title, style=wx.ALIGN_LEFT) … … 456 446 self.sizer_new_smear.Add((15, -1)) 457 447 self.sizer_new_smear.Add(self.smear_description_2d_x, 0, wx.CENTER, 10) 458 self.sizer_new_smear.Add(self.smear_description_pin_min,459 0, wx.CENTER, 10)460 448 self.sizer_new_smear.Add(self.smear_description_slit_height, 461 449 0, wx.CENTER, 10) 462 450 463 self.sizer_new_smear.Add(self.smear_pinhole_min, 0, wx.CENTER, 10)464 451 self.sizer_new_smear.Add(self.smear_slit_height, 0, wx.CENTER, 10) 465 452 self.sizer_new_smear.Add(self.smear_data_left, 0, wx.CENTER, 10) … … 467 454 self.sizer_new_smear.Add(self.smear_description_2d_y, 468 455 0, wx.CENTER, 10) 469 self.sizer_new_smear.Add(self.smear_description_pin_ max,456 self.sizer_new_smear.Add(self.smear_description_pin_percent, 470 457 0, wx.CENTER, 10) 471 458 self.sizer_new_smear.Add(self.smear_description_slit_width, 472 459 0, wx.CENTER, 10) 473 460 474 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) 475 462 self.sizer_new_smear.Add(self.smear_slit_width, 0, wx.CENTER, 10) 476 463 self.sizer_new_smear.Add(self.smear_data_right, 0, wx.CENTER, 10) … … 1249 1236 wx.PostEvent(self.parent, new_event) 1250 1237 # update list of plugins if new plugin is available 1251 custom_model = 'Customized Models'1238 custom_model = CUSTOM_MODEL 1252 1239 mod_cat = self.categorybox.GetStringSelection() 1253 1240 if mod_cat == custom_model: … … 1271 1258 if copy_flag: 1272 1259 self.get_paste_params(copy_flag) 1273 1260 wx.CallAfter(self._onDraw, None) 1274 1261 1275 1262 else: … … 1584 1571 if self.dxw is None: 1585 1572 self.dxw = "" 1586 if self.dx_min is None: 1587 self.dx_min = SMEAR_SIZE_L 1588 if self.dx_max is None: 1589 self.dx_max = SMEAR_SIZE_H 1573 if self.dx_percent is None: 1574 self.dx_percent = SMEAR_SIZE_H 1590 1575 1591 1576 def _get_smear_info(self): … … 1627 1612 elif data.dxl is not None or data.dxw is not None: 1628 1613 self.smear_type = "Slit" 1629 if data.dxl is not None and n ot numpy.all(data.dxl, 0):1614 if data.dxl is not None and numpy.all(data.dxl, 0): 1630 1615 self.dq_l = data.dxl[0] 1631 if data.dxw is not None and n ot numpy.all(data.dxw, 0):1616 if data.dxw is not None and numpy.all(data.dxw, 0): 1632 1617 self.dq_r = data.dxw[0] 1633 1618 # return self.smear_type,self.dq_l,self.dq_r … … 1649 1634 self.smear_description_2d_y.Show(True) 1650 1635 if self.pinhole_smearer.GetValue(): 1651 self.smear_pinhole_min.Show(True) 1652 self.smear_pinhole_max.Show(True) 1636 self.smear_pinhole_percent.Show(True) 1653 1637 # smear from data 1654 1638 elif self.enable_smearer.GetValue(): … … 1661 1645 self.smear_description_slit_width.Show(True) 1662 1646 elif self.smear_type == 'Pinhole': 1663 self.smear_description_pin_min.Show(True) 1664 self.smear_description_pin_max.Show(True) 1647 self.smear_description_pin_percent.Show(True) 1665 1648 self.smear_description_smear_type.Show(True) 1666 1649 self.smear_description_type.Show(True) … … 1671 1654 if self.smear_type == 'Pinhole': 1672 1655 self.smear_message_new_p.Show(True) 1673 self.smear_description_pin_min.Show(True) 1674 self.smear_description_pin_max.Show(True) 1675 1676 self.smear_pinhole_min.Show(True) 1677 self.smear_pinhole_max.Show(True) 1656 self.smear_description_pin_percent.Show(True) 1657 1658 self.smear_pinhole_percent.Show(True) 1678 1659 # custom slit smear 1679 1660 elif self.slit_smearer.GetValue(): … … 1700 1681 self.smear_data_left.Hide() 1701 1682 self.smear_data_right.Hide() 1702 self.smear_description_pin_min.Hide() 1703 self.smear_pinhole_min.Hide() 1704 self.smear_description_pin_max.Hide() 1705 self.smear_pinhole_max.Hide() 1683 self.smear_description_pin_percent.Hide() 1684 self.smear_pinhole_percent.Hide() 1706 1685 self.smear_description_slit_height.Hide() 1707 1686 self.smear_slit_height.Hide() … … 1927 1906 1928 1907 # more disables for 2D 1908 di_flag = False 1909 dq_flag = False 1929 1910 if self.data.__class__.__name__ == "Data2D" or \ 1930 1911 self.enable2D: … … 1932 1913 self.pinhole_smearer.Enable(True) 1933 1914 self.default_mask = copy.deepcopy(self.data.mask) 1934 if self.data.err_data is None or\ 1935 numpy.all(err == 1 for err in self.data.err_data) or \ 1936 not numpy.any(self.data.err_data): 1937 self.dI_didata.Enable(False) 1938 self.dI_noweight.SetValue(True) 1939 self.weightbt_string = self.dI_noweight.GetLabelText() 1940 else: 1941 self.dI_didata.Enable(True) 1942 self.dI_didata.SetValue(True) 1943 self.weightbt_string = self.dI_didata.GetLabelText() 1915 if self.data.err_data is not None \ 1916 and numpy.any(self.data.err_data): 1917 di_flag = True 1918 if self.data.dqx_data is not None \ 1919 and numpy.any(self.data.dqx_data): 1920 dq_flag = True 1944 1921 else: 1945 1922 self.slit_smearer.Enable(True) 1946 1923 self.pinhole_smearer.Enable(True) 1947 1948 if self.data.dy is None or\ 1949 numpy.all(self.data.dy == 1) or\ 1950 not numpy.any(self.data.dy): 1951 self.dI_didata.Enable(False) 1952 self.dI_noweight.SetValue(True) 1953 self.weightbt_string = self.dI_noweight.GetLabelText() 1954 else: 1955 self.dI_didata.Enable(True) 1956 self.dI_didata.SetValue(True) 1957 self.weightbt_string = self.dI_didata.GetLabelText() 1924 if self.data.dy is not None and numpy.any(self.data.dy): 1925 di_flag = True 1926 if self.data.dx is not None and numpy.any(self.data.dx): 1927 dq_flag = True 1928 elif self.data.dxl is not None and numpy.any(self.data.dxl): 1929 dq_flag = True 1930 1931 if dq_flag: 1932 self.enable_smearer.Enable(True) 1933 self.enable_smearer.SetValue(True) 1934 self.disable_smearer.SetValue(False) 1935 else: 1936 self.enable_smearer.Disable() 1937 self.disable_smearer.Enable(True) 1938 self.disable_smearer.SetValue(True) 1939 1940 if di_flag: 1941 self.dI_didata.Enable(True) 1942 self.dI_didata.SetValue(True) 1943 self.weightbt_string = self.dI_didata.GetLabelText() 1944 else: 1945 self.dI_didata.Enable(False) 1946 self.dI_noweight.SetValue(True) 1947 self.weightbt_string = self.dI_noweight.GetLabelText() 1948 1958 1949 # Enable weighting radio buttons 1959 1950 self.dI_noweight.Enable(True) … … 1997 1988 self.EditMask_title.Disable() 1998 1989 1990 self.on_smear_helper() 1999 1991 self.on_set_focus(None) 2000 1992 self.Refresh() … … 2228 2220 # event case of radio button 2229 2221 if tcrtl.GetValue(): 2230 self.dx_min = 0.0 2231 self.dx_max = 0.0 2222 self.dx_percent = 0.0 2232 2223 is_new_pinhole = True 2233 2224 else: … … 2266 2257 """ 2267 2258 # get the values 2268 pin_min = self.smear_pinhole_min.GetValue() 2269 pin_max = self.smear_pinhole_max.GetValue() 2270 2271 # Check changes in slit width 2259 pin_percent = self.smear_pinhole_percent.GetValue() 2260 2261 # Check changes in slit heigth 2272 2262 try: 2273 dx_ min = float(pin_min)2263 dx_percent = float(pin_percent) 2274 2264 except: 2275 2265 return True 2276 if self.dx_min != dx_min: 2277 return True 2278 2279 # Check changes in slit heigth 2280 try: 2281 dx_max = float(pin_max) 2282 except: 2283 return True 2284 if self.dx_max != dx_max: 2266 if self.dx_percent != dx_percent: 2285 2267 return True 2286 2268 return False … … 2308 2290 msg = None 2309 2291 2310 get_pin_min = self.smear_pinhole_min 2311 get_pin_max = self.smear_pinhole_max 2312 2313 if not check_float(get_pin_min): 2314 get_pin_min.SetBackgroundColour("pink") 2315 msg = "Model Error:wrong value entered!!!" 2316 elif not check_float(get_pin_max): 2317 get_pin_max.SetBackgroundColour("pink") 2292 get_pin_percent = self.smear_pinhole_percent 2293 2294 if not check_float(get_pin_percent): 2295 get_pin_percent.SetBackgroundColour("pink") 2318 2296 msg = "Model Error:wrong value entered!!!" 2319 2297 else: 2320 2298 if len_data < 2: 2321 2299 len_data = 2 2322 self.dx_min = float(get_pin_min.GetValue()) 2323 self.dx_max = float(get_pin_max.GetValue()) 2324 if self.dx_min < 0: 2325 get_pin_min.SetBackgroundColour("pink") 2300 self.dx_percent = float(get_pin_percent.GetValue()) 2301 if self.dx_percent < 0: 2302 get_pin_percent.SetBackgroundColour("pink") 2326 2303 msg = "Model Error:This value can not be negative!!!" 2327 elif self.dx_max < 0: 2328 get_pin_max.SetBackgroundColour("pink") 2329 msg = "Model Error:This value can not be negative!!!" 2330 elif self.dx_min is not None and self.dx_max is not None: 2304 elif self.dx_percent is not None: 2305 percent = self.dx_percent/100 2331 2306 if self._is_2D(): 2332 data.dqx_data[data.dqx_data == 0] = self.dx_min 2333 data.dqy_data[data.dqy_data == 0] = self.dx_max 2334 elif self.dx_min == self.dx_max: 2335 data.dx[data.dx == 0] = self.dx_min 2307 data.dqx_data[data.dqx_data == 0] = percent * data.qx_data 2308 data.dqy_data[data.dqy_data == 0] = percent * data.qy_data 2336 2309 else: 2337 step = (self.dx_max - self.dx_min) / (len_data - 1) 2338 data.dx = numpy.arange(self.dx_min, 2339 self.dx_max + step / 1.1, 2340 step) 2341 elif self.dx_min is not None: 2342 if self._is_2D(): 2343 data.dqx_data[data.dqx_data == 0] = self.dx_min 2344 else: 2345 data.dx[data.dx == 0] = self.dx_min 2346 elif self.dx_max is not None: 2347 if self._is_2D(): 2348 data.dqy_data[data.dqy_data == 0] = self.dx_max 2349 else: 2350 data.dx[data.dx == 0] = self.dx_max 2310 data.dx = percent * data.x 2351 2311 self.current_smearer = smear_selection(data, self.model) 2352 2312 # 2D need to set accuracy … … 2358 2318 wx.PostEvent(self._manager.parent, StatusEvent(status=msg)) 2359 2319 else: 2360 get_pin_min.SetBackgroundColour("white") 2361 get_pin_max.SetBackgroundColour("white") 2320 get_pin_percent.SetBackgroundColour("white") 2362 2321 # set smearing value whether or not the data contain the smearing info 2363 2322
Note: See TracChangeset
for help on using the changeset viewer.