Skip to content

Commit 9625e5e

Browse files
authored
Merge pull request #1825 from HEXRD/median-filter
Use default value if state is missing attribute
2 parents 84edcd9 + f68c631 commit 9625e5e

File tree

2 files changed

+26
-6
lines changed

2 files changed

+26
-6
lines changed

hexrdgui/hexrd_config.py

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -333,7 +333,7 @@ def __init__(self):
333333
self._physics_package = None
334334
self._detector_coatings = {}
335335
self._instrument_rigid_body_params = {}
336-
self._median_filer_correction = {}
336+
self._median_filter_correction = {}
337337

338338
# Make sure that the matplotlib font size matches the application
339339
self.font_size = self.font_size
@@ -477,6 +477,8 @@ def _load_state_from_settings(self, settings):
477477
'custom_polar_tth_distortion_object_serialized',
478478
'physics_package_dictified',
479479
'detector_coatings_dictified',
480+
'apply_median_filter_correction',
481+
'median_filter_kernel_size'
480482
]
481483

482484
state = {}
@@ -3010,22 +3012,22 @@ def update_detector_phosphor(self, det_name, **kwargs):
30103012

30113013
@property
30123014
def apply_median_filter_correction(self):
3013-
return self._median_filer_correction.get('apply', False)
3015+
return self._median_filter_correction.get('apply', False)
30143016

30153017
@apply_median_filter_correction.setter
30163018
def apply_median_filter_correction(self, v):
30173019
if v != self.apply_median_filter_correction:
3018-
self._median_filer_correction['apply'] = v
3020+
self._median_filter_correction['apply'] = v
30193021
self.deep_rerender_needed.emit()
30203022

30213023
@property
30223024
def median_filter_kernel_size(self):
3023-
return self._median_filer_correction.get('kernel', 7)
3025+
return self._median_filter_correction.get('kernel', 7)
30243026

30253027
@median_filter_kernel_size.setter
30263028
def median_filter_kernel_size(self, v):
30273029
if v != self.median_filter_kernel_size:
3028-
self._median_filer_correction['kernel'] = int(v)
3030+
self._median_filter_correction['kernel'] = int(v)
30293031
self.deep_rerender_needed.emit()
30303032

30313033

hexrdgui/state.py

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import copy
2+
13
from PySide6.QtCore import QTimer
24

35
import h5py
@@ -180,13 +182,29 @@ def load(h5_file):
180182
# Now, load the state
181183
state = _load_config(h5_file)
182184

185+
# Don't set these defaults if they are missing.
186+
# Not sure why they are missing, but they cause issues if we
187+
# apply them.
188+
defaults_to_skip = [
189+
'config_instrument',
190+
'config_calibration',
191+
'config_indexing',
192+
'config_images',
193+
]
194+
183195
# Rename the state variables to the attribute names...
184196
renamed_state = {}
185-
for name, _ in HexrdConfig()._attributes_to_persist():
197+
for name, default in HexrdConfig()._attributes_to_persist():
186198
old_name = HexrdConfig()._attribute_to_settings_key(name)
187199
if old_name in state:
188200
renamed_state[name] = state.pop(old_name)
189201

202+
# Also set defaults if missing
203+
if name not in renamed_state and name not in defaults_to_skip:
204+
# If the attribute is not in the state, set it to the default
205+
# A deep copy is needed for mutable defaults
206+
renamed_state[name] = copy.deepcopy(default)
207+
190208
HexrdConfig().load_from_state(renamed_state)
191209

192210
# Load the instrument config...

0 commit comments

Comments
 (0)