tomwer 1.4.0rc0__py3-none-any.whl → 1.4.0rc2__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. orangecontrib/tomwer/tutorials/test_cor.ows +3 -3
  2. orangecontrib/tomwer/widgets/reconstruction/AxisOW.py +6 -14
  3. orangecontrib/tomwer/widgets/reconstruction/NabuVolumeOW.py +4 -2
  4. tomwer/app/axis.py +0 -3
  5. tomwer/app/multipag.py +11 -3
  6. tomwer/core/process/reconstruction/axis/axis.py +27 -736
  7. tomwer/core/process/reconstruction/axis/mode.py +86 -24
  8. tomwer/core/process/reconstruction/axis/params.py +127 -138
  9. tomwer/core/process/reconstruction/axis/side.py +8 -0
  10. tomwer/core/process/reconstruction/nabu/nabuscores.py +17 -20
  11. tomwer/core/process/reconstruction/nabu/nabuslices.py +5 -1
  12. tomwer/core/process/reconstruction/saaxis/saaxis.py +4 -4
  13. tomwer/core/process/reconstruction/sadeltabeta/sadeltabeta.py +4 -4
  14. tomwer/core/process/reconstruction/tests/test_axis.py +1 -1
  15. tomwer/core/process/reconstruction/tests/test_utils.py +4 -4
  16. tomwer/core/process/reconstruction/utils/cor.py +8 -4
  17. tomwer/core/process/tests/test_nabu.py +1 -3
  18. tomwer/core/scan/nxtomoscan.py +2 -0
  19. tomwer/core/scan/scanbase.py +4 -4
  20. tomwer/core/scan/tests/test_process_registration.py +0 -18
  21. tomwer/gui/fonts.py +5 -0
  22. tomwer/gui/reconstruction/axis/AxisMainWindow.py +20 -9
  23. tomwer/gui/reconstruction/axis/AxisOptionsWidget.py +239 -79
  24. tomwer/gui/reconstruction/axis/AxisSettingsWidget.py +38 -17
  25. tomwer/gui/reconstruction/axis/AxisWidget.py +16 -8
  26. tomwer/gui/reconstruction/axis/CalculationWidget.py +40 -200
  27. tomwer/gui/reconstruction/axis/ControlWidget.py +10 -2
  28. tomwer/gui/reconstruction/axis/EstimatedCORWidget.py +394 -0
  29. tomwer/gui/reconstruction/axis/EstimatedCorComboBox.py +118 -0
  30. tomwer/gui/reconstruction/axis/InputWidget.py +11 -155
  31. tomwer/gui/reconstruction/saaxis/corrangeselector.py +19 -10
  32. tomwer/gui/reconstruction/scores/scoreplot.py +5 -2
  33. tomwer/gui/reconstruction/tests/test_nabu.py +8 -0
  34. tomwer/gui/stitching/z_stitching/fineestimation.py +1 -1
  35. tomwer/gui/tests/test_axis_gui.py +31 -15
  36. tomwer/synctools/stacks/reconstruction/axis.py +5 -23
  37. tomwer/synctools/stacks/reconstruction/dkrefcopy.py +1 -1
  38. tomwer/synctools/stacks/reconstruction/nabu.py +2 -2
  39. tomwer/synctools/stacks/reconstruction/normalization.py +1 -1
  40. tomwer/synctools/stacks/reconstruction/saaxis.py +1 -1
  41. tomwer/synctools/stacks/reconstruction/sadeltabeta.py +1 -1
  42. tomwer/tests/orangecontrib/tomwer/widgets/reconstruction/tests/test_axis.py +0 -16
  43. tomwer/tests/test_ewoks/test_single_node_execution.py +1 -1
  44. tomwer/tests/test_ewoks/test_workflows.py +1 -1
  45. tomwer/version.py +1 -1
  46. {tomwer-1.4.0rc0.dist-info → tomwer-1.4.0rc2.dist-info}/METADATA +2 -2
  47. {tomwer-1.4.0rc0.dist-info → tomwer-1.4.0rc2.dist-info}/RECORD +51 -48
  48. tomwer/core/process/tests/test_axis.py +0 -231
  49. {tomwer-1.4.0rc0.dist-info → tomwer-1.4.0rc2.dist-info}/LICENSE +0 -0
  50. {tomwer-1.4.0rc0.dist-info → tomwer-1.4.0rc2.dist-info}/WHEEL +0 -0
  51. {tomwer-1.4.0rc0.dist-info → tomwer-1.4.0rc2.dist-info}/entry_points.txt +0 -0
  52. {tomwer-1.4.0rc0.dist-info → tomwer-1.4.0rc2.dist-info}/top_level.txt +0 -0
