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,32 +1,4 @@
|
|
1
|
-
|
2
|
-
# /*##########################################################################
|
3
|
-
#
|
4
|
-
# Copyright (c) 2016-2020 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__ = "26/10/2021"
|
29
|
-
|
1
|
+
from __future__ import annotations
|
30
2
|
|
31
3
|
import copy
|
32
4
|
import functools
|
@@ -44,11 +16,10 @@ from tomwer.core.utils.scanutils import data_identifier_to_scan
|
|
44
16
|
from tomwer.core.utils.slurm import is_slurm_available
|
45
17
|
from tomwer.core.process.reconstruction.nabu.plane import NabuPlane
|
46
18
|
from tomwer.core.process.reconstruction.nabu.utils import slice_index_to_int
|
47
|
-
from tomwer.core.process.icat.gallery import (
|
48
|
-
IcatScreenshots,
|
49
|
-
deduce_dataset_gallery_location,
|
50
|
-
)
|
51
19
|
from tomwer.core.volume.volumefactory import VolumeFactory
|
20
|
+
from tomwer.core.process.reconstruction.output import (
|
21
|
+
PROCESS_FOLDER_RECONSTRUCTED_SLICES,
|
22
|
+
)
|
52
23
|
|
53
24
|
try:
|
54
25
|
from nabu.pipeline.fullfield.reconstruction import ( # noqa F401
|
@@ -70,7 +41,7 @@ else:
|
|
70
41
|
has_nabu = True
|
71
42
|
_err_import_nabu = None
|
72
43
|
|
73
|
-
from typing import Iterable
|
44
|
+
from typing import Iterable
|
74
45
|
|
75
46
|
from nabu import version as nabu_version
|
76
47
|
from nabu.pipeline.config import (
|
@@ -114,32 +85,30 @@ def run_slices_reconstruction(
|
|
114
85
|
config: dict,
|
115
86
|
dry_run: bool = False,
|
116
87
|
advancement=None,
|
117
|
-
process_id=None,
|
118
|
-
|
88
|
+
process_id: int | None = None,
|
89
|
+
instantiate_classes_only: bool = False,
|
119
90
|
) -> tuple:
|
120
91
|
"""
|
121
92
|
call nabu for a reconstruction on scan with the given configuration
|
122
93
|
|
123
|
-
:param
|
124
|
-
:param
|
94
|
+
:param scan: scan to reconstruct
|
95
|
+
:param config: configuration to run the reconstruction.
|
125
96
|
Contains nabu reconstruction parameters and slurm cluster
|
126
|
-
|
127
|
-
:param
|
128
|
-
:param
|
97
|
+
configuration if requested (key: `slurm-cluster`).
|
98
|
+
:param dry_run: do we want to run dry
|
99
|
+
:param local: do we want to run a local reconstruction
|
129
100
|
:param stderr: file to redirect stderr
|
130
101
|
:param stdout: file to redirect stdout
|
131
102
|
:param advancement: optional Progress class to display advancement
|
132
|
-
:param
|
133
|
-
:param
|
103
|
+
:param process_id: optional process id
|
104
|
+
:param instantiate_class_only: if we don't want to run the SingleSliceRunner but only return them. Use case: we want to keep a hand on processing and it can be cancelled
|
134
105
|
|
135
106
|
:return: (all_succeed, stdouts, stderrs, final_configs, future_scan)
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
None if local reconstruction
|
142
|
-
:rtype: tuple
|
107
|
+
* all_succeed: bool, True if all the reconstruction succeed or if all job request succeed.
|
108
|
+
* stdouts: list of stdout of job reconstruction or job requests
|
109
|
+
* stderrs: list of stderr of job reconstruction or job requests
|
110
|
+
* final_configs: list of configurations submits to nabu
|
111
|
+
* future_scan: FutureTomwerScan | None future scan containing futures pointing to job submited to the cluster. None if local reconstruction
|
143
112
|
|
144
113
|
Behavior: will clear the last slices reconstructed
|
145
114
|
"""
|
@@ -162,7 +131,7 @@ def run_slices_reconstruction(
|
|
162
131
|
if scan.axis_params is not None and scan.axis_params.relative_cor_value is not None:
|
163
132
|
if "reconstruction" in config:
|
164
133
|
# move the cor value to the nabu reference
|
165
|
-
cor_nabu_ref = scan.axis_params.relative_cor_value + scan.dim_1 / 2.0
|
134
|
+
cor_nabu_ref = scan.axis_params.relative_cor_value + (scan.dim_1 - 1) / 2.0
|
166
135
|
config["reconstruction"]["rotation_axis_position"] = str(cor_nabu_ref)
|
167
136
|
_logger.info(f"set nabu reconstruction parameters to {scan}")
|
168
137
|
|
@@ -178,10 +147,10 @@ def run_slices_reconstruction(
|
|
178
147
|
stdouts = []
|
179
148
|
final_configs = []
|
180
149
|
futures = []
|
181
|
-
|
150
|
+
instantiated_classes = []
|
182
151
|
all_succeed = True
|
183
152
|
if advancement is not None:
|
184
|
-
advancement.
|
153
|
+
advancement.total = len(nabu_configurations)
|
185
154
|
scan.clear_latest_reconstructions()
|
186
155
|
for nabu_configuration in nabu_configurations:
|
187
156
|
l_config, slice_index = nabu_configuration
|
@@ -191,7 +160,7 @@ def run_slices_reconstruction(
|
|
191
160
|
scan=scan,
|
192
161
|
slice_index=slice_index,
|
193
162
|
dry_run=dry_run,
|
194
|
-
|
163
|
+
instantiate_class_only=instantiate_classes_only,
|
195
164
|
axis=config.get("reconstruction", {}).get("slice_plane", "XY"),
|
196
165
|
)
|
197
166
|
|
@@ -199,8 +168,8 @@ def run_slices_reconstruction(
|
|
199
168
|
if result is None:
|
200
169
|
# in case of timeout or another issue. Log should already have been provided
|
201
170
|
pass
|
202
|
-
elif
|
203
|
-
|
171
|
+
elif instantiate_classes_only:
|
172
|
+
instantiated_classes.append(result)
|
204
173
|
continue
|
205
174
|
if slice_index is None:
|
206
175
|
continue
|
@@ -229,10 +198,10 @@ def run_slices_reconstruction(
|
|
229
198
|
all_succeed = all_succeed and result.success
|
230
199
|
|
231
200
|
if advancement is not None:
|
232
|
-
advancement.
|
201
|
+
advancement.update()
|
233
202
|
|
234
|
-
if
|
235
|
-
return
|
203
|
+
if instantiate_classes_only:
|
204
|
+
return instantiated_classes
|
236
205
|
if is_cluster_job:
|
237
206
|
future_tomo_obj = FutureTomwerObject(
|
238
207
|
tomo_obj=scan,
|
@@ -258,7 +227,7 @@ class NabuSlicesTask(
|
|
258
227
|
"dry_run",
|
259
228
|
"serialize_output_data",
|
260
229
|
),
|
261
|
-
output_names=("data", "nabu_params", "future_tomo_obj"
|
230
|
+
output_names=("data", "nabu_params", "future_tomo_obj"),
|
262
231
|
):
|
263
232
|
"""
|
264
233
|
Definition of the nabu reconstruction volume reconstruction process
|
@@ -321,10 +290,10 @@ class NabuSlicesTask(
|
|
321
290
|
scan=scan,
|
322
291
|
dry_run=self._dry_run,
|
323
292
|
process_id=self.process_id,
|
324
|
-
|
293
|
+
instantiate_classes_only=True,
|
325
294
|
)
|
326
295
|
except Exception as e:
|
327
|
-
mess = f"Fail to
|
296
|
+
mess = f"Fail to instantiate slice reconstructor for {str(scan)}. Reason is {e}."
|
328
297
|
_logger.processFailed(mess)
|
329
298
|
ProcessManager().notify_dataset_state(
|
330
299
|
dataset=scan,
|
@@ -389,15 +358,6 @@ class NabuSlicesTask(
|
|
389
358
|
VolumeFactory.from_identifier_to_vol_urls(rec_identifier)
|
390
359
|
)
|
391
360
|
|
392
|
-
self.outputs.screenshots = IcatScreenshots(
|
393
|
-
data_dir=deduce_dataset_gallery_location(scan),
|
394
|
-
screenshots={
|
395
|
-
os.path.splitext(os.path.basename(url.file_path()))[0]: url
|
396
|
-
for url in volume_urls
|
397
|
-
},
|
398
|
-
scan=scan,
|
399
|
-
)
|
400
|
-
|
401
361
|
process_index = scan.pop_process_index()
|
402
362
|
# update processes information / registration
|
403
363
|
gc.collect()
|
@@ -470,15 +430,11 @@ class NabuSlicesTask(
|
|
470
430
|
return self._dry_run
|
471
431
|
|
472
432
|
@staticmethod
|
473
|
-
def get_process_frm_process_file(process_file, entry):
|
433
|
+
def get_process_frm_process_file(process_file: str, entry: str) -> dict:
|
474
434
|
"""
|
475
|
-
Read informations regarding the nabu process save in the
|
476
|
-
tomwer_process.h5 file
|
435
|
+
Read informations regarding the nabu process save in the tomwer_process.h5 file
|
477
436
|
|
478
|
-
:param process_file:
|
479
|
-
:param entry:
|
480
437
|
:return: dictionary with the contain of the nabu process
|
481
|
-
:rtype:dict
|
482
438
|
"""
|
483
439
|
if entry is None:
|
484
440
|
with open_hdf5(process_file) as h5f:
|
@@ -553,15 +509,13 @@ class NabuSlicesTask(
|
|
553
509
|
return h5py_read_dataset(latest_nabu_node[path])
|
554
510
|
|
555
511
|
|
556
|
-
def interpret_tomwer_configuration(
|
557
|
-
config: dict, scan: Union[TomwerScanBase, None]
|
558
|
-
) -> tuple:
|
512
|
+
def interpret_tomwer_configuration(config: dict, scan: TomwerScanBase | None) -> tuple:
|
559
513
|
"""
|
560
514
|
tomwer can 'mock' the nabu reconstruction to request more feature.
|
561
515
|
Typical use case is that we can ask for reconstruction of several
|
562
516
|
slices and not only the volume
|
563
517
|
|
564
|
-
:param
|
518
|
+
:param config: tomwer configuration for nabu
|
565
519
|
:param scan: requested if we want to get slices
|
566
520
|
:return: tuple of tuples (nabu configuration, is slice)
|
567
521
|
"""
|
@@ -624,10 +578,10 @@ class SingleSliceRunner(_NabuBaseReconstructor):
|
|
624
578
|
scan: TomwerScanBase,
|
625
579
|
config: dict,
|
626
580
|
dry_run: bool,
|
627
|
-
slice_index:
|
581
|
+
slice_index: int | str | None,
|
628
582
|
axis: NabuPlane,
|
629
583
|
target: Target,
|
630
|
-
cluster_config:
|
584
|
+
cluster_config: dict | None,
|
631
585
|
process_name: str,
|
632
586
|
add_to_latest_reconstructions: bool = True,
|
633
587
|
) -> None:
|
@@ -657,6 +611,11 @@ class SingleSliceRunner(_NabuBaseReconstructor):
|
|
657
611
|
def add_to_latest_reconstructions(self):
|
658
612
|
return self._add_to_latest_reconstructions
|
659
613
|
|
614
|
+
@property
|
615
|
+
def processed_data_folder_name(self):
|
616
|
+
"""return the specific processed folder name associated to this type of reconstruction."""
|
617
|
+
return PROCESS_FOLDER_RECONSTRUCTED_SLICES
|
618
|
+
|
660
619
|
@docstring(_NabuBaseReconstructor)
|
661
620
|
def only_create_config_file(self):
|
662
621
|
return self.slice_index is None
|
@@ -690,9 +649,9 @@ class SingleSliceRunner(_NabuBaseReconstructor):
|
|
690
649
|
config_complete[key].update(self.config[key])
|
691
650
|
config = config_complete
|
692
651
|
|
693
|
-
config["resources"] =
|
694
|
-
|
695
|
-
|
652
|
+
config["resources"] = config.get("resources", {})
|
653
|
+
config["resources"]["method"] = "local"
|
654
|
+
|
696
655
|
# force overwrite results
|
697
656
|
if "output" not in config:
|
698
657
|
config["output"] = {}
|
@@ -789,7 +748,7 @@ class SingleSliceRunner(_NabuBaseReconstructor):
|
|
789
748
|
pag,
|
790
749
|
ctf,
|
791
750
|
db,
|
792
|
-
slice_index:
|
751
|
+
slice_index: str | int,
|
793
752
|
axis: NabuPlane,
|
794
753
|
):
|
795
754
|
axis = NabuPlane.from_value(axis)
|
@@ -853,12 +812,8 @@ class SingleSliceRunner(_NabuBaseReconstructor):
|
|
853
812
|
def _get_file_basename_reconstruction(self, pag, db, ctf, axis):
|
854
813
|
"""
|
855
814
|
|
856
|
-
:param
|
857
|
-
:param
|
858
|
-
if None, we want to reconstruct the
|
859
|
-
entire volume
|
860
|
-
:param bool pag: is it a paganin reconstruction
|
861
|
-
:param int db: delta / beta parameter
|
815
|
+
:param pag: is it a paganin reconstruction
|
816
|
+
:param db: delta / beta parameter
|
862
817
|
:return: basename of the file reconstructed (without any extension)
|
863
818
|
"""
|
864
819
|
return self.get_file_basename_reconstruction(
|
@@ -875,30 +830,29 @@ def run_single_slice_reconstruction(
|
|
875
830
|
scan,
|
876
831
|
nabu_config,
|
877
832
|
dry_run,
|
878
|
-
slice_index:
|
879
|
-
process_id:
|
880
|
-
cluster_config:
|
833
|
+
slice_index: int | str | None,
|
834
|
+
process_id: int | None = None,
|
835
|
+
cluster_config: dict | None = None,
|
881
836
|
add_to_latest_reconstructions=True,
|
882
|
-
|
837
|
+
instantiate_class_only=False,
|
883
838
|
axis: NabuPlane = NabuPlane.XY,
|
884
|
-
) ->
|
839
|
+
) -> ResultsRun | None:
|
885
840
|
"""
|
886
841
|
# TODO: might need something like a context or an option "keep" slice in memory
|
887
842
|
|
888
843
|
:param scan:
|
889
|
-
:param nabu_config:
|
890
|
-
:param cluster_config:
|
844
|
+
:param nabu_config: configuration of nabu process
|
845
|
+
:param cluster_config: configuration of cluster (slurm-cluster only for now)
|
891
846
|
:param dry_run:
|
892
|
-
:param
|
847
|
+
:param slice_index: slice index to reconstruct.
|
893
848
|
If str should be "middle"
|
894
849
|
:param local:
|
895
850
|
:param stdout: file to redirect stdout
|
896
851
|
:param stderr: file to redirect stderr
|
897
|
-
:param
|
852
|
+
:param add_to_latest_reconstructions: if true add reconstructed slice to the latest reconstruction.
|
898
853
|
We wan't to avoid this treatment for saaxis and sadeltebeta for example
|
899
|
-
:param
|
854
|
+
:param instantiate_class_only: if we don't want to run the SingleSliceRunner but only return them. Use case: we want to keep a hand on processing and it can be cancelled
|
900
855
|
:return: result of the slice reconstruction if succeed to launch it.
|
901
|
-
:rtype: Optional[ResultsRun]
|
902
856
|
"""
|
903
857
|
# TODO: remove local from the function signature
|
904
858
|
target = Target.SLURM if cluster_config not in ({}, None) else Target.LOCAL
|
@@ -928,7 +882,7 @@ def run_single_slice_reconstruction(
|
|
928
882
|
add_to_latest_reconstructions=add_to_latest_reconstructions,
|
929
883
|
process_name=process_name,
|
930
884
|
)
|
931
|
-
if
|
885
|
+
if instantiate_class_only:
|
932
886
|
return slice_reconstructor
|
933
887
|
|
934
888
|
try:
|
@@ -1,38 +1,10 @@
|
|
1
|
-
|
2
|
-
# /*##########################################################################
|
3
|
-
#
|
4
|
-
# Copyright (c) 2016-2020 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__ = "26/10/2021"
|
29
|
-
|
1
|
+
from __future__ import annotations
|
30
2
|
|
31
3
|
import copy
|
32
4
|
import functools
|
33
5
|
import logging
|
34
6
|
import os
|
35
|
-
from typing import Iterable
|
7
|
+
from typing import Iterable
|
36
8
|
|
37
9
|
from nabu import version as nabu_version
|
38
10
|
from nabu.pipeline.config import generate_nabu_configfile
|
@@ -50,11 +22,7 @@ from tomwer.core.cluster.cluster import SlurmClusterConfiguration
|
|
50
22
|
from tomwer.core.futureobject import FutureTomwerObject
|
51
23
|
from tomwer.core.process.reconstruction.nabu.plane import NabuPlane
|
52
24
|
from tomwer.core.process.task import Task
|
53
|
-
from tomwer.core.process.
|
54
|
-
IcatScreenshots,
|
55
|
-
deduce_dataset_gallery_location,
|
56
|
-
select_screenshot_from_volume,
|
57
|
-
)
|
25
|
+
from tomwer.core.process.drac.processeddataset import DracReconstructedVolumeDataset
|
58
26
|
from tomwer.core.scan.edfscan import EDFTomoScan
|
59
27
|
from tomwer.core.scan.nxtomoscan import NXtomoScan
|
60
28
|
from tomwer.core.scan.scanbase import TomwerScanBase
|
@@ -65,6 +33,9 @@ from tomwer.core.volume.volumefactory import VolumeFactory
|
|
65
33
|
from tomwer.io.utils.h5pyutils import EntryReader
|
66
34
|
from tomwer.utils import docstring
|
67
35
|
from tomwer.io.utils import format_stderr_stdout
|
36
|
+
from tomwer.core.process.reconstruction.output import (
|
37
|
+
PROCESS_FOLDER_RECONSTRUCTED_VOLUMES,
|
38
|
+
)
|
68
39
|
|
69
40
|
from . import settings, utils
|
70
41
|
from .nabucommon import ResultsLocalRun, ResultSlurmRun, _NabuBaseReconstructor
|
@@ -77,17 +48,16 @@ def run_volume_reconstruction(
|
|
77
48
|
scan: TomwerScanBase,
|
78
49
|
config: dict,
|
79
50
|
dry_run: bool,
|
80
|
-
process_id:
|
51
|
+
process_id: int | None = None,
|
81
52
|
) -> tuple:
|
82
53
|
"""
|
83
54
|
Run a volume reconstruction. Scan need to have reconstruction parameters for nabu.
|
84
55
|
|
85
56
|
Behavior: will clear link to the last volume reconstructed
|
86
57
|
|
87
|
-
:param
|
58
|
+
:param process_id: optional process id
|
88
59
|
|
89
60
|
:return: succeed, stdouts, stderrs, configs, future_scan
|
90
|
-
:rtype: tuple
|
91
61
|
"""
|
92
62
|
|
93
63
|
if scan.nabu_recons_params in ({}, None):
|
@@ -199,7 +169,7 @@ class VolumeRunner(_NabuBaseReconstructor):
|
|
199
169
|
self,
|
200
170
|
scan: TomwerScanBase,
|
201
171
|
config_nabu,
|
202
|
-
cluster_config:
|
172
|
+
cluster_config: dict | None,
|
203
173
|
dry_run: bool,
|
204
174
|
target: Target,
|
205
175
|
process_name: str,
|
@@ -217,15 +187,20 @@ class VolumeRunner(_NabuBaseReconstructor):
|
|
217
187
|
def configuration(self):
|
218
188
|
return self._config
|
219
189
|
|
190
|
+
@property
|
191
|
+
def processed_data_folder_name(self):
|
192
|
+
"""return the specific processed folder name associated to this type of reconstruction."""
|
193
|
+
return PROCESS_FOLDER_RECONSTRUCTED_VOLUMES
|
194
|
+
|
220
195
|
@docstring(_NabuBaseReconstructor)
|
221
196
|
def run(self) -> Iterable:
|
222
197
|
dataset_params = self.scan.get_nabu_dataset_info()
|
223
198
|
if "dataset" in self.configuration:
|
224
199
|
dataset_params.update(self.configuration["dataset"])
|
225
200
|
self.configuration["dataset"] = dataset_params
|
226
|
-
|
227
|
-
|
228
|
-
|
201
|
+
|
202
|
+
self.configuration["resources"] = self.configuration.get("resources", {})
|
203
|
+
self.configuration["resources"]["method"] = "local"
|
229
204
|
|
230
205
|
# force overwrite results
|
231
206
|
if "output" not in self.configuration:
|
@@ -337,12 +312,8 @@ class VolumeRunner(_NabuBaseReconstructor):
|
|
337
312
|
def _get_file_basename_reconstruction(self, pag, db, ctf, axis):
|
338
313
|
"""
|
339
314
|
|
340
|
-
:param
|
341
|
-
:param
|
342
|
-
if None, we want to reconstruct the
|
343
|
-
entire volume
|
344
|
-
:param bool pag: is it a paganin reconstruction
|
345
|
-
:param int db: delta / beta parameter
|
315
|
+
:param pag: is it a Paganin reconstruction
|
316
|
+
:param db: delta / beta parameter
|
346
317
|
:param axis: axis over which the reconstruction goes. For volume always expected to be z. So ignored in the function
|
347
318
|
:return: basename of the file reconstructed (without any extension)
|
348
319
|
"""
|
@@ -373,7 +344,12 @@ class NabuVolumeTask(
|
|
373
344
|
Task,
|
374
345
|
SuperviseProcess,
|
375
346
|
input_names=("data", "nabu_params"),
|
376
|
-
output_names=(
|
347
|
+
output_names=(
|
348
|
+
"data",
|
349
|
+
"volumes",
|
350
|
+
"future_tomo_obj",
|
351
|
+
"data_portal_processed_datasets",
|
352
|
+
),
|
377
353
|
optional_input_names=(
|
378
354
|
"dry_run",
|
379
355
|
"nabu_extra_params", # some parameter that must update 'nabu_params' before launching the reconstruction. Such as z range...
|
@@ -530,29 +506,27 @@ class NabuVolumeTask(
|
|
530
506
|
self.outputs.future_tomo_obj = future_tomo_obj
|
531
507
|
|
532
508
|
# build screenshots
|
509
|
+
data_portal_processed_datasets = []
|
533
510
|
if scan.latest_vol_reconstructions is not None:
|
534
|
-
|
535
|
-
|
536
|
-
|
537
|
-
|
538
|
-
select_screenshot_from_volume(
|
539
|
-
VolumeFactory.create_tomo_object_from_identifier(
|
540
|
-
rec_identifier
|
541
|
-
)
|
542
|
-
)
|
511
|
+
for volume_id in scan.latest_vol_reconstructions:
|
512
|
+
try:
|
513
|
+
volume = VolumeFactory.create_tomo_object_from_identifier(
|
514
|
+
identifier=volume_id
|
543
515
|
)
|
544
|
-
|
545
|
-
|
546
|
-
|
547
|
-
|
548
|
-
|
549
|
-
|
550
|
-
|
551
|
-
|
552
|
-
|
553
|
-
|
554
|
-
|
555
|
-
|
516
|
+
except Exception as e:
|
517
|
+
_logger.error(
|
518
|
+
f"Fail to build volume from {volume_id}. Error is {e}"
|
519
|
+
)
|
520
|
+
else:
|
521
|
+
icatReconstructedDataset = DracReconstructedVolumeDataset(
|
522
|
+
tomo_obj=volume,
|
523
|
+
source_scan=scan,
|
524
|
+
)
|
525
|
+
data_portal_processed_datasets.append(icatReconstructedDataset)
|
526
|
+
|
527
|
+
self.outputs.data_portal_processed_datasets = tuple(
|
528
|
+
data_portal_processed_datasets
|
529
|
+
)
|
556
530
|
|
557
531
|
def set_configuration(self, configuration: dict) -> None:
|
558
532
|
Task.set_configuration(self, configuration=configuration)
|
@@ -7,3 +7,13 @@ class NabuPlane(_Enum):
|
|
7
7
|
YZ = "YZ"
|
8
8
|
XZ = "XZ"
|
9
9
|
XY = "XY"
|
10
|
+
|
11
|
+
@classmethod
|
12
|
+
def from_value(cls, value):
|
13
|
+
if value == 0:
|
14
|
+
return NabuPlane.XY
|
15
|
+
elif value == 1:
|
16
|
+
return NabuPlane.XZ
|
17
|
+
elif value == 2:
|
18
|
+
return NabuPlane.YZ
|
19
|
+
return super().from_value(value=value)
|
@@ -1,32 +1,5 @@
|
|
1
1
|
# coding: utf-8
|
2
|
-
|
3
|
-
#
|
4
|
-
# Copyright (c) 2016-2020 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__ = "06/08/2020"
|
29
|
-
|
2
|
+
from __future__ import annotations
|
30
3
|
|
31
4
|
import logging
|
32
5
|
|
@@ -1,32 +1,4 @@
|
|
1
1
|
# coding: utf-8
|
2
|
-
# /*##########################################################################
|
3
|
-
#
|
4
|
-
# Copyright (c) 2016-2020 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__ = "26/10/2021"
|
29
|
-
|
30
2
|
|
31
3
|
from silx.utils.enum import Enum as _Enum
|
32
4
|
|