tomwer 1.1.1__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 +27 -34
- orangecontrib/tomwer/widgets/reconstruction/SADeltaBetaOW.py +23 -25
- 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/utils.py +17 -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/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/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 +4 -4
- {tomwer-1.1.1.dist-info → tomwer-1.2.0a0.dist-info}/METADATA +2 -2
- {tomwer-1.1.1.dist-info → tomwer-1.2.0a0.dist-info}/RECORD +353 -345
- /tomwer-1.1.1-py3.8-nspkg.pth → /tomwer-1.2.0a0-py3.8-nspkg.pth +0 -0
- {tomwer-1.1.1.dist-info → tomwer-1.2.0a0.dist-info}/LICENSE +0 -0
- {tomwer-1.1.1.dist-info → tomwer-1.2.0a0.dist-info}/WHEEL +0 -0
- {tomwer-1.1.1.dist-info → tomwer-1.2.0a0.dist-info}/entry_points.txt +0 -0
- {tomwer-1.1.1.dist-info → tomwer-1.2.0a0.dist-info}/namespace_packages.txt +0 -0
- {tomwer-1.1.1.dist-info → tomwer-1.2.0a0.dist-info}/top_level.txt +0 -0
orangecontrib/tomwer/__init__.py
CHANGED
@@ -28,13 +28,15 @@ __license__ = "MIT"
|
|
28
28
|
__date__ = "22/20/2020"
|
29
29
|
|
30
30
|
|
31
|
-
from orangewidget.widget import OWBaseWidget
|
32
|
-
from orangecontrib.tomwer.widgets.utils import WidgetLongProcessing
|
33
|
-
from processview.core.superviseprocess import SuperviseProcess
|
34
31
|
import functools
|
35
|
-
|
32
|
+
|
36
33
|
from ewoksorange.bindings import OWEwoksWidgetWithTaskStack
|
37
34
|
from ewoksorange.bindings.owwidgets import invalid_data
|
35
|
+
from orangewidget.widget import OWBaseWidget
|
36
|
+
from processview.core.manager import DatasetState, ProcessManager
|
37
|
+
from processview.core.superviseprocess import SuperviseProcess
|
38
|
+
|
39
|
+
from orangecontrib.tomwer.widgets.utils import WidgetLongProcessing
|
38
40
|
|
39
41
|
|
40
42
|
class _SuperviseMixIn(SuperviseProcess):
|
@@ -1,8 +1,9 @@
|
|
1
|
-
from orangewidget.utils.signals import
|
1
|
+
from orangewidget.utils.signals import PartialSummary, summarize
|
2
|
+
|
2
3
|
from tomwer.core.cluster import SlurmClusterConfiguration
|
4
|
+
from tomwer.core.futureobject import FutureTomwerObject
|
3
5
|
from tomwer.core.scan.blissscan import BlissScan
|
4
6
|
from tomwer.core.scan.scanbase import TomwerScanBase
|
5
|
-
from tomwer.core.futureobject import FutureTomwerObject
|
6
7
|
|
7
8
|
|
8
9
|
@summarize.register(object) # noqa F811
|
@@ -22,9 +22,9 @@
|
|
22
22
|
#
|
23
23
|
#############################################################################
|
24
24
|
|
25
|
-
import pkg_resources
|
26
25
|
import sysconfig
|
27
26
|
|
27
|
+
import pkg_resources
|
28
28
|
|
29
29
|
ICON = "../widgets/icons/tomwer.png"
|
30
30
|
|
@@ -57,6 +57,6 @@ WIDGET_HELP_PATH = (
|
|
57
57
|
# Documentation included in wheel
|
58
58
|
# Correct DATA_FILES entry is needed in setup.py and documentation has to be built
|
59
59
|
# # before the wheel is created.
|
60
|
-
("{}/help/tomwer/index.html"
|
60
|
+
(f"{sysconfig.get_path('data')}/help/tomwer/index.html", None),
|
61
61
|
("http://www.silx.org/pub/doc/tomwer/htmlhelp/0.9/", None),
|
62
62
|
)
|
@@ -28,21 +28,22 @@ __license__ = "MIT"
|
|
28
28
|
__date__ = "14/10/2021"
|
29
29
|
|
30
30
|
|
31
|
+
import time
|
32
|
+
|
31
33
|
from orangewidget import gui
|
32
|
-
from orangewidget.widget import Input, Output
|
33
|
-
from orangewidget.widget import OWBaseWidget
|
34
34
|
from orangewidget.settings import Setting
|
35
|
+
from orangewidget.widget import Input, Output, OWBaseWidget
|
36
|
+
from processview.core.manager import DatasetState, ProcessManager
|
37
|
+
from processview.core.superviseprocess import SuperviseProcess
|
35
38
|
from silx.gui import qt
|
36
|
-
from
|
39
|
+
from silx.gui.utils.concurrent import submitToQtMainThread
|
40
|
+
|
37
41
|
from tomwer.core.futureobject import FutureTomwerObject
|
42
|
+
from tomwer.core.scan.scanbase import TomwerScanBase
|
38
43
|
from tomwer.core.volume.volumebase import TomwerVolumeBase
|
39
44
|
from tomwer.gui.cluster.supervisor import (
|
40
45
|
FutureTomwerScanObserverWidget as _FutureTomwerScanObserverWidget,
|
41
46
|
)
|
42
|
-
from processview.core.superviseprocess import SuperviseProcess
|
43
|
-
from processview.core.manager import ProcessManager, DatasetState
|
44
|
-
from silx.gui.utils.concurrent import submitToQtMainThread
|
45
|
-
import time
|
46
47
|
|
47
48
|
|
48
49
|
class FutureSupervisorOW(OWBaseWidget, openclass=True):
|
@@ -186,6 +187,7 @@ class FutureTomwerObjectObserverWidget(
|
|
186
187
|
details = "\n".join([details, "pending"])
|
187
188
|
state = DatasetState.PENDING
|
188
189
|
elif future_tomo_obj.status in ("finished", "completed"):
|
190
|
+
details = future_tomo_obj.logs or "no log found"
|
189
191
|
state = DatasetState.SUCCEED
|
190
192
|
elif future_tomo_obj.status == "running":
|
191
193
|
details = "\n".join([details, "running"])
|
@@ -27,14 +27,15 @@ __authors__ = ["H. Payno"]
|
|
27
27
|
__license__ = "MIT"
|
28
28
|
__date__ = "13/10/2021"
|
29
29
|
|
30
|
+
import logging
|
31
|
+
|
30
32
|
from orangewidget import gui
|
31
|
-
from orangewidget.widget import Output
|
32
|
-
from orangewidget.widget import OWBaseWidget
|
33
33
|
from orangewidget.settings import Setting
|
34
|
-
from
|
35
|
-
|
34
|
+
from orangewidget.widget import Output, OWBaseWidget
|
35
|
+
|
36
36
|
import tomwer.core.process.cluster.supervisor
|
37
|
-
import
|
37
|
+
from tomwer.core.cluster import SlurmClusterConfiguration
|
38
|
+
from tomwer.gui.cluster.slurm import SlurmSettingsWidget
|
38
39
|
|
39
40
|
_logger = logging.getLogger(__name__)
|
40
41
|
|
@@ -0,0 +1,235 @@
|
|
1
|
+
import fnmatch
|
2
|
+
import logging
|
3
|
+
import os
|
4
|
+
from typing import Optional
|
5
|
+
|
6
|
+
import h5py
|
7
|
+
from orangewidget import gui, widget
|
8
|
+
from orangewidget.widget import Output
|
9
|
+
from silx.gui import qt
|
10
|
+
from orangewidget.settings import Setting
|
11
|
+
|
12
|
+
import tomwer.core.process.control.datadiscovery
|
13
|
+
from orangecontrib.tomwer.widgets.utils import WidgetLongProcessing
|
14
|
+
from tomwer.core.scan.blissscan import BlissScan
|
15
|
+
from tomwer.core.scan.edfscan import EDFTomoScan
|
16
|
+
from tomwer.core.scan.hdf5scan import HDF5TomoScan
|
17
|
+
from tomwer.core.scan.scanbase import TomwerScanBase
|
18
|
+
from tomwer.core.scan.scanfactory import ScanFactory
|
19
|
+
from tomwer.core.scan.scantype import ScanType
|
20
|
+
from tomwer.gui.control.datadiscovery import DataDiscoveryWidget
|
21
|
+
|
22
|
+
logger = logging.getLogger(__name__)
|
23
|
+
|
24
|
+
|
25
|
+
class DataDiscoveryOW(widget.OWBaseWidget, WidgetLongProcessing, openclass=True):
|
26
|
+
"""
|
27
|
+
This widget will browse a folder and sub folder to find valid tomo scan project.
|
28
|
+
Contrary to the scan watcher it will parse all folder / sub folders then stop.
|
29
|
+
"""
|
30
|
+
|
31
|
+
name = "scan discovery"
|
32
|
+
id = "orangecontrib.widgets.tomwer.control.DataDiscoveryOW.DataDiscoveryOW"
|
33
|
+
description = (
|
34
|
+
"This widget will browse a folder and sub folder to find valid tomo scan project. \n"
|
35
|
+
"Contrary to the scan watcher it will parse all folder / sub folders then stop."
|
36
|
+
)
|
37
|
+
icon = "icons/datadiscover.svg"
|
38
|
+
priority = 11
|
39
|
+
keywords = [
|
40
|
+
"tomography",
|
41
|
+
"tomwer",
|
42
|
+
"datadiscovery",
|
43
|
+
"data",
|
44
|
+
"discovery",
|
45
|
+
"search",
|
46
|
+
"research",
|
47
|
+
"hdf5",
|
48
|
+
"NXtomo",
|
49
|
+
]
|
50
|
+
|
51
|
+
compress_signal = False
|
52
|
+
|
53
|
+
want_main_area = True
|
54
|
+
want_control_area = False
|
55
|
+
resizing_enabled = True
|
56
|
+
|
57
|
+
ewoksorangeclass = (
|
58
|
+
tomwer.core.process.control.datadiscovery._DataDiscoveryPlaceHolder
|
59
|
+
)
|
60
|
+
|
61
|
+
class Outputs:
|
62
|
+
data = Output(name="data", type=TomwerScanBase, doc="one scan to be process")
|
63
|
+
|
64
|
+
settings = Setting(dict())
|
65
|
+
|
66
|
+
def __init__(self, *args, **kwargs):
|
67
|
+
super().__init__(*args, **kwargs)
|
68
|
+
self._widget = DataDiscoveryWidget(parent=self)
|
69
|
+
|
70
|
+
self._box = gui.vBox(self.mainArea, self.name)
|
71
|
+
layout = self._box.layout()
|
72
|
+
layout.addWidget(self._widget)
|
73
|
+
|
74
|
+
self._widget.setConfiguration(self.settings)
|
75
|
+
|
76
|
+
# getting ready for processing
|
77
|
+
self._processingThread = _DiscoverThread()
|
78
|
+
|
79
|
+
# connect signal / slot
|
80
|
+
self._processingThread.sigDataFound.connect(self._sendData)
|
81
|
+
self._processingThread.finished.connect(self._endProcessing)
|
82
|
+
self._widget.widget.controlWidget._qpbstartstop.released.connect(
|
83
|
+
self._switchObservation
|
84
|
+
)
|
85
|
+
# dedicated one for settings
|
86
|
+
self._widget.widget.controlWidget._filterQLE.editingFinished.connect(
|
87
|
+
self._updatesettings
|
88
|
+
)
|
89
|
+
self._widget.widget.controlWidget._qteFolderSelected.editingFinished.connect(
|
90
|
+
self._updatesettings
|
91
|
+
)
|
92
|
+
self._widget.widget.configWidget.sigScanTypeChanged.connect(
|
93
|
+
self._updatesettings
|
94
|
+
)
|
95
|
+
|
96
|
+
def _updatesettings(self):
|
97
|
+
print("update settings")
|
98
|
+
self.settings = self.getConfiguration()
|
99
|
+
|
100
|
+
# expose some API
|
101
|
+
def getConfiguration(self) -> dict:
|
102
|
+
return self._widget.getConfiguration()
|
103
|
+
|
104
|
+
def setConfiguration(self, config: dict):
|
105
|
+
self._widget.setConfiguration(config)
|
106
|
+
|
107
|
+
def getProcessingThread(self) -> qt.QThread:
|
108
|
+
return self._processingThread
|
109
|
+
|
110
|
+
def setFolderObserved(self, dir_: str):
|
111
|
+
self._widget.widget.setFolderObserved(dir_)
|
112
|
+
|
113
|
+
def setSearchScanType(self, scan_type):
|
114
|
+
self._widget.widget.setSearchScanType(scan_type)
|
115
|
+
|
116
|
+
def setFilePattern(self, pattern: Optional[str]):
|
117
|
+
self._widget.widget.setLinuxFilePattern(pattern)
|
118
|
+
|
119
|
+
def _switchObservation(self, *args, **kwargs):
|
120
|
+
"""stop or start the disceovery according to the thread state"""
|
121
|
+
thread = self.getProcessingThread()
|
122
|
+
if thread.isRunning():
|
123
|
+
thread.quit()
|
124
|
+
self._endProcessing()
|
125
|
+
else:
|
126
|
+
self.start_discovery()
|
127
|
+
|
128
|
+
def start_discovery(self, wait: Optional[int] = None):
|
129
|
+
"""start the discovery of scans
|
130
|
+
:param int wait: optional waiting time in second
|
131
|
+
"""
|
132
|
+
thread = self.getProcessingThread()
|
133
|
+
if thread.isRunning():
|
134
|
+
logger.warning("Discovery is already running")
|
135
|
+
return
|
136
|
+
self._startProcessing()
|
137
|
+
thread.setConfiguration(self.getConfiguration())
|
138
|
+
thread.start()
|
139
|
+
if wait is not None:
|
140
|
+
thread.wait(wait)
|
141
|
+
|
142
|
+
def _sendData(self, data):
|
143
|
+
if data is not None:
|
144
|
+
self.Outputs.data.send(data)
|
145
|
+
|
146
|
+
def _startProcessing(self, *args, **kwargs):
|
147
|
+
self._widget.widget.controlWidget._qpbstartstop.setText("stop discovery")
|
148
|
+
return super()._startProcessing(*args, **kwargs)
|
149
|
+
|
150
|
+
def _endProcessing(self, *args, **kwargs):
|
151
|
+
self._widget.widget.controlWidget._qpbstartstop.setText("start discovery")
|
152
|
+
return super()._endProcessing(*args, **kwargs)
|
153
|
+
|
154
|
+
|
155
|
+
class _DiscoverThread(qt.QThread):
|
156
|
+
"""
|
157
|
+
Thread to browse folder and sub folder and looking for some scan
|
158
|
+
"""
|
159
|
+
|
160
|
+
sigDataFound = qt.Signal(object)
|
161
|
+
"""emit each time a new dataset is found"""
|
162
|
+
|
163
|
+
def __init__(self, **kwargs) -> None:
|
164
|
+
super().__init__(**kwargs)
|
165
|
+
self._root_dir = None
|
166
|
+
self._research_type = None
|
167
|
+
self._file_filter = None
|
168
|
+
self._look_for_hdf5 = False
|
169
|
+
|
170
|
+
def setConfiguration(self, config: dict):
|
171
|
+
self._root_dir = config.get("start_folder", None)
|
172
|
+
self._research_type = ScanType.from_value(config["scan_type_searched"])
|
173
|
+
self._file_filter = config.get("file_filter", None)
|
174
|
+
self._look_for_hdf5 = self._research_type in (
|
175
|
+
ScanType.BLISS,
|
176
|
+
ScanType.NX_TOMO,
|
177
|
+
)
|
178
|
+
|
179
|
+
def run(self):
|
180
|
+
if self._research_type is None:
|
181
|
+
logger.error("No reserach type defined. Cannot research scan")
|
182
|
+
elif not os.path.isdir(self._root_dir):
|
183
|
+
logger.error(f"{self._root_dir} is not a directory")
|
184
|
+
else:
|
185
|
+
self.discover_scan(file_path=self._root_dir)
|
186
|
+
|
187
|
+
def discover_scan(self, file_path):
|
188
|
+
if (
|
189
|
+
os.path.isfile(file_path)
|
190
|
+
and self._look_for_hdf5
|
191
|
+
and h5py.is_hdf5(file_path)
|
192
|
+
) or (os.path.isdir(file_path) and not self._look_for_hdf5):
|
193
|
+
try:
|
194
|
+
name_match = self._file_filter is None or fnmatch.fnmatch(
|
195
|
+
os.path.basename(file_path), self._file_filter
|
196
|
+
)
|
197
|
+
except Exception as e:
|
198
|
+
logger.error(f"fnmatch fail. Error is {e}")
|
199
|
+
name_match = True
|
200
|
+
if name_match:
|
201
|
+
self._treat_path(file_path)
|
202
|
+
if os.path.isdir(file_path):
|
203
|
+
[
|
204
|
+
self.discover_scan(file_path=os.path.join(file_path, file_))
|
205
|
+
for file_ in os.listdir(file_path)
|
206
|
+
]
|
207
|
+
|
208
|
+
def _treat_path(self, folder_path: str):
|
209
|
+
"""treat file / folder at a specific location"""
|
210
|
+
try:
|
211
|
+
scan_objs = ScanFactory.create_scan_objects(
|
212
|
+
scan_path=folder_path,
|
213
|
+
accept_bliss_scan=(self._research_type == ScanType.BLISS),
|
214
|
+
)
|
215
|
+
except Exception as e:
|
216
|
+
logger.info(f"Fail to treat {folder_path}. Error is {e}")
|
217
|
+
else:
|
218
|
+
for scan in scan_objs:
|
219
|
+
if (
|
220
|
+
isinstance(scan, BlissScan)
|
221
|
+
and self._research_type is ScanType.BLISS
|
222
|
+
):
|
223
|
+
self.sigDataFound.emit(scan)
|
224
|
+
elif (
|
225
|
+
isinstance(scan, HDF5TomoScan)
|
226
|
+
and self._research_type is ScanType.NX_TOMO
|
227
|
+
):
|
228
|
+
self.sigDataFound.emit(scan)
|
229
|
+
elif (
|
230
|
+
isinstance(scan, EDFTomoScan)
|
231
|
+
and self._research_type is ScanType.SPEC
|
232
|
+
):
|
233
|
+
self.sigDataFound.emit(scan)
|
234
|
+
else:
|
235
|
+
raise NotImplementedError("case not handled", self._research_type)
|
@@ -27,15 +27,17 @@ __authors__ = ["C. Nemoz", "H. Payno"]
|
|
27
27
|
__license__ = "MIT"
|
28
28
|
__date__ = "01/12/2016"
|
29
29
|
|
30
|
+
import logging
|
31
|
+
|
30
32
|
from orangewidget import gui
|
33
|
+
from orangewidget.settings import Setting
|
34
|
+
from orangewidget.widget import Input, Output, OWBaseWidget
|
31
35
|
from silx.gui import qt
|
32
|
-
|
36
|
+
|
37
|
+
import tomwer.core.process.control.scanlist
|
33
38
|
from tomwer.core.scan.hdf5scan import HDF5TomoScan
|
34
39
|
from tomwer.core.scan.scanbase import TomwerScanBase
|
35
|
-
|
36
|
-
from orangewidget.settings import Setting
|
37
|
-
from orangewidget.widget import Output, Input, OWBaseWidget
|
38
|
-
import logging
|
40
|
+
from tomwer.gui.control.datalist import GenericScanListDialog
|
39
41
|
|
40
42
|
logger = logging.getLogger(__name__)
|
41
43
|
|
@@ -28,36 +28,35 @@ __license__ = "MIT"
|
|
28
28
|
__date__ = "06/03/2020"
|
29
29
|
|
30
30
|
|
31
|
+
from orangewidget import gui, settings, widget
|
32
|
+
from orangewidget.widget import Output
|
31
33
|
from silx.gui import qt
|
32
34
|
|
33
35
|
import tomwer.core.process.control.datalistener.datalistener
|
34
36
|
from orangecontrib.tomwer.widgets.utils import WidgetLongProcessing
|
35
|
-
from orangewidget import widget, gui
|
36
|
-
from orangewidget.widget import Output
|
37
|
-
from tomwer.core.scan.scanbase import TomwerScanBase
|
38
|
-
from tomwer.core.scan.blissscan import BlissScan
|
39
37
|
from tomwer.core.process.control.datalistener import DataListener
|
40
|
-
from tomwer.utils import docstring
|
41
|
-
from tomwer.synctools.datalistener import DataListenerQThread
|
42
|
-
from tomwer.gui.control.datalistener import DataListenerWidget
|
43
|
-
from tomwer.synctools.datalistener import MockDataListenerQThread
|
44
|
-
from tomwer.synctools.stacks.control.datalistener import DataListenerProcessStack
|
45
|
-
from tomwer.core.process.control.nxtomomill import H5ToNxProcess
|
46
38
|
from tomwer.core.process.control.datalistener.rpcserver import (
|
47
39
|
send_signal_to_local_rpc_servers,
|
48
40
|
)
|
49
|
-
from
|
41
|
+
from tomwer.core.process.control.nxtomomill import H5ToNxProcess
|
42
|
+
from tomwer.core.scan.blissscan import BlissScan
|
43
|
+
from tomwer.core.scan.scanbase import TomwerScanBase
|
44
|
+
from tomwer.gui.control.datalistener import DataListenerWidget
|
45
|
+
from tomwer.synctools.datalistener import DataListenerQThread, MockDataListenerQThread
|
46
|
+
from tomwer.synctools.stacks.control.datalistener import DataListenerProcessStack
|
47
|
+
from tomwer.utils import docstring
|
50
48
|
|
51
49
|
try:
|
52
50
|
# new HDF5Config class
|
53
51
|
from nxtomomill.io.config import TomoHDF5Config as HDF5Config
|
54
52
|
except ImportError:
|
55
53
|
from nxtomomill.io.config import HDF5Config
|
56
|
-
|
54
|
+
|
57
55
|
import functools
|
58
56
|
import logging
|
59
57
|
import signal
|
60
58
|
import sys
|
59
|
+
from typing import Iterable
|
61
60
|
|
62
61
|
logger = logging.getLogger(__name__)
|
63
62
|
|
@@ -354,10 +353,10 @@ class _PortOccupyDialog(qt.QDialog):
|
|
354
353
|
self.host = host
|
355
354
|
|
356
355
|
mess = (
|
357
|
-
"port ({port}) of {host} already in use. \n Maybe an other "
|
356
|
+
f"port ({port}) of {host} already in use. \n Maybe an other "
|
358
357
|
"instance of `datalistener` is running in this session or "
|
359
358
|
"another tomwer session. \n As this widget is connecting with "
|
360
|
-
"bliss we enforce it to be unique."
|
359
|
+
"bliss we enforce it to be unique."
|
361
360
|
)
|
362
361
|
self.layout().addWidget(qt.QLabel(mess, self))
|
363
362
|
self.setWindowTitle("Unable to launch two listener in parallel")
|
@@ -27,15 +27,17 @@ __authors__ = ["C. Nemoz", "H. Payno"]
|
|
27
27
|
__license__ = "MIT"
|
28
28
|
__date__ = "25/05/2018"
|
29
29
|
|
30
|
-
|
30
|
+
import logging
|
31
|
+
|
31
32
|
from orangewidget import gui
|
32
|
-
from orangewidget.widget import Output, Input, OWBaseWidget
|
33
|
-
from tomwer.core.scan.hdf5scan import HDF5TomoScan
|
34
|
-
from tomwer.gui.control.scanselectorwidget import ScanSelectorWidget
|
35
|
-
from tomwer.core.scan.scanbase import TomwerScanBase
|
36
33
|
from orangewidget.settings import Setting
|
34
|
+
from orangewidget.widget import Input, Output, OWBaseWidget
|
35
|
+
from silx.gui import qt
|
36
|
+
|
37
37
|
import tomwer.core.process.control.scanselector
|
38
|
-
import
|
38
|
+
from tomwer.core.scan.hdf5scan import HDF5TomoScan
|
39
|
+
from tomwer.core.scan.scanbase import TomwerScanBase
|
40
|
+
from tomwer.gui.control.scanselectorwidget import ScanSelectorWidget
|
39
41
|
|
40
42
|
logger = logging.getLogger(__name__)
|
41
43
|
|
@@ -27,21 +27,21 @@ __authors__ = ["C. Nemoz", "H. Payno"]
|
|
27
27
|
__license__ = "MIT"
|
28
28
|
__date__ = "07/12/2016"
|
29
29
|
|
30
|
+
import functools
|
30
31
|
import logging
|
31
|
-
|
32
|
-
from orangewidget import settings
|
33
|
-
from orangewidget.widget import
|
32
|
+
|
33
|
+
from orangewidget import gui, settings
|
34
|
+
from orangewidget.widget import Input, Output
|
35
|
+
from processview.core.manager import DatasetState, ProcessManager
|
34
36
|
from silx.gui import qt
|
35
37
|
|
36
38
|
import tomwer.core.process.control.scantransfer
|
37
|
-
from tomwer.
|
39
|
+
from orangecontrib.tomwer.orange.managedprocess import SuperviseOW
|
38
40
|
from orangecontrib.tomwer.orange.settings import CallbackSettingsHandler
|
39
|
-
from tomwer.
|
41
|
+
from tomwer.core.process.control.scantransfer import ScanTransfer
|
40
42
|
from tomwer.core.scan.scanbase import TomwerScanBase
|
41
|
-
from
|
42
|
-
from orangecontrib.tomwer.orange.managedprocess import SuperviseOW
|
43
|
+
from tomwer.gui.control.datatransfert import DataTransfertSelector
|
43
44
|
from tomwer.utils import docstring
|
44
|
-
import functools
|
45
45
|
|
46
46
|
logger = logging.getLogger(__name__)
|
47
47
|
|
@@ -208,7 +208,7 @@ class ThreadDataTransfer(qt.QThread):
|
|
208
208
|
process = ScanTransfer(inputs=self._inputs)
|
209
209
|
process.run()
|
210
210
|
except Exception as e:
|
211
|
-
logger.error("data transfer failed. Reason is {}"
|
211
|
+
logger.error(f"data transfer failed. Reason is {e}")
|
212
212
|
ProcessManager().notify_dataset_state(
|
213
213
|
dataset=self._data,
|
214
214
|
process=self._process,
|
@@ -27,19 +27,18 @@ __authors__ = ["H. Payno"]
|
|
27
27
|
__license__ = "MIT"
|
28
28
|
__date__ = "21/07/2020"
|
29
29
|
|
30
|
-
|
31
|
-
|
30
|
+
import logging
|
31
|
+
|
32
|
+
from orangewidget import gui, settings
|
32
33
|
from orangewidget.widget import Input, Output
|
34
|
+
from processview.core.manager import DatasetState, ProcessManager
|
35
|
+
from silx.gui import qt
|
33
36
|
|
34
37
|
import tomwer.core.process.control.scanvalidator
|
35
|
-
from tomwer.gui.control.datavalidator import DataValidator
|
36
|
-
from tomwer.core.scan.scanbase import TomwerScanBase
|
37
38
|
from orangecontrib.tomwer.orange.managedprocess import SuperviseOW
|
38
|
-
from
|
39
|
-
from tomwer.
|
40
|
-
from orangewidget import settings
|
39
|
+
from tomwer.core.scan.scanbase import TomwerScanBase, _TomwerBaseDock
|
40
|
+
from tomwer.gui.control.datavalidator import DataValidator
|
41
41
|
from tomwer.utils import docstring
|
42
|
-
import logging
|
43
42
|
|
44
43
|
_logger = logging.getLogger(__name__)
|
45
44
|
|
@@ -27,16 +27,19 @@ __authors__ = ["C. Nemoz", "H. Payno"]
|
|
27
27
|
__license__ = "MIT"
|
28
28
|
__date__ = "25/10/2016"
|
29
29
|
|
30
|
-
import
|
31
|
-
|
32
|
-
|
33
|
-
from orangewidget import
|
30
|
+
import functools
|
31
|
+
import logging
|
32
|
+
|
33
|
+
from orangewidget import gui, widget
|
34
34
|
from orangewidget.settings import Setting
|
35
35
|
from orangewidget.widget import Output
|
36
|
+
|
37
|
+
import tomwer.core.process.control.datawatcher.datawatcher
|
38
|
+
from tomwer.core.scan.blissscan import BlissScan
|
36
39
|
from tomwer.core.scan.scanbase import TomwerScanBase
|
37
40
|
from tomwer.gui.control.datawatcher import DataWatcherWidget
|
38
|
-
|
39
|
-
import
|
41
|
+
|
42
|
+
from ..utils import WidgetLongProcessing
|
40
43
|
|
41
44
|
logger = logging.getLogger(__name__)
|
42
45
|
|
@@ -119,31 +122,36 @@ class DataWatcherOW(widget.OWBaseWidget, WidgetLongProcessing, openclass=True):
|
|
119
122
|
|
120
123
|
def _loadSettings(self):
|
121
124
|
if self.acquisitionMethod != tuple():
|
122
|
-
self.
|
125
|
+
self.widget.getConfigWindow().setMode(self.acquisitionMethod)
|
123
126
|
if self.folderObserved != str():
|
124
|
-
self.
|
127
|
+
self.widget.setFolderObserved(self.folderObserved)
|
125
128
|
if self.linuxFilePatternSetting != str():
|
126
129
|
# for the GUI
|
127
|
-
self.
|
130
|
+
self.widget._filterQLE.setText(self.linuxFilePatternSetting)
|
128
131
|
# for providing it to the processing thread. Bad design but this widget shouldn't be used that
|
129
132
|
# much and modifying internals is not the priority.
|
130
|
-
self.
|
133
|
+
self.widget.setLinuxFilePattern(self.linuxFilePatternSetting)
|
131
134
|
|
132
135
|
def _updateSettings(self):
|
133
|
-
self.folderObserved = self.
|
134
|
-
mode = self.
|
136
|
+
self.folderObserved = self.widget.getFolderObserved()
|
137
|
+
mode = self.widget.getConfigWindow().getMode()
|
135
138
|
if mode is not None:
|
136
139
|
self.acquisitionMethod = mode
|
140
|
+
self.linuxFilePatternSetting = self.widget.getLinuxFilePattern()
|
137
141
|
|
138
142
|
def _saveFilterLinuxPattern(self, *args, **kwargs):
|
139
|
-
linuxFilePattern = self.
|
143
|
+
linuxFilePattern = self.widget.getFilterLinuxFileNamePattern()
|
140
144
|
if linuxFilePattern is None:
|
141
145
|
self.linuxFilePatternSetting = ""
|
142
146
|
else:
|
143
147
|
self.linuxFilePatternSetting = linuxFilePattern
|
144
148
|
|
145
149
|
def _setObsMethod(self, mode):
|
146
|
-
self.
|
150
|
+
self.widget.setObsMethod(mode)
|
151
|
+
|
152
|
+
@property
|
153
|
+
def widget(self):
|
154
|
+
return self._widget
|
147
155
|
|
148
156
|
@property
|
149
157
|
def currentStatus(self):
|
@@ -169,7 +177,7 @@ class DataWatcherOW(widget.OWBaseWidget, WidgetLongProcessing, openclass=True):
|
|
169
177
|
)
|
170
178
|
|
171
179
|
def setFolderObserved(self, path):
|
172
|
-
self.
|
180
|
+
self.widget.setFolderObserved(path)
|
173
181
|
|
174
182
|
def setObservation(self, b):
|
175
183
|
self._widget.setObservation(b)
|
@@ -189,12 +197,12 @@ class DataWatcherOW(widget.OWBaseWidget, WidgetLongProcessing, openclass=True):
|
|
189
197
|
self._widget.start()
|
190
198
|
|
191
199
|
def stopObservation(self, succes=False):
|
192
|
-
self.
|
200
|
+
self.widget.stop(succes)
|
193
201
|
try:
|
194
202
|
self.Processing.clear()
|
195
203
|
except Exception:
|
196
204
|
pass
|
197
205
|
|
198
206
|
def close(self):
|
199
|
-
self.
|
207
|
+
self.widget.close()
|
200
208
|
super().close()
|
@@ -27,19 +27,19 @@ __authors__ = ["H. Payno"]
|
|
27
27
|
__license__ = "MIT"
|
28
28
|
__date__ = "11/03/2020"
|
29
29
|
|
30
|
+
import logging
|
30
31
|
from copy import copy
|
32
|
+
|
33
|
+
from nxtomomill.io.config import TomoEDFConfig as EDFConfig
|
31
34
|
from orangewidget import gui
|
32
|
-
from
|
35
|
+
from silx.gui import qt
|
36
|
+
|
33
37
|
from orangecontrib.tomwer.orange.managedprocess import TomwerWithStackStack
|
34
|
-
from tomwer.core.scan.hdf5scan import HDF5TomoScan
|
35
|
-
from tomwer.gui.control.datalist import (
|
36
|
-
EDFDataListMainWindow,
|
37
|
-
)
|
38
|
-
from nxtomomill.io.config import TomoEDFConfig as EDFConfig
|
39
38
|
from orangecontrib.tomwer.widgets.control.NXTomomillMixIn import NXTomomillMixIn
|
40
39
|
from tomwer.core.process.control.nxtomomill import EDFToNxProcess
|
41
|
-
from
|
42
|
-
import
|
40
|
+
from tomwer.core.scan.edfscan import EDFTomoScan
|
41
|
+
from tomwer.core.scan.hdf5scan import HDF5TomoScan
|
42
|
+
from tomwer.gui.control.datalist import EDFDataListMainWindow
|
43
43
|
|
44
44
|
logger = logging.getLogger(__name__)
|
45
45
|
|