@@ -1,7 +1,7 @@
1
1
  <?xml version='1.0' encoding='utf-8'?>
2
2
  <scheme version="2.0" title="" description="">
3
3
  <nodes>
4
- <node id="0" name="center of rotation finder" qualified_name="orangecontrib.tomwer.widgets.reconstruction.AxisOW.AxisOW" project_name="tomwer" version="" title="center of rotation finder" position="(395.0, 173.0)" />
4
+ <node id="0" name="center of rotation finder" qualified_name="orangecontrib.tomwer.widgets.reconstruction.AxisOW.AxisOW" project_name="tomwer" version="" title="center of rotation finder" position="(375.0, 146.0)" />
5
5
  <node id="1" name="scan selector" qualified_name="orangecontrib.tomwer.widgets.control.DataSelectorOW.DataSelectorOW" project_name="tomwer" version="" title="scan selector" position="(150.0, 115.0)" />
6
6
  </nodes>
7
7
  <links>
@@ -10,8 +10,8 @@
10
10
  <annotations />
11
11
  <thumbnail />
12
12
  <node_properties>
13
- <properties node_id="0" format="literal">{'_ewoks_default_inputs': {'data': None, 'axis_params': {'MODE': 'sino-coarse-to-fine', 'POSITION_VALUE': None, 'CALC_INPUT_TYPE': 'transmission_nopag', 'ANGLE_MODE': '0-180', 'SINOGRAM_LINE': 'middle', 'SINOGRAM_SUBSAMPLING': 10, 'AXIS_URL_1': '', 'AXIS_URL_2': '', 'LOOK_AT_STDMAX': False, 'NEAR_WX': 5, 'FINE_STEP_X': 0.1, 'SCALE_IMG2_TO_IMG1': False, 'NEAR_POSITION': 0.0, 'PADDING_MODE': 'edge', 'FLIP_LR': True, 'COMPOSITE_OPTS': {'theta': 5, 'oversampling': 4, 'n_subsampling_y': 40, 'take_log': True, 'near_width': 40}, 'COR_OPTIONS': '', 'MOTOR_OFFSET': 9230.77, 'X_ROTATION_AXIS_PIXEL_POSITION': None}, 'gui': {'mode_is_lock': False, 'value_is_lock': False, 'auto_update_estimated_cor': True}}, 'controlAreaVisible': True, 'savedWidgetGeometry': b'\x01\xd9\xd0\xcb\x00\x03\x00\x00\x00\x00\x01s\x00\x00\x00\xe0\x00\x00\x06\x84\x00\x00\x03\xa1\x00\x00\x01s\x00\x00\x01\x05\x00\x00\x06\x84\x00\x00\x03\xa1\x00\x00\x00\x00\x00\x00\x00\x00\x07\x80\x00\x00\x01s\x00\x00\x01\x05\x00\x00\x06\x84\x00\x00\x03\xa1', '__version__': 1}</properties>
14
- <properties node_id="1" format="literal">{'_scanIDs': ['hdf5:scan:/home/payno/Datasets/tomography/z_series/STYLO/PROCESSED_DATA/SYS01S101_SYS01S101_3scans_0000.nx?path=/entry0000', 'hdf5:scan:/home/payno/Datasets/tomography/z_series/STYLO/PROCESSED_DATA/SYS01S101_SYS01S101_3scans_0001.nx?path=/entry0001'], 'controlAreaVisible': True, 'savedWidgetGeometry': b'\x01\xd9\xd0\xcb\x00\x03\x00\x00\x00\x00\n\xa0\x00\x00\x01Z\x00\x00\x0b\xcb\x00\x00\x03\x06\x00\x00\n\xa0\x00\x00\x01Z\x00\x00\x0b\xcb\x00\x00\x03\x06\x00\x00\x00\x01\x00\x00\x00\x00\x07\x80\x00\x00\n\xa0\x00\x00\x01Z\x00\x00\x0b\xcb\x00\x00\x03\x06', '__version__': 1}</properties>
13
+ <properties node_id="0" format="literal">{'_ewoks_default_inputs': {'data': None, 'axis_params': {'MODE': 'sino-coarse-to-fine', 'POSITION_VALUE': None, 'CALC_INPUT_TYPE': 'transmission_nopag', 'ANGLE_MODE': '0-180', 'SINOGRAM_LINE': 'middle', 'SINOGRAM_SUBSAMPLING': 10, 'AXIS_URL_1': '', 'AXIS_URL_2': '', 'LOOK_AT_STDMAX': False, 'NEAR_WX': 5, 'FINE_STEP_X': 0.1, 'SCALE_IMG2_TO_IMG1': False, 'NEAR_POSITION': 'right', 'PADDING_MODE': 'edge', 'FLIP_LR': True, 'COMPOSITE_OPTS': {'theta': 5, 'oversampling': 4, 'n_subsampling_y': 40, 'take_log': True, 'near_width': 40}, 'COR_OPTIONS': '', 'MOTOR_OFFSET': 0.0, 'X_ROTATION_AXIS_PIXEL_POSITION': 0.0}, 'gui': {'mode_is_lock': False, 'value_is_lock': False, 'auto_update_estimated_cor': True, 'y_axis_inverted': True}}, 'controlAreaVisible': True, 'savedWidgetGeometry': b'\x01\xd9\xd0\xcb\x00\x03\x00\x00\x00\x00\x017\x00\x00\x00\xe5\x00\x00\x06H\x00\x00\x03\xa6\x00\x00\x017\x00\x00\x01\n\x00\x00\x06H\x00\x00\x03\xa6\x00\x00\x00\x00\x00\x00\x00\x00\x07\x80\x00\x00\x017\x00\x00\x01\n\x00\x00\x06H\x00\x00\x03\xa6', '__version__': 1}</properties>
14
+ <properties node_id="1" format="literal">{'_scanIDs': ['hdf5:scan:/home/payno/Datasets/tomography/bamboo_hercules/bambou_hercules_0001/bambou_hercules_0001_0000.nx?path=/entry0000'], 'controlAreaVisible': True, 'savedWidgetGeometry': b'\x01\xd9\xd0\xcb\x00\x03\x00\x00\x00\x00\n\xa0\x00\x00\x01Z\x00\x00\x0b\xcb\x00\x00\x03\x06\x00\x00\n\xa0\x00\x00\x01Z\x00\x00\x0b\xcb\x00\x00\x03\x06\x00\x00\x00\x01\x00\x00\x00\x00\x07\x80\x00\x00\n\xa0\x00\x00\x01Z\x00\x00\x0b\xcb\x00\x00\x03\x06', '__version__': 1}</properties>
15
15
  </node_properties>
