Skip to content

Commit

Permalink
Improve powder data reduction GUI. Refs #6555.
Browse files Browse the repository at this point in the history
Improvements include:
1. Move preserve-events and file extension to advanced setup tab;
2. Clean GUI;
3. Add helping infomation;
4. Add tool tip to each widget.
  • Loading branch information
wdzhou committed Mar 20, 2013
1 parent 254bd8f commit edfc8c1
Show file tree
Hide file tree
Showing 11 changed files with 1,087 additions and 542 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,8 @@ class AdvancedSetupScript(BaseScriptElement):
vanadiumfwhm = ""
vanadiumpeaktol = ""
vanadiumsmoothparams = ""
preserveevents = False
extension = "_event.nxs"

def __init__(self, inst_name):
""" Initialization
Expand Down Expand Up @@ -70,6 +72,8 @@ def createParametersList(self):
self.parnamelist.append("VanadiumSmoothParams")
self.parnamelist.append("FilterBadPulses")
self.parnamelist.append("PushDataPositive")
self.parnamelist.append("Extension")
self.parnamelist.append("PreserveEvents")

return

Expand Down Expand Up @@ -114,6 +118,8 @@ def buildParameterDict(self):
pardict["VanadiumFWHM"] = self.vanadiumfwhm
pardict["VanadiumPeakTol"] = self.vanadiumpeaktol
pardict["VanadiumSmoothParams"] = self.vanadiumsmoothparams
pardict["Extension"] = str(self.extension)
pardict["PreserveEvents"] = str(int(self.preserveevents))

return pardict

Expand Down Expand Up @@ -145,8 +151,6 @@ def from_xml(self, xml_str):
if len(element_list)>0:
instrument_dom = element_list[0]



tempfloat = BaseScriptElement.getStringElement(instrument_dom,
"unwrapref", default=AdvancedSetupScript.unwrapref)
try:
Expand Down Expand Up @@ -182,7 +186,6 @@ def from_xml(self, xml_str):
except ValueError:
self.maxchunksize = ""


self.filterbadpulses = getBooleanElement(instrument_dom,
"filterbadpulses", AdvancedSetupScript.filterbadpulses)

Expand All @@ -209,6 +212,13 @@ def from_xml(self, xml_str):
self.vanadiumsmoothparams = BaseScriptElement.getStringElement(instrument_dom,
"vanadiumsmoothparams", default=AdvancedSetupScript.vanadiumsmoothparams)

self.extension = BaseScriptElement.getStringElement(instrument_dom,
"extension", default=AdvancedSetupScript.extension)

tempbool = BaseScriptElement.getStringElement(instrument_dom,
"preserveevents", default=str(int(AdvancedSetupScript.preserveevents)))
self.preserveevents = bool(int(tempbool))

return

def reset(self):
Expand All @@ -232,5 +242,7 @@ def reset(self):
# self.grouping_file = RunSetupScript.grouping_file
# self.show_workspaces = RunSetupScript.show_workspaces

self.extension = AdvancedSetupScript.extension
self.reserveevents = AdvancedSetupScript.preserveevents
return

Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@ def constructPythonScript(self, paramdict):
filterdict = paramdict["FilterSetupWidget"]

# 2. Obtain some information
datafilenames = self.getDataFileNames(runsetupdict)
datafilenames = self.getDataFileNames(runsetupdict, advsetupdict)
if len(datafilenames) == 0:
raise NotImplementedError("RunNumber cannot be neglected. ")

Expand Down Expand Up @@ -200,7 +200,7 @@ def doFiltering(self, filterdict):
return dofilter


def getDataFileNames(self, runsetupdict):
def getDataFileNames(self, runsetupdict, advsetupdict):
""" Obtain the data file names (run names + SUFFIX)
Return: list of files
Expand Down Expand Up @@ -261,7 +261,7 @@ def getDataFileNames(self, runsetupdict):
# ENDFOR: term

