Skip to content

Commit

Permalink
Merge pull request #77 from neutrons/separate_global_per_run
Browse files Browse the repository at this point in the history
Clearly distinguish global and per-run options
  • Loading branch information
rosswhitfield authored Apr 1, 2024
2 parents e7d9302 + f01c8ab commit 2b8a982
Show file tree
Hide file tree
Showing 5 changed files with 474 additions and 294 deletions.
56 changes: 29 additions & 27 deletions reflectivity_ui/interfaces/configuration.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,24 @@ class Configuration(object):
KZI_VS_KZF = 1
DELTA_KZ_VS_QZ = 3

# Global variables

wl_bandwidth = 3.2
use_constant_q = False
sample_size = 10
# Final Q rebin
do_final_rebin = True
final_rebin_step = -0.01
# Normalize to unity when stitching
normalize_to_unity = True
total_reflectivity_q_cutoff = 0.01
# Use all cross-sections when stitching
global_stitching = False
# Use a polynomial curve fit when stitching
polynomial_stitching = False
polynomial_stitching_degree = 3
polynomial_stitching_points = 3

def __init__(self, settings=None):
self.instrument = Instrument()
# Number of TOF bins
Expand All @@ -30,7 +48,6 @@ def __init__(self, settings=None):
# 1 = Constant Q bin width
# 2 = Constant 1/wavelength bin width
self.tof_bin_type = 0
self.wl_bandwidth = 3.2

# Threshold under which we skip a cross-section, as fraction of the max count
self.count_threshold = 0.01
Expand All @@ -44,8 +61,6 @@ def __init__(self, settings=None):
self.set_direct_angle_offset = False
self.direct_angle_offset_overwrite = 0
self.use_dangle = False
self.use_constant_q = False
self.sample_size = 10

# Update the specular peak range after finding the peak
# within the ROI
Expand Down Expand Up @@ -75,24 +90,11 @@ def __init__(self, settings=None):
self.scaling_factor = 1.0
# Error in the scaling factor
self.scaling_error = 0.0
# Normalize to unity when stitching
self.normalize_to_unity = True
self.total_reflectivity_q_cutoff = 0.01
# Use all cross-sections when stitching
self.global_stitching = False
# Use a polynomial curve fit when stitching
self.polynomial_stitching = False
self.polynomial_stitching_degree = 3
self.polynomial_stitching_points = 3

# Cut first and last N points
self.cut_first_n_points = 1
self.cut_last_n_points = 1

# Final Q rebin
self.do_final_rebin = True
self.final_rebin_step = -0.01

# UI elements
self.normalize_x_tof = False
self.x_wl_map = False
Expand Down Expand Up @@ -272,7 +274,7 @@ def _verify_true(parameter, default):
self.use_roi_bck = _verify_true("use_roi_bck", self.use_roi_bck)
self.use_tight_bck = _verify_true("use_tight_bck", self.use_tight_bck)
self.bck_offset = int(settings.value("bck_offset", self.bck_offset))
self.wl_bandwidth = float(settings.value("wl_bandwidth", self.wl_bandwidth))
Configuration.wl_bandwidth = float(settings.value("wl_bandwidth", self.wl_bandwidth))

self.force_peak_roi = _verify_true("force_peak_roi", self.force_peak_roi)
self.force_low_res_roi = _verify_true("force_low_res_roi", self.force_low_res_roi)
Expand All @@ -292,16 +294,16 @@ def _verify_true(parameter, default):
self.cut_last_n_points = int(settings.value("cut_last_n_points", self.cut_last_n_points))

