Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 11 additions & 21 deletions RefRed/about_dialog.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@


class AboutDialog(object):

parent = None

def __init__(self, parent=None):
Expand All @@ -22,29 +21,20 @@ def display(self):
qt_version = QT_VERSION
pyqt_version = PYQT_VERSION

message = '''RefRed - Liquids Reflectrometry Reduction program
message = f"""RefRed - Liquids Reflectrometry Reduction program

RefRed version %s
Reduction version %s
RefRed version {RefRed_version_str}
Reduction version {lr_reduction.__version__}

Library versions:
- Python: %s
- Numpy: %s
- Mantid: %s
- Matplotlib: %s
- Qt: %s
- PyQt: %s''' % (
RefRed_version_str,
lr_reduction.__version__,
python_version,
numpy_version,
mantid_version,
matplotlib_version,
qt_version,
pyqt_version,
)

QtWidgets.QMessageBox.about(self.parent, 'About RefRed', message)
- Python: {python_version}
- Numpy: {numpy_version}
- Mantid: {mantid_version}
- Matplotlib: {matplotlib_version}
- Qt: {qt_version}
- PyQt: {pyqt_version}"""

QtWidgets.QMessageBox.about(self.parent, "About RefRed", message)

def get_python_version(self):
str_version = sys.version_info
Expand Down
144 changes: 74 additions & 70 deletions RefRed/configuration/export_xml_config.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,9 @@
# package imports
import RefRed
from RefRed.calculations.lr_data import LRData
from RefRed.reduction.global_reduction_settings_handler import GlobalReductionSettingsHandler
from RefRed.reduction.global_reduction_settings_handler import (
GlobalReductionSettingsHandler,
)


class ExportXMLConfig(object):
Expand All @@ -21,33 +23,31 @@ def __init__(self, parent=None):

def header_part(self):
str_array = self.str_array
str_array.append('<Reduction>\n')
str_array.append(' <instrument_name>REFL</instrument_name>\n')
str_array.append(' <timestamp>' + datetime.datetime.now().strftime("%A, %d. %B %Y %I:%M%p") + '</timestamp>\n')
str_array.append(' <version>%s</version>\n' % lr_reduction.__version__)
str_array.append(' <mantid_version>' + mantid.__version__ + '</mantid_version>\n')
str_array.append('<generator>RefRed-%s</generator>\n' % RefRed.__version__)
str_array.append("<Reduction>\n")
str_array.append(" <instrument_name>REFL</instrument_name>\n")
str_array.append(" <timestamp>" + datetime.datetime.now().strftime("%A, %d. %B %Y %I:%M%p") + "</timestamp>\n")
str_array.append(" <version>%s</version>\n" % lr_reduction.__version__)
str_array.append(" <mantid_version>" + mantid.__version__ + "</mantid_version>\n")
str_array.append("<generator>RefRed-%s</generator>\n" % RefRed.__version__)

# metadata
str_array.append(' <DataSeries>\n')
str_array.append(" <DataSeries>\n")

self.str_array = str_array

def main_part(self):

str_array = self.str_array
_big_table_data = self.parent.big_table_data
nbr_row = self.parent.REDUCTIONTABLE_MAX_ROWCOUNT
o_general_settings = GlobalReductionSettingsHandler(parent=self.parent)

for row in range(nbr_row):

_data: LRData = _big_table_data[row, 0]
if _data is None:
break # we found the first empty row in the reduction table. No more runs available

str_array.append(' <RefLData>\n')
str_array.append(' <peak_selection_type>narrow</peak_selection_type>\n')
str_array.append(" <RefLData>\n")
str_array.append(" <peak_selection_type>narrow</peak_selection_type>\n")

data_peak = _data.peak
data_back = _data.back
Expand Down Expand Up @@ -85,79 +85,79 @@ def main_part(self):
norm_low_res_flag = False
norm_lambda_requested = -1

str_array.append(' <from_peak_pixels>' + str(data_peak[0]) + '</from_peak_pixels>\n')
str_array.append(' <to_peak_pixels>' + str(data_peak[1]) + '</to_peak_pixels>\n')
str_array.append(' <peak_discrete_selection>N/A</peak_discrete_selection>\n')
str_array.append(' <background_flag>' + str(data_back_flag) + '</background_flag>\n')
str_array.append(' <two_backgrounds>' + str(data_two_backgrounds) + '</two_backgrounds>\n')
str_array.append(' <back_roi1_from>' + str(data_back[0]) + '</back_roi1_from>\n')
str_array.append(' <back_roi1_to>' + str(data_back[1]) + '</back_roi1_to>\n')
str_array.append(' <back_roi2_from>' + str(data_back2[0]) + '</back_roi2_from>\n')
str_array.append(' <back_roi2_to>' + str(data_back2[1]) + '</back_roi2_to>\n')
str_array.append(' <tof_range_flag>True</tof_range_flag>\n')
str_array.append(' <from_tof_range>' + str(tof[0]) + '</from_tof_range>\n')
str_array.append(' <to_tof_range>' + str(tof[1]) + '</to_tof_range>\n')
str_array.append(' <from_q_range>' + str(q_range[0]) + '</from_q_range>\n')
str_array.append(' <to_q_range>' + str(q_range[1]) + '</to_q_range>\n')
str_array.append(' <from_lambda_range>' + str(lambda_range[0]) + '</from_lambda_range>\n')
str_array.append(' <to_lambda_range>' + str(lambda_range[1]) + '</to_lambda_range>\n')
str_array.append(' <incident_angle>' + str(incident_angle) + '</incident_angle>\n')
str_array.append(" <from_peak_pixels>" + str(data_peak[0]) + "</from_peak_pixels>\n")
str_array.append(" <to_peak_pixels>" + str(data_peak[1]) + "</to_peak_pixels>\n")
str_array.append(" <peak_discrete_selection>N/A</peak_discrete_selection>\n")
str_array.append(" <background_flag>" + str(data_back_flag) + "</background_flag>\n")
str_array.append(" <two_backgrounds>" + str(data_two_backgrounds) + "</two_backgrounds>\n")
str_array.append(" <back_roi1_from>" + str(data_back[0]) + "</back_roi1_from>\n")
str_array.append(" <back_roi1_to>" + str(data_back[1]) + "</back_roi1_to>\n")
str_array.append(" <back_roi2_from>" + str(data_back2[0]) + "</back_roi2_from>\n")
str_array.append(" <back_roi2_to>" + str(data_back2[1]) + "</back_roi2_to>\n")
str_array.append(" <tof_range_flag>True</tof_range_flag>\n")
str_array.append(" <from_tof_range>" + str(tof[0]) + "</from_tof_range>\n")
str_array.append(" <to_tof_range>" + str(tof[1]) + "</to_tof_range>\n")
str_array.append(" <from_q_range>" + str(q_range[0]) + "</from_q_range>\n")
str_array.append(" <to_q_range>" + str(q_range[1]) + "</to_q_range>\n")
str_array.append(" <from_lambda_range>" + str(lambda_range[0]) + "</from_lambda_range>\n")
str_array.append(" <to_lambda_range>" + str(lambda_range[1]) + "</to_lambda_range>\n")
str_array.append(" <incident_angle>" + str(incident_angle) + "</incident_angle>\n")

_data_run_number = str(self.parent.ui.reductionTable.item(row, 1).text())
str_array.append(' <data_sets>' + _data_run_number + '</data_sets>\n')
str_array.append(" <data_sets>" + _data_run_number + "</data_sets>\n")
# if type(data_full_file_name) == type([]):
# data_full_file_name = ','.join(data_full_file_name)
# str_array.append(' <data_full_file_name>' + data_full_file_name + '</data_full_file_name>\n')

str_array.append(' <x_min_pixel>' + str(data_low_res[0]) + '</x_min_pixel>\n')
str_array.append(' <x_max_pixel>' + str(data_low_res[1]) + '</x_max_pixel>\n')
str_array.append(' <x_range_flag>' + str(data_low_res_flag) + '</x_range_flag>\n')
str_array.append(" <x_min_pixel>" + str(data_low_res[0]) + "</x_min_pixel>\n")
str_array.append(" <x_max_pixel>" + str(data_low_res[1]) + "</x_max_pixel>\n")
str_array.append(" <x_range_flag>" + str(data_low_res_flag) + "</x_range_flag>\n")

tthd = str(self.parent.ui.metadatatthdValue.text())
str_array.append(' <tthd_value>' + tthd + '</tthd_value>\n')
str_array.append(" <tthd_value>" + tthd + "</tthd_value>\n")
ths = str(self.parent.ui.metadatathiValue.text())
str_array.append(' <ths_value>' + ths + '</ths_value>\n')
str_array.append(' <data_lambda_requested>' + str(data_lambda_requested) + '</data_lambda_requested>\n')

str_array.append(' <norm_flag>' + str(norm_flag) + '</norm_flag>\n')
str_array.append(' <norm_x_range_flag>' + str(norm_low_res_flag) + '</norm_x_range_flag>\n')
str_array.append(' <norm_x_max>' + str(norm_low_res[1]) + '</norm_x_max>\n')
str_array.append(' <norm_x_min>' + str(norm_low_res[0]) + '</norm_x_min>\n')
str_array.append(' <norm_from_peak_pixels>' + str(norm_peak[0]) + '</norm_from_peak_pixels>\n')
str_array.append(' <norm_to_peak_pixels>' + str(norm_peak[1]) + '</norm_to_peak_pixels>\n')
str_array.append(' <norm_background_flag>' + str(norm_back_flag) + '</norm_background_flag>\n')
str_array.append(' <norm_two_backgrounds>' + str(norm_two_backgrounds) + '</norm_two_backgrounds>\n')
str_array.append(' <norm_from_back_pixels>' + str(norm_back[0]) + '</norm_from_back_pixels>\n')
str_array.append(' <norm_to_back_pixels>' + str(norm_back[1]) + '</norm_to_back_pixels>\n')
str_array.append(' <norm_from_back2_pixels>' + str(norm_back2[0]) + '</norm_from_back2_pixels>\n')
str_array.append(' <norm_to_back2_pixels>' + str(norm_back2[1]) + '</norm_to_back2_pixels>\n')
str_array.append(' <norm_lambda_requested>' + str(norm_lambda_requested) + '</norm_lambda_requested>\n')
str_array.append(" <ths_value>" + ths + "</ths_value>\n")
str_array.append(" <data_lambda_requested>" + str(data_lambda_requested) + "</data_lambda_requested>\n")

str_array.append(" <norm_flag>" + str(norm_flag) + "</norm_flag>\n")
str_array.append(" <norm_x_range_flag>" + str(norm_low_res_flag) + "</norm_x_range_flag>\n")
str_array.append(" <norm_x_max>" + str(norm_low_res[1]) + "</norm_x_max>\n")
str_array.append(" <norm_x_min>" + str(norm_low_res[0]) + "</norm_x_min>\n")
str_array.append(" <norm_from_peak_pixels>" + str(norm_peak[0]) + "</norm_from_peak_pixels>\n")
str_array.append(" <norm_to_peak_pixels>" + str(norm_peak[1]) + "</norm_to_peak_pixels>\n")
str_array.append(" <norm_background_flag>" + str(norm_back_flag) + "</norm_background_flag>\n")
str_array.append(" <norm_two_backgrounds>" + str(norm_two_backgrounds) + "</norm_two_backgrounds>\n")
str_array.append(" <norm_from_back_pixels>" + str(norm_back[0]) + "</norm_from_back_pixels>\n")
str_array.append(" <norm_to_back_pixels>" + str(norm_back[1]) + "</norm_to_back_pixels>\n")
str_array.append(" <norm_from_back2_pixels>" + str(norm_back2[0]) + "</norm_from_back2_pixels>\n")
str_array.append(" <norm_to_back2_pixels>" + str(norm_back2[1]) + "</norm_to_back2_pixels>\n")
str_array.append(" <norm_lambda_requested>" + str(norm_lambda_requested) + "</norm_lambda_requested>\n")

_norm_run_number_cell = self.parent.ui.reductionTable.item(row, 2).text()
if str(_norm_run_number_cell) != '':
if str(_norm_run_number_cell) != "":
_norm_run_number = str(_norm_run_number_cell)
else:
_norm_run_number = '0'
str_array.append(' <norm_dataset>' + _norm_run_number + '</norm_dataset>\n')
_norm_run_number = "0"
str_array.append(" <norm_dataset>" + _norm_run_number + "</norm_dataset>\n")
# if type(norm_full_file_name) == type([]):
# norm_full_file_name = ','.join(norm_full_file_name)
# str_array.append(' <norm_full_file_name>' + norm_full_file_name + '</norm_full_file_name>\n')

str_array.append(' <auto_q_binning>False</auto_q_binning>\n')
str_array.append(" <auto_q_binning>False</auto_q_binning>\n")

# The angle offset is currently not exposed in the UI, so we set it to 0.
str_array.append(' <angle_offset> 0 </angle_offset>\n')
str_array.append(' <angle_offset_error> 0 </angle_offset_error>\n')
str_array.append(" <angle_offset> 0 </angle_offset>\n")
str_array.append(" <angle_offset_error> 0 </angle_offset_error>\n")

q_step = str(self.parent.ui.qStep.text())
str_array.append(' <q_step>' + q_step + '</q_step>\n')
q_min = str(self.parent.gui_metadata['q_min'])
str_array.append(' <q_min>' + q_min + '</q_min>\n')
str_array.append(" <q_step>" + q_step + "</q_step>\n")
q_min = str(self.parent.gui_metadata["q_min"])
str_array.append(" <q_min>" + q_min + "</q_min>\n")

scalingFactorFlag = self.parent.ui.scalingFactorFlag.isChecked()
str_array.append(' <scaling_factor_flag>' + str(scalingFactorFlag) + '</scaling_factor_flag>\n')
str_array.append(" <scaling_factor_flag>" + str(scalingFactorFlag) + "</scaling_factor_flag>\n")
scalingFactorFile = o_general_settings.scaling_factor_file
str_array.append(' <scaling_factor_file>' + scalingFactorFile + '</scaling_factor_file>\n')
str_array.append(" <scaling_factor_file>" + scalingFactorFile + "</scaling_factor_file>\n")

# incident medium
allItems = [
Expand All @@ -166,23 +166,27 @@ def main_part(self):
]
finalList = allItems[1:]
strFinalList = ",".join(finalList)
str_array.append(' <incident_medium_list>' + strFinalList + '</incident_medium_list>\n')
str_array.append(" <incident_medium_list>" + strFinalList + "</incident_medium_list>\n")

imIndex = self.parent.ui.selectIncidentMediumList.currentIndex()
str_array.append(
' <incident_medium_index_selected>' + str(imIndex - 1) + '</incident_medium_index_selected>\n'
" <incident_medium_index_selected>" + str(imIndex - 1) + "</incident_medium_index_selected>\n"
)

str_array.append(' <slits_width_flag>True</slits_width_flag>\n')
str_array.append(" <slits_width_flag>True</slits_width_flag>\n")

# dead time settings
str_array.append(o_general_settings.dead_time.to_xml(indent=" ") + "\n")

str_array.append(o_general_settings.dead_time.to_xml(indent=" ") + "\n") # dead time settings
# instrument settings
str_array.append(o_general_settings.instrument_settings.to_xml(indent=" ") + "\n")

str_array.append(' <const_q>' + str(const_q) + '</const_q>\n')
str_array.append(" <const_q>" + str(const_q) + "</const_q>\n")

str_array.append(' </RefLData>\n')
str_array.append(" </RefLData>\n")

str_array.append(' </DataSeries>\n')
str_array.append('</Reduction>\n')
str_array.append(" </DataSeries>\n")
str_array.append("</Reduction>\n")
self.str_array = str_array

def save(self, filename: str):
Expand All @@ -198,7 +202,7 @@ def save(self, filename: str):

if os.path.isfile(filename):
os.remove(filename)
with open(filename, 'w') as outfile:
with open(filename, "w") as outfile:
outfile.writelines(self.str_array)

logging.info(f"Config is saved to {filename}.")
13 changes: 8 additions & 5 deletions RefRed/configuration/load_reduction_table_from_lconfigdataset.py
Original file line number Diff line number Diff line change
@@ -1,12 +1,15 @@
from qtpy import QtGui, QtWidgets

import RefRed.colors
from RefRed.calculations.add_list_nexus import AddListNexus
from RefRed.calculations.lr_data import LRData
from RefRed.calculations.locate_list_run import LocateListRun
from RefRed.calculations.update_reduction_table_metadata import UpdateReductionTableMetadata
from RefRed.calculations.lr_data import LRData
from RefRed.calculations.update_reduction_table_metadata import (
UpdateReductionTableMetadata,
)
from RefRed.gui_handling.gui_utility import GuiUtility
from RefRed.gui_handling.progressbar_handler import ProgressBarHandler
from RefRed.plot.display_plots import DisplayPlots
from RefRed.gui_handling.gui_utility import GuiUtility
import RefRed.colors


class LoadReductionTableFromLConfigDataSet(object):
Expand All @@ -29,7 +32,7 @@ def __init__(self, parent=None):
list_data_run = lconfig.data_sets
o_list_data_nexus = LocateListRun(list_run=list_data_run)
list_data_nexus = o_list_data_nexus.list_nexus_found
# list_data_nexus= o_list_data_nexus.list_run_found
# list_data_nexus= o_list_data_nexus.list_run_found
_add_data_nexus = AddListNexus(
list_nexus=list_data_nexus,
list_run=list_data_run,
Expand Down
9 changes: 8 additions & 1 deletion RefRed/configuration/loading_configuration.py
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,8 @@ def run(self):
try:
self.loading()
message = "Done!"
except:
except Exception as e:
logging.error(f"Error loading file: {e}")
message = "Error loading file: aborted"
else:
message = "Loading aborted"
Expand Down Expand Up @@ -187,6 +188,12 @@ def populate_main_gui_general_settings(self):
self.parent.deadtime_settings.from_xml(node_0)
self.parent.ui.deadtime_entry.applyCheckBox.setChecked(self.parent.deadtime_settings.apply_deadtime)

# initialize the instrument settings
self.parent.instrument_settings.from_xml(node_0)
self.parent.ui.instrument_settings_entry.applyCheckBox.setChecked(
self.parent.instrument_settings.apply_instrument_settings
)

def getMetadataObject(self, node) -> LConfigDataset:
r"""Populate an instance of type LConfigDataset using the information contained in one of the
'RefLData XML blocks within a configuration file."""
Expand Down
1 change: 1 addition & 0 deletions RefRed/configuration/saving_configuration.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ def __init__(self, parent=None, filename=''):
StatusMessageHandler(parent=self.parent, message='Saving config ...', is_threaded=False)

