tomwer 1.3.27__py3-none-any.whl → 1.4.0rc0__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.
- orangecontrib/tomwer/orange/managedprocess.py +1 -29
- orangecontrib/tomwer/orange/settings.py +2 -28
- orangecontrib/tomwer/tests/TestAcquisition.py +220 -0
- orangecontrib/tomwer/tutorials/append_raw_darks_and_flats_frames_to_NXtomos.ows +2 -2
- orangecontrib/tomwer/tutorials/copy_reduced_darks_and_flats_meth1.ows +1 -1
- orangecontrib/tomwer/tutorials/{icat_publication.ows → drac_publication.ows} +7 -21
- orangecontrib/tomwer/tutorials/id16b/ID16b_full_volume.ows +22 -0
- orangecontrib/tomwer/tutorials/id16b/ID16b_insitu.ows +302 -0
- orangecontrib/tomwer/tutorials/id16b/ID16b_normalization.ows +218 -0
- orangecontrib/tomwer/tutorials/simple_volume_to_slurm_reconstruction.ows +29 -24
- orangecontrib/tomwer/tutorials/test_cor.ows +19 -0
- orangecontrib/tomwer/tutorials/volume_casting_on_slurm.ows +54 -0
- orangecontrib/tomwer/widgets/__init__.py +3 -5
- orangecontrib/tomwer/widgets/cluster/FutureSupervisorOW.py +35 -54
- orangecontrib/tomwer/widgets/cluster/SlurmClusterOW.py +1 -31
- orangecontrib/tomwer/widgets/control/AdvancementOW.py +1 -29
- orangecontrib/tomwer/widgets/control/DataDiscoveryOW.py +5 -4
- orangecontrib/tomwer/widgets/control/DataListenerOW.py +1 -29
- orangecontrib/tomwer/widgets/control/DataSelectorOW.py +11 -30
- orangecontrib/tomwer/widgets/control/DataTransfertOW.py +2 -28
- orangecontrib/tomwer/widgets/control/DataValidatorOW.py +1 -28
- orangecontrib/tomwer/widgets/control/DataWatcherOW.py +1 -28
- orangecontrib/tomwer/widgets/control/EDF2NXTomomillOW.py +48 -51
- orangecontrib/tomwer/widgets/control/EmailOW.py +12 -2
- orangecontrib/tomwer/widgets/control/FilterOW.py +1 -28
- orangecontrib/tomwer/widgets/control/NXTomomillOW.py +37 -53
- orangecontrib/tomwer/widgets/control/NXtomoConcatenate.py +21 -20
- orangecontrib/tomwer/widgets/control/NotifierOW.py +9 -28
- orangecontrib/tomwer/widgets/control/ReduceDarkFlatSelectorOW.py +3 -2
- orangecontrib/tomwer/widgets/control/SingleTomoObjOW.py +1 -27
- orangecontrib/tomwer/widgets/control/TimerOW.py +9 -28
- orangecontrib/tomwer/widgets/control/TomoObjSeriesOW.py +58 -0
- orangecontrib/tomwer/widgets/control/VolumeSelector.py +8 -30
- orangecontrib/tomwer/widgets/control/icons/nxtomomill.svg +173 -119
- orangecontrib/tomwer/widgets/control/icons/reduced_darkflat_selector.png +0 -0
- orangecontrib/tomwer/widgets/control/icons/reduced_darkflat_selector.svg +55 -195
- orangecontrib/tomwer/widgets/control/icons/{tomoobjserie.svg → tomoobjseries.svg} +2 -2
- orangecontrib/tomwer/widgets/dataportal/PublishProcessedDataOW.py +172 -0
- orangecontrib/tomwer/widgets/{icat → dataportal}/__init__.py +2 -2
- orangecontrib/tomwer/widgets/debugtools/DatasetGeneratorOW.py +2 -29
- orangecontrib/tomwer/widgets/debugtools/ObjectInspectorOW.py +1 -29
- orangecontrib/tomwer/widgets/edit/DarkFlatPatchOW.py +48 -73
- orangecontrib/tomwer/widgets/edit/ImageKeyEditorOW.py +48 -75
- orangecontrib/tomwer/widgets/edit/ImageKeyUpgraderOW.py +5 -30
- orangecontrib/tomwer/widgets/edit/NXtomoEditorOW.py +51 -52
- orangecontrib/tomwer/widgets/other/PythonScriptOW.py +22 -10
- orangecontrib/tomwer/widgets/reconstruction/AxisOW.py +48 -49
- orangecontrib/tomwer/widgets/reconstruction/CastNabuVolumeOW.py +22 -68
- orangecontrib/tomwer/widgets/reconstruction/DarkRefAndCopyOW.py +3 -30
- orangecontrib/tomwer/widgets/reconstruction/NabuHelicalPrepareWeightsDoubleOW.py +21 -19
- orangecontrib/tomwer/widgets/reconstruction/NabuOW.py +7 -70
- orangecontrib/tomwer/widgets/reconstruction/NabuVolumeOW.py +40 -85
- orangecontrib/tomwer/widgets/reconstruction/SAAxisOW.py +15 -40
- orangecontrib/tomwer/widgets/reconstruction/SADeltaBetaOW.py +13 -35
- orangecontrib/tomwer/widgets/reconstruction/SinoNormOW.py +2 -30
- orangecontrib/tomwer/widgets/stitching/ZStitchingConfigOW.py +11 -11
- orangecontrib/tomwer/widgets/utils.py +2 -29
- orangecontrib/tomwer/widgets/visualization/DataViewerOW.py +1 -27
- orangecontrib/tomwer/widgets/visualization/DiffViewerOW.py +1 -27
- orangecontrib/tomwer/widgets/visualization/NXtomoMetadataViewerOW.py +1 -1
- orangecontrib/tomwer/widgets/visualization/RadioStackOW.py +2 -28
- orangecontrib/tomwer/widgets/visualization/SampleMovedOW.py +1 -27
- orangecontrib/tomwer/widgets/visualization/SinogramViewerOW.py +1 -27
- orangecontrib/tomwer/widgets/visualization/SliceStackOW.py +2 -28
- tomwer/__init__.py +3 -28
- tomwer/__main__.py +8 -4
- tomwer/app/__init__.py +2 -0
- tomwer/app/axis.py +8 -7
- tomwer/app/canvas.py +23 -29
- tomwer/app/canvas_launcher/config.py +14 -102
- tomwer/app/canvas_launcher/environ.py +5 -8
- tomwer/app/canvas_launcher/mainwindow.py +175 -69
- tomwer/app/canvas_launcher/splash.py +1 -3
- tomwer/app/canvas_launcher/utils.py +47 -0
- tomwer/app/canvas_launcher/widgetsscheme.py +3 -10
- tomwer/app/diffframe.py +2 -0
- tomwer/app/imagekeyeditor.py +2 -1
- tomwer/app/imagekeyupgrader.py +2 -0
- tomwer/app/multicor.py +5 -2
- tomwer/app/multipag.py +7 -4
- tomwer/app/nabuapp.py +2 -1
- tomwer/app/nxtomoeditor.py +17 -12
- tomwer/app/patchrawdarkflat.py +2 -0
- tomwer/app/radiostack.py +3 -2
- tomwer/app/reducedarkflat.py +3 -0
- tomwer/app/samplemoved.py +2 -0
- tomwer/app/scanviewer.py +2 -0
- tomwer/app/sinogramviewer.py +2 -0
- tomwer/app/slicestack.py +11 -13
- tomwer/app/stitching/common.py +431 -0
- tomwer/app/stopdatalistener.py +3 -0
- tomwer/app/ystitching.py +26 -0
- tomwer/app/zstitching.py +8 -363
- tomwer/core/__init__.py +2 -28
- tomwer/core/cluster/__init__.py +3 -0
- tomwer/core/cluster/cluster.py +10 -26
- tomwer/core/futureobject.py +17 -43
- tomwer/core/log/__init__.py +2 -0
- tomwer/core/log/processlog.py +0 -28
- tomwer/core/process/cluster/supervisor.py +52 -34
- tomwer/core/process/conditions/filters.py +3 -28
- tomwer/core/process/control/datalistener/datalistener.py +7 -75
- tomwer/core/process/control/datalistener/rpcserver.py +8 -38
- tomwer/core/process/control/datawatcher/datawatcher.py +11 -40
- tomwer/core/process/control/datawatcher/datawatcherobserver.py +30 -64
- tomwer/core/process/control/datawatcher/datawatcherprocess.py +11 -32
- tomwer/core/process/control/datawatcher/edfdwprocess.py +2 -27
- tomwer/core/process/control/datawatcher/hdf5dwprocess.py +1 -26
- tomwer/core/process/control/datawatcher/status.py +1 -26
- tomwer/core/process/control/emailnotifier.py +11 -23
- tomwer/core/process/control/nxtomoconcatenate.py +20 -18
- tomwer/core/process/control/nxtomomill.py +9 -44
- tomwer/core/process/control/scanlist.py +0 -27
- tomwer/core/process/control/scantransfer.py +15 -13
- tomwer/core/process/control/scanvalidator.py +4 -30
- tomwer/core/process/control/{test → tests}/test_concatenate_nxtomos.py +5 -5
- tomwer/core/process/control/timer.py +1 -27
- tomwer/core/process/control/tomoobjseries.py +12 -0
- tomwer/core/process/drac/binning.py +37 -0
- tomwer/core/process/drac/dracbase.py +170 -0
- tomwer/core/process/drac/gallery.py +109 -0
- tomwer/core/process/drac/output.py +12 -0
- tomwer/core/process/drac/processeddataset.py +147 -0
- tomwer/core/process/drac/publish.py +118 -0
- tomwer/core/process/drac/rawdataset.py +142 -0
- tomwer/core/process/drac/tests/test_gallery.py +71 -0
- tomwer/core/process/drac/tests/test_icat_processed_dataset.py +80 -0
- tomwer/core/process/drac/tests/test_icat_raw_dataset.py +90 -0
- tomwer/core/process/edit/darkflatpatch.py +1 -28
- tomwer/core/process/edit/imagekeyeditor.py +4 -32
- tomwer/core/process/edit/nxtomoeditor.py +307 -0
- tomwer/core/process/edit/tests/test_darkflatpatch.py +243 -0
- tomwer/core/process/edit/tests/test_imagekey_editor.py +99 -0
- tomwer/core/process/output.py +9 -2
- tomwer/core/process/reconstruction/__init__.py +0 -26
- tomwer/core/process/reconstruction/axis/anglemode.py +1 -29
- tomwer/core/process/reconstruction/axis/axis.py +63 -111
- tomwer/core/process/reconstruction/axis/mode.py +5 -3
- tomwer/core/process/reconstruction/axis/params.py +5 -146
- tomwer/core/process/reconstruction/axis/projectiontype.py +0 -28
- tomwer/core/process/reconstruction/darkref/darkrefs.py +14 -39
- tomwer/core/process/reconstruction/darkref/darkrefscopy.py +7 -39
- tomwer/core/process/reconstruction/darkref/params.py +1 -28
- tomwer/core/process/reconstruction/nabu/castvolume.py +19 -34
- tomwer/core/process/reconstruction/nabu/nabucommon.py +18 -43
- tomwer/core/process/reconstruction/nabu/nabuscores.py +47 -48
- tomwer/core/process/reconstruction/nabu/nabuslices.py +59 -105
- tomwer/core/process/reconstruction/nabu/nabuvolume.py +44 -70
- tomwer/core/process/reconstruction/nabu/plane.py +10 -0
- tomwer/core/process/reconstruction/nabu/settings.py +1 -28
- tomwer/core/process/reconstruction/nabu/target.py +0 -28
- tomwer/core/process/reconstruction/nabu/test/test_castvolume.py +116 -0
- tomwer/core/process/reconstruction/nabu/test/test_nabu_utils.py +277 -0
- tomwer/core/process/reconstruction/nabu/test/test_nabunormalization.py +199 -0
- tomwer/core/process/reconstruction/nabu/utils.py +11 -60
- tomwer/core/process/reconstruction/normalization/normalization.py +2 -32
- tomwer/core/process/reconstruction/normalization/params.py +3 -35
- tomwer/core/process/reconstruction/output.py +14 -19
- tomwer/core/process/reconstruction/paramsbase.py +4 -33
- tomwer/core/process/reconstruction/saaxis/params.py +5 -33
- tomwer/core/process/reconstruction/saaxis/saaxis.py +18 -47
- tomwer/core/process/reconstruction/sadeltabeta/params.py +2 -31
- tomwer/core/process/reconstruction/sadeltabeta/sadeltabeta.py +16 -44
- tomwer/core/process/reconstruction/scores/params.py +9 -39
- tomwer/core/process/reconstruction/scores/scores.py +10 -42
- tomwer/core/process/reconstruction/tests/__init__.py +0 -0
- tomwer/core/process/reconstruction/tests/test_axis.py +46 -0
- tomwer/core/process/reconstruction/tests/test_darkref.py +33 -0
- tomwer/core/process/reconstruction/{test → tests}/test_saaxis.py +1 -27
- tomwer/core/process/reconstruction/tests/test_sadeltabeta.py +48 -0
- tomwer/core/process/script/python.py +1 -27
- tomwer/core/process/script/tests/test_script.py +41 -0
- tomwer/core/process/stitching/metadataholder.py +5 -4
- tomwer/core/process/stitching/nabustitcher.py +35 -5
- tomwer/core/process/stitching/tests/test_metadataholder.py +17 -0
- tomwer/core/process/task.py +20 -63
- tomwer/core/process/tests/__init__.py +0 -0
- tomwer/core/process/{test → tests}/test_axis.py +1 -79
- tomwer/core/process/{test → tests}/test_conditions.py +1 -28
- tomwer/core/process/{test → tests}/test_dark_and_flat.py +1 -27
- tomwer/core/process/{test → tests}/test_data_listener.py +1 -27
- tomwer/core/process/{test → tests}/test_data_transfer.py +2 -28
- tomwer/core/process/{test → tests}/test_data_watcher.py +1 -27
- tomwer/core/process/{test → tests}/test_nabu.py +4 -33
- tomwer/core/process/{test → tests}/test_normalization.py +1 -26
- tomwer/core/process/{test → tests}/test_timer.py +1 -27
- tomwer/core/process/utils.py +2 -31
- tomwer/core/process/visualization/dataviewer.py +1 -26
- tomwer/core/process/visualization/diffviewer.py +1 -26
- tomwer/core/process/visualization/imagestackviewer.py +0 -26
- tomwer/core/process/visualization/radiostack.py +0 -26
- tomwer/core/process/visualization/samplemoved.py +0 -28
- tomwer/core/process/visualization/sinogramviewer.py +0 -27
- tomwer/core/process/visualization/slicestack.py +0 -28
- tomwer/core/process/visualization/tests/test_data_viewer.py +12 -0
- tomwer/core/process/visualization/tests/test_diff_viewer.py +12 -0
- tomwer/core/process/visualization/tests/test_image_stack_viewer.py +14 -0
- tomwer/core/process/visualization/tests/test_radio_stack.py +12 -0
- tomwer/core/process/visualization/tests/test_sample_moved.py +14 -0
- tomwer/core/process/visualization/tests/test_sinogram_viewer.py +13 -0
- tomwer/core/process/visualization/tests/test_slice_stack.py +13 -0
- tomwer/core/process/visualization/tests/test_volume_viewer.py +12 -0
- tomwer/core/process/visualization/volumeviewer.py +0 -29
- tomwer/core/scan/__init__.py +3 -27
- tomwer/core/scan/blissscan.py +5 -34
- tomwer/core/scan/edfscan.py +19 -53
- tomwer/core/scan/hdf5scan.py +2 -2
- tomwer/core/scan/nxtomoscan.py +46 -54
- tomwer/core/scan/scanbase.py +104 -200
- tomwer/core/scan/scanfactory.py +11 -41
- tomwer/core/scan/tests/__init__.py +0 -0
- tomwer/core/scan/tests/test_edf.py +25 -0
- tomwer/core/scan/tests/test_future_scan.py +35 -0
- tomwer/core/scan/tests/test_nxtomoscan.py +143 -0
- tomwer/core/scan/{test → tests}/test_process_registration.py +1 -28
- tomwer/core/settings.py +18 -40
- tomwer/core/tests/__init__.py +0 -0
- tomwer/core/tests/test_scanutils.py +26 -0
- tomwer/core/{test → tests}/test_utils.py +1 -28
- tomwer/core/tomwer_object.py +4 -0
- tomwer/core/utils/__init__.py +2 -0
- tomwer/core/utils/char.py +0 -28
- tomwer/core/utils/deprecation.py +12 -38
- tomwer/core/utils/dictutils.py +1 -3
- tomwer/core/utils/ftseriesutils.py +1 -27
- tomwer/core/utils/gpu.py +0 -28
- tomwer/core/utils/image.py +8 -39
- tomwer/core/utils/locker.py +1 -28
- tomwer/core/utils/logconfig.py +0 -27
- tomwer/core/utils/normalization.py +4 -31
- tomwer/core/utils/nxtomoutils.py +8 -38
- tomwer/core/utils/resource.py +0 -26
- tomwer/core/utils/scanutils.py +23 -52
- tomwer/core/utils/slurm.py +7 -30
- tomwer/core/utils/spec.py +6 -6
- tomwer/core/utils/tests/__init__.py +0 -0
- tomwer/core/utils/tests/test_image.py +30 -0
- tomwer/core/utils/tests/test_nxtomo.py +38 -0
- tomwer/core/utils/tests/test_scan_utils.py +46 -0
- tomwer/core/utils/tests/test_time.py +6 -0
- tomwer/core/utils/threads.py +0 -26
- tomwer/core/utils/time.py +0 -27
- tomwer/core/volume/__init__.py +4 -0
- tomwer/core/volume/edfvolume.py +1 -28
- tomwer/core/volume/hdf5volume.py +1 -28
- tomwer/core/volume/jp2kvolume.py +1 -27
- tomwer/core/volume/rawvolume.py +1 -28
- tomwer/core/volume/tests/test_volumes.py +21 -0
- tomwer/core/volume/tiffvolume.py +1 -28
- tomwer/core/volume/volumebase.py +5 -0
- tomwer/core/volume/volumefactory.py +7 -33
- tomwer/gui/__init__.py +0 -28
- tomwer/gui/cluster/__init__.py +2 -0
- tomwer/gui/cluster/slurm.py +297 -95
- tomwer/gui/cluster/supervisor.py +1 -27
- tomwer/gui/cluster/tests/__init__.py +0 -0
- tomwer/gui/cluster/{test → tests}/test_cluster.py +21 -26
- tomwer/gui/cluster/{test → tests}/test_supervisor.py +1 -27
- tomwer/gui/conditions/__init__.py +2 -0
- tomwer/gui/conditions/filter.py +1 -26
- tomwer/gui/configuration/__init__.py +2 -0
- tomwer/gui/control/__init__.py +2 -0
- tomwer/gui/control/actions.py +2 -28
- tomwer/gui/control/datadiscovery.py +4 -3
- tomwer/gui/control/datalist.py +64 -69
- tomwer/gui/control/datalistener.py +1 -39
- tomwer/gui/control/datareacheractions.py +1 -28
- tomwer/gui/control/datatransfert.py +2 -29
- tomwer/gui/control/datavalidator.py +3 -37
- tomwer/gui/control/datawatcher/__init__.py +0 -28
- tomwer/gui/control/datawatcher/configuration.py +1 -28
- tomwer/gui/control/datawatcher/datawatcher.py +3 -32
- tomwer/gui/control/datawatcher/datawatcherobserver.py +2 -28
- tomwer/gui/control/history.py +5 -35
- tomwer/gui/control/nxtomomill.py +3 -30
- tomwer/gui/control/observations.py +61 -55
- tomwer/gui/control/reducedarkflatselector.py +24 -20
- tomwer/gui/control/scanselectorwidget.py +2 -28
- tomwer/gui/control/selectorwidgetbase.py +17 -17
- tomwer/gui/control/series/__init__.py +0 -0
- tomwer/gui/control/{serie/seriecreator.py → series/seriescreator.py} +214 -235
- tomwer/gui/control/series/serieswaiter.py +0 -0
- tomwer/gui/control/series/test/test_creator.py +424 -0
- tomwer/gui/control/series/test/test_nxtomo_concatenate.py +21 -0
- tomwer/gui/control/singletomoobj.py +1 -1
- tomwer/gui/control/tests/__init__.py +0 -0
- tomwer/gui/control/tests/test_datalist.py +47 -0
- tomwer/gui/control/{test → tests}/test_datalistener.py +1 -28
- tomwer/gui/control/tests/test_datavalidator.py +27 -0
- tomwer/gui/control/{test → tests}/test_inputwidget.py +1 -27
- tomwer/gui/control/tests/test_process_manager.py +38 -0
- tomwer/gui/control/tests/test_scan_observations.py +23 -0
- tomwer/gui/control/tests/test_scanselector.py +42 -0
- tomwer/gui/control/{test → tests}/test_scanvalidator.py +1 -27
- tomwer/gui/control/{test → tests}/test_volume_dialog.py +2 -30
- tomwer/gui/control/{test → tests}/test_volumeselector.py +1 -27
- tomwer/gui/control/volumeselectorwidget.py +2 -30
- tomwer/gui/dataportal/__init__.py +2 -0
- tomwer/gui/{icat → dataportal}/createscreenshots.py +3 -2
- tomwer/gui/dataportal/gallery.py +133 -0
- tomwer/gui/dataportal/outputformat.py +0 -0
- tomwer/gui/dataportal/publish.py +96 -0
- tomwer/gui/dataportal/tests/test_create_screenshots_gui.py +23 -0
- tomwer/gui/dataportal/tests/test_gallery_gui.py +21 -0
- tomwer/gui/debugtools/__init__.py +2 -0
- tomwer/gui/debugtools/datasetgenerator.py +1 -30
- tomwer/gui/debugtools/objectinspector.py +1 -29
- tomwer/gui/dialog/QDataDialog.py +89 -0
- tomwer/gui/{qfolderdialog.py → dialog/QVolumeDialog.py} +8 -107
- tomwer/gui/dialog/__init__.py +1 -0
- tomwer/gui/edit/__init__.py +2 -0
- tomwer/gui/edit/dkrfpatch.py +52 -87
- tomwer/gui/edit/imagekeyeditor.py +18 -54
- tomwer/gui/edit/nxtomoeditor.py +113 -300
- tomwer/gui/edit/nxtomowarmer.py +3 -2
- tomwer/gui/edit/tests/__init__.py +0 -0
- tomwer/gui/edit/{test → tests}/test_dkrf_patch.py +3 -29
- tomwer/gui/edit/{test → tests}/test_image_key_editor.py +1 -27
- tomwer/gui/edit/{test → tests}/test_nx_editor.py +45 -23
- tomwer/gui/icons.py +28 -66
- tomwer/gui/illustrations.py +4 -34
- tomwer/gui/imagefromfile.py +5 -30
- tomwer/gui/metadataloader.py +36 -0
- tomwer/gui/qconfigfile.py +3 -0
- tomwer/gui/qlefilesystem.py +3 -0
- tomwer/gui/reconstruction/__init__.py +2 -0
- tomwer/gui/reconstruction/axis/AxisMainWindow.py +264 -0
- tomwer/gui/reconstruction/axis/AxisOptionsWidget.py +153 -0
- tomwer/gui/reconstruction/axis/AxisSettingsWidget.py +776 -0
- tomwer/gui/reconstruction/axis/AxisWidget.py +526 -0
- tomwer/gui/reconstruction/axis/CalculationWidget.py +374 -0
- tomwer/gui/reconstruction/axis/CompareImages.py +11 -44
- tomwer/gui/reconstruction/axis/ControlWidget.py +277 -0
- tomwer/gui/reconstruction/axis/InputWidget.py +491 -0
- tomwer/gui/reconstruction/axis/ManualFramesSelection.py +168 -0
- tomwer/gui/reconstruction/axis/__init__.py +2 -2
- tomwer/gui/reconstruction/darkref/__init__.py +0 -27
- tomwer/gui/reconstruction/darkref/darkrefcopywidget.py +5 -34
- tomwer/gui/reconstruction/darkref/darkrefwidget.py +1 -27
- tomwer/gui/reconstruction/nabu/castvolume.py +40 -59
- tomwer/gui/reconstruction/nabu/check.py +7 -33
- tomwer/gui/reconstruction/nabu/nabuconfig/base.py +7 -34
- tomwer/gui/reconstruction/nabu/nabuconfig/ctf.py +6 -5
- tomwer/gui/reconstruction/nabu/nabuconfig/nabuconfig.py +10 -69
- tomwer/gui/reconstruction/nabu/nabuconfig/output.py +3 -47
- tomwer/gui/reconstruction/nabu/nabuconfig/phase.py +54 -36
- tomwer/gui/reconstruction/nabu/nabuconfig/preprocessing.py +103 -54
- tomwer/gui/reconstruction/nabu/nabuconfig/reconstruction.py +116 -65
- tomwer/gui/reconstruction/nabu/nabuflow.py +31 -61
- tomwer/gui/reconstruction/nabu/platform.py +94 -0
- tomwer/gui/reconstruction/nabu/slices.py +81 -45
- tomwer/gui/reconstruction/nabu/slurm.py +1 -27
- tomwer/gui/reconstruction/nabu/test/test_cast_volume.py +82 -0
- tomwer/gui/reconstruction/nabu/test/test_check.py +66 -0
- tomwer/gui/reconstruction/nabu/test/test_ctf.py +46 -0
- tomwer/gui/reconstruction/nabu/test/test_helical.py +21 -0
- tomwer/gui/reconstruction/nabu/test/test_nabu_preprocessing.py +81 -0
- tomwer/gui/reconstruction/nabu/volume.py +62 -90
- tomwer/gui/reconstruction/normalization/intensity.py +5 -32
- tomwer/gui/reconstruction/normalization/test/test_intensity.py +89 -0
- tomwer/gui/reconstruction/saaxis/corrangeselector.py +16 -49
- tomwer/gui/reconstruction/saaxis/dimensionwidget.py +56 -96
- tomwer/gui/reconstruction/saaxis/saaxis.py +17 -38
- tomwer/gui/reconstruction/saaxis/sliceselector.py +8 -39
- tomwer/gui/reconstruction/sadeltabeta/saadeltabeta.py +19 -37
- tomwer/gui/reconstruction/scores/control.py +2 -30
- tomwer/gui/reconstruction/scores/scoreplot.py +19 -48
- tomwer/gui/reconstruction/tests/__init__.py +0 -0
- tomwer/gui/reconstruction/{test → tests}/test_axis.py +23 -49
- tomwer/gui/reconstruction/{test → tests}/test_nabu.py +8 -31
- tomwer/gui/reconstruction/{test → tests}/test_saaxis.py +10 -37
- tomwer/gui/reconstruction/{test → tests}/test_sadeltabeta.py +1 -26
- tomwer/gui/samplemoved/__init__.py +2 -30
- tomwer/gui/samplemoved/selectiontable.py +3 -33
- tomwer/gui/settings.py +7 -0
- tomwer/gui/stackplot.py +33 -661
- tomwer/gui/stacks.py +261 -135
- tomwer/gui/stitching/SingleAxisStitchingWidget.py +326 -0
- tomwer/gui/stitching/StitchingOptionsWidget.py +438 -0
- tomwer/gui/stitching/StitchingWindow.py +586 -0
- tomwer/gui/stitching/__init__.py +2 -0
- tomwer/gui/stitching/alignment.py +90 -0
- tomwer/gui/stitching/axisorderedlist.py +44 -34
- tomwer/gui/stitching/config/axisparams.py +23 -11
- tomwer/gui/stitching/config/output.py +6 -5
- tomwer/gui/stitching/config/positionoveraxis.py +313 -51
- tomwer/gui/stitching/config/stitchingstrategies.py +22 -16
- tomwer/gui/stitching/config/tests/test_axisparams.py +25 -0
- tomwer/gui/stitching/config/tomoobjdetails.py +3 -5
- tomwer/gui/stitching/normalization.py +1 -0
- tomwer/gui/stitching/preview.py +59 -0
- tomwer/gui/stitching/singleaxis.py +57 -0
- tomwer/gui/stitching/stitchandbackground.py +3 -2
- tomwer/gui/stitching/stitching_preview.py +44 -36
- tomwer/gui/stitching/stitching_raw.py +5 -3
- tomwer/gui/stitching/tests/test_ZStitchingWindow.py +88 -0
- tomwer/gui/stitching/tests/test_axis_ordered_list.py +21 -0
- tomwer/gui/stitching/tests/test_normalization.py +27 -0
- tomwer/gui/stitching/tests/test_preview.py +68 -0
- tomwer/gui/stitching/tests/test_stitching_raw.py +110 -0
- tomwer/gui/stitching/tests/utils.py +92 -0
- tomwer/gui/stitching/utils.py +14 -0
- tomwer/gui/stitching/z_stitching/fineestimation.py +4 -32
- tomwer/gui/stitching/z_stitching/tests/test_fine_estimation.py +35 -0
- tomwer/gui/stitching/z_stitching/tests/test_raw_estimation.py +215 -0
- tomwer/gui/stitching/z_stitching/tests/test_stitching_window.py +51 -0
- tomwer/gui/tests/__init__.py +0 -0
- tomwer/gui/tests/test_axis_gui.py +27 -0
- tomwer/gui/{test → tests}/test_qfolder_dialog.py +1 -1
- tomwer/gui/utils/RangeWidget.py +44 -0
- tomwer/gui/utils/buttons.py +4 -3
- tomwer/gui/utils/completer.py +2 -33
- tomwer/gui/utils/flow.py +11 -40
- tomwer/gui/utils/gpu.py +60 -0
- tomwer/gui/utils/illustrations.py +1 -26
- tomwer/gui/utils/inputwidget.py +35 -73
- tomwer/gui/utils/lineselector/lineselector.py +9 -46
- tomwer/gui/utils/loadingmode.py +81 -0
- tomwer/gui/utils/qt_utils.py +9 -0
- tomwer/gui/utils/sandboxes.py +1 -26
- tomwer/gui/utils/scandescription.py +2 -31
- tomwer/gui/utils/scrollarea.py +6 -55
- tomwer/gui/utils/slider.py +4 -28
- tomwer/gui/utils/splashscreen.py +0 -28
- tomwer/gui/utils/step.py +14 -13
- tomwer/gui/utils/tests/test_completer.py +41 -0
- tomwer/gui/utils/tests/test_line_selector.py +21 -0
- tomwer/gui/utils/tests/test_splashscreen.py +8 -0
- tomwer/gui/utils/tests/test_vignettes.py +68 -0
- tomwer/gui/utils/unitsystem.py +15 -69
- tomwer/gui/utils/utils.py +4 -5
- tomwer/gui/utils/vignettes.py +10 -41
- tomwer/gui/utils/waiterthread.py +0 -26
- tomwer/gui/visualization/__init__.py +2 -0
- tomwer/gui/visualization/dataviewer.py +68 -421
- tomwer/gui/visualization/diffviewer/diffviewer.py +2 -30
- tomwer/gui/visualization/diffviewer/shiftwidget.py +4 -29
- tomwer/gui/visualization/fullscreenplot.py +5 -5
- tomwer/gui/visualization/imagestack.py +403 -0
- tomwer/gui/visualization/nxtomometadata.py +0 -4
- tomwer/gui/visualization/reconstructionparameters.py +14 -32
- tomwer/gui/visualization/scanoverview.py +33 -66
- tomwer/gui/visualization/sinogramviewer.py +2 -28
- tomwer/gui/visualization/test/__init__.py +0 -28
- tomwer/gui/visualization/test/test_dataviewer.py +1 -28
- tomwer/gui/visualization/test/test_diffviewer.py +1 -28
- tomwer/gui/visualization/test/test_nx_tomo_metadata_viewer.py +0 -5
- tomwer/gui/visualization/test/test_reconstruction_parameters.py +1 -27
- tomwer/gui/visualization/test/test_sinogramviewer.py +1 -28
- tomwer/gui/visualization/test/test_stacks.py +184 -115
- tomwer/gui/visualization/test/test_volumeviewer.py +3 -2
- tomwer/gui/visualization/tomoobjoverview.py +2 -2
- tomwer/gui/visualization/volumeoverview.py +3 -2
- tomwer/gui/visualization/volumeviewer.py +47 -43
- tomwer/io/__init__.py +2 -0
- tomwer/io/utils/h5pyutils.py +1 -27
- tomwer/io/utils/test/test_raw_and_processed_data.py +10 -0
- tomwer/io/utils/test/test_utils.py +67 -0
- tomwer/io/utils/utils.py +2 -31
- tomwer/resources/__init__.py +13 -33
- tomwer/resources/gui/icons/edit_downstream.svg +114 -0
- tomwer/resources/gui/icons/edit_upstream.svg +112 -0
- tomwer/resources/gui/icons/free_edition.svg +23 -0
- tomwer/resources/gui/icons/icat_gallery_opts.png +0 -0
- tomwer/resources/gui/icons/icat_gallery_opts.svg +80 -0
- tomwer/resources/gui/icons/search.png +0 -0
- tomwer/resources/gui/icons/search.svg +23 -0
- tomwer/resources/gui/icons/warning.png +0 -0
- tomwer/synctools/__init__.py +2 -0
- tomwer/synctools/axis.py +1 -27
- tomwer/synctools/darkref.py +1 -26
- tomwer/synctools/datalistener.py +1 -27
- tomwer/synctools/datatransfert.py +2 -27
- tomwer/synctools/imageloaderthread.py +1 -28
- tomwer/synctools/rsyncmanager.py +1 -25
- tomwer/synctools/saaxis.py +1 -26
- tomwer/synctools/sadeltabeta.py +1 -26
- tomwer/synctools/stacks/control/datalistener.py +1 -26
- tomwer/synctools/stacks/processingstack.py +4 -33
- tomwer/synctools/stacks/reconstruction/axis.py +2 -31
- tomwer/synctools/stacks/reconstruction/castvolume.py +12 -43
- tomwer/synctools/stacks/reconstruction/dkrefcopy.py +3 -26
- tomwer/synctools/stacks/reconstruction/nabu.py +1 -26
- tomwer/synctools/stacks/reconstruction/normalization.py +1 -26
- tomwer/synctools/stacks/reconstruction/saaxis.py +1 -26
- tomwer/synctools/stacks/reconstruction/sadeltabeta.py +1 -26
- tomwer/synctools/tests/__init__.py +0 -0
- tomwer/synctools/{test → tests}/test_darkRefs.py +16 -40
- tomwer/synctools/{test → tests}/test_foldertransfer.py +2 -33
- tomwer/synctools/utils/scanstages.py +2 -31
- tomwer/tests/__init__.py +1 -0
- tomwer/tests/app/test_stitching.py +95 -0
- tomwer/tests/datasets.py +1 -5
- tomwer/tests/orangecontrib/tomwer/widgets/cluster/tests/test_future_supervisorow.py +48 -0
- tomwer/tests/orangecontrib/tomwer/widgets/cluster/tests/test_slurm_clusterow.py +40 -0
- tomwer/tests/orangecontrib/tomwer/widgets/control/tests/test_advancement.py +8 -0
- tomwer/tests/orangecontrib/tomwer/widgets/control/tests/test_data_validator.py +55 -0
- tomwer/tests/orangecontrib/tomwer/widgets/control/tests/test_datadiscovery.py +129 -0
- tomwer/tests/orangecontrib/tomwer/widgets/control/tests/test_datalistener.py +111 -0
- tomwer/tests/orangecontrib/tomwer/widgets/control/tests/test_dataselector.py +69 -0
- tomwer/tests/orangecontrib/tomwer/widgets/control/tests/test_datawatcher.py +411 -0
- tomwer/tests/orangecontrib/tomwer/widgets/control/tests/test_emailow.py +29 -0
- tomwer/tests/orangecontrib/tomwer/widgets/control/tests/test_notifier.py +24 -0
- tomwer/tests/orangecontrib/tomwer/widgets/control/tests/test_nxtomo_concatenate_ow.py +64 -0
- tomwer/tests/orangecontrib/tomwer/widgets/control/tests/test_nxtomomill.py +133 -0
- tomwer/tests/orangecontrib/tomwer/widgets/control/tests/test_reduce_dark_flat_selector.py +40 -0
- tomwer/tests/orangecontrib/tomwer/widgets/control/tests/test_singletomoobj.py +40 -0
- tomwer/tests/orangecontrib/tomwer/widgets/control/tests/test_timerow.py +25 -0
- tomwer/tests/orangecontrib/tomwer/widgets/control/tests/test_tomoobj_series.py +96 -0
- tomwer/tests/orangecontrib/tomwer/widgets/control/tests/test_volume_selector.py +69 -0
- orangecontrib/tomwer/widgets/edit/test/test_image_key_editor.py → tomwer/tests/orangecontrib/tomwer/widgets/debugtools/tests/test_dataset_generator.py +17 -16
- tomwer/tests/orangecontrib/tomwer/widgets/debugtools/tests/test_object_inspector.py +36 -0
- {orangecontrib/tomwer/widgets/edit/test → tomwer/tests/orangecontrib/tomwer/widgets/edit/tests}/test_dark_flat_patch.py +1 -27
- tomwer/tests/orangecontrib/tomwer/widgets/edit/tests/test_image_key_editor.py +30 -0
- tomwer/tests/orangecontrib/tomwer/widgets/edit/tests/test_nxtomo_editor.py +138 -0
- tomwer/tests/orangecontrib/tomwer/widgets/other/tests/test_pythonscript.py +31 -0
- tomwer/tests/orangecontrib/tomwer/widgets/reconstruction/tests/test_axis.py +215 -0
- tomwer/tests/orangecontrib/tomwer/widgets/reconstruction/tests/test_cast_volumeow.py +58 -0
- tomwer/tests/orangecontrib/tomwer/widgets/reconstruction/tests/test_dark_refs_widget.py +136 -0
- tomwer/tests/orangecontrib/tomwer/widgets/reconstruction/tests/test_delta_beta_selector.py +15 -0
- tomwer/tests/orangecontrib/tomwer/widgets/reconstruction/tests/test_i_norm.py +200 -0
- tomwer/tests/orangecontrib/tomwer/widgets/reconstruction/tests/test_nabu_helical_prepare_weights_double.py +20 -0
- tomwer/tests/orangecontrib/tomwer/widgets/reconstruction/tests/test_nabu_volume.py +74 -0
- tomwer/tests/orangecontrib/tomwer/widgets/reconstruction/tests/test_nabu_widget.py +107 -0
- tomwer/tests/orangecontrib/tomwer/widgets/reconstruction/tests/test_sa_delta_beta.py +194 -0
- tomwer/tests/orangecontrib/tomwer/widgets/reconstruction/tests/test_saaxis.py +194 -0
- tomwer/tests/orangecontrib/tomwer/widgets/stitching/tests/test_zstitching.py +313 -0
- tomwer/tests/orangecontrib/tomwer/widgets/tests/test_conditions.py +85 -0
- tomwer/tests/orangecontrib/tomwer/widgets/tests/test_darkref.py +225 -0
- tomwer/tests/orangecontrib/tomwer/widgets/tests/test_foldertransfert.py +105 -0
- tomwer/tests/orangecontrib/tomwer/widgets/visualization/tests/test_dataviewerow.py +57 -0
- tomwer/tests/orangecontrib/tomwer/widgets/visualization/tests/test_diffviewerow.py +39 -0
- tomwer/tests/orangecontrib/tomwer/widgets/visualization/tests/test_nxtomo_metadata_viewer.py +29 -0
- tomwer/tests/orangecontrib/tomwer/widgets/visualization/tests/test_radio_stackow.py +31 -0
- tomwer/tests/orangecontrib/tomwer/widgets/visualization/tests/test_sample_movedow.py +46 -0
- tomwer/tests/orangecontrib/tomwer/widgets/visualization/tests/test_sinogram_viewerow.py +31 -0
- tomwer/tests/orangecontrib/tomwer/widgets/visualization/tests/test_slice_stackow.py +31 -0
- tomwer/tests/orangecontrib/tomwer/widgets/visualization/tests/test_volume_viewerow.py +32 -0
- tomwer/tests/test_ewoks/test_conversion.py +104 -0
- tomwer/tests/test_ewoks/test_single_node_execution.py +87 -0
- tomwer/tests/test_ewoks/test_workflows.py +138 -0
- tomwer/utils.py +11 -39
- tomwer/version.py +3 -3
- {tomwer-1.3.27.dist-info → tomwer-1.4.0rc0.dist-info}/LICENSE +3 -3
- tomwer-1.4.0rc0.dist-info/METADATA +337 -0
- tomwer-1.4.0rc0.dist-info/RECORD +909 -0
- {tomwer-1.3.27.dist-info → tomwer-1.4.0rc0.dist-info}/WHEEL +1 -1
- {tomwer-1.3.27.dist-info → tomwer-1.4.0rc0.dist-info}/entry_points.txt +1 -0
- orangecontrib/tomwer/widgets/control/DataListOW.py +0 -129
- orangecontrib/tomwer/widgets/control/TomoObjSerieOW.py +0 -86
- orangecontrib/tomwer/widgets/control/VolumeSymLinkOW.py +0 -182
- orangecontrib/tomwer/widgets/edit/test/test_nxtomo_editor.py +0 -141
- orangecontrib/tomwer/widgets/icat/PublishProcessedDataOW.py +0 -115
- orangecontrib/tomwer/widgets/icat/RawDataScreenshotCreatorOW.py +0 -98
- orangecontrib/tomwer/widgets/icat/SaveToGalleryAndPublishOW.py +0 -129
- orangecontrib/tomwer/widgets/icat/icons/add_gallery.png +0 -0
- orangecontrib/tomwer/widgets/icat/icons/add_gallery.svg +0 -82
- orangecontrib/tomwer/widgets/icat/icons/raw_screenshots.png +0 -0
- orangecontrib/tomwer/widgets/icat/icons/raw_screenshots.svg +0 -143
- orangecontrib/tomwer/widgets/visualization/LivesliceOW.py +0 -87
- orangecontrib/tomwer/widgets/visualization/icons/liveslice.png +0 -0
- orangecontrib/tomwer/widgets/visualization/icons/liveslice.svg +0 -110
- tomwer/core/log/logger.py +0 -130
- tomwer/core/process/control/test/test_volume_link.py +0 -74
- tomwer/core/process/control/tomoobjserie.py +0 -12
- tomwer/core/process/control/volumesymlink.py +0 -200
- tomwer/core/process/icat/createscreenshots.py +0 -100
- tomwer/core/process/icat/gallery.py +0 -377
- tomwer/core/process/icat/icatbase.py +0 -36
- tomwer/core/process/icat/publish.py +0 -228
- tomwer/core/process/icat/screenshots.py +0 -27
- tomwer/core/process/reconstruction/test/test_darkref.py +0 -60
- tomwer/core/process/reconstruction/test/test_sadeltabeta.py +0 -74
- tomwer/core/process/visualization/liveslice.py +0 -6
- tomwer/core/progress.py +0 -100
- tomwer/core/scan/test/test_edf.py +0 -53
- tomwer/core/scan/test/test_future_scan.py +0 -61
- tomwer/core/scan/test/test_h5.py +0 -96
- tomwer/core/test/test_scanutils.py +0 -53
- tomwer/gui/control/emailnotifier.py +0 -174
- tomwer/gui/control/serie/seriewaiter.py +0 -28
- tomwer/gui/control/test/__init__.py +0 -28
- tomwer/gui/control/test/test_datalist.py +0 -96
- tomwer/gui/control/test/test_datavalidator.py +0 -54
- tomwer/gui/control/test/test_email.py +0 -35
- tomwer/gui/control/test/test_process_manager.py +0 -65
- tomwer/gui/control/test/test_scanselector.py +0 -67
- tomwer/gui/edit/test/__init__.py +0 -28
- tomwer/gui/icat/gallery.py +0 -214
- tomwer/gui/icat/publish.py +0 -187
- tomwer/gui/reconstruction/axis/axis.py +0 -733
- tomwer/gui/reconstruction/axis/radioaxis.py +0 -2467
- tomwer/gui/stitching/stitching.py +0 -1388
- tomwer/gui/test/__init__.py +0 -28
- tomwer/gui/test/test_axis_gui.py +0 -34
- tomwer/synctools/stacks/edit/darkflatpatch.py +0 -169
- tomwer/synctools/stacks/edit/imagekeyeditor.py +0 -135
- tomwer/third_part/WaitingOverlay.py +0 -110
- tomwer-1.3.27-py3.11-nspkg.pth +0 -1
- tomwer-1.3.27.dist-info/METADATA +0 -292
- tomwer-1.3.27.dist-info/RECORD +0 -785
- tomwer-1.3.27.dist-info/namespace_packages.txt +0 -1
- /orangecontrib/tomwer/{widgets/edit/test → tests}/__init__.py +0 -0
- {tomwer/core/process/control/test → orangecontrib/tomwer/tutorials/id16b}/__init__.py +0 -0
- {tomwer/core/process/icat → orangecontrib/tomwer/widgets/cluster/tests}/__init__.py +0 -0
- /orangecontrib/tomwer/widgets/control/icons/{tomoobjserie.png → tomoobjseries.png} +0 -0
- {tomwer/core/process/reconstruction/test → orangecontrib/tomwer/widgets/control/tests}/__init__.py +0 -0
- /orangecontrib/tomwer/widgets/{icat → dataportal}/icons/publish_processed_data.png +0 -0
- /orangecontrib/tomwer/widgets/{icat → dataportal}/icons/publish_processed_data.svg +0 -0
- {tomwer/core/process/test → orangecontrib/tomwer/widgets/debugtools/tests}/__init__.py +0 -0
- {tomwer/core/scan/test → orangecontrib/tomwer/widgets/edit/tests}/__init__.py +0 -0
- {tomwer/core/test → orangecontrib/tomwer/widgets/other/tests}/__init__.py +0 -0
- {tomwer/gui/cluster/test → orangecontrib/tomwer/widgets/reconstruction/tests}/__init__.py +0 -0
- {tomwer/gui/control/serie → orangecontrib/tomwer/widgets/stitching/tests}/__init__.py +0 -0
- {tomwer/gui/icat → orangecontrib/tomwer/widgets/tests}/__init__.py +0 -0
- {tomwer/gui/reconstruction/test → orangecontrib/tomwer/widgets/visualization/tests}/__init__.py +0 -0
- /tomwer/{synctools/stacks/edit → app/stitching}/__init__.py +0 -0
- /tomwer/{synctools/test → core/process/control/tests}/__init__.py +0 -0
- /tomwer/core/process/control/{test → tests}/test_email.py +0 -0
- /tomwer/core/process/control/{test → tests}/test_h52nx_process.py +0 -0
- /tomwer/{third_part → core/process/drac}/__init__.py +0 -0
- /tomwer/core/process/reconstruction/{test → tests}/test_axis_params.py +0 -0
- /tomwer/core/process/reconstruction/{test → tests}/test_darkref_copy.py +0 -0
- /tomwer/core/process/reconstruction/{test → tests}/test_paramsbase.py +0 -0
- /tomwer/core/process/reconstruction/{test → tests}/test_utils.py +0 -0
- /tomwer/core/scan/{test → tests}/test_scan.py +0 -0
- /tomwer/gui/control/{serie → series}/nxtomoconcatenate.py +0 -0
- /tomwer/gui/control/{test → tests}/test_datadiscovery.py +0 -0
- /tomwer/gui/control/{test → tests}/test_reducedarkflat_selector.py +0 -0
- /tomwer/gui/control/{test → tests}/test_single_tomo_obj.py +0 -0
- {orangecontrib/tomwer/widgets/edit/test → tomwer/tests/orangecontrib/tomwer/widgets/edit/tests}/test_image_key_upgrader.py +0 -0
- {tomwer-1.3.27.dist-info → tomwer-1.4.0rc0.dist-info}/top_level.txt +0 -0
@@ -1,30 +1,4 @@
|
|
1
1
|
# coding: utf-8
|
2
|
-
###########################################################################
|
3
|
-
# Copyright (C) 2016 European Synchrotron Radiation Facility
|
4
|
-
#
|
5
|
-
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
-
# of this software and associated documentation files (the "Software"), to deal
|
7
|
-
# in the Software without restriction, including without limitation the rights
|
8
|
-
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
-
# copies of the Software, and to permit persons to whom the Software is
|
10
|
-
# furnished to do so, subject to the following conditions:
|
11
|
-
#
|
12
|
-
# The above copyright notice and this permission notice shall be included in
|
13
|
-
# all copies or substantial portions of the Software.
|
14
|
-
#
|
15
|
-
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
-
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
-
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
-
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
-
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
-
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
21
|
-
# THE SOFTWARE.
|
22
|
-
#
|
23
|
-
#############################################################################
|
24
|
-
|
25
|
-
__authors__ = ["H.Payno"]
|
26
|
-
__license__ = "MIT"
|
27
|
-
__date__ = "30/05/2017"
|
28
2
|
|
29
3
|
"""The reconstruction module is contains all processes relative to
|
30
4
|
reconstruction (lamino, tomography reconstruction, axis calculation...)"""
|
@@ -1,32 +1,4 @@
|
|
1
1
|
# coding: utf-8
|
2
|
-
# /*##########################################################################
|
3
|
-
#
|
4
|
-
# Copyright (c) 2016-2017 European Synchrotron Radiation Facility
|
5
|
-
#
|
6
|
-
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
7
|
-
# of this software and associated documentation files (the "Software"), to deal
|
8
|
-
# in the Software without restriction, including without limitation the rights
|
9
|
-
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
10
|
-
# copies of the Software, and to permit persons to whom the Software is
|
11
|
-
# furnished to do so, subject to the following conditions:
|
12
|
-
#
|
13
|
-
# The above copyright notice and this permission notice shall be included in
|
14
|
-
# all copies or substantial portions of the Software.
|
15
|
-
#
|
16
|
-
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
17
|
-
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
18
|
-
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
19
|
-
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
20
|
-
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
21
|
-
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
22
|
-
# THE SOFTWARE.
|
23
|
-
#
|
24
|
-
# ###########################################################################*/
|
25
|
-
|
26
|
-
__authors__ = ["H. Payno"]
|
27
|
-
__license__ = "MIT"
|
28
|
-
__date__ = "15/10/2019"
|
29
|
-
|
30
2
|
|
31
3
|
from silx.utils.enum import Enum as _Enum
|
32
4
|
|
@@ -38,7 +10,7 @@ class CorAngleMode(_Enum):
|
|
38
10
|
|
39
11
|
@classmethod
|
40
12
|
def from_value(cls, value):
|
41
|
-
# TODO: back
|
13
|
+
# TODO: back compatibility if is int
|
42
14
|
if value == 0:
|
43
15
|
return CorAngleMode.use_0_180
|
44
16
|
elif value == 1:
|
@@ -1,36 +1,9 @@
|
|
1
|
-
# coding: utf-8
|
2
|
-
###########################################################################
|
3
|
-
# Copyright (C) 2016 European Synchrotron Radiation Facility
|
4
|
-
#
|
5
|
-
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
-
# of this software and associated documentation files (the "Software"), to deal
|
7
|
-
# in the Software without restriction, including without limitation the rights
|
8
|
-
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
-
# copies of the Software, and to permit persons to whom the Software is
|
10
|
-
# furnished to do so, subject to the following conditions:
|
11
|
-
#
|
12
|
-
# The above copyright notice and this permission notice shall be included in
|
13
|
-
# all copies or substantial portions of the Software.
|
14
|
-
#
|
15
|
-
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
-
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
-
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
-
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
-
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
-
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
21
|
-
# THE SOFTWARE.
|
22
|
-
#
|
23
|
-
#############################################################################
|
24
|
-
|
25
1
|
"""contain the AxisProcess
|
26
2
|
"""
|
27
3
|
|
28
|
-
|
29
|
-
__license__ = "MIT"
|
30
|
-
__date__ = "19/03/2019"
|
4
|
+
from __future__ import annotations
|
31
5
|
|
32
6
|
import logging
|
33
|
-
from typing import Optional, Union
|
34
7
|
|
35
8
|
import numpy
|
36
9
|
from nabu.estimation.cor import (
|
@@ -50,6 +23,7 @@ import tomwer.version
|
|
50
23
|
from tomwer.core.process.reconstruction.utils.cor import absolute_pos_to_relative
|
51
24
|
from tomwer.core.process.task import Task
|
52
25
|
from tomwer.core.scan.nxtomoscan import NXtomoScan
|
26
|
+
from tomwer.core.scan.edfscan import EDFTomoScan
|
53
27
|
from tomwer.core.scan.scanbase import TomwerScanBase
|
54
28
|
from tomwer.core.scan.scanfactory import ScanFactory
|
55
29
|
from tomwer.core.utils import image, logconfig
|
@@ -89,9 +63,7 @@ pc_height = 10.0 / 100.0
|
|
89
63
|
pc_width = 50.0 / 100.0
|
90
64
|
|
91
65
|
|
92
|
-
def _absolute_pos_to_relative_with_warning(
|
93
|
-
absolute_pos: float, det_width: Optional[int]
|
94
|
-
):
|
66
|
+
def _absolute_pos_to_relative_with_warning(absolute_pos: float, det_width: int | None):
|
95
67
|
"""
|
96
68
|
nabu returns the value as absolute. tomwer needs it as relative
|
97
69
|
Also handle the case (unlikely) the detector width cannot be found
|
@@ -147,8 +119,8 @@ def compute_cor_nabu_growing_window(
|
|
147
119
|
:param radio_1:
|
148
120
|
:param radio_2:
|
149
121
|
:param padding_mode: padding mode
|
150
|
-
:param
|
151
|
-
:param
|
122
|
+
:param side: side of the cor
|
123
|
+
:param flip_frame_2_lr: if True will left-right flip the second frame
|
152
124
|
:param horz_fft_width:
|
153
125
|
|
154
126
|
:return:
|
@@ -176,13 +148,11 @@ def compute_cor_nabu_growing_window(
|
|
176
148
|
|
177
149
|
def compute_cor_nabu_growing_window_radios(
|
178
150
|
scan: TomwerScanBase,
|
179
|
-
):
|
151
|
+
) -> float | None:
|
180
152
|
"""
|
181
153
|
Call nabu.preproc.alignement.CenterOfRotationGrowingWindow.find_shift
|
182
154
|
|
183
|
-
:param
|
184
|
-
|
185
|
-
:return:
|
155
|
+
:param scan: scan for which we want to get the reconstruction parameters
|
186
156
|
"""
|
187
157
|
has_darks = scan.reduced_darks is not None and len(scan.reduced_darks) > 0
|
188
158
|
has_flats = scan.reduced_flats is not None and len(scan.reduced_flats) > 0
|
@@ -220,13 +190,11 @@ def compute_cor_nabu_growing_window_radios(
|
|
220
190
|
|
221
191
|
def compute_cor_nabu_growing_window_sinogram(
|
222
192
|
scan: TomwerScanBase,
|
223
|
-
):
|
193
|
+
) -> float | None:
|
224
194
|
"""
|
225
195
|
Call nabu.preproc.alignement.CenterOfRotationGrowingWindow.find_shift
|
226
196
|
|
227
|
-
:param
|
228
|
-
|
229
|
-
:return:
|
197
|
+
:param scan:
|
230
198
|
"""
|
231
199
|
has_darks = scan.reduced_darks is not None and len(scan.reduced_darks) > 0
|
232
200
|
has_flats = scan.reduced_flats is not None and len(scan.reduced_flats) > 0
|
@@ -322,7 +290,7 @@ def compute_scan_composite_coarse_to_fine(scan: TomwerScanBase):
|
|
322
290
|
)
|
323
291
|
|
324
292
|
|
325
|
-
def get_composite_options(scan):
|
293
|
+
def get_composite_options(scan) -> tuple:
|
326
294
|
theta = scan.axis_params.composite_options.get("theta", DEFAULT_CMP_THETA)
|
327
295
|
n_subsampling_y = scan.axis_params.composite_options.get(
|
328
296
|
"n_subsampling_y", DEFAULT_CMP_N_SUBSAMPLING_Y
|
@@ -339,13 +307,12 @@ def get_composite_options(scan):
|
|
339
307
|
return theta, n_subsampling_y, oversampling, take_log, near_pos, near_width
|
340
308
|
|
341
309
|
|
342
|
-
def compute_scan_cor_nabu_growing_window(scan):
|
310
|
+
def compute_scan_cor_nabu_growing_window(scan) -> float | None:
|
343
311
|
"""
|
344
312
|
Call to nabu.preproc.alignment.CenterOfRotation from the scan axis_params
|
345
313
|
value.
|
346
314
|
|
347
|
-
:param
|
348
|
-
:return: Union[float, None]
|
315
|
+
:param scan: scan to process
|
349
316
|
"""
|
350
317
|
if not scan.axis_params.use_sinogram:
|
351
318
|
radio_1, radio_2 = AxisTask.get_inputs(scan=scan)
|
@@ -376,22 +343,20 @@ def compute_cor_nabu_sliding_window(
|
|
376
343
|
padding_mode,
|
377
344
|
flip_frame_2_lr=True,
|
378
345
|
horz_fft_width=False,
|
379
|
-
):
|
346
|
+
) -> float | None:
|
380
347
|
"""
|
381
348
|
Call nabu.preproc.alignement.CenterOfRotationSlidingWindow.find_shift
|
382
349
|
|
383
350
|
:param radio_1:
|
384
351
|
:param radio_2:
|
385
352
|
:param padding_mode:
|
386
|
-
:param
|
353
|
+
:param side: side of the cor
|
387
354
|
:param horz_fft_width:
|
388
|
-
:param
|
355
|
+
:param flip_frame_2_lr: if True will left-right flip the second frame
|
389
356
|
:param half_acq_cor_guess: The approximate position of the rotation axis
|
390
357
|
from the image center. Optional. When given a
|
391
358
|
special algorithm is used which can work also
|
392
359
|
in half-tomo conditions.
|
393
|
-
|
394
|
-
:return:
|
395
360
|
"""
|
396
361
|
nabu_class = CenterOfRotationSlidingWindow(horz_fft_width=horz_fft_width)
|
397
362
|
res = nabu_class.find_shift(
|
@@ -399,21 +364,18 @@ def compute_cor_nabu_sliding_window(
|
|
399
364
|
img_2=numpy.fliplr(radio_2) if flip_frame_2_lr else radio_2,
|
400
365
|
side=side,
|
401
366
|
roi_yxhw=None,
|
402
|
-
padding_mode=padding_mode,
|
403
367
|
median_filt_shape=None,
|
404
368
|
)
|
405
369
|
return res
|
406
370
|
|
407
371
|
|
408
372
|
def compute_cor_nabu_sliding_window_radios(
|
409
|
-
scan,
|
410
|
-
):
|
373
|
+
scan: TomwerScanBase,
|
374
|
+
) -> float | None:
|
411
375
|
"""
|
412
|
-
Call nabu.preproc.
|
376
|
+
Call nabu.preproc.alignment.CenterOfRotationGrowingWindow.find_shift
|
413
377
|
|
414
378
|
:param TomwerScanBase scan:
|
415
|
-
|
416
|
-
:return:
|
417
379
|
"""
|
418
380
|
has_darks = scan.reduced_darks is not None and len(scan.reduced_darks) > 0
|
419
381
|
has_flats = scan.reduced_flats is not None and len(scan.reduced_flats) > 0
|
@@ -442,14 +404,12 @@ def compute_cor_nabu_sliding_window_radios(
|
|
442
404
|
|
443
405
|
|
444
406
|
def compute_cor_nabu_sliding_window_sinogram(
|
445
|
-
scan,
|
446
|
-
):
|
407
|
+
scan: TomwerScanBase,
|
408
|
+
) -> float | None:
|
447
409
|
"""
|
448
|
-
Call nabu.preproc.
|
410
|
+
Call nabu.preproc.alignment.CenterOfRotationGrowingWindow.find_shift
|
449
411
|
|
450
412
|
:param TomwerScanBase scan:
|
451
|
-
|
452
|
-
:return:
|
453
413
|
"""
|
454
414
|
has_darks = scan.reduced_darks is not None and len(scan.reduced_darks) > 0
|
455
415
|
has_flats = scan.reduced_flats is not None and len(scan.reduced_flats) > 0
|
@@ -469,13 +429,12 @@ def compute_cor_nabu_sliding_window_sinogram(
|
|
469
429
|
)
|
470
430
|
|
471
431
|
|
472
|
-
def compute_scan_cor_nabu_sliding_window(scan):
|
432
|
+
def compute_scan_cor_nabu_sliding_window(scan: TomwerScanBase) -> float | None:
|
473
433
|
"""
|
474
434
|
Call to nabu.preproc.alignment.CenterOfRotation from the scan axis_params
|
475
435
|
value.
|
476
436
|
|
477
|
-
:param
|
478
|
-
:return: Union[float, None]
|
437
|
+
:param scan: scan to process
|
479
438
|
"""
|
480
439
|
if not scan.axis_params.use_sinogram:
|
481
440
|
radio_1, radio_2 = AxisTask.get_inputs(scan=scan)
|
@@ -499,7 +458,7 @@ def compute_scan_cor_nabu_sliding_window(scan):
|
|
499
458
|
return compute_cor_nabu_sliding_window_radios(scan=scan)
|
500
459
|
|
501
460
|
|
502
|
-
def compute_scan_fourier_angles(scan):
|
461
|
+
def compute_scan_fourier_angles(scan: TomwerScanBase) -> float | None:
|
503
462
|
"""
|
504
463
|
run 'scan_fourier_angles' algorithm for the requested scan
|
505
464
|
"""
|
@@ -522,12 +481,10 @@ def compute_scan_fourier_angles(scan):
|
|
522
481
|
|
523
482
|
|
524
483
|
def compute_scan_octave_accurate_radios(
|
525
|
-
scan,
|
526
|
-
):
|
484
|
+
scan: TomwerScanBase,
|
485
|
+
) -> float | None:
|
527
486
|
"""
|
528
|
-
Call nabu.preproc.
|
529
|
-
|
530
|
-
:param TomwerScanBase scan:
|
487
|
+
Call nabu.preproc.alignment.CenterOfRotationGrowingWindow.find_shift
|
531
488
|
|
532
489
|
:return:
|
533
490
|
"""
|
@@ -560,12 +517,23 @@ def compute_scan_octave_accurate_radios(
|
|
560
517
|
)
|
561
518
|
|
562
519
|
|
563
|
-
def
|
520
|
+
def read_scan_x_rotation_axis_pixel_position(scan: TomwerScanBase):
|
521
|
+
"""read center of rotation estimation from metadata"""
|
522
|
+
if isinstance(scan, EDFTomoScan):
|
523
|
+
raise TypeError("EDFTomoScan have not information about estimated cor position")
|
524
|
+
else:
|
525
|
+
res = scan.x_rotation_axis_pixel_position
|
526
|
+
if res is None:
|
527
|
+
_logger.error(
|
528
|
+
f"unable to find x_rotation_axis_pixel_position from {scan.get_identifier()}"
|
529
|
+
)
|
530
|
+
return res
|
531
|
+
|
532
|
+
|
533
|
+
def compute_scan_octave_accurate(scan: TomwerScanBase) -> float | None:
|
564
534
|
"""
|
565
535
|
Compute center of rotation from `octave-accurate` algorithm
|
566
536
|
scan
|
567
|
-
:param scan:
|
568
|
-
:return:
|
569
537
|
"""
|
570
538
|
cor_options = scan.axis_params.get_nabu_cor_options_as_dict()
|
571
539
|
radio_1, radio_2 = AxisTask.get_inputs(scan=scan)
|
@@ -574,7 +542,7 @@ def compute_scan_octave_accurate(scan):
|
|
574
542
|
if key in cor_options:
|
575
543
|
extra_options[key] = float(cor_options[key])
|
576
544
|
|
577
|
-
corfinder = CenterOfRotationOctaveAccurate(
|
545
|
+
corfinder = CenterOfRotationOctaveAccurate()
|
578
546
|
res = corfinder.find_shift(
|
579
547
|
img_1=radio_1,
|
580
548
|
img_2=numpy.fliplr(radio_2) if scan.axis_params.flip_lr else radio_2,
|
@@ -586,14 +554,10 @@ def compute_scan_octave_accurate(scan):
|
|
586
554
|
|
587
555
|
|
588
556
|
def compute_cor_nabu_centered_radios(
|
589
|
-
scan,
|
590
|
-
):
|
557
|
+
scan: TomwerScanBase,
|
558
|
+
) -> float | None:
|
591
559
|
"""
|
592
|
-
Call nabu.preproc.
|
593
|
-
|
594
|
-
:param TomwerScanBase scan:
|
595
|
-
|
596
|
-
:return:
|
560
|
+
Call nabu.preproc.alignment.CenterOfRotationGrowingWindow.find_shift
|
597
561
|
"""
|
598
562
|
has_darks = scan.reduced_darks is not None and len(scan.reduced_darks) > 0
|
599
563
|
has_flats = scan.reduced_flats is not None and len(scan.reduced_flats) > 0
|
@@ -636,7 +600,7 @@ def compute_cor_nabu_centered(
|
|
636
600
|
:param radio_2:
|
637
601
|
:param padding_mode:
|
638
602
|
:param horz_fft_width:
|
639
|
-
:param
|
603
|
+
:param flip_frame_2_lr: if True will left-right flip the second frame
|
640
604
|
:param half_acq_cor_guess: The approximate position of the rotation axis
|
641
605
|
from the image center. Optional. When given a
|
642
606
|
special algorithm is used which can work also
|
@@ -656,14 +620,12 @@ def compute_cor_nabu_centered(
|
|
656
620
|
)
|
657
621
|
|
658
622
|
|
659
|
-
def compute_scan_cor_nabu_centered(scan):
|
623
|
+
def compute_scan_cor_nabu_centered(scan: TomwerScanBase) -> float | None:
|
660
624
|
"""
|
661
625
|
Call to nabu.preproc.alignment.CenterOfRotation from the scan axis_params
|
662
626
|
value.
|
663
627
|
|
664
|
-
:param
|
665
|
-
:return: Union[float, None]
|
666
|
-
|
628
|
+
:param scan: scan to process
|
667
629
|
"""
|
668
630
|
assert scan.axis_params is not None
|
669
631
|
radio_1, radio_2 = AxisTask.get_inputs(scan=scan)
|
@@ -692,7 +654,7 @@ def compute_cor_nabu_global(
|
|
692
654
|
:param radio_2:
|
693
655
|
:param padding_mode:
|
694
656
|
:param horz_fft_width:
|
695
|
-
:param
|
657
|
+
:param flip_frame_2_lr: if True will left-right flip the second frame
|
696
658
|
:return:
|
697
659
|
"""
|
698
660
|
nabu_class = CenterOfRotationAdaptiveSearch(horz_fft_width=horz_fft_width)
|
@@ -707,11 +669,11 @@ def compute_cor_nabu_global(
|
|
707
669
|
|
708
670
|
def compute_cor_nabu_global_radios(
|
709
671
|
scan: TomwerScanBase,
|
710
|
-
):
|
672
|
+
) -> float | None:
|
711
673
|
"""
|
712
674
|
Call nabu.preproc.alignement.CenterOfRotationGrowingWindow.find_shift
|
713
675
|
|
714
|
-
:param
|
676
|
+
:param scan:
|
715
677
|
|
716
678
|
:return:
|
717
679
|
"""
|
@@ -741,14 +703,12 @@ def compute_cor_nabu_global_radios(
|
|
741
703
|
)
|
742
704
|
|
743
705
|
|
744
|
-
def compute_scan_cor_nabu_global(scan):
|
706
|
+
def compute_scan_cor_nabu_global(scan: TomwerScanBase) -> float | None:
|
745
707
|
"""
|
746
708
|
Call to nabu.preproc.alignment.CenterOfRotation from the scan axis_params
|
747
709
|
value.
|
748
710
|
|
749
|
-
:param
|
750
|
-
:return: Union[float, None]
|
751
|
-
|
711
|
+
:param scan: scan to process
|
752
712
|
"""
|
753
713
|
assert scan.axis_params is not None
|
754
714
|
radio_1, radio_2 = AxisTask.get_inputs(scan=scan)
|
@@ -765,7 +725,6 @@ def compute_scan_cor_nabu_global(scan):
|
|
765
725
|
def get_stdmax_column(x: numpy.ndarray) -> float:
|
766
726
|
"""
|
767
727
|
|
768
|
-
:param x:
|
769
728
|
:return: column index of the maximal standard deviation
|
770
729
|
"""
|
771
730
|
kernel_size = 5
|
@@ -792,9 +751,6 @@ class AxisTask(
|
|
792
751
|
):
|
793
752
|
"""
|
794
753
|
Process used to compute the center of rotation of a scan
|
795
|
-
|
796
|
-
:param axis_params: parameters to configure the axis process
|
797
|
-
:type: AxisRP
|
798
754
|
"""
|
799
755
|
|
800
756
|
_CALCULATIONS_METHODS = {
|
@@ -809,6 +765,7 @@ class AxisTask(
|
|
809
765
|
AxisMode.near: compute_scan_composite_coarse_to_fine,
|
810
766
|
AxisMode.sino_fourier_angles: compute_scan_fourier_angles,
|
811
767
|
AxisMode.octave_accurate_radios: compute_scan_octave_accurate,
|
768
|
+
AxisMode.read: read_scan_x_rotation_axis_pixel_position,
|
812
769
|
}
|
813
770
|
|
814
771
|
def __init__(
|
@@ -867,12 +824,12 @@ class AxisTask(
|
|
867
824
|
In this case we will lock the axis as defined 'fixed' with the current
|
868
825
|
value
|
869
826
|
|
870
|
-
:param
|
827
|
+
:param lock: if true lock the currently existing position value
|
871
828
|
"""
|
872
829
|
self._locked = lock
|
873
830
|
if lock:
|
874
831
|
self._recons_params_before_lock = self._axis_params.to_dict()
|
875
|
-
if self._axis_params
|
832
|
+
if self._axis_params != AxisMode.manual:
|
876
833
|
self._axis_params.mode = AxisMode.manual
|
877
834
|
else:
|
878
835
|
if self._recons_params_before_lock:
|
@@ -988,10 +945,9 @@ class AxisTask(
|
|
988
945
|
def get_inputs_urls(scan):
|
989
946
|
"""Make sure we have valid projections to be used for axis calculation
|
990
947
|
|
991
|
-
:param
|
948
|
+
:param scan: scan to check
|
992
949
|
:raise: NoAxisUrl if fails to found
|
993
950
|
:return: the two projections to be used for axis calculation
|
994
|
-
:rtype: tuple of AxisResource
|
995
951
|
"""
|
996
952
|
if (
|
997
953
|
scan.axis_params
|
@@ -1040,8 +996,8 @@ class AxisTask(
|
|
1040
996
|
"""
|
1041
997
|
Compute the position value for the scan
|
1042
998
|
|
1043
|
-
:param
|
1044
|
-
:param
|
999
|
+
:param scan:
|
1000
|
+
:param wait: used for threaded process. True if we want to end the
|
1045
1001
|
computation before releasing hand.
|
1046
1002
|
:return: scan as a TomoBase
|
1047
1003
|
"""
|
@@ -1108,10 +1064,10 @@ class AxisTask(
|
|
1108
1064
|
else:
|
1109
1065
|
raise NotImplementedError("mode not implemented yet")
|
1110
1066
|
|
1111
|
-
def define_calculation_mode(self, mode, fct_pointer):
|
1067
|
+
def define_calculation_mode(self, mode: AxisMode, fct_pointer):
|
1112
1068
|
"""Register the function to call of the given mode
|
1113
1069
|
|
1114
|
-
:param
|
1070
|
+
:param mode: the mode to register
|
1115
1071
|
:param fct_pointer: pointer to the function to call
|
1116
1072
|
"""
|
1117
1073
|
self._mode_calculation_fct[mode] = fct_pointer
|
@@ -1120,13 +1076,11 @@ class AxisTask(
|
|
1120
1076
|
"""
|
1121
1077
|
|
1122
1078
|
:param scan: scan for which we compute the center of rotation
|
1123
|
-
:type: TomoScan
|
1124
1079
|
:return: position of the rotation axis. Use the `.AxisMode` defined
|
1125
1080
|
by the `.ReconsParams` of the `.AxisProcess`
|
1126
|
-
:rtype: float or None (if fail to compute the axis position)
|
1127
1081
|
"""
|
1128
1082
|
mode = self._axis_params.mode
|
1129
|
-
if mode in (AxisMode.manual,
|
1083
|
+
if mode in (AxisMode.manual,):
|
1130
1084
|
# If mode is read or manual the position_value is not computed and
|
1131
1085
|
# we will keep the actual one (should have been defined previously)
|
1132
1086
|
res = self._axis_params.relative_cor_value
|
@@ -1153,9 +1107,7 @@ class AxisTask(
|
|
1153
1107
|
return "Compute center of rotation"
|
1154
1108
|
|
1155
1109
|
@staticmethod
|
1156
|
-
def get_cor_frm_process_file(
|
1157
|
-
process_file, entry, as_url=False
|
1158
|
-
) -> Union[None, float]:
|
1110
|
+
def get_cor_frm_process_file(process_file, entry, as_url=False) -> float | None:
|
1159
1111
|
"""
|
1160
1112
|
Read cor position from a tomwer_process file
|
1161
1113
|
|
@@ -76,7 +76,7 @@ class AxisMode(_Enum):
|
|
76
76
|
composite_coarse_to_fine = "composite-coarse-to-fine"
|
77
77
|
sino_fourier_angles = "sino-fourier-angles"
|
78
78
|
octave_accurate_radios = "radios-octave-accurate"
|
79
|
-
read = "read"
|
79
|
+
read = "read from estimated cor"
|
80
80
|
# alias to composite_coarse_to_fine with near mode
|
81
81
|
near = "near"
|
82
82
|
|
@@ -93,6 +93,8 @@ class AxisMode(_Enum):
|
|
93
93
|
"Axis mode requested is 'sliding-window'. To insure backward compatibility replace it by 'sliding-window-radios'"
|
94
94
|
)
|
95
95
|
value = AxisMode.sliding_window_radios
|
96
|
+
elif value == "read":
|
97
|
+
value = AxisMode.read
|
96
98
|
|
97
99
|
return super().from_value(value=value)
|
98
100
|
|
@@ -108,8 +110,8 @@ AXIS_MODE_METADATAS = {
|
|
108
110
|
),
|
109
111
|
# read
|
110
112
|
AxisMode.read: AxisModeMetadata(
|
111
|
-
lockable=
|
112
|
-
tooltip="Read COR value from
|
113
|
+
lockable=True,
|
114
|
+
tooltip="Read COR value from nexus file ({entry}/instrument/detector/x_rotation_axis_pixel_position dataset). Will work only for NXtomo / hdf5 datasets",
|
113
115
|
computing_constrains=(),
|
114
116
|
allows_padding=False,
|
115
117
|
valid_inputs=None,
|