- Timestamp:
- Mar 26, 2019 7:14:53 AM (6 years ago)
- Branches:
- ESS_GUI, ESS_GUI_bumps_abstraction, ESS_GUI_iss1116, ESS_GUI_opencl
- Children:
- 82efbe9
- Parents:
- 14e1ff0
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/sas/qtgui/Calculators/SldPanel.py
r33c0561 r912f438 32 32 ) 33 33 34 class SldResult(object): 35 def __init__(self, molecular_formula, mass_density, 36 neutron_wavelength, neutron_sld_real, neutron_sld_imag, 37 xray_wavelength, xray_sld_real, xray_sld_imag, 38 neutron_inc_xs, neutron_abs_xs, neutron_length): 39 40 self.molecular_formula = molecular_formula 41 self.mass_density = mass_density 34 class NeutronSldResult(object): 35 def __init__(self, neutron_wavelength, neutron_sld_real, 36 neutron_sld_imag, neutron_inc_xs, neutron_abs_xs, 37 neutron_length): 38 42 39 self.neutron_wavelength = neutron_wavelength 43 40 self.neutron_sld_real = neutron_sld_real 44 41 self.neutron_sld_imag = neutron_sld_imag 42 self.neutron_inc_xs = neutron_inc_xs 43 self.neutron_abs_xs = neutron_abs_xs 44 self.neutron_length = neutron_length 45 46 class XraySldResult(object): 47 def __init__(self, xray_wavelength, xray_sld_real, xray_sld_imag): 48 45 49 self.xray_wavelength = xray_wavelength 46 50 self.xray_sld_real = xray_sld_real 47 51 self.xray_sld_imag = xray_sld_imag 48 self.neutron_inc_xs = neutron_inc_xs 49 self.neutron_abs_xs = neutron_abs_xs 50 self.neutron_length = neutron_length 51 52 def sldAlgorithm(molecular_formula, mass_density, neutron_wavelength, xray_wavelength): 53 54 xray_sld_real, xray_sld_imag = xray_sld( 55 compound=molecular_formula, 56 density=mass_density, 57 wavelength=xray_wavelength) 52 53 def neutronSldAlgorithm(molecular_formula, mass_density, neutron_wavelength): 58 54 59 55 (neutron_sld_real, neutron_sld_imag, _), (_, neutron_abs_xs, neutron_inc_xs), neutron_length = \ … … 69 65 scaled_neutron_sld_imag = SCALE * abs(neutron_sld_imag) 70 66 67 return NeutronSldResult(neutron_wavelength, scaled_neutron_sld_real, 68 scaled_neutron_sld_imag, neutron_inc_xs, 69 neutron_abs_xs, neutron_length) 70 71 def xraySldAlgorithm(molecular_formula, mass_density, xray_wavelength): 72 73 xray_sld_real, xray_sld_imag = xray_sld( 74 compound=molecular_formula, 75 density=mass_density, 76 wavelength=xray_wavelength) 77 78 SCALE = 1e-6 79 71 80 # xray sld 72 81 scaled_xray_sld_real = SCALE * xray_sld_real … … 74 83 75 84 76 return SldResult( 77 molecular_formula, mass_density, 78 neutron_wavelength, scaled_neutron_sld_real, scaled_neutron_sld_imag, 79 xray_wavelength, scaled_xray_sld_real, scaled_xray_sld_imag, 80 neutron_inc_xs, neutron_abs_xs, neutron_length) 85 return XraySldResult(xray_wavelength, scaled_xray_sld_real, 86 scaled_xray_sld_imag) 81 87 82 88 … … 176 182 xrayWavelength = self.ui.editXrayWavelength.text() 177 183 178 if len(formula) > 0 and len(density) > 0 and len(neutronWavelength) > 0 and len(xrayWavelength) > 0: 179 try: 180 results = sldAlgorithm(str(formula), float(density), float(neutronWavelength), float(xrayWavelength)) 181 182 def format(value): 183 return ("%-5.3g" % value).strip() 184 185 self.model.item(MODEL.NEUTRON_SLD_REAL).setText(format(results.neutron_sld_real)) 186 self.model.item(MODEL.NEUTRON_SLD_IMAG).setText(format(results.neutron_sld_imag)) 187 188 self.model.item(MODEL.XRAY_SLD_REAL).setText(format(results.xray_sld_real)) 189 self.model.item(MODEL.XRAY_SLD_IMAG).setText(format(results.xray_sld_imag)) 190 191 self.model.item(MODEL.NEUTRON_INC_XS).setText(format(results.neutron_inc_xs)) 192 self.model.item(MODEL.NEUTRON_ABS_XS).setText(format(results.neutron_abs_xs)) 193 self.model.item(MODEL.NEUTRON_LENGTH).setText(format(results.neutron_length)) 194 195 return 196 197 except Exception as e: 198 pass 199 200 for key in list(self._getOutputs().keys()): 201 self.model.item(key).setText("") 184 if not formula or not density: 185 return 186 187 def format(value): 188 return ("%-5.3g" % value).strip() 189 190 if neutronWavelength: 191 results = neutronSldAlgorithm(str(formula), float(density), float(neutronWavelength)) 192 193 self.model.item(MODEL.NEUTRON_SLD_REAL).setText(format(results.neutron_sld_real)) 194 self.model.item(MODEL.NEUTRON_SLD_IMAG).setText(format(results.neutron_sld_imag)) 195 self.model.item(MODEL.NEUTRON_INC_XS).setText(format(results.neutron_inc_xs)) 196 self.model.item(MODEL.NEUTRON_ABS_XS).setText(format(results.neutron_abs_xs)) 197 self.model.item(MODEL.NEUTRON_LENGTH).setText(format(results.neutron_length)) 198 else: 199 self.model.item(MODEL.NEUTRON_SLD_REAL).setText("") 200 self.model.item(MODEL.NEUTRON_SLD_IMAG).setText("") 201 self.model.item(MODEL.NEUTRON_INC_XS).setText("") 202 self.model.item(MODEL.NEUTRON_ABS_XS).setText("") 203 self.model.item(MODEL.NEUTRON_LENGTH).setText("") 204 205 if xrayWavelength: 206 results = xraySldAlgorithm(str(formula), float(density), float(xrayWavelength)) 207 208 self.model.item(MODEL.XRAY_SLD_REAL).setText(format(results.xray_sld_real)) 209 self.model.item(MODEL.XRAY_SLD_IMAG).setText(format(results.xray_sld_imag)) 210 else: 211 self.model.item(MODEL.XRAY_SLD_REAL).setText("") 212 self.model.item(MODEL.XRAY_SLD_IMAG).setText("") 202 213 203 214 def modelReset(self):
Note: See TracChangeset
for help on using the changeset viewer.