16
16
  <session_state>
17
17
  <window_groups />
@@ -141,16 +141,6 @@ class AxisOW(SuperviseOW, WidgetLongProcessing):
141
141
 
142
142
  self._layout.addWidget(self._widget)
143
143
 
144
- # expose API
145
- self.setMode = self._widget.setMode
146
- self.getMode = self._widget.getMode
147
- self.getEstimatedCor = self._widget.getEstimatedCor
148
- self.setEstimatedCor = self._widget.setEstimatedCor
149
- self.getAxisParams = self._widget.getAxisParams
150
- self.setValueLock = self._widget.setValueLock
151
- self._setModeLockFrmSettings = self._widget._setModeLockFrmSettings
152
- self._setValueLockFrmSettings = self._widget._setValueLockFrmSettings
153
-
154
144
  # load settings
155
145
  try:
156
146
  if "mode_is_lock" in gui_settings:
@@ -170,6 +160,7 @@ class AxisOW(SuperviseOW, WidgetLongProcessing):
170
160
  "auto_update_estimated_cor", True
171
161
  )
172
162
  self._widget.setAutoUpdateEstimatedCor(auto_update_estimated_cor)
163
+ self._widget.setYAxisInverted(gui_settings.get("y_axis_inverted", False))
173
164
 
174
165
  except Exception as e:
175
166
  logger.warning(f"Fail to load settings. Error is {str(e)}")
@@ -184,11 +175,14 @@ class AxisOW(SuperviseOW, WidgetLongProcessing):
184
175
  self._processingStack.sigComputationEnded.connect(self._scanProcessed)
185
176
 
186
177
  self._axis_params.sigChanged.connect(self._updateSettingsVals)
178
+ self._widget._axisWidget._settingsWidget._mainWidget._calculationWidget.sigUpdateXRotAxisPixelPosOnNewScan.connect(
179
+ self._updateSettingsVals
180
+ )
187
181
  self._widget.sigAxisEditionLocked.connect(self._updateSettingsVals)
188
182
  self._widget.sigModeChanged.connect(self._updateSettingsVals)
