Changeset c721b1a in sasview
- Timestamp:
- Mar 21, 2017 8:55:40 AM (8 years ago)
- Parents:
- 26c9b85 (diff), b9b612a (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. - git-author:
- Jeff Krzywon <krzywon@…> (03/21/17 08:55:40)
- git-committer:
- GitHub <noreply@…> (03/21/17 08:55:40)
- Files:
-
- 7 edited
- 1 moved
Legend:
- Unmodified
- Added
- Removed
-
src/sas/sascalc/dataloader/loader.py
rb699768 rb9b612a 31 31 from readers import ascii_reader 32 32 from readers import cansas_reader 33 from readers import cansas_reader_HDF5 33 34 34 35 class Registry(ExtensionRegistry): … … 61 62 of a particular reader 62 63 63 Defaults to the ascii (multi-column) reader 64 if no reader was registered for the file's 65 extension. 64 Defaults to the ascii (multi-column), cansas XML, and cansas NeXuS 65 readers if no reader was registered for the file's extension. 66 66 """ 67 67 try: 68 68 return super(Registry, self).load(path, format=format) 69 except: 70 try: 71 # No reader was found. Default to the ascii reader. 72 ascii_loader = ascii_reader.Reader() 73 return ascii_loader.read(path) 74 except: 75 cansas_loader = cansas_reader.Reader() 76 return cansas_loader.read(path) 69 except Exception: 70 pass # try the ASCII reader 71 try: 72 ascii_loader = ascii_reader.Reader() 73 return ascii_loader.read(path) 74 except Exception: 75 pass # try the cansas XML reader 76 try: 77 cansas_loader = cansas_reader.Reader() 78 return cansas_loader.read(path) 79 except Exception: 80 pass # try the cansas NeXuS reader 81 try: 82 cansas_nexus_loader = cansas_reader_HDF5.Reader() 83 return cansas_nexus_loader.read(path) 84 except Exception: 85 # No known reader available. Give up and throw an error 86 msg = "\n\tUnknown data format: %s.\n\tThe file is not a " % path 87 msg += "known format for SasView. The most common formats are " 88 msg += "multi-column ASCII, CanSAS XML, and CanSAS NeXuS." 89 raise Exception(msg) 77 90 78 91 def find_plugins(self, dir): -
src/sas/sascalc/dataloader/readers/cansas_reader_HDF5.py
rbbd0f37 rd0764bf 53 53 ext = ['.h5', '.H5'] 54 54 ## Flag to bypass extension check 55 allow_all = False55 allow_all = True 56 56 ## List of files to return 57 57 output = None -
INSTALL.txt
rd09f0ae1 r26c9b85 2 2 ================================ 3 3 4 Note - at the current time sasview will only run in gui form under Python 2. 4 5 5 The build works in the usualy pythonic way: 6 Before trying to install and run sasview you'll need to check what 7 dependencies are required: 8 9 $ python check_packages.py 10 11 Many of these are available from PyPi, but some (e.g. h5py) may require more 12 involvement to build and install. If you use the conda package manager then 13 many of the pre-built dependencies are available there. This may be the easiest 14 route if you are on windows. 15 16 The build works in the pythonic way: 6 17 7 18 $ python setup.py build # will build the package underneath 'build/' 8 $ python setup.py install # will install the package 9 19 $ python setup.py install # will install the package into site-packages 10 20 11 21 … … 14 24 $ python run.py # will run the code in place (building the C code once, if required) 15 25 26 On OSX or windows you may need to use: 16 27 17 18 To check all dependencies are met: 19 20 $ python deps.py 21 $ python check_packages.py 22 23 Both tell you different parts of the story, unfortunately. 24 28 $ pythonw run.py 25 29 26 30 -
LICENSE.TXT
r7c05b63 ra3e3ef5 1 Copyright (c) 2009-201 6, SasView Developers1 Copyright (c) 2009-2017, SasView Developers 2 2 All rights reserved. 3 3 -
src/sas/sasgui/perspectives/fitting/basepage.py
r7a5aedd rb301db9 120 120 self.dxw = None 121 121 # pinhole smear 122 self.dx_min = None 123 self.dx_max = None 122 self.dx_percent = None 124 123 # smear attrbs 125 124 self.enable_smearer = None … … 849 848 self.state.pinhole_smearer = \ 850 849 copy.deepcopy(self.pinhole_smearer.GetValue()) 851 self.state.dx_max = copy.deepcopy(self.dx_max) 852 self.state.dx_min = copy.deepcopy(self.dx_min) 850 self.state.dx_percent = copy.deepcopy(self.dx_percent) 853 851 self.state.dxl = copy.deepcopy(self.dxl) 854 852 self.state.dxw = copy.deepcopy(self.dxw) … … 1247 1245 # we have two more options for smearing 1248 1246 if self.pinhole_smearer.GetValue(): 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)) 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) 1255 1252 self.onPinholeSmear(event=None) 1256 1253 elif self.slit_smearer.GetValue(): -
src/sas/sasgui/perspectives/fitting/fitpage.py
r8c0d9eb rd85f1d8a 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' … … 210 209 "Please enter only the value of interest to customize smearing..." 211 210 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..." 213 212 smear_message_2d_x_title = "<dQp>[1/A]:" 214 213 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[%]:" 217 215 smear_message_slit_height_title = "Slit height[1/A]:" 218 216 smear_message_slit_width_title = "Slit width[1/A]:" … … 307 305 308 306 # 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) 317 312 self.smear_slit_height = ModelTextCtrl(self, wx.ID_ANY, 318 313 size=(_BOX_WIDTH - 25, 20), … … 333 328 334 329 # 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)) 337 331 self.smear_slit_height.SetValue(str(self.dxl)) 338 332 self.smear_slit_width.SetValue(str(self.dxw)) … … 426 420 self.smear_description_2d_y.SetToolTipString( 427 421 " 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) 432 425 self.smear_description_slit_height = wx.StaticText(self, wx.ID_ANY, 433 426 smear_message_slit_height_title, style=wx.ALIGN_LEFT) … … 453 446 self.sizer_new_smear.Add((15, -1)) 454 447 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)457 448 self.sizer_new_smear.Add(self.smear_description_slit_height, 458 449 0, wx.CENTER, 10) 459 450 460 self.sizer_new_smear.Add(self.smear_pinhole_min, 0, wx.CENTER, 10)461 451 self.sizer_new_smear.Add(self.smear_slit_height, 0, wx.CENTER, 10) 462 452 self.sizer_new_smear.Add(self.smear_data_left, 0, wx.CENTER, 10) … … 464 454 self.sizer_new_smear.Add(self.smear_description_2d_y, 465 455 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, 467 457 0, wx.CENTER, 10) 468 458 self.sizer_new_smear.Add(self.smear_description_slit_width, 469 459 0, wx.CENTER, 10) 470 460 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) 472 462 self.sizer_new_smear.Add(self.smear_slit_width, 0, wx.CENTER, 10) 473 463 self.sizer_new_smear.Add(self.smear_data_right, 0, wx.CENTER, 10) … … 1581 1571 if self.dxw is None: 1582 1572 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 1587 1575 1588 1576 def _get_smear_info(self): … … 1646 1634 self.smear_description_2d_y.Show(True) 1647 1635 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) 1650 1637 # smear from data 1651 1638 elif self.enable_smearer.GetValue(): … … 1658 1645 self.smear_description_slit_width.Show(True) 1659 1646 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) 1662 1648 self.smear_description_smear_type.Show(True) 1663 1649 self.smear_description_type.Show(True) … … 1668 1654 if self.smear_type == 'Pinhole': 1669 1655 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) 1675 1659 # custom slit smear 1676 1660 elif self.slit_smearer.GetValue(): … … 1697 1681 self.smear_data_left.Hide() 1698 1682 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() 1703 1685 self.smear_description_slit_height.Hide() 1704 1686 self.smear_slit_height.Hide() … … 2249 2231 # event case of radio button 2250 2232 if tcrtl.GetValue(): 2251 self.dx_min = 0.0 2252 self.dx_max = 0.0 2233 self.dx_percent = 0.0 2253 2234 is_new_pinhole = True 2254 2235 else: … … 2287 2268 """ 2288 2269 # 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 2293 2273 try: 2294 dx_ min = float(pin_min)2274 dx_percent = float(pin_percent) 2295 2275 except: 2296 2276 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: 2306 2278 return True 2307 2279 return False … … 2329 2301 msg = None 2330 2302 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") 2339 2307 msg = "Model Error:wrong value entered!!!" 2340 2308 else: 2341 2309 if len_data < 2: 2342 2310 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()) 2312 if self.dx_percent < 0: 2313 get_pin_percent.SetBackgroundColour("pink") 2347 2314 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: 2316 percent = self.dx_percent/100 2352 2317 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 2318 data.dqx_data[data.dqx_data == 0] = percent * data.qx_data 2319 data.dqy_data[data.dqy_data == 0] = percent * data.qy_data 2357 2320 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 2321 data.dx = percent * data.x 2372 2322 self.current_smearer = smear_selection(data, self.model) 2373 2323 # 2D need to set accuracy … … 2379 2329 wx.PostEvent(self._manager.parent, StatusEvent(status=msg)) 2380 2330 else: 2381 get_pin_min.SetBackgroundColour("white") 2382 get_pin_max.SetBackgroundColour("white") 2331 get_pin_percent.SetBackgroundColour("white") 2383 2332 # set smearing value whether or not the data contain the smearing info 2384 2333 -
src/sas/sasgui/perspectives/fitting/media/plugin.rst
r5295cf5 r984f3fc 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. 366 369 367 370 - **"type"** can be one of: "", "sld", "volume", or "orientation". -
src/sas/sasgui/perspectives/fitting/pagestate.py
r71601312 rd5aff7f 74 74 ["dq_l", "dq_l", "float"], 75 75 ["dq_r", "dq_r", "float"], 76 ["dx_max", "dx_max", "float"], 77 ["dx_min", "dx_min", "float"], 76 ["dx_percent", "dx_percent", "float"], 78 77 ["dxl", "dxl", "float"], 79 78 ["dxw", "dxw", "float"]] … … 215 214 self.dq_l = None 216 215 self.dq_r = None 217 self.dx_ max= None218 self.dx_ min = None216 self.dx_percent = None 217 self.dx_old = False 219 218 self.dxl = None 220 219 self.dxw = None … … 343 342 obj.dq_l = copy.deepcopy(self.dq_l) 344 343 obj.dq_r = copy.deepcopy(self.dq_r) 345 obj.dx_ max = copy.deepcopy(self.dx_max)346 obj.dx_ min = copy.deepcopy(self.dx_min)344 obj.dx_percent = copy.deepcopy(self.dx_percent) 345 obj.dx_old = copy.deepcopy(self.dx_old) 347 346 obj.dxl = copy.deepcopy(self.dxl) 348 347 obj.dxw = copy.deepcopy(self.dxw) … … 562 561 rep += "dq_l : %s\n" % self.dq_l 563 562 rep += "dq_r : %s\n" % self.dq_r 564 rep += "dx_max : %s\n" % str(self.dx_max) 565 rep += "dx_min : %s\n" % str(self.dx_min) 563 rep += "dx_percent : %s\n" % str(self.dx_percent) 566 564 rep += "dxl : %s\n" % str(self.dxl) 567 565 rep += "dxw : %s\n" % str(self.dxw) … … 1048 1046 setattr(self, item[0], parse_entry_helper(node, item)) 1049 1047 1048 dx_old_node = get_content('ns:%s' % 'dx_min', entry) 1050 1049 for item in LIST_OF_STATE_ATTRIBUTES: 1051 node = get_content('ns:%s' % item[0], entry) 1052 setattr(self, item[0], parse_entry_helper(node, item)) 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)) 1053 1058 1054 1059 for item in LIST_OF_STATE_PARAMETERS:
Note: See TracChangeset
for help on using the changeset viewer.