# Normalize to unity when stitching
self.normalize_to_unity = _verify_true("normalize_to_unity", self.normalize_to_unity)
self.total_reflectivity_q_cutoff = float(
Configuration.normalize_to_unity = _verify_true("normalize_to_unity", self.normalize_to_unity)
Configuration.total_reflectivity_q_cutoff = float(
settings.value("total_reflectivity_q_cutoff", self.total_reflectivity_q_cutoff)
)
self.global_stitching = _verify_true("global_stitching", self.global_stitching)
self.polynomial_stitching = _verify_true("polynomial_stitching", self.polynomial_stitching)
self.polynomial_stitching_degree = int(
Configuration.global_stitching = _verify_true("global_stitching", self.global_stitching)
Configuration.polynomial_stitching = _verify_true("polynomial_stitching", self.polynomial_stitching)
Configuration.polynomial_stitching_degree = int(
settings.value("polynomial_stitching_degree", self.polynomial_stitching_degree)
)
self.polynomial_stitching_points = int(
Configuration.polynomial_stitching_points = int(
settings.value("polynomial_stitching_points", self.polynomial_stitching_points)
)

Expand All @@ -311,17 +313,17 @@ def _verify_true(parameter, default):
self.log_1d = _verify_true("log_1d", self.log_1d)
self.log_2d = _verify_true("log_2d", self.log_2d)

self.use_constant_q = _verify_true("use_constant_q", self.use_constant_q)
Configuration.use_constant_q = _verify_true("use_constant_q", self.use_constant_q)
self.use_dangle = _verify_true("use_dangle", self.use_dangle)
self.set_direct_pixel = _verify_true("set_direct_pixel", self.set_direct_pixel)
self.direct_pixel_overwrite = float(settings.value("direct_pixel_overwrite", self.direct_pixel_overwrite))
self.set_direct_angle_offset = _verify_true("set_direct_angle_offset", self.set_direct_angle_offset)
self.direct_angle_offset_overwrite = float(
settings.value("direct_angle_offset_overwrite", self.direct_angle_offset_overwrite)
)
self.sample_size = float(settings.value("sample_size", self.sample_size))
self.do_final_rebin = _verify_true("do_final_rebin", self.do_final_rebin)
self.final_rebin_step = float(settings.value("final_rebin_step", self.final_rebin_step))
Configuration.sample_size = float(settings.value("sample_size", self.sample_size))
Configuration.do_final_rebin = _verify_true("do_final_rebin", self.do_final_rebin)
Configuration.final_rebin_step = float(settings.value("final_rebin_step", self.final_rebin_step))

# Off-specular options
self.off_spec_x_axis = int(settings.value("off_spec_x_axis", self.off_spec_x_axis))
Expand Down
2 changes: 1 addition & 1 deletion reflectivity_ui/interfaces/data_handling/quicknxs_io.py
Original file line number Diff line number Diff line change
Expand Up @@ -335,7 +335,7 @@ def read_reduced_file(file_path, configuration=None):
conf.low_res_width = float(toks[7])
conf.bck_position = float(toks[8])
conf.bck_width = float(toks[9])
conf.use_constant_q = toks[10].strip().lower() == "true"
Configuration.use_constant_q = toks[10].strip().lower() == "true"
conf.direct_pixel_overwrite = float(toks[11])
if int(toks[14]) > 0 and len(direct_beam_runs) > int(toks[14]) - 1:
conf.normalization = direct_beam_runs[int(toks[14]) - 1][0]
Expand Down
24 changes: 12 additions & 12 deletions reflectivity_ui/interfaces/event_handlers/main_handler.py
Original file line number Diff line number Diff line change
Expand Up @@ -1203,23 +1203,23 @@ def get_configuration(self):
configuration.scaling_factor = scale
configuration.cut_first_n_points = self.ui.rangeStart.value()
configuration.cut_last_n_points = self.ui.rangeEnd.value()
configuration.normalize_to_unity = self.ui.normalize_to_unity_checkbox.isChecked()
configuration.total_reflectivity_q_cutoff = self.ui.normalization_q_cutoff_spinbox.value()
configuration.global_stitching = self.ui.global_fit_checkbox.isChecked()
configuration.polynomial_stitching = self.ui.polynomial_stitching_checkbox.isChecked()
configuration.polynomial_stitching_degree = self.ui.polynomial_stitching_degree_spinbox.value()
configuration.polynomial_stitching_points = self.ui.polynomial_stitching_points_spinbox.value()
configuration.wl_bandwidth = self.ui.bandwidth_spinbox.value()

configuration.use_constant_q = self.ui.fanReflectivity.isChecked()
Configuration.normalize_to_unity = self.ui.normalize_to_unity_checkbox.isChecked()
Configuration.total_reflectivity_q_cutoff = self.ui.normalization_q_cutoff_spinbox.value()
Configuration.global_stitching = self.ui.global_fit_checkbox.isChecked()
Configuration.polynomial_stitching = self.ui.polynomial_stitching_checkbox.isChecked()
Configuration.polynomial_stitching_degree = self.ui.polynomial_stitching_degree_spinbox.value()
Configuration.polynomial_stitching_points = self.ui.polynomial_stitching_points_spinbox.value()
Configuration.wl_bandwidth = self.ui.bandwidth_spinbox.value()

Configuration.use_constant_q = self.ui.fanReflectivity.isChecked()
configuration.use_dangle = self.ui.trustDANGLE.isChecked()
configuration.set_direct_pixel = self.ui.set_dirpix_checkbox.isChecked()
configuration.set_direct_angle_offset = self.ui.set_dangle0_checkbox.isChecked()
configuration.direct_pixel_overwrite = self.ui.directPixelOverwrite.value()
configuration.direct_angle_offset_overwrite = self.ui.dangle0Overwrite.value()
configuration.sample_size = self.ui.sample_size_spinbox.value()
configuration.do_final_rebin = self.ui.final_rebin_checkbox.isChecked()
configuration.final_rebin_step = self.ui.q_rebin_spinbox.value()
Configuration.sample_size = self.ui.sample_size_spinbox.value()
Configuration.do_final_rebin = self.ui.final_rebin_checkbox.isChecked()
Configuration.final_rebin_step = self.ui.q_rebin_spinbox.value()

# UI elements
configuration.normalize_x_tof = self.ui.normalizeXTof.isChecked()
Expand Down
Loading

0 comments on commit 2b8a982

Please sign in to comment.