# 2. Attach file extension
extension = runsetupdict["Extension"].replace("\"", "").replace("'", "")
extension = advsetupdict["Extension"].replace("\"", "").replace("'", "")
for run in runnumbers:
filename = str(self.instrument_name +"_" + str(run) + extension)
datafilenames.append((run, filename))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,7 @@ class RunSetupScript(BaseScriptElement):
runnumbers = ""
calibfilename = ""
charfilename = ""
preserveevents = False
dosum = False
extension = "_event.nxs"
binning = -0.0001
binningtype = "Logarithmic"
tofmin = ""
Expand Down Expand Up @@ -57,8 +55,6 @@ def createParametersList(self):
"""
self.parnamelist = []
self.parnamelist.append("RunNumber")
self.parnamelist.append("Extension")
self.parnamelist.append("PreserveEvents")
self.parnamelist.append("Sum")
self.parnamelist.append("CalibrationFile")
self.parnamelist.append("CharacterizationRunsFile")
Expand All @@ -85,8 +81,6 @@ def buildParameterDict(self):
pardict = {}

pardict["RunNumber"] = str(self.runnumbers)
pardict["Extension"] = str(self.extension)
pardict["PreserveEvents"] = str(int(self.preserveevents))
pardict["Sum"] = str(int(self.dosum))
pardict["CalibrationFile"] = self.calibfilename
pardict["CharacterizationRunsFile"] = self.charfilename
Expand Down Expand Up @@ -169,12 +163,6 @@ def from_xml(self, xml_str):
self.runnumbers = BaseScriptElement.getStringElement(instrument_dom,
"runnumber", default=RunSetupScript.runnumbers)

self.extension = BaseScriptElement.getStringElement(instrument_dom,
"extension", default=RunSetupScript.extension)

tempbool = BaseScriptElement.getStringElement(instrument_dom,
"preserveevents", default=str(int(RunSetupScript.preserveevents)))
self.preserveevents = bool(int(tempbool))

tempbool = BaseScriptElement.getStringElement(instrument_dom,
"sum", default=str(int(RunSetupScript.dosum)))
Expand Down Expand Up @@ -249,9 +237,7 @@ def reset(self):
self.runnumbers = RunSetupScript.runnumbers
self.calibfilename = RunSetupScript.calibfilename
self.charfilename = RunSetupScript.charfilename
self.reserveevents = RunSetupScript.preserveevents
self.dosum = RunSetupScript.dosum
self.extension = RunSetupScript.extension
self.binning = RunSetupScript.binning
self.resamplex = RunSetupScript.resamplex
self.binindspace = RunSetupScript.binindspace
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@

from reduction_gui.reduction.diffraction.diffraction_adv_setup_script import AdvancedSetupScript
import ui.diffraction.ui_diffraction_adv_setup
import ui.diffraction.ui_diffraction_info

class AdvancedSetupWidget(BaseWidget):
""" Widget that presents run setup including sample run, optional vanadium run and etc.
Expand Down Expand Up @@ -73,11 +74,21 @@ def initialize_content(self):
self._content.vanpeaktol_edit.setValidator(dv6)

# Default states
self._content.extension_combo.setCurrentIndex(1)

self._content.stripvanpeaks_chkbox.setChecked(False)
self._content.vanpeakfwhm_edit.setEnabled(False)
self._content.vansmoothpar_edit.setEnabled(False)
self._content.vanpeaktol_edit.setEnabled(False)

# self._handle_tzero_guess(self._content.use_ei_guess_chkbox.isChecked())

# Connections from action/event to function to handle
self.connect(self._content.stripvanpeaks_chkbox, QtCore.SIGNAL("clicked()"),
self._stripvanpeaks_clicked)

self.connect(self._content.help_button, QtCore.SIGNAL("clicked()"),
self._show_help)
# Hanlder for events

# Validated widgets
Expand All @@ -101,6 +112,9 @@ def set_state(self, state):
self._content.vanpeaktol_edit.setText(str(state.vanadiumpeaktol))
self._content.vansmoothpar_edit.setText(str(state.vanadiumsmoothparams))

self._content.preserveevents_checkbox.setChecked(state.preserveevents)
self._content.extension_combo.setCurrentIndex(self._content.extension_combo.findText(state.extension))

return


Expand All @@ -123,6 +137,9 @@ def get_state(self):
s.vanadiumpeaktol = self._content.vanpeaktol_edit.text()
s.vanadiumsmoothparams = self._content.vansmoothpar_edit.text()

s.preserveevents = self._content.preserveevents_checkbox.isChecked()
s.extension = str(self._content.extension_combo.currentText())

return s


Expand All @@ -132,4 +149,31 @@ def _detinstrumentchange(self):
self._instrument_name = str(self._content.instrument_combo.currentText())

return

def _stripvanpeaks_clicked(self):
""" Handling if strip-vanadium-peak check box is clicked
"""
if self._content.stripvanpeaks_chkbox.isChecked() is True:
# Enable all the edits
self._content.vanpeakfwhm_edit.setEnabled(True)
self._content.vansmoothpar_edit.setEnabled(True)
self._content.vanpeaktol_edit.setEnabled(True)
else:
# Disable all the edits
self._content.vanpeakfwhm_edit.setEnabled(False)
self._content.vansmoothpar_edit.setEnabled(False)
self._content.vanpeaktol_edit.setEnabled(False)

