|
14 | 14 | import hexrd.imageseries.save |
15 | 15 | from hexrd.config.loader import NumPyIncludeLoader |
16 | 16 | from hexrd.instrument import HEDMInstrument |
17 | | -from hexrd.instrument.constants import PHYSICS_PACKAGE_DEFAULTS |
| 17 | +from hexrd.instrument.constants import PHYSICS_PACKAGE_DEFAULTS, PINHOLE_DEFAULTS |
18 | 18 | from hexrd.instrument.physics_package import HEDPhysicsPackage |
19 | 19 | from hexrd.material import load_materials_hdf5, save_materials_hdf5, Material |
20 | 20 | from hexrd.rotations import RotMatEuler |
|
27 | 27 | from hexrdgui import utils |
28 | 28 | from hexrdgui.masking.constants import MaskType |
29 | 29 | from hexrdgui.singletons import QSingleton |
30 | | -from hexrdgui.utils.physics_package import ( |
31 | | - ask_to_create_physics_package_if_missing |
32 | | -) |
33 | 30 |
|
34 | 31 | import hexrdgui.resources.calibration |
35 | 32 | import hexrdgui.resources.indexing |
@@ -329,7 +326,6 @@ def __init__(self): |
329 | 326 | self._physics_package = None |
330 | 327 | self._detector_coatings = {} |
331 | 328 | self._instrument_rigid_body_params = {} |
332 | | - self._use_physics_package = False |
333 | 329 |
|
334 | 330 | # Make sure that the matplotlib font size matches the application |
335 | 331 | self.font_size = self.font_size |
@@ -435,7 +431,6 @@ def _attributes_to_persist(self): |
435 | 431 | ('_instrument_rigid_body_params', {}), |
436 | 432 | ('recent_state_files', []), |
437 | 433 | ('apply_absorption_correction', False), |
438 | | - ('use_physics_package', False), |
439 | 434 | ('physics_package_dictified', None), |
440 | 435 | ('custom_polar_tth_distortion_object_serialized', None), |
441 | 436 | ('detector_coatings_dictified', {}), |
@@ -556,8 +551,6 @@ def load_from_state(self, state): |
556 | 551 | self.show_all_colormaps = self.show_all_colormaps == 'true' |
557 | 552 | if not isinstance(self.apply_absorption_correction, bool): |
558 | 553 | self.apply_absorption_correction = self.apply_absorption_correction == 'true' |
559 | | - if not isinstance(self.use_physics_package, bool): |
560 | | - self.use_physics_package = self.use_physics_package == 'true' |
561 | 554 |
|
562 | 555 | # This is None sometimes. Make sure it is an empty list instead. |
563 | 556 | if self.recent_state_files is None: |
@@ -708,7 +701,7 @@ def overlays_dictified(self, v): |
708 | 701 | continue |
709 | 702 |
|
710 | 703 | if overlay_dict.get('tth_distortion_type') is not None: |
711 | | - if not self.use_physics_package: |
| 704 | + if not self.has_physics_package: |
712 | 705 | # We need to create a default physics package |
713 | 706 | # This is for backward compatibility |
714 | 707 | self.create_default_physics_package() |
@@ -2440,7 +2433,7 @@ def custom_polar_tth_distortion_object_serialized(self): |
2440 | 2433 | def custom_polar_tth_distortion_object_serialized(self, v): |
2441 | 2434 | obj = None |
2442 | 2435 | if v is not None: |
2443 | | - if not self.use_physics_package: |
| 2436 | + if not self.has_physics_package: |
2444 | 2437 | # This requires a physics package to deserialize |
2445 | 2438 | self.create_default_physics_package() |
2446 | 2439 |
|
@@ -3049,54 +3042,55 @@ def apply_absorption_correction(self, v): |
3049 | 3042 | self._apply_absorption_correction = v |
3050 | 3043 | self.deep_rerender_needed.emit() |
3051 | 3044 |
|
3052 | | - @property |
3053 | | - def use_physics_package(self): |
3054 | | - return self._use_physics_package |
3055 | | - |
3056 | | - @use_physics_package.setter |
3057 | | - def use_physics_package(self, v): |
3058 | | - if v != self.use_physics_package: |
3059 | | - self._use_physics_package = v |
3060 | | - self.physics_package_modified.emit() |
3061 | | - if self.use_physics_package: |
3062 | | - self.create_default_physics_package() |
3063 | | - else: |
3064 | | - self.physics_package = None |
3065 | | - |
3066 | 3045 | @property |
3067 | 3046 | def physics_package_dictified(self): |
3068 | | - if not self.use_physics_package: |
| 3047 | + if not self.has_physics_package: |
3069 | 3048 | return None |
| 3049 | + |
3070 | 3050 | return self.physics_package.serialize() |
3071 | 3051 |
|
3072 | 3052 | @physics_package_dictified.setter |
3073 | | - def physics_package_dictified(self, v): |
3074 | | - self.update_physics_package(**v) |
| 3053 | + def physics_package_dictified(self, kwargs): |
| 3054 | + if not kwargs: |
| 3055 | + self.physics_package = None |
| 3056 | + return |
| 3057 | + |
| 3058 | + # Set defaults if missing |
| 3059 | + kwargs = { |
| 3060 | + **PHYSICS_PACKAGE_DEFAULTS.HED, |
| 3061 | + **kwargs, |
| 3062 | + } |
| 3063 | + self.physics_package = HEDPhysicsPackage(**kwargs) |
| 3064 | + |
| 3065 | + def update_physics_package(self, **kwargs): |
| 3066 | + self.physics_package_dictified = { |
| 3067 | + **self.physics_package_dictified, |
| 3068 | + **kwargs, |
| 3069 | + } |
3075 | 3070 |
|
3076 | 3071 | @property |
3077 | 3072 | def physics_package(self): |
3078 | 3073 | return self._physics_package |
3079 | 3074 |
|
3080 | 3075 | @physics_package.setter |
3081 | 3076 | def physics_package(self, value): |
3082 | | - self._physics_package = value |
3083 | | - self.use_physics_package = bool(value is not None) |
| 3077 | + if value != self._physics_package: |
| 3078 | + self._physics_package = value |
| 3079 | + self.physics_package_modified.emit() |
3084 | 3080 |
|
3085 | | - def update_physics_package(self, **kwargs): |
3086 | | - if self.physics_package is None: |
3087 | | - all_kwargs = PHYSICS_PACKAGE_DEFAULTS.HED |
3088 | | - all_kwargs.update(**kwargs) |
3089 | | - self.physics_package = HEDPhysicsPackage(**all_kwargs) |
3090 | | - self.physics_package.deserialize(**kwargs) |
3091 | | - self.physics_package_modified.emit() |
| 3081 | + @property |
| 3082 | + def has_physics_package(self) -> bool: |
| 3083 | + return self.physics_package is not None |
3092 | 3084 |
|
3093 | 3085 | def create_default_physics_package(self): |
3094 | | - self.physics_package = HEDPhysicsPackage( |
3095 | | - **PHYSICS_PACKAGE_DEFAULTS.HED) |
3096 | | - self.physics_package_modified.emit() |
| 3086 | + # Our default will be an HED Physics package with a pinhole |
| 3087 | + self.physics_package_dictified = { |
| 3088 | + **PHYSICS_PACKAGE_DEFAULTS.HED, |
| 3089 | + **PINHOLE_DEFAULTS.TARDIS, |
| 3090 | + } |
3097 | 3091 |
|
3098 | 3092 | def absorption_length(self): |
3099 | | - if not ask_to_create_physics_package_if_missing(): |
| 3093 | + if not self.has_physics_package: |
3100 | 3094 | raise ValueError( |
3101 | 3095 | f'Cannot calculate absorption length without physics package') |
3102 | 3096 | return self.physics_package.pinhole_absorption_length( |
|
0 commit comments