Changeset 1661cd5 in sasview for src/sas/sasgui
- Timestamp:
- Apr 4, 2017 11:12:10 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:
- b697396b
- Parents:
- f15da54 (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. - Location:
- src/sas/sasgui
- Files:
-
- 1 added
- 1 deleted
- 8 edited
- 1 moved
Legend:
- Unmodified
- Added
- Removed
-
src/sas/sasgui/guiframe/acknowledgebox.py
rc1fdf84 r74c8cd0 11 11 import wx.richtext 12 12 import wx.lib.hyperlink 13 from wx.lib.expando import ExpandoTextCtrl 13 14 import random 14 15 import os.path … … 36 37 Shows the current method for acknowledging SasView in 37 38 scholarly publications. 38 39 39 """ 40 40 … … 44 44 wx.Dialog.__init__(self, *args, **kwds) 45 45 46 self.ack = wx.TextCtrl(self, style=wx.TE_LEFT|wx.TE_MULTILINE|wx.TE_BESTWRAP|wx.TE_READONLY|wx.TE_NO_VSCROLL)46 self.ack = ExpandoTextCtrl(self, style=wx.TE_LEFT|wx.TE_MULTILINE|wx.TE_BESTWRAP|wx.TE_READONLY|wx.TE_NO_VSCROLL) 47 47 self.ack.SetValue(config._acknowledgement_publications) 48 self.ack.SetMinSize((-1, 55)) 48 #self.ack.SetMinSize((-1, 55)) 49 self.citation = ExpandoTextCtrl(self, style=wx.TE_LEFT|wx.TE_MULTILINE|wx.TE_BESTWRAP|wx.TE_READONLY|wx.TE_NO_VSCROLL) 50 self.citation.SetValue(config._acknowledgement_citation) 49 51 self.preamble = wx.StaticText(self, -1, config._acknowledgement_preamble) 50 52 items = [config._acknowledgement_preamble_bullet1, … … 52 54 config._acknowledgement_preamble_bullet3, 53 55 config._acknowledgement_preamble_bullet4] 54 self.list1 = wx.StaticText(self, -1, " \t(1) " + items[0])55 self.list2 = wx.StaticText(self, -1, " \t(2) " + items[1])56 self.list3 = wx.StaticText(self, -1, " \t(3) " + items[2])57 self.list4 = wx.StaticText(self, -1, " \t(4) " + items[3])56 self.list1 = wx.StaticText(self, -1, "(1) " + items[0]) 57 self.list2 = wx.StaticText(self, -1, "(2) " + items[1]) 58 self.list3 = wx.StaticText(self, -1, "(3) " + items[2]) 59 self.list4 = wx.StaticText(self, -1, "(4) " + items[3]) 58 60 self.static_line = wx.StaticLine(self, 0) 59 61 self.__set_properties() … … 69 71 self.SetTitle("Acknowledging SasView") 70 72 #Increased size of box from (525, 225), SMK, 04/10/16 71 self.Set Size((600, 300))73 self.SetClientSize((600, 320)) 72 74 # end wxGlade 73 75 … … 81 83 sizer_titles.Add(self.preamble, 0, wx.ALL|wx.EXPAND, 5) 82 84 sizer_titles.Add(self.list1, 0, wx.ALL|wx.EXPAND, 5) 85 sizer_titles.Add(self.ack, 0, wx.ALL|wx.EXPAND, 5) 83 86 sizer_titles.Add(self.list2, 0, wx.ALL|wx.EXPAND, 5) 87 sizer_titles.Add(self.citation, 0, wx.ALL|wx.EXPAND, 5) 84 88 sizer_titles.Add(self.list3, 0, wx.ALL|wx.EXPAND, 5) 89 #sizer_titles.Add(self.static_line, 0, wx.ALL|wx.EXPAND, 0) 85 90 sizer_titles.Add(self.list4, 0, wx.ALL|wx.EXPAND, 5) 86 sizer_titles.Add(self.static_line, 0, wx.ALL|wx.EXPAND, 0)87 sizer_titles.Add(self.ack, 0, wx.ALL|wx.EXPAND, 5)88 91 sizer_main.Add(sizer_titles, -1, wx.ALL|wx.EXPAND, 5) 89 92 self.SetAutoLayout(True) … … 91 94 self.Layout() 92 95 self.Centre() 96 #self.SetClientSize(sizer_main.GetSize()) 93 97 # end wxGlade 94 98 -
src/sas/sasgui/guiframe/config.py
rd85c194 rf9d1f60 1 1 """ 2 Application settings2 Application settings 3 3 """ 4 import time 4 5 import os 5 import time6 6 from sas.sasgui.guiframe.gui_style import GUIFRAME 7 import sas.sasview 8 import logging 9 7 10 # Version of the application 8 __appname__ = " DummyView"9 __version__ = '0.0.0'10 __build__ = '1'11 __appname__ = "SasView" 12 __version__ = sas.sasview.__version__ 13 __build__ = sas.sasview.__build__ 11 14 __download_page__ = 'https://github.com/SasView/sasview/releases' 12 15 __update_URL__ = 'http://www.sasview.org/latestversion.json' 13 16 14 15 17 # Debug message flag 16 __EVT_DEBUG__ = True18 __EVT_DEBUG__ = False 17 19 18 20 # Flag for automated testing … … 29 31 _acknowledgement_preamble =\ 30 32 '''To ensure the long term support and development of this software please''' +\ 31 ''' remember to do the following.'''33 ''' remember to:''' 32 34 _acknowledgement_preamble_bullet1 =\ 33 '''Acknowledge its use in your publications as suggested below'''35 '''Acknowledge its use in your publications as :''' 34 36 _acknowledgement_preamble_bullet2 =\ 35 '''Reference the following website: http://www.sasview.org'''37 '''Reference SasView as:''' 36 38 _acknowledgement_preamble_bullet3 =\ 37 39 '''Reference the model you used if appropriate (see documentation for refs)''' … … 39 41 '''Send us your reference for our records: developers@sasview.org''' 40 42 _acknowledgement_publications = \ 41 '''This work benefited from the use of the SasView application, originally 42 developed under NSF award DMR-0520547. 43 '''This work benefited from the use of the SasView application, originally developed under NSF Award DMR-0520547. SasView also contains code developed with funding from the EU Horizon 2020 programme under the SINE2020 project Grant No 654000.''' 44 _acknowledgement_citation = \ 45 '''M. Doucet et al. SasView Version 4.1, Zenodo, 10.5281/zenodo.438138''' 46 47 _acknowledgement = \ 48 '''This work was originally developed as part of the DANSE project funded by the US NSF under Award DMR-0520547,\n but is currently maintained by a collaboration between UTK, UMD, NIST, ORNL, ISIS, ESS, ILL, ANSTO and TU Delft and the scattering community.\n\n SasView also contains code developed with funding from the EU Horizon 2020 programme under the SINE2020 project (Grant No 654000).\nA list of individual contributors can be found at: https://github.com/orgs/SasView/people 43 49 ''' 44 _acknowledgement = \45 '''This work originally developed as part of the DANSE project funded by the NSF46 under grant DMR-0520547, and currently maintained by NIST, UMD, ORNL, ISIS, ESS47 and ILL.48 50 49 '''50 51 _homepage = "http://www.sasview.org" 51 _download = "http://sourceforge.net/projects/sasview/files/"52 _download = __download_page__ 52 53 _authors = [] 53 54 _paper = "http://sourceforge.net/p/sasview/tickets/" 54 55 _license = "mailto:help@sasview.org" 55 _nsf_logo = "images/nsf_logo.png" 56 _danse_logo = "images/danse_logo.png" 57 _inst_logo = "images/utlogo.gif" 58 _nist_logo = "images/nist_logo.png" 59 _umd_logo = "images/umd_logo.png" 60 _sns_logo = "images/sns_logo.png" 61 _isis_logo = "images/isis_logo.png" 62 _ess_logo = "images/ess_logo.png" 63 _ill_logo = "images/ill_logo.png" 56 57 58 icon_path = os.path.abspath(os.path.join(os.path.dirname(__file__), "images")) 59 logging.info("icon path: %s" % icon_path) 60 media_path = os.path.abspath(os.path.join(os.path.dirname(__file__), "media")) 61 test_path = os.path.abspath(os.path.join(os.path.dirname(__file__), "test")) 62 63 _nist_logo = os.path.join(icon_path, "nist_logo.png") 64 _umd_logo = os.path.join(icon_path, "umd_logo.png") 65 _sns_logo = os.path.join(icon_path, "sns_logo.png") 66 _ornl_logo = os.path.join(icon_path, "ornl_logo.png") 67 _isis_logo = os.path.join(icon_path, "isis_logo.png") 68 _ess_logo = os.path.join(icon_path, "ess_logo.png") 69 _ill_logo = os.path.join(icon_path, "ill_logo.png") 70 _ansto_logo = os.path.join(icon_path, "ansto_logo.png") 71 _tudelft_logo = os.path.join(icon_path, "tudelft_logo.png") 72 _nsf_logo = os.path.join(icon_path, "nsf_logo.png") 73 _danse_logo = os.path.join(icon_path, "danse_logo.png") 74 _inst_logo = os.path.join(icon_path, "utlogo.gif") 64 75 _nist_url = "http://www.nist.gov/" 65 76 _umd_url = "http://www.umd.edu/" 66 77 _sns_url = "http://neutrons.ornl.gov/" 78 _ornl_url = "http://neutrons.ornl.gov/" 67 79 _nsf_url = "http://www.nsf.gov" 68 _danse_url = "http://www.cacr.caltech.edu/projects/danse/release/index.html"69 _inst_url = "http://www.utk.edu"70 80 _isis_url = "http://www.isis.stfc.ac.uk/" 71 81 _ess_url = "http://ess-scandinavia.eu/" 72 82 _ill_url = "http://www.ill.eu/" 73 _corner_image = "images/angles_flat.png" 74 _welcome_image = "images/SVwelcome.png" 75 _copyright = "(c) 2008, University of Tennessee" 76 #edit the lists below of file state your plugin can read 77 #for sasview this how you can edit these lists 78 #PLUGIN_STATE_EXTENSIONS = ['.prv','.fitv', '.inv'] 79 #APPLICATION_STATE_EXTENSION = '.svs' 80 #PLUGINS_WLIST = ['P(r) files (*.prv)|*.prv', 81 # 'Fitting files (*.fitv)|*.fitv', 82 # 'Invariant files (*.inv)|*.inv'] 83 #APPLICATION_WLIST = 'SasView files (*.svs)|*.svs' 84 APPLICATION_WLIST = '' 85 APPLICATION_STATE_EXTENSION = None 86 PLUGINS_WLIST = [] 87 PLUGIN_STATE_EXTENSIONS = [] 88 SPLASH_SCREEN_PATH = "images/danse_logo.png" 89 DEFAULT_STYLE = GUIFRAME.SINGLE_APPLICATION 90 SPLASH_SCREEN_WIDTH = 500 91 SPLASH_SCREEN_HEIGHT = 300 92 WELCOME_PANEL_ON = False 93 TUTORIAL_PATH = None 94 SS_MAX_DISPLAY_TIME = 1500 95 PLOPANEL_WIDTH = 350 96 PLOPANEL_HEIGTH = 350 97 GUIFRAME_WIDTH = 1000 98 GUIFRAME_HEIGHT = 800 99 CONTROL_WIDTH = -1 100 CONTROL_HEIGHT = -1 101 SetupIconFile_win = os.path.join("images", "ball.ico") 102 SetupIconFile_mac = os.path.join("images", "ball.icns") 103 DefaultGroupName = "DANSE" 104 OutputBaseFilename = "setupGuiFrame" 83 _ansto_url = "http://www.ansto.gov.au/" 84 _tudelft_url = "http://www.tnw.tudelft.nl/en/cooperation/facilities/reactor-instituut-delft/" 85 _danse_url = "http://www.cacr.caltech.edu/projects/danse/release/index.html" 86 _inst_url = "http://www.utk.edu" 87 _corner_image = os.path.join(icon_path, "angles_flat.png") 88 _welcome_image = os.path.join(icon_path, "SVwelcome.png") 89 _copyright = "(c) 2009 - 2017, UTK, UMD, NIST, ORNL, ISIS, ESS, ILL, ANSTO and TU Delft" 90 marketplace_url = "http://marketplace.sasview.org/" 91 92 #edit the list of file state your plugin can read 93 APPLICATION_WLIST = 'SasView files (*.svs)|*.svs' 94 APPLICATION_STATE_EXTENSION = '.svs' 95 GUIFRAME_WIDTH = 1150 96 GUIFRAME_HEIGHT = 840 97 PLUGIN_STATE_EXTENSIONS = ['.fitv', '.inv', '.prv', '.crf'] 98 PLUGINS_WLIST = ['Fitting files (*.fitv)|*.fitv', 99 'Invariant files (*.inv)|*.inv', 100 'P(r) files (*.prv)|*.prv', 101 'Corfunc files (*.crf)|*.crf'] 102 PLOPANEL_WIDTH = 415 103 PLOPANEL_HEIGTH = 370 105 104 DATAPANEL_WIDTH = 235 106 105 DATAPANEL_HEIGHT = 700 106 SPLASH_SCREEN_PATH = os.path.join(icon_path, "SVwelcome_mini.png") 107 TUTORIAL_PATH = os.path.join(media_path, "Tutorial.pdf") 108 DEFAULT_STYLE = GUIFRAME.MULTIPLE_APPLICATIONS|GUIFRAME.MANAGER_ON\ 109 |GUIFRAME.CALCULATOR_ON|GUIFRAME.TOOLBAR_ON 110 SPLASH_SCREEN_WIDTH = 512 111 SPLASH_SCREEN_HEIGHT = 366 112 SS_MAX_DISPLAY_TIME = 2000 113 WELCOME_PANEL_ON = True 114 WELCOME_PANEL_SHOW = False 115 CLEANUP_PLOT = False 116 # OPEN and SAVE project menu 117 OPEN_SAVE_PROJECT_MENU = True 118 #VIEW MENU 119 VIEW_MENU = True 120 #EDIT MENU 121 EDIT_MENU = True 122 123 SetupIconFile_win = os.path.join(icon_path, "ball.ico") 124 SetupIconFile_mac = os.path.join(icon_path, "ball.icns") 125 DefaultGroupName = "." 126 OutputBaseFilename = "setupSasView" 127 107 128 FIXED_PANEL = True 108 129 DATALOADER_SHOW = True … … 113 134 # set a default perspective 114 135 DEFAULT_PERSPECTIVE = 'None' 115 # OPEN and SAVE project menu 116 OPEN_SAVE_PROJECT_MENU = True 117 CLEANUP_PLOT = False 118 # OPEN and SAVE project menu 119 OPEN_SAVE_PROJECT_MENU = False 120 #VIEW MENU 121 VIEW_MENU = False 122 #EDIT MENU 123 EDIT_MENU = False 124 import wx.lib.newevent 125 (StatusBarEvent, EVT_STATUS) = wx.lib.newevent.NewEvent() 136 137 # Time out for updating sasview 138 UPDATE_TIMEOUT = 2 139 140 #OpenCL option 141 SAS_OPENCL = None 126 142 127 143 def printEVT(message): 128 """129 :TODO - need method documentation130 """131 144 if __EVT_DEBUG__: 145 """ 146 :TODO - Need method doc string 147 """ 132 148 print "%g: %s" % (time.clock(), message) 133 149 134 150 if __EVT_DEBUG_2_FILE__: 135 151 out = open(__EVT_DEBUG_FILENAME__, 'a') 136 152 out.write("%10g: %s\n" % (time.clock(), message)) 137 153 out.close() 138 -
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/fitting.py
rddbac66 r4c5098c 1755 1755 data_id="Data " + data.name + " unsmeared", 1756 1756 dy=unsmeared_error) 1757 1758 if sq_model is not None and pq_model is not None: 1759 self.create_theory_1D(x, sq_model, page_id, model, data, state, 1760 data_description=model.name + " S(q)", 1761 data_id=str(page_id) + " " + data.name + " S(q)") 1762 self.create_theory_1D(x, pq_model, page_id, model, data, state, 1763 data_description=model.name + " P(q)", 1764 data_id=str(page_id) + " " + data.name + " P(q)") 1765 1757 # Comment this out until we can get P*S models with correctly populated parameters 1758 #if sq_model is not None and pq_model is not None: 1759 # self.create_theory_1D(x, sq_model, page_id, model, data, state, 1760 # data_description=model.name + " S(q)", 1761 # data_id=str(page_id) + " " + data.name + " S(q)") 1762 # self.create_theory_1D(x, pq_model, page_id, model, data, state, 1763 # data_description=model.name + " P(q)", 1764 # data_id=str(page_id) + " " + data.name + " P(q)") 1766 1765 1767 1766 current_pg = self.fit_panel.get_page_by_id(page_id) -
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 r27109e5 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) … … 821 819 822 820 attr = newdoc.createAttribute("version") 823 import sasview821 from sas import sasview 824 822 attr.nodeValue = sasview.__version__ 825 823 # attr.nodeValue = '1.0' … … 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: -
src/sas/sasgui/guiframe/local_perspectives/plotting/Plotter2D.py
rb2b36932 rdfa1579 359 359 if self.slicer.__class__.__name__ != "BoxSum": 360 360 wx_id = ids.next() 361 slicerpop.Append(wx_id, '&Edit Slicer Parameters') 361 name = '&Edit Slicer Parameters and Batch Slicing' 362 slicerpop.Append(wx_id, name) 362 363 wx.EVT_MENU(self, wx_id, self._onEditSlicer) 363 364 slicerpop.AppendSeparator() … … 530 531 531 532 """ 532 # #Clear current slicer533 # Clear current slicer 533 534 if not self.slicer == None: 534 535 self.slicer.clear() 535 # #Create a new slicer536 # Create a new slicer 536 537 self.slicer_z += 1 537 538 self.slicer = slicer(self, self.subplot, zorder=self.slicer_z) 538 539 self.subplot.set_ylim(self.data2D.ymin, self.data2D.ymax) 539 540 self.subplot.set_xlim(self.data2D.xmin, self.data2D.xmax) 540 # #Draw slicer541 # Draw slicer 541 542 self.update() 542 543 self.slicer.update() … … 570 571 npt = math.floor(npt) 571 572 from sas.sascalc.dataloader.manipulations import CircularAverage 572 # #compute the maximum radius of data2D573 # compute the maximum radius of data2D 573 574 self.qmax = max(math.fabs(self.data2D.xmax), 574 575 math.fabs(self.data2D.xmin)) … … 576 577 math.fabs(self.data2D.ymin)) 577 578 self.radius = math.sqrt(math.pow(self.qmax, 2) + math.pow(self.ymax, 2)) 578 # #Compute beam width579 # Compute beam width 579 580 bin_width = (self.qmax + self.qmax) / npt 580 # #Create data1D circular average of data2D581 # Create data1D circular average of data2D 581 582 Circle = CircularAverage(r_min=0, r_max=self.radius, 582 583 bin_width=bin_width) … … 597 598 new_plot.name = "Circ avg " + self.data2D.name 598 599 new_plot.source = self.data2D.source 599 # new_plot.info = self.data2D.info600 # new_plot.info = self.data2D.info 600 601 new_plot.interactive = True 601 602 new_plot.detector = self.data2D.detector 602 603 603 # #If the data file does not tell us what the axes are, just assume...604 # If the data file does not tell us what the axes are, just assume... 604 605 new_plot.xaxis("\\rm{Q}", "A^{-1}") 605 606 if hasattr(self.data2D, "scale") and \ … … 613 614 new_plot.id = "Circ avg " + self.data2D.name 614 615 new_plot.is_data = True 615 self.parent.update_theory(data_id=self.data2D.id, \ 616 theory=new_plot) 616 self.parent.update_theory(data_id=self.data2D.id, theory=new_plot) 617 617 wx.PostEvent(self.parent, 618 618 NewPlotEvent(plot=new_plot, title=new_plot.name)) … … 627 627 628 628 """ 629 if self.slicer !=None:630 from SlicerParametersimport SlicerParameterPanel629 if self.slicer is not None: 630 from parameters_panel_slicer import SlicerParameterPanel 631 631 dialog = SlicerParameterPanel(self, -1, "Slicer Parameters") 632 632 dialog.set_slicer(self.slicer.__class__.__name__, … … 666 666 params = self.slicer.get_params() 667 667 ## Create a new panel to display results of summation of Data2D 668 from slicerpanelimport SlicerPanel668 from parameters_panel_boxsum import SlicerPanel 669 669 win = MDIFrame(self.parent, None, 'None', (100, 200)) 670 670 new_panel = SlicerPanel(parent=win, id=-1, … … 717 717 Clear the slicer on the plot 718 718 """ 719 if not self.slicer ==None:719 if self.slicer is not None: 720 720 self.slicer.clear() 721 721 self.subplot.figure.canvas.draw() … … 733 733 """ 734 734 event_id = str(evt.GetId()) 735 if self.parent !=None:735 if self.parent is not None: 736 736 self._default_save_location = self.parent._default_save_location 737 737 default_name = self.plots[self.graph.selected_plottable].label … … 756 756 if default_name.count('.') > 0: 757 757 default_name = default_name.split('.')[0] 758 #default_name += "_out" 759 if self.parent != None: 758 if self.parent is not None: 760 759 self.parent.show_data2d(data, default_name) 761 760 762 761 def modifyGraphAppearance(self, e): 763 self.graphApp = graphAppearance(self, 'Modify graph appearance', legend=False) 762 self.graphApp = graphAppearance(self, 'Modify graph appearance', 763 legend=False) 764 764 self.graphApp.setDefaults(self.grid_on, self.legend_on, 765 765 self.xaxis_label, self.yaxis_label,
Note: See TracChangeset
for help on using the changeset viewer.