189
183
  self._widget.sigLockModeChanged.connect(self._updateSettingsVals)
190
184
 
191
- self._widget._axisWidget._settingsWidget._mainWidget._calculationWidget._nearValueCB.toggled.connect(
185
+ self._widget._axisWidget._settingsWidget._mainWidget._calculationWidget._estimatedCorWidget.sigValueChanged.connect(
192
186
  self._updateSettingsVals
193
187
  )
194
188
 
@@ -353,6 +347,7 @@ class AxisOW(SuperviseOW, WidgetLongProcessing):
353
347
  "mode_is_lock": self.isModeLocked(),
354
348
  "value_is_lock": self.isValueLock(),
355
349
  "auto_update_estimated_cor": self._widget.getAutoUpdateEstimatedCor(),
350
+ "y_axis_inverted": self._widget.isYAxisInverted(),
356
351
  },
357
352
  }
358
353
 
@@ -458,9 +453,6 @@ class AxisOW(SuperviseOW, WidgetLongProcessing):
458
453
  "serialize_output_data": False,
459
454
  }
460
455
  )
461
- for patch in self._patches:
462
- mode, function = patch
463
- processing_class._CALCULATIONS_METHODS[mode] = function
464
456
  processing_class.run()
465
457
  self._updatePosition(scan=self.__scan)
466
458
  if self.isModeLocked() or self.isValueLock():
@@ -312,8 +312,10 @@ class NabuVolumeOW(WidgetLongProcessing, SuperviseOW):
312
312
  )
313
313
  drac_processed_datasets.append(icatReconstructedDataset)
314
314
 
315
- if len(drac_processed_datasets) > 0:
316
- self.Outputs.data_portal_processed_datasets.send(drac_processed_datasets)
315
+ if len(drac_processed_datasets) > 0:
316
+ self.Outputs.data_portal_processed_datasets.send(
317
+ drac_processed_datasets
318
+ )
317
319
 
318
320
  if future_tomo_obj is not None:
319
321
  self.Outputs.future_out.send(future_tomo_obj)
tomwer/app/axis.py CHANGED
@@ -169,9 +169,6 @@ def main(argv):
169
169
  _logger.setLevel(logging.DEBUG)
170
170
 
171
171
  axis_params = QAxisRP()
172
- axis_params.use_sinogram = options.use_sinogram
173
- if scan.dim_2 is not None:
174
- axis_params.sinogram_line = scan.dim_2 // 2
175
172
 
176
173
  window = _AxisProcessGUI(scan=scan, axis_params=axis_params)
177
174
  window.setWindowTitle("axis")
tomwer/app/multipag.py CHANGED
@@ -23,6 +23,10 @@ from tomwer.core.process.reconstruction.darkref.darkrefs import (
23
23
  from tomwer.core.process.reconstruction.sadeltabeta.sadeltabeta import (
24
24
  SADeltaBetaTask,
25
25
  )
26
+ from tomwer.core.process.reconstruction.utils.cor import (
27
+ relative_pos_to_absolute,
28
+ absolute_pos_to_relative,
29
+ )
26
30
  from tomwer.core.process.task import Task
27
31
  from tomwer.core.scan.scanfactory import ScanFactory
28
32
  from tomwer.core.utils.resource import increase_max_number_file
@@ -136,13 +140,17 @@ class SADeltaBetaWindow(_SADeltaBetaWindow):
136
140
 
137
141
  def _relativeValueEdited(self):
138
142
  old = self._absoluteCORValueQLE.blockSignals(True)
139
- value = self._relativeCORValueQLE.value() + (self._imageWidth - 1) / 2.0
143
+ value = relative_pos_to_absolute(
144
+ relative_pos=self._relativeCORValueQLE.value(), det_width=self._imageWidth
145
+ )
140
146
  self._absoluteCORValueQLE.setValue(value)
141
147
  self._absoluteCORValueQLE.blockSignals(old)
142
148
 
143
- def _absolueValueEdited(self):
149
+ def _absoluteValueEdited(self):
144
150
  old = self._relativeCORValueQLE.blockSignals(True)
145
- value = self._absoluteCORValueQLE.value() - (self._imageWidth - 1) / 2.0
151
+ value = absolute_pos_to_relative(
152
+ absolute_pos=self._absoluteCORValueQLE.value(), det_width=self._imageWidth
153
+ )
146
154
  self._relativeCORValueQLE.setValue(value)
147
155
  self._relativeCORValueQLE.blockSignals(old)
148
156