def run(self):

if self.filename == '':
_path = self.parent.path_config
_filter = "XML (*.xml);; All Files (*.*)"
Expand Down
14 changes: 8 additions & 6 deletions RefRed/interfaces/deadtime_entry.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,8 @@
# third party imports
from qtpy.QtWidgets import QGroupBox, QHBoxLayout, QCheckBox, QPushButton


class DeadTimeEntryPoint(QGroupBox):
def __init__(self, title='Dead Time Correction'):
def __init__(self, title="Dead Time Correction"):
super().__init__(title)
self.initUI()

Expand All @@ -22,16 +21,19 @@ def initUI(self):
"}"
)

self.applyCheckBox = QCheckBox('Apply', self)
self.applyCheckBox = QCheckBox("Apply", self)
self.applyCheckBox.stateChanged.connect(self.toggleSettingsButton)
self.settingsButton = QPushButton('Settings', self)
self.settingsButton.setEnabled(self.applyCheckBox.isChecked()) # enabled if we use the correction
self.settingsButton = QPushButton("Settings", self)
self.settingsButton.setEnabled(
# enabled if we use the correction
self.applyCheckBox.isChecked()
)

# Create a horizontal layout for the checkbox and settings button
hbox = QHBoxLayout()
hbox.addWidget(self.applyCheckBox)
hbox.addWidget(self.settingsButton)
hbox.addStretch(1) # This adds a stretchable space after the button (optional)
# hbox.addStretch(1) # This adds a stretchable space after the button (optional)

# Set the layout for the group box
self.setLayout(hbox)
Expand Down
Loading
Loading