return

def _show_help(self):
class HelpDialog(QtGui.QDialog, ui.diffraction.ui_diffraction_info.Ui_Dialog):
def __init__(self, parent=None):
QtGui.QDialog.__init__(self, parent)
self.setupUi(self)
dialog = HelpDialog(self)
dialog.exec_()

return

#ENDCLASSDEF
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@

from reduction_gui.reduction.diffraction.diffraction_run_setup_script import RunSetupScript
import ui.diffraction.ui_diffraction_run_setup
import ui.diffraction.ui_diffraction_info

#import mantid.simpleapi as api
from mantid.api import *
Expand Down Expand Up @@ -52,7 +53,6 @@ def initialize_content(self):
# Combo boxes
self._content.saveas_combo.setCurrentIndex(1)
self._content.unit_combo.setCurrentIndex(1)
self._content.extension_combo.setCurrentIndex(1)
self._content.bintype_combo.setCurrentIndex(1)

# Radio buttons
Expand All @@ -73,6 +73,7 @@ def initialize_content(self):
self._content.emptyrun_edit.setEnabled(False)
self._content.vanrun_edit.setEnabled(False)
self._content.vanbkgdrun_edit.setEnabled(False)
self._content.resamplex_edit.setEnabled(False)

# Constraints/Validator
# Integers
Expand Down Expand Up @@ -129,6 +130,14 @@ def initialize_content(self):
self._disablevancorr_clicked)
self.connect(self._content.disablevanbkgdcorr_chkbox, QtCore.SIGNAL("clicked()"),
self._disablevanbkgdcorr_clicked)

self.connect(self._content.usebin_button, QtCore.SIGNAL("clicked()"),
self._usebin_clicked)
self.connect(self._content.resamplex_button, QtCore.SIGNAL("clicked()"),
self._resamplex_clicked)

self.connect(self._content.help_button, QtCore.SIGNAL("clicked()"),
self._show_help)

# Validated widgets

Expand All @@ -141,9 +150,7 @@ def set_state(self, state):
self._content.runnumbers_edit.setText(state.runnumbers)
self._content.calfile_edit.setText(state.calibfilename)
self._content.charfile_edit.setText(state.charfilename)
self._content.preserveevents_checkbox.setChecked(state.preserveevents)
self._content.sum_checkbox.setChecked(state.dosum)
self._content.extension_combo.setCurrentIndex(self._content.extension_combo.findText(state.extension))
self._content.binning_edit.setText(str(state.binning))
state.binning = float(state.binning)
if state.binning > 0.0:
Expand Down Expand Up @@ -197,9 +204,7 @@ def get_state(self):

s.calibfilename = self._content.calfile_edit.text()
s.charfilename = self._content.charfile_edit.text()
s.preserveevents = self._content.preserveevents_checkbox.isChecked()
s.dosum = self._content.sum_checkbox.isChecked()
s.extension = str(self._content.extension_combo.currentText())
s.binning = self._content.binning_edit.text()
bintypestr = self._content.bintype_combo.currentText()
if s.binning != "" and s.binning is not None:
Expand Down Expand Up @@ -393,3 +398,34 @@ def _disablevanbkgdcorr_clicked(self):

return

def _usebin_clicked(self):
""" Handling event if 'Binning' button is clicked
"""
if self._content.usebin_button.isChecked() is True:
self._content.binning_edit.setEnabled(True)
self._content.resamplex_edit.setEnabled(False)
else:
self._content.binning_edit.setEnabled(False)
self._content.resamplex_edit.setEnabled(True)

return

def _resamplex_clicked(self):
""" Handling event if 'ResampleX' is clicked
"""
if self._content.resamplex_button.isChecked() is True:
self._content.binning_edit.setEnabled(False)
self._content.resamplex_edit.setEnabled(True)
else:
self._content.binning_edit.setEnabled(True)
self._content.resamplex_edit.setEnabled(False)

return

def _show_help(self):
class HelpDialog(QtGui.QDialog, ui.diffraction.ui_diffraction_info.Ui_Dialog):
def __init__(self, parent=None):
QtGui.QDialog.__init__(self, parent)
self.setupUi(self)
dialog = HelpDialog(self)
dialog.exec_()

0 comments on commit edfc8c1

Please sign in to comment.