tomwer 1.3.26__py3-none-any.whl → 1.4.0__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 +51 -60
- 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 +41 -84
- 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 -10
- 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 +16 -5
- 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 +47 -804
- tomwer/core/process/reconstruction/axis/mode.py +89 -25
- tomwer/core/process/reconstruction/axis/params.py +131 -283
- tomwer/core/process/reconstruction/axis/projectiontype.py +0 -28
- tomwer/core/process/reconstruction/axis/side.py +8 -0
- 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 +64 -68
- tomwer/core/process/reconstruction/nabu/nabuslices.py +63 -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 +22 -51
- tomwer/core/process/reconstruction/sadeltabeta/params.py +2 -31
- tomwer/core/process/reconstruction/sadeltabeta/sadeltabeta.py +18 -46
- 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/reconstruction/{test → tests}/test_utils.py +4 -4
- tomwer/core/process/reconstruction/utils/cor.py +8 -4
- 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_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 +2 -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 +48 -54
- tomwer/core/scan/scanbase.py +107 -203
- 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/tests/test_process_registration.py +64 -0
- 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/fonts.py +5 -0
- 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 +275 -0
- tomwer/gui/reconstruction/axis/AxisOptionsWidget.py +313 -0
- tomwer/gui/reconstruction/axis/AxisSettingsWidget.py +797 -0
- tomwer/gui/reconstruction/axis/AxisWidget.py +534 -0
- tomwer/gui/reconstruction/axis/CalculationWidget.py +218 -0
- tomwer/gui/reconstruction/axis/CompareImages.py +11 -44
- tomwer/gui/reconstruction/axis/ControlWidget.py +285 -0
- tomwer/gui/reconstruction/axis/EstimatedCORWidget.py +394 -0
- tomwer/gui/reconstruction/axis/EstimatedCorComboBox.py +118 -0
- tomwer/gui/reconstruction/axis/InputWidget.py +347 -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 +32 -56
- 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 +23 -49
- 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 +16 -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 +25 -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 +5 -33
- 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 +43 -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 +6 -53
- tomwer/synctools/stacks/reconstruction/castvolume.py +12 -43
- tomwer/synctools/stacks/reconstruction/dkrefcopy.py +4 -27
- tomwer/synctools/stacks/reconstruction/nabu.py +3 -28
- tomwer/synctools/stacks/reconstruction/normalization.py +2 -27
- tomwer/synctools/stacks/reconstruction/saaxis.py +2 -27
- tomwer/synctools/stacks/reconstruction/sadeltabeta.py +2 -27
- 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 +199 -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 +2 -2
- {tomwer-1.3.26.dist-info → tomwer-1.4.0.dist-info}/LICENSE +3 -3
- tomwer-1.4.0.dist-info/METADATA +337 -0
- tomwer-1.4.0.dist-info/RECORD +912 -0
- {tomwer-1.3.26.dist-info → tomwer-1.4.0.dist-info}/WHEEL +1 -1
- {tomwer-1.3.26.dist-info → tomwer-1.4.0.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/test/test_axis.py +0 -309
- 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/scan/test/test_process_registration.py +0 -109
- 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 -1392
- 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.26-py3.11-nspkg.pth +0 -1
- tomwer-1.3.26.dist-info/METADATA +0 -292
- tomwer-1.3.26.dist-info/RECORD +0 -785
- tomwer-1.3.26.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/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.26.dist-info → tomwer-1.4.0.dist-info}/top_level.txt +0 -0
@@ -1,134 +1,203 @@
|
|
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__ = "16/06/2021"
|
28
|
-
|
29
1
|
import logging
|
30
2
|
import os
|
31
|
-
import shutil
|
32
|
-
import tempfile
|
33
|
-
import time
|
34
|
-
import weakref
|
35
3
|
|
36
4
|
import numpy
|
37
5
|
import pytest
|
38
6
|
from silx.gui import qt
|
39
|
-
from
|
40
|
-
from
|
41
|
-
|
7
|
+
from tomwer.core.volume.edfvolume import EDFVolume
|
8
|
+
from tomwer.core.volume.hdf5volume import HDF5Volume
|
9
|
+
from tomwer.core.process.reconstruction.output import (
|
10
|
+
PROCESS_FOLDER_RECONSTRUCTED_SLICES,
|
11
|
+
)
|
42
12
|
from tomwer.core.utils.scanutils import MockNXtomo
|
43
13
|
from tomwer.gui.stacks import RadioStack, SliceStack
|
44
14
|
from tomwer.tests.utils import skip_gui_test
|
15
|
+
from tomwer.tests.conftest import qtapp # noqa F401
|
45
16
|
|
46
17
|
logging.disable(logging.INFO)
|
47
18
|
|
48
19
|
|
20
|
+
@pytest.mark.parametrize("use_identifiers", (True, False))
|
49
21
|
@pytest.mark.skipif(skip_gui_test(), reason="skip gui test")
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
22
|
+
def test_slice_stack(
|
23
|
+
qtapp, # noqa F811
|
24
|
+
tmp_path,
|
25
|
+
use_identifiers,
|
26
|
+
):
|
27
|
+
"""
|
28
|
+
:param use_identifiers: If true will add the different tomo object using identifiers instead of class instances.
|
29
|
+
"""
|
30
|
+
widget = SliceStack()
|
31
|
+
widget.setAttribute(qt.Qt.WA_DeleteOnClose)
|
32
|
+
|
33
|
+
url_list = widget._viewer._urlsTable._urlsTable
|
34
|
+
assert url_list.count() == 0
|
35
|
+
n_scan = 5
|
36
|
+
|
37
|
+
root_dir = tmp_path / "test_slice_stack"
|
38
|
+
root_dir.mkdir()
|
39
|
+
|
40
|
+
def create_vol_data(n_slice=1):
|
41
|
+
return numpy.random.random(10 * 10 * n_slice).reshape(n_slice, 10, 10)
|
42
|
+
|
43
|
+
volume_metadata = {
|
44
|
+
"nabu_config": {
|
45
|
+
"reconstruction": {
|
46
|
+
"method": "FBP",
|
47
|
+
},
|
48
|
+
"phase": {
|
49
|
+
"method": "paganin",
|
50
|
+
"delta_beta": 110.0,
|
51
|
+
},
|
52
|
+
},
|
53
|
+
"processing_options": {
|
54
|
+
"reconstruction": {
|
55
|
+
"voxel_size_cm": (0.2, 0.2, 0.2),
|
56
|
+
"rotation_axis_position": 104,
|
57
|
+
"enable_halftomo": True,
|
58
|
+
"fbp_filter_type": "Hilbert",
|
59
|
+
"sample_detector_dist": 0.4,
|
60
|
+
},
|
61
|
+
"take_log": {
|
62
|
+
"log_min_clip": 1.0,
|
63
|
+
"log_max_clip": 10.0,
|
64
|
+
},
|
65
|
+
},
|
66
|
+
}
|
67
|
+
|
68
|
+
# step 1: test adding some scans
|
69
|
+
for i_scan in range(n_scan):
|
70
|
+
scan = MockNXtomo(
|
71
|
+
scan_path=os.path.join(root_dir, f"scan{i_scan}"),
|
72
|
+
n_proj=10,
|
73
|
+
n_ini_proj=10,
|
74
|
+
scan_range=180,
|
75
|
+
dim=10,
|
76
|
+
).scan
|
77
|
+
volume = EDFVolume(
|
78
|
+
folder=os.path.join(
|
79
|
+
scan.path,
|
80
|
+
PROCESS_FOLDER_RECONSTRUCTED_SLICES,
|
81
|
+
f"edf_volume_scan_{i_scan}",
|
82
|
+
),
|
83
|
+
volume_basename=f"edf_volume_scan_{i_scan}",
|
84
|
+
data=create_vol_data(),
|
85
|
+
metadata=volume_metadata,
|
86
|
+
)
|
87
|
+
volume.save()
|
88
|
+
scan.set_latest_reconstructions((volume,))
|
89
|
+
assert len(scan.latest_reconstructions) == 1
|
90
|
+
if use_identifiers:
|
91
|
+
widget.addTomoObj(scan.get_identifier().to_str())
|
92
|
+
else:
|
93
|
+
widget.addTomoObj(scan)
|
94
|
+
|
95
|
+
last_scan_added = scan
|
96
|
+
|
97
|
+
assert url_list.count() == n_scan
|
98
|
+
assert len(widget._volume_id_to_urls) == n_scan
|
99
|
+
|
100
|
+
# step 2: test adding some volumes
|
101
|
+
n_volume = 4
|
102
|
+
last_edf_volume_added = None
|
103
|
+
last_hdf5_volume_added = None
|
104
|
+
|
105
|
+
for i_vol in range(n_volume):
|
106
|
+
volume_metadata["nabu_config"]["phase"]["delta_beta"] += i_vol
|
107
|
+
volume_type = [EDFVolume, HDF5Volume][i_vol % 2]
|
108
|
+
if volume_type == EDFVolume:
|
109
|
+
volume = EDFVolume(
|
110
|
+
folder=root_dir
|
111
|
+
/ PROCESS_FOLDER_RECONSTRUCTED_SLICES
|
112
|
+
/ f"slice_{i_vol}",
|
113
|
+
volume_basename=f"slice_{i_vol}",
|
114
|
+
data=create_vol_data(),
|
115
|
+
metadata=volume_metadata,
|
116
|
+
)
|
117
|
+
last_edf_volume_added = volume
|
118
|
+
elif volume_type == HDF5Volume:
|
119
|
+
volume = HDF5Volume(
|
120
|
+
file_path=os.path.join(
|
121
|
+
root_dir
|
122
|
+
/ PROCESS_FOLDER_RECONSTRUCTED_SLICES
|
123
|
+
/ f"my_vol_{i_vol}.hdf5"
|
124
|
+
),
|
125
|
+
data_path="entry0000",
|
126
|
+
data=create_vol_data(),
|
127
|
+
metadata=volume_metadata,
|
128
|
+
)
|
129
|
+
last_hdf5_volume_added = volume
|
130
|
+
else:
|
131
|
+
raise TypeError
|
132
|
+
volume.save()
|
133
|
+
if use_identifiers:
|
134
|
+
widget.addTomoObj(volume.get_identifier().to_str())
|
135
|
+
else:
|
136
|
+
widget.addTomoObj(volume)
|
137
|
+
|
138
|
+
assert len(widget._volume_id_to_urls) == (n_scan + n_volume)
|
139
|
+
assert len(widget._viewer.getUrls()) == (n_scan + n_volume)
|
140
|
+
|
141
|
+
widget.clear()
|
142
|
+
assert len(widget._volume_id_to_urls) == 0
|
143
|
+
|
144
|
+
# check adding objects from a list of string
|
145
|
+
assert n_volume >= 2, "following test won't be able to be correctly executed"
|
146
|
+
widget._addTomoObjectsFromStrList(
|
147
|
+
[
|
148
|
+
last_hdf5_volume_added.file_path,
|
149
|
+
last_edf_volume_added.url.file_path(),
|
150
|
+
last_scan_added.path,
|
151
|
+
]
|
152
|
+
)
|
153
|
+
# dummy check metadata are displayed
|
154
|
+
widget._viewer._reconsWidget._deltaBetaQLE.text().startswith("1")
|
155
|
+
assert len(widget._volume_id_to_urls) == 3
|
156
|
+
# try adding a non existing path
|
157
|
+
widget._addTomoObjectsFromStrList(
|
158
|
+
[
|
159
|
+
"/none/existing/path",
|
160
|
+
"/none/existing/path.hdf5",
|
161
|
+
]
|
162
|
+
)
|
163
|
+
|
164
|
+
widget.close()
|
165
|
+
|
166
|
+
|
167
|
+
@pytest.mark.parametrize("use_identifiers", (True, False))
|
91
168
|
@pytest.mark.skipif(skip_gui_test(), reason="skip gui test")
|
92
|
-
|
169
|
+
def test_radio_stack(
|
170
|
+
qtapp, # noqa F811
|
171
|
+
tmp_path,
|
172
|
+
use_identifiers: bool,
|
173
|
+
):
|
93
174
|
"""
|
94
|
-
|
95
|
-
The main part of test on mode is done on silx side, test of silx.gui.plot.ImageStack
|
175
|
+
:param use_identifiers: If true will add the different tomo object using identifiers instead of class instances.
|
96
176
|
"""
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
177
|
+
widget = RadioStack()
|
178
|
+
widget.setAttribute(qt.Qt.WA_DeleteOnClose)
|
179
|
+
|
180
|
+
widget_urls = widget._viewer._urlsTable._urlsTable
|
181
|
+
n_scan = 3
|
182
|
+
|
183
|
+
root_dir = tmp_path / "test_radio_stack"
|
184
|
+
root_dir.mkdir()
|
185
|
+
proj_per_scan = 10
|
186
|
+
|
187
|
+
# step 1: test adding some scans
|
188
|
+
for i_scan in range(n_scan):
|
189
|
+
scan = MockNXtomo(
|
190
|
+
scan_path=os.path.join(root_dir, f"scan{i_scan}"),
|
191
|
+
n_proj=proj_per_scan,
|
192
|
+
n_ini_proj=proj_per_scan,
|
193
|
+
scan_range=180,
|
109
194
|
dim=10,
|
110
195
|
).scan
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
def _waitImages(self):
|
120
|
-
for _ in range(5):
|
121
|
-
self.qapp.processEvents()
|
122
|
-
time.sleep(0.1)
|
123
|
-
|
124
|
-
def testASAPMode(self):
|
125
|
-
self._widget.setLoadingMode("load ASAP")
|
126
|
-
self._widget.setForceSync(True)
|
127
|
-
self._widget.addLeafScan(self._scan.master_file)
|
128
|
-
self._waitImages()
|
129
|
-
|
130
|
-
self.spinBox().setValue(20)
|
131
|
-
self._waitImages()
|
132
|
-
|
133
|
-
self.slider().setValue(10)
|
134
|
-
self.qapp.processEvents()
|
196
|
+
if use_identifiers:
|
197
|
+
widget.addTomoObj(scan.get_identifier().to_str())
|
198
|
+
else:
|
199
|
+
widget.addTomoObj(scan)
|
200
|
+
assert widget_urls.count() == n_scan * proj_per_scan
|
201
|
+
|
202
|
+
widget.show()
|
203
|
+
widget.close()
|
@@ -5,8 +5,9 @@ import numpy
|
|
5
5
|
from time import sleep
|
6
6
|
|
7
7
|
from silx.gui import qt
|
8
|
-
from
|
9
|
-
from
|
8
|
+
from tomwer.core.volume.hdf5volume import HDF5Volume
|
9
|
+
from tomwer.core.volume.tiffvolume import TIFFVolume
|
10
|
+
from tomoscan.esrf.volume.tiffvolume import has_tifffile
|
10
11
|
|
11
12
|
from tomwer.tests.conftest import qtapp # noqa F401
|
12
13
|
from tomwer.core.utils.scanutils import MockNXtomo
|
@@ -1,4 +1,4 @@
|
|
1
|
-
from
|
1
|
+
from __future__ import annotations
|
2
2
|
|
3
3
|
from silx.gui import qt
|
4
4
|
|
@@ -27,7 +27,7 @@ class TomoObjOverview(qt.QWidget):
|
|
27
27
|
self._scanOverview.setVisible(False)
|
28
28
|
self._volumeOverview.setVisible(False)
|
29
29
|
|
30
|
-
def setTomoObj(self, tomo_obj:
|
30
|
+
def setTomoObj(self, tomo_obj: TomwerObject | None):
|
31
31
|
"""
|
32
32
|
update sub widgets according to the type of tomo_obj
|
33
33
|
"""
|
@@ -1,5 +1,6 @@
|
|
1
|
+
from __future__ import annotations
|
2
|
+
|
1
3
|
import logging
|
2
|
-
from typing import Optional
|
3
4
|
|
4
5
|
from silx.gui import qt
|
5
6
|
from tomoscan.identifier import VolumeIdentifier
|
@@ -33,7 +34,7 @@ class VolumeOverviewWidget(qt.QWidget):
|
|
33
34
|
self._y_pixel_size = qt.QTreeWidgetItem(self._tree)
|
34
35
|
self._y_pixel_size.setText(0, "y pixel size")
|
35
36
|
|
36
|
-
def setVolume(self, volume:
|
37
|
+
def setVolume(self, volume: TomwerVolumeBase | None):
|
37
38
|
if volume is None:
|
38
39
|
self._x_position.setText(1, "")
|
39
40
|
self._y_position.setText(1, "")
|
@@ -1,7 +1,8 @@
|
|
1
|
+
from __future__ import annotations
|
2
|
+
|
1
3
|
import logging
|
2
4
|
import weakref
|
3
5
|
import h5py
|
4
|
-
from typing import Union
|
5
6
|
|
6
7
|
import numpy
|
7
8
|
import numpy.lib.npyio
|
@@ -11,13 +12,14 @@ from silx.gui.colors import Colormap
|
|
11
12
|
from silx.gui.data.DataViewerFrame import DataViewerFrame
|
12
13
|
from silx.gui.data.DataViews import IMAGE_MODE, DataViewHooks
|
13
14
|
from silx.gui.dialog.ColormapDialog import ColormapDialog
|
14
|
-
from tomoscan.esrf.volume.hdf5volume import HDF5Volume
|
15
|
-
from tomoscan.factory import Factory
|
16
|
-
from tomoscan.identifier import VolumeIdentifier
|
17
|
-
from tomoscan.volumebase import VolumeBase
|
18
15
|
|
16
|
+
from tomwer.core.volume.volumebase import TomwerVolumeBase
|
17
|
+
from tomwer.core.volume.volumefactory import VolumeFactory
|
19
18
|
from tomwer.core.scan.scanbase import TomwerScanBase
|
20
19
|
from tomwer.gui.visualization.reconstructionparameters import ReconstructionParameters
|
20
|
+
from tomwer.core.volume.hdf5volume import HDF5Volume
|
21
|
+
from tomoscan.identifier import VolumeIdentifier
|
22
|
+
|
21
23
|
from silx.gui.widgets.WaitingOverlay import WaitingOverlay
|
22
24
|
|
23
25
|
_logger = logging.getLogger(__name__)
|
@@ -37,17 +39,27 @@ class _ScanInfo(qt.QWidget):
|
|
37
39
|
self._volumeQLE.setReadOnly(True)
|
38
40
|
self.layout().addRow("volume", self._volumeQLE)
|
39
41
|
|
40
|
-
def setScan(self, scan):
|
42
|
+
def setScan(self, scan: None | TomwerScanBase):
|
41
43
|
if scan is None:
|
42
|
-
self._scanQLE.
|
43
|
-
self._volumeQLE.setText("")
|
44
|
+
self._scanQLE.clear()
|
44
45
|
else:
|
45
|
-
assert isinstance(
|
46
|
+
assert isinstance(
|
47
|
+
scan, TomwerScanBase
|
48
|
+
), f"scan should be an instance of {TomwerScanBase}. Got {type(scan)}"
|
46
49
|
self._scanQLE.setText(str(scan))
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
50
|
+
self.setVolumes(volumes=scan.latest_vol_reconstructions)
|
51
|
+
|
52
|
+
def setVolumes(self, volumes: tuple[str | VolumeIdentifier | TomwerVolumeBase]):
|
53
|
+
"""
|
54
|
+
Display volume metadata. At the moment only display the identifier of the first reconstructed volume
|
55
|
+
"""
|
56
|
+
self._volumeQLE.clear()
|
57
|
+
if len(volumes) > 0:
|
58
|
+
volume = volumes[0]
|
59
|
+
if not isinstance(volume, TomwerVolumeBase):
|
60
|
+
volume = VolumeFactory.create_tomo_object_from_identifier(volume)
|
61
|
+
self._volumeQLE.setText(str(volume))
|
62
|
+
self._volumeQLE.setToolTip(volume.data_url.file_path())
|
51
63
|
|
52
64
|
def clear(self):
|
53
65
|
self.setScan(None)
|
@@ -71,11 +83,8 @@ class _TomoApplicationContext(DataViewHooks):
|
|
71
83
|
self.__settings = settings
|
72
84
|
self.__recentFiles = []
|
73
85
|
|
74
|
-
def getSettings(self):
|
75
|
-
"""Returns actual application settings.
|
76
|
-
|
77
|
-
:rtype: qt.QSettings
|
78
|
-
"""
|
86
|
+
def getSettings(self) -> qt.QSettings:
|
87
|
+
"""Returns actual application settings."""
|
79
88
|
return self.__settings
|
80
89
|
|
81
90
|
def restoreLibrarySettings(self):
|
@@ -154,17 +163,15 @@ class _TomoApplicationContext(DataViewHooks):
|
|
154
163
|
settings.remove(key)
|
155
164
|
settings.endGroup()
|
156
165
|
|
157
|
-
def getRecentFiles(self):
|
166
|
+
def getRecentFiles(self) -> list[str]:
|
158
167
|
"""Returns the list of recently opened files.
|
159
168
|
|
160
169
|
The list is limited to the last 10 entries. The newest file path is
|
161
170
|
in first.
|
162
|
-
|
163
|
-
:rtype: List[str]
|
164
171
|
"""
|
165
172
|
return self.__recentFiles
|
166
173
|
|
167
|
-
def pushRecentFile(self, filePath):
|
174
|
+
def pushRecentFile(self, filePath: str):
|
168
175
|
"""Push a new recent file to the list.
|
169
176
|
|
170
177
|
If the file is duplicated in the list, all duplications are removed
|
@@ -181,26 +188,22 @@ class _TomoApplicationContext(DataViewHooks):
|
|
181
188
|
self.__recentFiles.pop()
|
182
189
|
|
183
190
|
def clearRencentFiles(self):
|
184
|
-
"""Clear the history of the
|
191
|
+
"""Clear the history of the recent files."""
|
185
192
|
self.__recentFiles[:] = []
|
186
193
|
|
187
|
-
def getColormap(self, view):
|
194
|
+
def getColormap(self, view) -> Colormap:
|
188
195
|
"""Returns a default colormap.
|
189
196
|
|
190
197
|
Override from DataViewHooks
|
191
|
-
|
192
|
-
:rtype: Colormap
|
193
198
|
"""
|
194
199
|
if self.__defaultColormap is None:
|
195
200
|
self.__defaultColormap = Colormap(name="viridis")
|
196
201
|
return self.__defaultColormap
|
197
202
|
|
198
|
-
def getColormapDialog(self, view):
|
203
|
+
def getColormapDialog(self, view) -> ColormapDialog:
|
199
204
|
"""Returns a shared color dialog as default for all the views.
|
200
205
|
|
201
206
|
Override from DataViewHooks
|
202
|
-
|
203
|
-
:rtype: ColorDialog
|
204
207
|
"""
|
205
208
|
if self.__defaultColormapDialog is None:
|
206
209
|
parent = self.__parent()
|
@@ -280,19 +283,20 @@ class VolumeViewer(qt.QMainWindow):
|
|
280
283
|
self._infoWidget.setScan(scan)
|
281
284
|
|
282
285
|
def setVolume(self, volume):
|
283
|
-
self.clear()
|
286
|
+
self.clear(clear_infos=False)
|
284
287
|
if volume is None:
|
285
288
|
return
|
286
289
|
self._set_volumes(volumes=(volume,))
|
290
|
+
self._infoWidget.setVolumes((volume,))
|
287
291
|
|
288
|
-
def _get_data_volume(self, volume:
|
292
|
+
def _get_data_volume(self, volume: TomwerVolumeBase):
|
289
293
|
"""
|
290
294
|
load the data of the requested volume.
|
291
|
-
:return: (data:
|
295
|
+
:return: (data: str | None, state: str) state can be "loaded", "loading" or "failed"
|
292
296
|
"""
|
293
|
-
if not isinstance(volume,
|
297
|
+
if not isinstance(volume, TomwerVolumeBase):
|
294
298
|
raise TypeError(
|
295
|
-
f"volume is expected to be an instance of {
|
299
|
+
f"volume is expected to be an instance of {TomwerVolumeBase}. Not {type(volume)}"
|
296
300
|
)
|
297
301
|
|
298
302
|
self._close_h5_file()
|
@@ -306,7 +310,6 @@ class VolumeViewer(qt.QMainWindow):
|
|
306
310
|
libver="latest",
|
307
311
|
swmr=True,
|
308
312
|
)
|
309
|
-
|
310
313
|
if volume.data_url.data_path() in self._h5_file:
|
311
314
|
data = self._h5_file[volume.data_url.data_path()]
|
312
315
|
state = "loaded"
|
@@ -343,7 +346,7 @@ class VolumeViewer(qt.QMainWindow):
|
|
343
346
|
self._stopExistingLoaderThread()
|
344
347
|
if sender.volume.data is None:
|
345
348
|
_logger.error(f"Failed to load volume {sender.volume.get_identifier()}")
|
346
|
-
|
349
|
+
elif sender.volume is not None:
|
347
350
|
self.setVolume(sender.volume)
|
348
351
|
|
349
352
|
def _loadAndDisplay(self, volume):
|
@@ -377,8 +380,8 @@ class VolumeViewer(qt.QMainWindow):
|
|
377
380
|
)
|
378
381
|
volume = volumes[0]
|
379
382
|
if isinstance(volume, (str, VolumeIdentifier)):
|
380
|
-
volume =
|
381
|
-
elif isinstance(volume,
|
383
|
+
volume = VolumeFactory.create_tomo_object_from_identifier(volume)
|
384
|
+
elif isinstance(volume, TomwerVolumeBase):
|
382
385
|
pass
|
383
386
|
else:
|
384
387
|
raise TypeError(
|
@@ -412,15 +415,16 @@ class VolumeViewer(qt.QMainWindow):
|
|
412
415
|
)
|
413
416
|
return
|
414
417
|
|
415
|
-
def _set_volume(self, volume:
|
418
|
+
def _set_volume(self, volume: numpy.ndarray | h5py.Dataset):
|
416
419
|
self._centralWidget.setData(volume)
|
417
420
|
self._centralWidget.setDisplayMode(self.__last_mode or IMAGE_MODE)
|
418
421
|
|
419
|
-
def clear(self):
|
422
|
+
def clear(self, clear_infos=True):
|
420
423
|
if self._centralWidget.displayMode():
|
421
424
|
self.__last_mode = self._centralWidget.displayMode()
|
422
425
|
self._close_h5_file()
|
423
|
-
|
426
|
+
if clear_infos:
|
427
|
+
self._infoWidget.clear()
|
424
428
|
self._centralWidget.setData(None)
|
425
429
|
# if clear stop loading any volume
|
426
430
|
self._stopExistingLoaderThread()
|
@@ -434,9 +438,9 @@ class VolumeLoader(qt.QThread):
|
|
434
438
|
simple thread that load a volume in memory
|
435
439
|
"""
|
436
440
|
|
437
|
-
def __init__(self, volume:
|
441
|
+
def __init__(self, volume: TomwerVolumeBase) -> None:
|
438
442
|
super().__init__()
|
439
|
-
if not isinstance(volume,
|
443
|
+
if not isinstance(volume, TomwerVolumeBase):
|
440
444
|
raise TypeError()
|
441
445
|
self.__volume = volume
|
442
446
|
|
tomwer/io/__init__.py
CHANGED
tomwer/io/utils/h5pyutils.py
CHANGED
@@ -1,34 +1,8 @@
|
|
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
2
|
"""
|
26
3
|
contains utils for inputs and outputs
|
27
4
|
"""
|
28
|
-
|
29
|
-
__authors__ = ["H. Payno"]
|
30
|
-
__license__ = "MIT"
|
31
|
-
__date__ = "22/04/2021"
|
5
|
+
from __future__ import annotations
|
32
6
|
|
33
7
|
|
34
8
|
import contextlib
|
@@ -0,0 +1,10 @@
|
|
1
|
+
from tomwer.io.utils.raw_and_processed_data import file_is_on_processed_data
|
2
|
+
|
3
|
+
|
4
|
+
def test_file_is_on_processed_data():
|
5
|
+
"""test file_is_on_processed_data function"""
|
6
|
+
assert file_is_on_processed_data("/path/to/file") == False
|
7
|
+
assert file_is_on_processed_data("/path/to/PROCESSED_DATA/file") == True
|
8
|
+
assert file_is_on_processed_data("/path/to/RAW_DATA/file") == False
|
9
|
+
assert file_is_on_processed_data("/path/to/RAW_DATA/PROCESSED_DATA/file") == True
|
10
|
+
assert file_is_on_processed_data("/path/to/PROCESSED_DATA/RAW_DATA/file") == False
|