Changeset f028ca9 in sasview for src/sas/sasgui/perspectives
- Timestamp:
- Apr 11, 2017 6:17:46 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:
- a42fb8e
- Parents:
- 0741804 (diff), 2d220dd (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:
- Andrew Jackson <andrew.jackson@…> (04/11/17 06:17:46)
- git-committer:
- GitHub <noreply@…> (04/11/17 06:17:46)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/sas/sasgui/perspectives/calculator/sld_panel.py
r7432acb r2d220dd 60 60 # Object that receive status event 61 61 self.base = base 62 self.wavelength = WAVELENGTH 62 self.neutron_wavelength = WAVELENGTH 63 self.xray_source_input = WAVELENGTH 63 64 self.parent = parent 64 65 #layout attribute … … 67 68 self.compound = "" 68 69 self.density = "" 69 self.wavelength_ctl = None 70 self.neutron_wavelength_ctl = None 71 self.xray_source_input_ctl = None 72 self.xray_cbox = None 70 73 self.neutron_sld_real_ctl = None 71 74 self.neutron_sld_im_ctl = None 72 self.mo_ka_sld_real_ctl = None 73 self.mo_ka_sld_im_ctl = None 74 self.cu_ka_sld_real_ctl = None 75 self.cu_ka_sld_im_ctl = None 75 self.xray_sld_real_ctl = None 76 self.xray_sld_im_ctl = None 76 77 self.neutron_abs_ctl = None 77 78 self.neutron_inc_ctl = None 78 79 self.neutron_length_ctl = None 79 80 self.button_calculate = None 81 self.xray_source = None 80 82 #Draw the panel 81 83 self._do_layout() 82 84 self.SetAutoLayout(True) 83 85 self.Layout() 86 self.fill_xray_cbox() 84 87 85 88 def _do_layout(self): … … 108 111 self.density_ctl = wx.TextCtrl(self, -1, size=(_BOX_WIDTH, -1)) 109 112 unit_density_txt = wx.StaticText(self, -1, unit_density) 110 wavelength_txt = wx.StaticText(self, -1, 'Wavelength ') 111 self.wavelength_ctl = wx.TextCtrl(self, -1, size=(_BOX_WIDTH, -1)) 112 self.wavelength_ctl.SetValue(str(self.wavelength)) 113 unit_a_txt = wx.StaticText(self, -1, unit_a) 113 neutron_wavelength_txt = wx.StaticText(self, -1, 'Neutron wavelength') 114 self.neutron_wavelength_ctl = wx.TextCtrl(self, -1, size=(_BOX_WIDTH, -1)) 115 self.neutron_wavelength_ctl.SetValue(str(self.neutron_wavelength)) 116 self.xray_source_input_txt = wx.StaticText(self, -1, 'X-ray wavelength') 117 self.xray_source_input_ctl = wx.TextCtrl(self, -1, size=(_BOX_WIDTH, -1)) 118 self.xray_source_input_ctl.SetValue(str(self.xray_source_input)) 119 neutron_unit_a_txt = wx.StaticText(self, -1, unit_a) 120 121 self.xray_cbox = wx.ComboBox(self, -1, size=(70, 20), style=wx.CB_READONLY) 122 xray_cbox_tip = "Select an element, wavelength or energy" 123 self.xray_cbox.SetToolTipString(xray_cbox_tip) 124 wx.EVT_COMBOBOX(self.xray_cbox, -1, self.on_select_xray) 125 114 126 iy = 0 115 127 ix = 0 … … 131 143 iy += 1 132 144 ix = 0 133 sizer_input.Add(wavelength_txt, (iy, ix), (1, 1), 134 wx.LEFT | wx.EXPAND | wx.ADJUST_MINSIZE, 15) 135 ix += 1 136 sizer_input.Add(self.wavelength_ctl, (iy, ix), (1, 1), 137 wx.EXPAND | wx.ADJUST_MINSIZE, 0) 138 ix += 1 139 sizer_input.Add(unit_a_txt, (iy, ix), (1, 1), 145 sizer_input.Add(neutron_wavelength_txt, (iy, ix), (1, 1), 146 wx.LEFT | wx.EXPAND | wx.ADJUST_MINSIZE, 15) 147 ix += 1 148 sizer_input.Add(self.neutron_wavelength_ctl, (iy, ix), (1, 1), 149 wx.EXPAND | wx.ADJUST_MINSIZE, 0) 150 ix += 1 151 sizer_input.Add(neutron_unit_a_txt, (iy, ix), (1, 1), 152 wx.EXPAND | wx.ADJUST_MINSIZE, 0) 153 iy += 1 154 ix = 0 155 sizer_input.Add(self.xray_source_input_txt, (iy, ix), (1, 1), 156 wx.LEFT | wx.EXPAND | wx.ADJUST_MINSIZE, 15) 157 ix += 1 158 sizer_input.Add(self.xray_source_input_ctl, (iy, ix), (1, 1), 159 wx.EXPAND | wx.ADJUST_MINSIZE, 0) 160 ix += 1 161 sizer_input.Add(self.xray_cbox, (iy, ix), (1, 1), 140 162 wx.EXPAND | wx.ADJUST_MINSIZE, 0) 141 163 boxsizer1.Add(sizer_input) … … 151 173 size=(_BOX_WIDTH, -1)) 152 174 self.neutron_sld_real_ctl.SetEditable(False) 153 self.neutron_sld_real_ctl.SetToolTipString("Neutron SLD real .")175 self.neutron_sld_real_ctl.SetToolTipString("Neutron SLD real") 154 176 self.neutron_sld_im_ctl = wx.TextCtrl(self, -1, 155 177 size=(_BOX_WIDTH, -1)) 156 178 self.neutron_sld_im_ctl.SetEditable(False) 157 self.neutron_sld_im_ctl.SetToolTipString("Neutron SLD imaginary .")179 self.neutron_sld_im_ctl.SetToolTipString("Neutron SLD imaginary") 158 180 neutron_sld_units_txt = wx.StaticText(self, -1, unit_sld) 159 181 160 cu_ka_sld_txt = wx.StaticText(self, -1, 'Cu KaSLD')161 self. cu_ka_sld_real_ctl = wx.TextCtrl(self, -1,182 xray_sld_txt = wx.StaticText(self, -1, 'X-ray SLD') 183 self.xray_sld_real_ctl = wx.TextCtrl(self, -1, 162 184 size=(_BOX_WIDTH, -1)) 163 self. cu_ka_sld_real_ctl.SetEditable(False)164 self. cu_ka_sld_real_ctl.SetToolTipString("Cu Ka SLD real.")165 self. cu_ka_sld_im_ctl = wx.TextCtrl(self, -1,185 self.xray_sld_real_ctl.SetEditable(False) 186 self.xray_sld_real_ctl.SetToolTipString("X-ray SLD real") 187 self.xray_sld_im_ctl = wx.TextCtrl(self, -1, 166 188 size=(_BOX_WIDTH, -1)) 167 self.cu_ka_sld_im_ctl.SetEditable(False) 168 self.cu_ka_sld_im_ctl.SetToolTipString("Cu Ka SLD imaginary.") 169 cu_ka_sld_units_txt = wx.StaticText(self, -1, unit_sld) 170 171 mo_ka_sld_txt = wx.StaticText(self, -1, 'Mo Ka SLD') 172 self.mo_ka_sld_real_ctl = wx.TextCtrl(self, -1, 173 size=(_BOX_WIDTH, -1)) 174 self.mo_ka_sld_real_ctl.SetEditable(False) 175 self.mo_ka_sld_real_ctl.SetToolTipString("Mo Ka SLD real.") 176 self.mo_ka_sld_im_ctl = wx.TextCtrl(self, -1, 177 size=(_BOX_WIDTH, -1)) 178 self.mo_ka_sld_im_ctl.SetEditable(False) 179 self.mo_ka_sld_im_ctl.SetToolTipString("Mo Ka SLD imaginary.") 180 mo_ka_sld_units_txt = wx.StaticText(self, -1, unit_sld) 189 self.xray_sld_im_ctl.SetEditable(False) 190 self.xray_sld_im_ctl.SetToolTipString("X-ray SLD imaginary") 191 xray_sld_units_txt = wx.StaticText(self, -1, unit_sld) 181 192 182 193 neutron_inc_txt = wx.StaticText(self, -1, 'Neutron Inc. Xs') … … 219 230 iy += 1 220 231 ix = 0 221 sizer_output.Add( cu_ka_sld_txt, (iy, ix), (1, 1),222 wx.LEFT | wx.EXPAND | wx.ADJUST_MINSIZE, 15) 223 ix += 1 224 sizer_output.Add(self. cu_ka_sld_real_ctl, (iy, ix), (1, 1),232 sizer_output.Add(xray_sld_txt, (iy, ix), (1, 1), 233 wx.LEFT | wx.EXPAND | wx.ADJUST_MINSIZE, 15) 234 ix += 1 235 sizer_output.Add(self.xray_sld_real_ctl, (iy, ix), (1, 1), 225 236 wx.EXPAND | wx.ADJUST_MINSIZE, 0) 226 237 ix += 1 … … 228 239 (iy, ix), (1, 1), wx.EXPAND | wx.ADJUST_MINSIZE, 0) 229 240 ix += 1 230 sizer_output.Add(self. cu_ka_sld_im_ctl,241 sizer_output.Add(self.xray_sld_im_ctl, 231 242 (iy, ix), (1, 1), wx.EXPAND | wx.ADJUST_MINSIZE, 0) 232 243 ix += 1 233 sizer_output.Add(cu_ka_sld_units_txt, 234 (iy, ix), (1, 1), wx.EXPAND | wx.ADJUST_MINSIZE, 0) 235 iy += 1 236 ix = 0 237 sizer_output.Add(mo_ka_sld_txt, (iy, ix), (1, 1), 238 wx.LEFT | wx.EXPAND | wx.ADJUST_MINSIZE, 15) 239 ix += 1 240 sizer_output.Add(self.mo_ka_sld_real_ctl, (iy, ix), (1, 1), 241 wx.EXPAND | wx.ADJUST_MINSIZE, 0) 242 ix += 1 243 sizer_output.Add(wx.StaticText(self, -1, i_complex), 244 (iy, ix), (1, 1), wx.EXPAND | wx.ADJUST_MINSIZE, 0) 245 ix += 1 246 sizer_output.Add(self.mo_ka_sld_im_ctl, 247 (iy, ix), (1, 1), wx.EXPAND | wx.ADJUST_MINSIZE, 0) 248 ix += 1 249 sizer_output.Add(mo_ka_sld_units_txt, 244 sizer_output.Add(xray_sld_units_txt, 250 245 (iy, ix), (1, 1), wx.EXPAND | wx.ADJUST_MINSIZE, 0) 251 246 iy += 1 … … 310 305 self.SetSizer(vbox) 311 306 307 def fill_xray_cbox(self): 308 """ 309 fill the x-ray combobox with the sources 310 """ 311 source_list = ['[A]', '[keV]', 'Element'] 312 for source in source_list: 313 pos = self.xray_cbox.Append(str(source)) 314 self.xray_cbox.SetClientData(pos, str(source.strip())) 315 self.xray_cbox.SetSelection(0) 316 self.xray_source = source_list[0] 317 318 def on_select_xray(self, event=None): 319 """ 320 On Selecting a source 321 """ 322 item = event.GetEventObject() 323 self.xray_source = item.GetValue().strip() 324 325 if self.xray_source == "[A]": 326 self.xray_source_input_txt.SetLabel("X-ray wavelength") 327 elif self.xray_source == "[keV]": 328 self.xray_source_input_txt.SetLabel("X-ray energy") 329 elif self.xray_source == "Element": 330 self.xray_source_input_txt.SetLabel("X-ray source") 331 312 332 def on_help(self, event): 313 333 """ … … 363 383 msg += "Error for Density value :expect float" 364 384 365 self.wavelength = self.wavelength_ctl.GetValue() 366 if str(self.wavelength).lstrip().rstrip() == "": 367 self.wavelength = WAVELENGTH 368 self.wavelength_ctl.SetValue(str(WAVELENGTH)) 369 self.wavelength_ctl.SetBackgroundColour(wx.WHITE) 370 self.wavelength_ctl.Refresh() 385 self.neutron_wavelength = self.neutron_wavelength_ctl.GetValue() 386 self.xray_source_input = self.xray_source_input_ctl.GetValue() 387 388 if str(self.neutron_wavelength).lstrip().rstrip() == "": 389 self.neutron_wavelength = WAVELENGTH 390 self.neutron_wavelength_ctl.SetValue(str(WAVELENGTH)) 391 self.neutron_wavelength_ctl.SetBackgroundColour(wx.WHITE) 392 self.neutron_wavelength_ctl.Refresh() 371 393 msg += "Default value for wavelength is 6.0" 372 394 else: 373 if check_float(self. wavelength_ctl):374 self. wavelength = float(self.wavelength)395 if check_float(self.neutron_wavelength_ctl): 396 self.neutron_wavelength = float(self.neutron_wavelength) 375 397 else: 376 398 flag = False 377 399 msg += "Error for wavelength value :expect float" 400 401 if str(self.xray_source_input).lstrip().rstrip() == "": 402 self.xray_source_input = WAVELENGTH 403 self.xray_source_input_ctl.SetValue(str(WAVELENGTH)) 404 self.xray_source_input_ctl.SetBackgroundColour(wx.WHITE) 405 self.xray_source_input_ctl.Refresh() 406 msg += "Default value for wavelength is 6.0" 407 else: 408 if (self.xray_source == '[A]') or (self.xray_source == '[keV]'): 409 if check_float(self.xray_source_input_ctl): 410 self.xray_source_input = float(self.xray_source_input) 411 else: 412 flag = False 413 msg += "Error for wavelength value :expect float" 414 elif (self.xray_source == 'Element'): 415 try: 416 import periodictable 417 exec("periodictable." + self.xray_source_input) 418 except AttributeError: 419 flag = False 420 msg += "X-ray element supplied isn't in the database" 421 422 378 423 379 424 self.compound = self.compound_ctl.GetValue().lstrip().rstrip() … … 410 455 return xray_sld_from_atoms(atom, density=density, energy=energy) 411 456 412 413 457 def calculateSld(self, event): 414 458 """ … … 430 474 length = neutron_scattering(compound=self.compound, 431 475 density=self.density, 432 wavelength=self.wavelength) 433 cu_real, cu_im = self.calculate_sld_helper(element="Cu", 434 density=self.density, 435 molecule_formula=self.sld_formula) 436 mo_real, mo_im = self.calculate_sld_helper(element="Mo", 437 density=self.density, 438 molecule_formula=self.sld_formula) 476 wavelength=self.neutron_wavelength) 477 if self.xray_source == "[A]": 478 energy = xray_energy(self.xray_source_input) 479 xray_real, xray_im = xray_sld_from_atoms(self.sld_formula.atoms, 480 density=self.density, 481 energy=energy) 482 elif self.xray_source == "[keV]": 483 xray_real, xray_im = xray_sld_from_atoms(self.sld_formula.atoms, 484 density=self.density, 485 energy=self.xray_source_input) 486 elif self.xray_source == "Element": 487 xray_real, xray_im = self.calculate_sld_helper(element=self.xray_source_input, 488 density=self.density, 489 molecule_formula=self.sld_formula) 439 490 # set neutron sld values 440 491 val = format_number(sld_real * _SCALE) … … 443 494 self.neutron_sld_im_ctl.SetValue(val) 444 495 # Compute the Cu SLD 445 self.cu_ka_sld_real_ctl.SetValue(format_number(cu_real * _SCALE)) 446 val = format_number(math.fabs(cu_im) * _SCALE) 447 self.cu_ka_sld_im_ctl.SetValue(val) 448 # Compute the Mo SLD 449 self.mo_ka_sld_real_ctl.SetValue(format_number(mo_real * _SCALE)) 450 val = format_number(math.fabs(mo_im) * _SCALE) 451 self.mo_ka_sld_im_ctl.SetValue(val) 496 self.xray_sld_real_ctl.SetValue(format_number(xray_real * _SCALE)) 497 val = format_number(math.fabs(xray_im) * _SCALE) 498 self.xray_sld_im_ctl.SetValue(val) 452 499 # set incoherence and absorption 453 500 self.neutron_inc_ctl.SetValue(format_number(incoh)) … … 456 503 self.neutron_length_ctl.SetValue(format_number(length)) 457 504 # display wavelength 458 self.wavelength_ctl.SetValue(str(self.wavelength)) 505 #self.wavelength_ctl.SetValue(str(self.wavelength)) 506 #self.wavelength_ctl.SetValue(str(self.wavelength)) 459 507 except: 460 508 if self.base is not None: … … 470 518 self.neutron_sld_real_ctl.SetValue("") 471 519 self.neutron_sld_im_ctl.SetValue("") 472 self.mo_ka_sld_real_ctl.SetValue("") 473 self.mo_ka_sld_im_ctl.SetValue("") 474 self.cu_ka_sld_real_ctl.SetValue("") 475 self.cu_ka_sld_im_ctl.SetValue("") 520 self.xray_sld_real_ctl.SetValue("") 521 self.xray_sld_im_ctl.SetValue("") 476 522 self.neutron_abs_ctl.SetValue("") 477 523 self.neutron_inc_ctl.SetValue("")
Note: See TracChangeset
for help on using the changeset viewer.