tomwer 1.1.0rc7__py3-none-any.whl → 1.2.0a0__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/__init__.py +1 -0
- orangecontrib/tomwer/orange/managedprocess.py +6 -4
- orangecontrib/tomwer/state_summary.py +3 -2
- orangecontrib/tomwer/widgets/__init__.py +2 -2
- orangecontrib/tomwer/widgets/cluster/FutureSupervisorOW.py +9 -7
- orangecontrib/tomwer/widgets/cluster/SlurmClusterOW.py +6 -5
- orangecontrib/tomwer/widgets/control/AdvancementOW.py +2 -1
- orangecontrib/tomwer/widgets/control/DataDiscoveryOW.py +235 -0
- orangecontrib/tomwer/widgets/control/DataListOW.py +7 -5
- orangecontrib/tomwer/widgets/control/DataListenerOW.py +13 -14
- orangecontrib/tomwer/widgets/control/DataSelectorOW.py +8 -6
- orangecontrib/tomwer/widgets/control/DataTransfertOW.py +9 -9
- orangecontrib/tomwer/widgets/control/DataValidatorOW.py +7 -8
- orangecontrib/tomwer/widgets/control/DataWatcherOW.py +25 -17
- orangecontrib/tomwer/widgets/control/EDF2NXTomomillOW.py +8 -8
- orangecontrib/tomwer/widgets/control/FilterOW.py +9 -8
- orangecontrib/tomwer/widgets/control/NXTomomillMixIn.py +3 -4
- orangecontrib/tomwer/widgets/control/NXTomomillOW.py +13 -14
- orangecontrib/tomwer/widgets/control/NotifierOW.py +3 -4
- orangecontrib/tomwer/widgets/control/SingleTomoObjOW.py +7 -5
- orangecontrib/tomwer/widgets/control/TimerOW.py +6 -5
- orangecontrib/tomwer/widgets/control/TomoObjSerieOW.py +5 -3
- orangecontrib/tomwer/widgets/control/VolumeSelector.py +8 -6
- orangecontrib/tomwer/widgets/control/VolumeSymLinkOW.py +10 -9
- orangecontrib/tomwer/widgets/control/icons/datadiscover.png +0 -0
- orangecontrib/tomwer/widgets/control/icons/datadiscover.svg +137 -0
- orangecontrib/tomwer/widgets/control/icons/nxtomomill.png +0 -0
- orangecontrib/tomwer/widgets/control/icons/nxtomomill.svg +5 -8
- orangecontrib/tomwer/widgets/debugtools/DatasetGeneratorOW.py +13 -15
- orangecontrib/tomwer/widgets/debugtools/ObjectInspectorOW.py +3 -2
- orangecontrib/tomwer/widgets/edit/DarkFlatPatchOW.py +10 -7
- orangecontrib/tomwer/widgets/edit/ImageKeyEditorOW.py +8 -5
- orangecontrib/tomwer/widgets/edit/ImageKeyUpgraderOW.py +5 -2
- orangecontrib/tomwer/widgets/edit/NXtomoEditorOW.py +6 -3
- orangecontrib/tomwer/widgets/edit/test/test_dark_flat_patch.py +8 -6
- orangecontrib/tomwer/widgets/edit/test/test_image_key_editor.py +3 -1
- orangecontrib/tomwer/widgets/edit/test/test_image_key_upgrader.py +3 -1
- orangecontrib/tomwer/widgets/edit/test/test_nxtomo_editor.py +3 -1
- orangecontrib/tomwer/widgets/other/PythonScriptOW.py +11 -11
- orangecontrib/tomwer/widgets/reconstruction/AxisOW.py +22 -27
- orangecontrib/tomwer/widgets/reconstruction/CastNabuVolumeOW.py +13 -11
- orangecontrib/tomwer/widgets/reconstruction/DarkRefAndCopyOW.py +11 -9
- orangecontrib/tomwer/widgets/reconstruction/NabuOW.py +16 -14
- orangecontrib/tomwer/widgets/reconstruction/NabuVolumeOW.py +27 -32
- orangecontrib/tomwer/widgets/reconstruction/SAAxisOW.py +32 -38
- orangecontrib/tomwer/widgets/reconstruction/SADeltaBetaOW.py +26 -26
- orangecontrib/tomwer/widgets/reconstruction/SinoNormOW.py +16 -18
- orangecontrib/tomwer/widgets/reconstruction/TofuOW.py +9 -7
- orangecontrib/tomwer/widgets/reconstruction/icons/nabu_2d.png +0 -0
- orangecontrib/tomwer/widgets/reconstruction/icons/nabu_2d.svg +8 -11
- orangecontrib/tomwer/widgets/visualization/DataViewerOW.py +8 -8
- orangecontrib/tomwer/widgets/visualization/DiffViewerOW.py +6 -4
- orangecontrib/tomwer/widgets/visualization/LivesliceOW.py +4 -3
- orangecontrib/tomwer/widgets/visualization/NXtomoMetadataViewerOW.py +4 -3
- orangecontrib/tomwer/widgets/visualization/RadioStackOW.py +6 -4
- orangecontrib/tomwer/widgets/visualization/SampleMovedOW.py +8 -6
- orangecontrib/tomwer/widgets/visualization/SinogramViewerOW.py +6 -3
- orangecontrib/tomwer/widgets/visualization/SliceStackOW.py +7 -5
- orangecontrib/tomwer/widgets/visualization/VolumeViewerOW.py +5 -4
- tomwer/__init__.py +1 -1
- tomwer/__main__.py +2 -1
- tomwer/app/axis.py +18 -14
- tomwer/app/canvas.py +7 -5
- tomwer/app/canvas_launcher/config.py +8 -6
- tomwer/app/canvas_launcher/environ.py +1 -2
- tomwer/app/canvas_launcher/mainwindow.py +23 -22
- tomwer/app/canvas_launcher/splash.py +1 -0
- tomwer/app/canvas_launcher/widgetsscheme.py +3 -3
- tomwer/app/darkref.py +7 -6
- tomwer/app/darkrefpatch.py +8 -6
- tomwer/app/diffframe.py +6 -4
- tomwer/app/imagekeyeditor.py +10 -10
- tomwer/app/imagekeyupgrader.py +8 -6
- tomwer/app/intensitynormalization.py +8 -8
- tomwer/app/lamino.py +5 -3
- tomwer/app/nabuapp.py +8 -6
- tomwer/app/nxtomoeditor.py +6 -5
- tomwer/app/radiostack.py +8 -6
- tomwer/app/rsync.py +3 -3
- tomwer/app/saaxis.py +22 -23
- tomwer/app/sadeltabeta.py +21 -21
- tomwer/app/samplemoved.py +8 -6
- tomwer/app/scanviewer.py +7 -6
- tomwer/app/sinogramviewer.py +8 -7
- tomwer/app/slicestack.py +8 -6
- tomwer/app/stopdatalistener.py +2 -1
- tomwer/core/futureobject.py +15 -6
- tomwer/core/log/logger.py +4 -3
- tomwer/core/log/processlog.py +0 -1
- tomwer/core/process/conditions/filters.py +3 -3
- tomwer/core/process/control/datadiscovery.py +7 -0
- tomwer/core/process/control/datalistener/datalistener.py +22 -21
- tomwer/core/process/control/datalistener/rpcserver.py +18 -28
- tomwer/core/process/control/datawatcher/datawatcher.py +15 -12
- tomwer/core/process/control/datawatcher/datawatcherobserver.py +11 -8
- tomwer/core/process/control/datawatcher/datawatcherprocess.py +7 -5
- tomwer/core/process/control/datawatcher/edfdwprocess.py +5 -15
- tomwer/core/process/control/datawatcher/hdf5dwprocess.py +3 -1
- tomwer/core/process/control/datawatcher/status.py +2 -0
- tomwer/core/process/control/nxtomomill.py +7 -6
- tomwer/core/process/control/scanlist.py +2 -1
- tomwer/core/process/control/scanselector.py +1 -0
- tomwer/core/process/control/scantransfer.py +12 -12
- tomwer/core/process/control/scanvalidator.py +7 -6
- tomwer/core/process/control/test/test_volume_link.py +5 -4
- tomwer/core/process/control/timer.py +4 -4
- tomwer/core/process/control/volumeselector.py +1 -0
- tomwer/core/process/control/volumesymlink.py +8 -9
- tomwer/core/process/edit/darkflatpatch.py +9 -12
- tomwer/core/process/edit/imagekeyeditor.py +11 -13
- tomwer/core/process/reconstruction/axis/axis.py +36 -38
- tomwer/core/process/reconstruction/axis/mode.py +2 -1
- tomwer/core/process/reconstruction/axis/params.py +23 -28
- tomwer/core/process/reconstruction/darkref/darkrefs.py +23 -27
- tomwer/core/process/reconstruction/darkref/darkrefscopy.py +14 -18
- tomwer/core/process/reconstruction/darkref/params.py +3 -1
- tomwer/core/process/reconstruction/lamino/tofu.py +11 -15
- tomwer/core/process/reconstruction/nabu/castvolume.py +15 -18
- tomwer/core/process/reconstruction/nabu/nabucommon.py +19 -20
- tomwer/core/process/reconstruction/nabu/nabuscores.py +16 -14
- tomwer/core/process/reconstruction/nabu/nabuslices.py +27 -22
- tomwer/core/process/reconstruction/nabu/nabuvolume.py +20 -22
- tomwer/core/process/reconstruction/nabu/slurm.py +36 -0
- tomwer/core/process/reconstruction/nabu/utils.py +18 -15
- tomwer/core/process/reconstruction/normalization/__init__.py +1 -3
- tomwer/core/process/reconstruction/normalization/normalization.py +16 -21
- tomwer/core/process/reconstruction/normalization/params.py +2 -2
- tomwer/core/process/reconstruction/saaxis/__init__.py +1 -1
- tomwer/core/process/reconstruction/saaxis/params.py +6 -7
- tomwer/core/process/reconstruction/saaxis/saaxis.py +44 -55
- tomwer/core/process/reconstruction/sadeltabeta/__init__.py +1 -1
- tomwer/core/process/reconstruction/sadeltabeta/params.py +9 -13
- tomwer/core/process/reconstruction/sadeltabeta/sadeltabeta.py +40 -46
- tomwer/core/process/reconstruction/scores/__init__.py +2 -2
- tomwer/core/process/reconstruction/scores/params.py +6 -9
- tomwer/core/process/reconstruction/scores/scores.py +10 -13
- tomwer/core/process/reconstruction/test/test_axis_params.py +4 -2
- tomwer/core/process/reconstruction/test/test_darkref.py +1 -2
- tomwer/core/process/reconstruction/test/test_darkref_copy.py +3 -1
- tomwer/core/process/reconstruction/test/test_paramsbase.py +1 -1
- tomwer/core/process/reconstruction/test/test_saaxis.py +11 -7
- tomwer/core/process/reconstruction/test/test_sadeltabeta.py +5 -4
- tomwer/core/process/reconstruction/test/test_utils.py +3 -2
- tomwer/core/process/script/python.py +6 -8
- tomwer/core/process/task.py +11 -12
- tomwer/core/process/test/test_axis.py +12 -9
- tomwer/core/process/test/test_conditions.py +8 -8
- tomwer/core/process/test/test_dark_and_flat.py +9 -8
- tomwer/core/process/test/test_data_listener.py +5 -3
- tomwer/core/process/test/test_data_transfer.py +14 -12
- tomwer/core/process/test/test_data_watcher.py +3 -1
- tomwer/core/process/test/test_lamino.py +3 -1
- tomwer/core/process/test/test_nabu.py +13 -12
- tomwer/core/process/test/test_normalization.py +7 -5
- tomwer/core/process/test/test_timer.py +2 -1
- tomwer/core/process/utils.py +9 -9
- tomwer/core/progress.py +3 -4
- tomwer/core/scan/blissscan.py +4 -2
- tomwer/core/scan/edfscan.py +26 -29
- tomwer/core/scan/futurescan.py +2 -1
- tomwer/core/scan/hdf5scan.py +21 -28
- tomwer/core/scan/scanbase.py +18 -18
- tomwer/core/scan/scanfactory.py +20 -21
- tomwer/core/scan/scantype.py +7 -0
- tomwer/core/scan/test/test_edf.py +2 -1
- tomwer/core/scan/test/test_future_scan.py +2 -1
- tomwer/core/scan/test/test_h5.py +5 -4
- tomwer/core/scan/test/test_process_registration.py +5 -3
- tomwer/core/scan/test/test_scan.py +11 -9
- tomwer/core/settings.py +1 -2
- tomwer/core/test/test_lamino.py +3 -2
- tomwer/core/test/test_scanutils.py +3 -2
- tomwer/core/test/test_utils.py +6 -4
- tomwer/core/utils/__init__.py +8 -6
- tomwer/core/utils/deprecation.py +2 -2
- tomwer/core/utils/image.py +4 -3
- tomwer/core/utils/laminoutils.py +80 -0
- tomwer/core/utils/locker.py +1 -1
- tomwer/core/utils/normalization.py +1 -0
- tomwer/core/utils/nxtomoutils.py +2 -1
- tomwer/core/utils/scanutils.py +9 -6
- tomwer/core/utils/slurm.py +2 -1
- tomwer/core/utils/time.py +2 -4
- tomwer/core/utils/volumeutils.py +2 -1
- tomwer/core/volume/__init__.py +1 -1
- tomwer/core/volume/edfvolume.py +4 -3
- tomwer/core/volume/hdf5volume.py +6 -8
- tomwer/core/volume/jp2kvolume.py +4 -3
- tomwer/core/volume/rawvolume.py +7 -7
- tomwer/core/volume/tiffvolume.py +8 -6
- tomwer/core/volume/volumebase.py +1 -0
- tomwer/core/volume/volumefactory.py +18 -18
- tomwer/gui/cluster/slurm.py +2 -0
- tomwer/gui/cluster/supervisor.py +4 -2
- tomwer/gui/cluster/test/test_cluster.py +5 -4
- tomwer/gui/cluster/test/test_supervisor.py +4 -2
- tomwer/gui/conditions/filter.py +7 -6
- tomwer/gui/control/actions.py +1 -0
- tomwer/gui/control/datadiscovery.py +168 -0
- tomwer/gui/control/datalist.py +29 -28
- tomwer/gui/control/datalistener.py +8 -4
- tomwer/gui/control/datareacheractions.py +2 -1
- tomwer/gui/control/datatransfert.py +3 -1
- tomwer/gui/control/datavalidator.py +11 -12
- tomwer/gui/control/datawatcher/configuration.py +12 -1
- tomwer/gui/control/datawatcher/controlwidget.py +116 -0
- tomwer/gui/control/datawatcher/datawatcher.py +63 -121
- tomwer/gui/control/datawatcher/datawatcherobserver.py +7 -9
- tomwer/gui/control/history.py +3 -1
- tomwer/gui/control/observations.py +7 -7
- tomwer/gui/control/scanselectorwidget.py +4 -2
- tomwer/gui/control/selectorwidgetbase.py +3 -1
- tomwer/gui/control/serie/seriecreator.py +11 -12
- tomwer/gui/control/singletomoobj.py +4 -4
- tomwer/gui/control/test/test_datadiscovery.py +27 -0
- tomwer/gui/control/test/test_datalist.py +7 -6
- tomwer/gui/control/test/test_datalistener.py +4 -4
- tomwer/gui/control/test/test_datavalidator.py +3 -1
- tomwer/gui/control/test/test_inputwidget.py +5 -4
- tomwer/gui/control/test/test_process_manager.py +3 -3
- tomwer/gui/control/test/test_scanselector.py +6 -4
- tomwer/gui/control/test/test_scanvalidator.py +6 -5
- tomwer/gui/control/test/test_single_tomo_obj.py +5 -3
- tomwer/gui/control/test/test_volume_dialog.py +7 -5
- tomwer/gui/control/test/test_volumeselector.py +8 -6
- tomwer/gui/control/volumeselectorwidget.py +2 -1
- tomwer/gui/debugtools/datasetgenerator.py +2 -1
- tomwer/gui/debugtools/objectinspector.py +6 -7
- tomwer/gui/edit/dkrfpatch.py +11 -10
- tomwer/gui/edit/imagekeyeditor.py +12 -12
- tomwer/gui/edit/nxtomoeditor.py +8 -7
- tomwer/gui/edit/test/test_dkrf_patch.py +10 -9
- tomwer/gui/edit/test/test_image_key_editor.py +8 -6
- tomwer/gui/edit/test/test_nx_editor.py +7 -5
- tomwer/gui/icons.py +3 -2
- tomwer/gui/illustrations.py +3 -2
- tomwer/gui/imagefromfile.py +3 -1
- tomwer/gui/qfolderdialog.py +14 -12
- tomwer/gui/reconstruction/axis/CompareImages.py +9 -8
- tomwer/gui/reconstruction/axis/__init__.py +1 -1
- tomwer/gui/reconstruction/axis/axis.py +9 -7
- tomwer/gui/reconstruction/axis/radioaxis.py +30 -32
- tomwer/gui/reconstruction/darkref/darkrefcopywidget.py +6 -5
- tomwer/gui/reconstruction/darkref/darkrefwidget.py +4 -2
- tomwer/gui/reconstruction/lamino/tofu/misc.py +3 -1
- tomwer/gui/reconstruction/lamino/tofu/projections.py +16 -8
- tomwer/gui/reconstruction/lamino/tofu/tofu.py +6 -3
- tomwer/gui/reconstruction/lamino/tofu/tofuexpert.py +5 -2
- tomwer/gui/reconstruction/lamino/tofu/tofuoutput.py +8 -5
- tomwer/gui/reconstruction/nabu/action.py +1 -0
- tomwer/gui/reconstruction/nabu/castvolume.py +6 -4
- tomwer/gui/reconstruction/nabu/check.py +3 -2
- tomwer/gui/reconstruction/nabu/nabuconfig/base.py +5 -2
- tomwer/gui/reconstruction/nabu/nabuconfig/ctf.py +6 -3
- tomwer/gui/reconstruction/nabu/nabuconfig/nabuconfig.py +4 -3
- tomwer/gui/reconstruction/nabu/nabuconfig/output.py +7 -5
- tomwer/gui/reconstruction/nabu/nabuconfig/phase.py +8 -6
- tomwer/gui/reconstruction/nabu/nabuconfig/preprocessing.py +7 -7
- tomwer/gui/reconstruction/nabu/nabuconfig/reconstruction.py +40 -33
- tomwer/gui/reconstruction/nabu/nabuflow.py +7 -4
- tomwer/gui/reconstruction/nabu/slices.py +14 -10
- tomwer/gui/reconstruction/nabu/slurm.py +1 -0
- tomwer/gui/reconstruction/nabu/volume.py +5 -3
- tomwer/gui/reconstruction/normalization/intensity.py +14 -13
- tomwer/gui/reconstruction/saaxis/corrangeselector.py +36 -35
- tomwer/gui/reconstruction/saaxis/dimensionwidget.py +5 -4
- tomwer/gui/reconstruction/saaxis/saaxis.py +17 -17
- tomwer/gui/reconstruction/saaxis/sliceselector.py +5 -5
- tomwer/gui/reconstruction/sadeltabeta/saadeltabeta.py +33 -36
- tomwer/gui/reconstruction/scores/scoreplot.py +19 -18
- tomwer/gui/reconstruction/test/test_axis.py +14 -13
- tomwer/gui/reconstruction/test/test_lamino.py +3 -2
- tomwer/gui/reconstruction/test/test_nabu.py +8 -6
- tomwer/gui/reconstruction/test/test_saaxis.py +17 -15
- tomwer/gui/reconstruction/test/test_sadeltabeta.py +15 -13
- tomwer/gui/samplemoved/__init__.py +8 -7
- tomwer/gui/samplemoved/selectiontable.py +4 -2
- tomwer/gui/stackplot.py +14 -13
- tomwer/gui/stacks.py +11 -9
- tomwer/gui/test/test_axis_gui.py +5 -4
- tomwer/gui/test/test_qfolder_dialog.py +2 -1
- tomwer/gui/utils/__init__.py +5 -5
- tomwer/gui/utils/buttons.py +1 -0
- tomwer/gui/utils/completer.py +1 -0
- tomwer/gui/utils/flow.py +4 -2
- tomwer/gui/utils/illustrations.py +1 -0
- tomwer/gui/utils/inputwidget.py +11 -17
- tomwer/gui/utils/lineselector/lineselection.py +76 -0
- tomwer/gui/utils/lineselector/lineselector.py +6 -8
- tomwer/gui/utils/qt_utils.py +1 -0
- tomwer/gui/utils/scandescription.py +2 -0
- tomwer/gui/utils/splashscreen.py +1 -1
- tomwer/gui/utils/unitsystem.py +3 -1
- tomwer/gui/utils/vignettes.py +8 -8
- tomwer/gui/utils/waiterthread.py +2 -1
- tomwer/gui/visualization/dataviewer.py +20 -28
- tomwer/gui/visualization/diffviewer/diffviewer.py +17 -20
- tomwer/gui/visualization/diffviewer/shiftwidget.py +3 -1
- tomwer/gui/visualization/nxtomometadata.py +1 -0
- tomwer/gui/visualization/reconstructionparameters.py +13 -12
- tomwer/gui/visualization/scanoverview.py +5 -3
- tomwer/gui/visualization/sinogramviewer.py +3 -2
- tomwer/gui/visualization/test/test_dataviewer.py +3 -1
- tomwer/gui/visualization/test/test_diffviewer.py +8 -6
- tomwer/gui/visualization/test/test_nx_tomo_metadata_viewer.py +5 -3
- tomwer/gui/visualization/test/test_reconstruction_parameters.py +5 -3
- tomwer/gui/visualization/test/test_sinogramviewer.py +10 -9
- tomwer/gui/visualization/test/test_stacks.py +8 -6
- tomwer/gui/visualization/test/test_volumeviewer.py +10 -8
- tomwer/gui/visualization/tomoobjoverview.py +7 -4
- tomwer/gui/visualization/volumeoverview.py +5 -3
- tomwer/gui/visualization/volumeviewer.py +15 -14
- tomwer/io/utils/__init__.py +3 -3
- tomwer/io/utils/h5pyutils.py +2 -1
- tomwer/io/utils/utils.py +17 -21
- tomwer/resources/__init__.py +1 -1
- tomwer/synctools/axis.py +3 -1
- tomwer/synctools/darkref.py +3 -2
- tomwer/synctools/datalistener.py +10 -6
- tomwer/synctools/datatransfert.py +2 -3
- tomwer/synctools/imageloaderthread.py +5 -3
- tomwer/synctools/rsyncmanager.py +3 -2
- tomwer/synctools/saaxis.py +3 -1
- tomwer/synctools/sadeltabeta.py +3 -1
- tomwer/synctools/stacks/control/datalistener.py +9 -12
- tomwer/synctools/stacks/edit/darkflatpatch.py +13 -12
- tomwer/synctools/stacks/edit/imagekeyeditor.py +12 -11
- tomwer/synctools/stacks/processingstack.py +3 -2
- tomwer/synctools/stacks/reconstruction/axis.py +12 -12
- tomwer/synctools/stacks/reconstruction/castvolume.py +8 -5
- tomwer/synctools/stacks/reconstruction/dkrefcopy.py +10 -9
- tomwer/synctools/stacks/reconstruction/lamino.py +9 -7
- tomwer/synctools/stacks/reconstruction/nabu.py +18 -17
- tomwer/synctools/stacks/reconstruction/normalization.py +12 -16
- tomwer/synctools/stacks/reconstruction/saaxis.py +13 -11
- tomwer/synctools/stacks/reconstruction/sadeltabeta.py +16 -14
- tomwer/synctools/test/test_darkRefs.py +4 -3
- tomwer/synctools/test/test_foldertransfer.py +14 -12
- tomwer/synctools/test/test_scanstages.py +8 -7
- tomwer/synctools/utils/scanstages.py +7 -5
- tomwer/tests/conftest.py +4 -4
- tomwer/tests/test_scripts.py +3 -2
- tomwer/tests/utils/__init__.py +5 -4
- tomwer/tests/utils/utilstest.py +5 -6
- tomwer/third_party/nabu/preproc/phase.py +7 -5
- tomwer/third_party/nabu/utils.py +3 -2
- tomwer/utils.py +12 -12
- tomwer/version.py +3 -3
- tomwer/web/__init__.py +30 -0
- tomwer/web/client.py +43 -0
- tomwer/web/config.py +36 -0
- tomwer/web/test/__init__.py +0 -0
- tomwer/web/test/test_graylog_connection.py +59 -0
- {tomwer-1.1.0rc7.dist-info → tomwer-1.2.0a0.dist-info}/METADATA +2 -2
- {tomwer-1.1.0rc7.dist-info → tomwer-1.2.0a0.dist-info}/RECORD +361 -345
- {tomwer-1.1.0rc7.dist-info → tomwer-1.2.0a0.dist-info}/WHEEL +1 -1
- /tomwer-1.1.0rc7-py3.9-nspkg.pth → /tomwer-1.2.0a0-py3.8-nspkg.pth +0 -0
- {tomwer-1.1.0rc7.dist-info → tomwer-1.2.0a0.dist-info}/LICENSE +0 -0
- {tomwer-1.1.0rc7.dist-info → tomwer-1.2.0a0.dist-info}/entry_points.txt +0 -0
- {tomwer-1.1.0rc7.dist-info → tomwer-1.2.0a0.dist-info}/namespace_packages.txt +0 -0
- {tomwer-1.1.0rc7.dist-info → tomwer-1.2.0a0.dist-info}/top_level.txt +0 -0
@@ -32,37 +32,36 @@ __license__ = "MIT"
|
|
32
32
|
__date__ = "27/10/2021"
|
33
33
|
|
34
34
|
|
35
|
-
|
36
|
-
|
37
|
-
|
35
|
+
import logging
|
36
|
+
import os
|
37
|
+
import subprocess
|
38
|
+
import uuid
|
39
|
+
from typing import Iterable, Optional, Union
|
40
|
+
|
41
|
+
import numpy
|
42
|
+
from silx.io.url import DataUrl
|
43
|
+
from silx.utils.enum import Enum as _Enum
|
38
44
|
from sluurp.executor import submit as submit_to_slurm_cluster
|
39
45
|
from sluurp.job import SBatchScriptJob
|
46
|
+
from tomoscan.io import HDF5File
|
47
|
+
from tomoscan.normalization import Method as INormMethod
|
48
|
+
|
49
|
+
from tomwer.core.cluster.cluster import SlurmClusterConfiguration
|
40
50
|
from tomwer.core.process.reconstruction.nabu.target import Target
|
41
51
|
from tomwer.core.process.reconstruction.nabu.utils import (
|
42
52
|
_NabuPhaseMethod,
|
43
53
|
nabu_std_err_has_error,
|
44
54
|
)
|
45
|
-
from tomwer.core.
|
55
|
+
from tomwer.core.process.reconstruction.normalization.params import (
|
56
|
+
_ValueSource as INormSource,
|
57
|
+
)
|
46
58
|
from tomwer.core.scan.edfscan import EDFTomoScan
|
47
59
|
from tomwer.core.scan.hdf5scan import HDF5TomoScan
|
48
60
|
from tomwer.core.scan.scanbase import TomwerScanBase
|
61
|
+
from tomwer.core.utils.scanutils import format_output_location
|
49
62
|
from tomwer.core.utils.slurm import get_slurm_script_name, is_slurm_available
|
50
|
-
|
51
|
-
|
52
|
-
)
|
53
|
-
from tomoscan.normalization import Method as INormMethod
|
54
|
-
from silx.utils.enum import Enum as _Enum
|
55
|
-
from silx.io.url import DataUrl
|
56
|
-
from typing import Iterable, Optional
|
57
|
-
from typing import Union
|
58
|
-
import logging
|
59
|
-
import subprocess
|
60
|
-
from . import settings
|
61
|
-
from . import utils
|
62
|
-
import os
|
63
|
-
import uuid
|
64
|
-
from tomoscan.io import HDF5File
|
65
|
-
import numpy
|
63
|
+
|
64
|
+
from . import settings, utils
|
66
65
|
|
67
66
|
_logger = logging.getLogger(__name__)
|
68
67
|
try:
|
@@ -47,29 +47,31 @@ except (ImportError, OSError):
|
|
47
47
|
has_nabu = True
|
48
48
|
else:
|
49
49
|
has_nabu = True
|
50
|
+
import logging
|
51
|
+
import os
|
50
52
|
from typing import Iterable, Optional, Union
|
51
53
|
|
54
|
+
from nabu.pipeline.fullfield.nabu_config import (
|
55
|
+
nabu_config as nabu_fullfield_default_config,
|
56
|
+
)
|
52
57
|
from processview.core.manager.manager import ProcessManager
|
58
|
+
|
59
|
+
from tomwer.core.futureobject import FutureTomwerObject
|
60
|
+
from tomwer.core.process.reconstruction.nabu.nabuslices import (
|
61
|
+
SingleSliceRunner,
|
62
|
+
_NabuBaseReconstructor,
|
63
|
+
generate_nabu_configfile,
|
64
|
+
)
|
53
65
|
from tomwer.core.process.reconstruction.nabu.target import Target
|
54
66
|
from tomwer.core.progress import Progress
|
55
67
|
from tomwer.core.scan.edfscan import EDFTomoScan
|
56
|
-
from tomwer.core.futureobject import FutureTomwerObject
|
57
68
|
from tomwer.core.scan.scanbase import TomwerScanBase
|
58
69
|
from tomwer.core.utils.slurm import is_slurm_available
|
59
70
|
from tomwer.utils import docstring
|
71
|
+
|
60
72
|
from ..nabu import settings as nabu_settings
|
61
|
-
from tomwer.core.process.reconstruction.nabu.nabuslices import (
|
62
|
-
SingleSliceRunner,
|
63
|
-
generate_nabu_configfile,
|
64
|
-
_NabuBaseReconstructor,
|
65
|
-
)
|
66
|
-
from nabu.pipeline.fullfield.nabu_config import (
|
67
|
-
nabu_config as nabu_fullfield_default_config,
|
68
|
-
)
|
69
|
-
from .nabucommon import ResultSlurmRun, ResultsLocalRun, ResultsWithStd
|
70
73
|
from . import utils
|
71
|
-
import
|
72
|
-
import os
|
74
|
+
from .nabucommon import ResultsLocalRun, ResultSlurmRun, ResultsWithStd
|
73
75
|
|
74
76
|
_logger = logging.getLogger(__name__)
|
75
77
|
|
@@ -254,7 +256,7 @@ class _Reconstructor(_NabuBaseReconstructor):
|
|
254
256
|
db=db,
|
255
257
|
ctf=ctf,
|
256
258
|
)
|
257
|
-
_config["output"]["file_prefix"] = "cor_{}_{}"
|
259
|
+
_config["output"]["file_prefix"] = f"cor_{_file_name}_{cor}"
|
258
260
|
if _config["output"]["location"] not in ("", None):
|
259
261
|
# if user specify the location
|
260
262
|
if not os.path.isdir(_config["output"]["location"]):
|
@@ -303,5 +305,5 @@ class _Reconstructor(_NabuBaseReconstructor):
|
|
303
305
|
)
|
304
306
|
if not isinstance(self.scan, EDFTomoScan):
|
305
307
|
name = "_".join((self.scan.entry.lstrip("/"), name))
|
306
|
-
conf_file = os.path.join(cfg_folder, "cor_{}_{}"
|
308
|
+
conf_file = os.path.join(cfg_folder, f"cor_{cor}_{name}")
|
307
309
|
return config, conf_file
|
@@ -28,15 +28,16 @@ __license__ = "MIT"
|
|
28
28
|
__date__ = "26/10/2021"
|
29
29
|
|
30
30
|
|
31
|
-
import functools
|
32
|
-
import os
|
33
31
|
import copy
|
32
|
+
import functools
|
34
33
|
import logging
|
34
|
+
import os
|
35
|
+
|
35
36
|
from processview.core.manager.manager import ProcessManager
|
36
37
|
|
37
38
|
from tomwer.core.futureobject import FutureTomwerObject
|
38
|
-
from tomwer.core.utils.slurm import is_slurm_available
|
39
39
|
from tomwer.core.utils.scanutils import data_identifier_to_scan
|
40
|
+
from tomwer.core.utils.slurm import is_slurm_available
|
40
41
|
|
41
42
|
try:
|
42
43
|
from nabu.pipeline.fullfield.reconstruction import ( # noqa F401
|
@@ -58,36 +59,40 @@ else:
|
|
58
59
|
has_nabu = True
|
59
60
|
_err_import_nabu = None
|
60
61
|
|
61
|
-
from
|
62
|
-
|
63
|
-
from
|
64
|
-
from
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
62
|
+
from typing import Iterable, Optional, Union
|
63
|
+
|
64
|
+
from nabu import version as nabu_version
|
65
|
+
from nabu.pipeline.config import (
|
66
|
+
_extract_nabuconfig_keyvals,
|
67
|
+
generate_nabu_configfile,
|
68
|
+
get_default_nabu_config,
|
69
|
+
)
|
69
70
|
from nabu.pipeline.fullfield.nabu_config import (
|
70
71
|
nabu_config as nabu_fullfield_default_config,
|
71
72
|
)
|
72
|
-
from
|
73
|
-
from nabu import version as nabu_version
|
73
|
+
from processview.core.superviseprocess import SuperviseProcess
|
74
74
|
from silx.io.dictdump import h5todict
|
75
|
-
from . import
|
76
|
-
from . import
|
75
|
+
from silx.io.utils import h5py_read_dataset
|
76
|
+
from silx.utils.enum import Enum as _Enum
|
77
77
|
from tomoscan.io import HDF5File
|
78
|
+
|
79
|
+
from tomwer.core.process.task import Task
|
78
80
|
from tomwer.core.scan.edfscan import EDFTomoScan
|
79
|
-
from
|
80
|
-
from
|
81
|
+
from tomwer.core.scan.hdf5scan import HDF5TomoScan
|
82
|
+
from tomwer.core.scan.scanbase import TomwerScanBase
|
83
|
+
from tomwer.core.scan.scanfactory import ScanFactory
|
81
84
|
from tomwer.io.utils.h5pyutils import EntryReader
|
82
|
-
from tomwer.
|
83
|
-
|
85
|
+
from tomwer.utils import docstring
|
86
|
+
|
87
|
+
from . import settings as nabu_settings
|
88
|
+
from . import utils
|
84
89
|
from .nabucommon import (
|
85
|
-
_NabuBaseReconstructor,
|
86
|
-
ResultsRun,
|
87
90
|
ResultsLocalRun,
|
88
91
|
ResultSlurmRun,
|
92
|
+
ResultsRun,
|
93
|
+
_NabuBaseReconstructor,
|
89
94
|
)
|
90
|
-
from
|
95
|
+
from .target import Target
|
91
96
|
|
92
97
|
_logger = logging.getLogger(__name__)
|
93
98
|
if not has_nabu:
|
@@ -28,36 +28,34 @@ __license__ = "MIT"
|
|
28
28
|
__date__ = "26/10/2021"
|
29
29
|
|
30
30
|
|
31
|
+
import copy
|
32
|
+
import functools
|
31
33
|
import logging
|
34
|
+
import os
|
32
35
|
from typing import Iterable, Optional
|
36
|
+
|
37
|
+
from nabu import version as nabu_version
|
38
|
+
from nabu.pipeline.config import generate_nabu_configfile
|
39
|
+
from nabu.pipeline.fullfield.nabu_config import (
|
40
|
+
nabu_config as nabu_fullfield_default_config,
|
41
|
+
)
|
33
42
|
from processview.core.manager.manager import ProcessManager
|
43
|
+
from silx.io.utils import h5py_read_dataset
|
44
|
+
|
34
45
|
from tomwer.core.cluster.cluster import SlurmClusterConfiguration
|
35
46
|
from tomwer.core.futureobject import FutureTomwerObject
|
36
|
-
from tomwer.core.
|
47
|
+
from tomwer.core.process.task import Task
|
48
|
+
from tomwer.core.scan.edfscan import EDFTomoScan
|
37
49
|
from tomwer.core.scan.hdf5scan import HDF5TomoScan
|
50
|
+
from tomwer.core.scan.scanbase import TomwerScanBase
|
38
51
|
from tomwer.core.scan.scanfactory import ScanFactory
|
39
52
|
from tomwer.core.utils.scanutils import data_identifier_to_scan
|
40
|
-
from . import utils
|
41
|
-
from . import settings
|
42
|
-
from nabu.pipeline.config import generate_nabu_configfile
|
43
|
-
from nabu.pipeline.fullfield.nabu_config import (
|
44
|
-
nabu_config as nabu_fullfield_default_config,
|
45
|
-
)
|
46
|
-
from nabu import version as nabu_version
|
47
|
-
from tomwer.core.scan.edfscan import EDFTomoScan
|
48
|
-
import copy
|
49
|
-
import os
|
50
|
-
from tomwer.core.process.task import Task
|
51
53
|
from tomwer.io.utils.h5pyutils import EntryReader
|
52
|
-
from silx.io.utils import h5py_read_dataset
|
53
|
-
from .target import Target
|
54
|
-
import functools
|
55
54
|
from tomwer.utils import docstring
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
)
|
55
|
+
|
56
|
+
from . import settings, utils
|
57
|
+
from .nabucommon import ResultsLocalRun, ResultSlurmRun, _NabuBaseReconstructor
|
58
|
+
from .target import Target
|
61
59
|
|
62
60
|
_logger = logging.getLogger(__name__)
|
63
61
|
|
@@ -260,7 +258,7 @@ class VolumeRunner(_NabuBaseReconstructor):
|
|
260
258
|
if not isinstance(self.scan, EDFTomoScan):
|
261
259
|
name = "_".join((self.scan.entry.lstrip("/"), name))
|
262
260
|
conf_file = os.path.join(cfg_folder, name)
|
263
|
-
_logger.info("{}: create {}"
|
261
|
+
_logger.info(f"{self.scan}: create {conf_file}")
|
264
262
|
|
265
263
|
# add some tomwer metadata and save the configuration
|
266
264
|
# note: for now the section is ignored by nabu but shouldn't stay that way
|
@@ -401,7 +399,7 @@ class NabuVolume(
|
|
401
399
|
elif isinstance(scan, dict):
|
402
400
|
scan = ScanFactory.create_scan_object_frm_dict(scan)
|
403
401
|
else:
|
404
|
-
raise ValueError("input type {} is not managed"
|
402
|
+
raise ValueError(f"input type {scan} is not managed")
|
405
403
|
|
406
404
|
if scan.nabu_recons_params is None:
|
407
405
|
raise ValueError(
|
@@ -0,0 +1,36 @@
|
|
1
|
+
import subprocess
|
2
|
+
import logging
|
3
|
+
|
4
|
+
_logger = logging.getLogger(__name__)
|
5
|
+
|
6
|
+
|
7
|
+
def check_n_gpu():
|
8
|
+
try:
|
9
|
+
from pycuda import driver # pylint: disable=E0401
|
10
|
+
|
11
|
+
driver.init()
|
12
|
+
n_gpus = driver.Device.count()
|
13
|
+
except Exception as e:
|
14
|
+
raise e
|
15
|
+
else:
|
16
|
+
if n_gpus == 0:
|
17
|
+
raise RuntimeError("No gpu detected to run nabu reconstruction")
|
18
|
+
else:
|
19
|
+
_logger.info(f"{n_gpus} detected by pycuda")
|
20
|
+
|
21
|
+
|
22
|
+
def _exec_nabu_on_slurm(conf_file: str, scan_path: str) -> tuple:
|
23
|
+
check_n_gpu()
|
24
|
+
|
25
|
+
NABU_FULL_FIELD_APP_PATH = "nabu.app.reconstruct"
|
26
|
+
# need to be executed in his own context
|
27
|
+
command = " ".join(("python", "-m", NABU_FULL_FIELD_APP_PATH, conf_file))
|
28
|
+
process = subprocess.Popen(
|
29
|
+
command,
|
30
|
+
shell=True,
|
31
|
+
cwd=scan_path,
|
32
|
+
stdout=subprocess.PIPE,
|
33
|
+
stderr=subprocess.PIPE,
|
34
|
+
)
|
35
|
+
res = process.communicate()
|
36
|
+
return res
|
@@ -28,25 +28,27 @@ __license__ = "MIT"
|
|
28
28
|
__date__ = "06/08/2020"
|
29
29
|
|
30
30
|
|
31
|
-
from tomwer.core.scan.edfscan import EDFTomoScan
|
32
|
-
from tomwer.core.scan.scanbase import TomwerScanBase
|
33
|
-
from tomwer.core.scan.hdf5scan import HDF5TomoScan
|
34
|
-
import tomwer.version
|
35
|
-
from silx.utils.enum import Enum as _Enum
|
36
|
-
from contextlib import AbstractContextManager
|
37
|
-
import logging
|
38
31
|
import datetime
|
39
|
-
import
|
32
|
+
import logging
|
40
33
|
import os
|
41
|
-
|
42
|
-
from
|
43
|
-
|
44
|
-
from
|
45
|
-
from tomwer.core.volume.rawvolume import RawVolume
|
34
|
+
import typing
|
35
|
+
from contextlib import AbstractContextManager
|
36
|
+
|
37
|
+
from nabu.pipeline.config import generate_nabu_configfile, parse_nabu_config_file
|
46
38
|
from nabu.pipeline.fullfield.nabu_config import (
|
47
39
|
nabu_config as nabu_fullfield_default_config,
|
48
40
|
)
|
49
|
-
from
|
41
|
+
from silx.utils.enum import Enum as _Enum
|
42
|
+
|
43
|
+
import tomwer.version
|
44
|
+
from tomwer.core.scan.edfscan import EDFTomoScan
|
45
|
+
from tomwer.core.scan.hdf5scan import HDF5TomoScan
|
46
|
+
from tomwer.core.scan.scanbase import TomwerScanBase
|
47
|
+
from tomwer.core.volume.edfvolume import EDFVolume
|
48
|
+
from tomwer.core.volume.hdf5volume import HDF5Volume
|
49
|
+
from tomwer.core.volume.jp2kvolume import JP2KVolume
|
50
|
+
from tomwer.core.volume.rawvolume import RawVolume
|
51
|
+
from tomwer.core.volume.tiffvolume import TIFFVolume
|
50
52
|
|
51
53
|
_logger = logging.getLogger(__name__)
|
52
54
|
|
@@ -242,7 +244,7 @@ def get_recons_volume_identifier(
|
|
242
244
|
# )
|
243
245
|
|
244
246
|
else:
|
245
|
-
raise ValueError("file format not managed: {}"
|
247
|
+
raise ValueError(f"file format not managed: {file_format}")
|
246
248
|
|
247
249
|
return tuple([volume.get_identifier() for volume in volumes])
|
248
250
|
|
@@ -413,6 +415,7 @@ def nabu_std_err_has_error(errs: typing.Optional[bytes]):
|
|
413
415
|
return (
|
414
416
|
"warning" in line
|
415
417
|
or "Warning" in line
|
418
|
+
or "deprecated" in line
|
416
419
|
or line.replace(" ", "") == ""
|
417
420
|
or "unable to load" in line
|
418
421
|
)
|
@@ -34,24 +34,22 @@ __license__ = "MIT"
|
|
34
34
|
__date__ = "25/06/2021"
|
35
35
|
|
36
36
|
|
37
|
-
import numpy
|
38
|
-
import logging
|
39
37
|
import functools
|
38
|
+
import logging
|
39
|
+
|
40
|
+
import numpy
|
41
|
+
import tomoscan.esrf.scan.utils
|
42
|
+
from processview.core.dataset import DatasetIdentifier
|
43
|
+
from processview.core.superviseprocess import SuperviseProcess
|
40
44
|
from silx.io.url import DataUrl
|
45
|
+
from tomoscan.esrf.scan.utils import get_data
|
46
|
+
from tomoscan.normalization import Method as NormMethod
|
47
|
+
|
41
48
|
import tomwer.version
|
42
49
|
from tomwer.core.process.task import Task
|
43
50
|
from tomwer.core.utils.scanutils import data_identifier_to_scan
|
44
|
-
from .params import (
|
45
|
-
SinoNormalizationParams,
|
46
|
-
_ValueCalculationFct,
|
47
|
-
_ValueSource,
|
48
|
-
)
|
49
|
-
from tomoscan.normalization import Method as NormMethod
|
50
|
-
import tomoscan.esrf.scan.utils
|
51
|
-
from tomoscan.esrf.scan.utils import get_data
|
52
|
-
from processview.core.dataset import DatasetIdentifier
|
53
|
-
from processview.core.superviseprocess import SuperviseProcess
|
54
51
|
|
52
|
+
from .params import SinoNormalizationParams, _ValueCalculationFct, _ValueSource
|
55
53
|
|
56
54
|
_logger = logging.getLogger(__name__)
|
57
55
|
|
@@ -143,7 +141,7 @@ class SinoNormalizationTask(
|
|
143
141
|
"source": _ValueSource.MANUAL_SCALAR.value,
|
144
142
|
}
|
145
143
|
else:
|
146
|
-
raise ValueError("method {} is not handled"
|
144
|
+
raise ValueError(f"method {params.method} is not handled")
|
147
145
|
except Exception as e:
|
148
146
|
_logger.error(e)
|
149
147
|
final_norm_info = {"tomwer_processing_res_code": False}
|
@@ -274,7 +272,7 @@ class SinoNormalizationTask(
|
|
274
272
|
|
275
273
|
def retrieve_data_proj_indexes(url_):
|
276
274
|
urls = []
|
277
|
-
for
|
275
|
+
for data_slice in range(
|
278
276
|
url_.data_slice().start,
|
279
277
|
url_.data_slice().stop,
|
280
278
|
url_.data_slice().step or 1,
|
@@ -284,7 +282,7 @@ class SinoNormalizationTask(
|
|
284
282
|
file_path=url_.file_path(),
|
285
283
|
data_path=url_.data_path(),
|
286
284
|
scheme=url_.scheme(),
|
287
|
-
data_slice=
|
285
|
+
data_slice=data_slice,
|
288
286
|
)
|
289
287
|
)
|
290
288
|
|
@@ -298,8 +296,7 @@ class SinoNormalizationTask(
|
|
298
296
|
res.append(url_idxs[my_url_path])
|
299
297
|
else:
|
300
298
|
_logger.warning(
|
301
|
-
"unable to retrieve frame index from url {}. "
|
302
|
-
"Take the slice index as frame index".format(my_url_path)
|
299
|
+
f"unable to retrieve frame index from url {my_url_path}. Take the slice index as frame index"
|
303
300
|
)
|
304
301
|
return res
|
305
302
|
|
@@ -323,9 +320,7 @@ class SinoNormalizationTask(
|
|
323
320
|
]
|
324
321
|
current_idx += length
|
325
322
|
else:
|
326
|
-
raise ValueError(
|
327
|
-
"Frame where expected and not a " "{}D object".format(data.ndim)
|
328
|
-
)
|
323
|
+
raise ValueError(f"Frame where expected and not a {data.ndim}D object")
|
329
324
|
return SinoNormalizationTask.compute_stats(roi_area)
|
330
325
|
|
331
326
|
@staticmethod
|
@@ -339,7 +334,7 @@ class SinoNormalizationTask(
|
|
339
334
|
elif data.ndim in (0, 1):
|
340
335
|
res = data
|
341
336
|
else:
|
342
|
-
raise ValueError("dataset dimension not handled ({
|
337
|
+
raise ValueError(f"dataset dimension not handled ({data.ndim}D)")
|
343
338
|
results[calc_fct.value] = res
|
344
339
|
return results
|
345
340
|
|
@@ -34,11 +34,11 @@ __license__ = "MIT"
|
|
34
34
|
__date__ = "25/06/2021"
|
35
35
|
|
36
36
|
|
37
|
+
import typing
|
38
|
+
|
37
39
|
from silx.utils.enum import Enum as _Enum
|
38
40
|
from tomoscan.normalization import Method
|
39
41
|
|
40
|
-
import typing
|
41
|
-
|
42
42
|
|
43
43
|
class _ValueSource(_Enum):
|
44
44
|
MONITOR = "intensity monitor"
|
@@ -30,9 +30,11 @@ __date__ = "18/02/2021"
|
|
30
30
|
|
31
31
|
from collections.abc import Iterable
|
32
32
|
from typing import Union
|
33
|
+
|
34
|
+
import numpy
|
33
35
|
from silx.utils.enum import Enum as _Enum
|
36
|
+
|
34
37
|
from tomwer.core.process.reconstruction.scores.params import SABaseParams
|
35
|
-
import numpy
|
36
38
|
|
37
39
|
|
38
40
|
class ReconstructionMode(_Enum):
|
@@ -92,7 +94,7 @@ class SAAxisParams(SABaseParams):
|
|
92
94
|
@image_width.setter
|
93
95
|
def image_width(self, width):
|
94
96
|
if not isinstance(width, (type(None), float, int)):
|
95
|
-
raise TypeError("None, int or float expected. Not {
|
97
|
+
raise TypeError(f"None, int or float expected. Not {type(width)}")
|
96
98
|
else:
|
97
99
|
self._image_width = width
|
98
100
|
|
@@ -136,12 +138,9 @@ class SAAxisParams(SABaseParams):
|
|
136
138
|
if self.slice_indexes is None:
|
137
139
|
missing_information.append("slice index not provided")
|
138
140
|
if len(missing_information) > 0:
|
141
|
+
missing_information_str = " ; ".join(missing_information)
|
139
142
|
raise ValueError(
|
140
|
-
|
141
|
-
"Some informations are missing: {}".format(
|
142
|
-
" ; ".join(missing_information)
|
143
|
-
)
|
144
|
-
)
|
143
|
+
f"Some informations are missing: {missing_information_str}"
|
145
144
|
)
|
146
145
|
|
147
146
|
@staticmethod
|