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,3 +1,5 @@
|
|
1
|
+
from __future__ import annotations
|
2
|
+
|
1
3
|
import argparse
|
2
4
|
import logging
|
3
5
|
import os
|
@@ -5,10 +7,8 @@ import shutil
|
|
5
7
|
import signal
|
6
8
|
import sys
|
7
9
|
import silx
|
8
|
-
from typing import List
|
9
10
|
from contextlib import closing
|
10
11
|
from logging.handlers import RotatingFileHandler
|
11
|
-
from urllib.request import urlopen
|
12
12
|
from xml.sax.saxutils import escape
|
13
13
|
|
14
14
|
import pyqtgraph
|
@@ -28,14 +28,23 @@ from processview.gui.processmanager import ProcessManagerWindow
|
|
28
28
|
from silx.gui import qt
|
29
29
|
|
30
30
|
import tomwer.version
|
31
|
-
from tomwer.core.log.logger import TomwerLogger
|
32
31
|
from orangecanvas.preview import previewdialog, previewmodel
|
33
32
|
from orangecanvas.application import examples as orange_examples
|
34
|
-
import
|
33
|
+
import ewokscore
|
34
|
+
import ewoksorange
|
35
35
|
import tomoscan.version
|
36
36
|
|
37
37
|
from .config import TomwerConfig, TomwerSplashScreen
|
38
38
|
|
39
|
+
from tomwer.core.log.processlog import (
|
40
|
+
PROCESS_ENDED_NAME,
|
41
|
+
PROCESS_FAILED_NAME,
|
42
|
+
PROCESS_INFORM_NAME,
|
43
|
+
PROCESS_SKIPPED_NAME,
|
44
|
+
PROCESS_STARTED_NAME,
|
45
|
+
PROCESS_SUCCEED_NAME,
|
46
|
+
)
|
47
|
+
|
39
48
|
try:
|
40
49
|
import nabu
|
41
50
|
except ImportError:
|
@@ -71,9 +80,38 @@ LOG_FILE_NAME = "tomwer.log"
|
|
71
80
|
LOG_FOLDER = "/var/log/tomwer"
|
72
81
|
|
73
82
|
|
83
|
+
# These are the sequences need to get colored ouput
|
84
|
+
_RESET_SEQ = "\033[0m"
|
85
|
+
|
86
|
+
_BLACK = "\033[30m"
|
87
|
+
_RED = "\033[31m"
|
88
|
+
_GREEN = "\033[32m"
|
89
|
+
_YELLOW = "\033[33m"
|
90
|
+
_BLUE = "\033[34m"
|
91
|
+
_MAGENTA = "\033[35m"
|
92
|
+
|
93
|
+
|
94
|
+
LOG_COLORS = {
|
95
|
+
"WARNING": _MAGENTA,
|
96
|
+
"INFO": _BLACK,
|
97
|
+
"DEBUG": _BLUE,
|
98
|
+
"CRITICAL": _YELLOW,
|
99
|
+
"ERROR": _RED,
|
100
|
+
PROCESS_SKIPPED_NAME: _MAGENTA,
|
101
|
+
PROCESS_ENDED_NAME: _BLACK,
|
102
|
+
PROCESS_INFORM_NAME: _BLACK,
|
103
|
+
PROCESS_STARTED_NAME: _BLACK,
|
104
|
+
PROCESS_FAILED_NAME: _RED,
|
105
|
+
PROCESS_SUCCEED_NAME: _GREEN,
|
106
|
+
}
|
107
|
+
|
108
|
+
|
74
109
|
class MainWindow(_MainWindow):
|
75
110
|
HELPDESK_URL = "https://requests.esrf.fr/plugins/servlet/desk/portal/41"
|
76
111
|
|
112
|
+
FORCE_OBJECT_SUPERVISOR_DISPLAY = True
|
113
|
+
"""If true will always display the processed supervisor at start up. Restore state will be ignored."""
|
114
|
+
|
77
115
|
def __init__(self, *args, **kwargs):
|
78
116
|
super().__init__(*args, **kwargs)
|
79
117
|
self.process_supervisor_dock = DockWidget(
|
@@ -90,6 +128,15 @@ class MainWindow(_MainWindow):
|
|
90
128
|
)
|
91
129
|
self.addDockWidget(qt.Qt.BottomDockWidgetArea, self.process_supervisor_dock)
|
92
130
|
|
131
|
+
def restoreState(self, state, version=0):
|
132
|
+
# for now we always want to display the process supervisor
|
133
|
+
restored = super().restoreState(state=state, version=version)
|
134
|
+
if self.FORCE_OBJECT_SUPERVISOR_DISPLAY:
|
135
|
+
self.show_processes_manager_action.setChecked(True)
|
136
|
+
self.process_supervisor_dock.setVisible(True)
|
137
|
+
|
138
|
+
return restored
|
139
|
+
|
93
140
|
def setup_actions(self):
|
94
141
|
super().setup_actions()
|
95
142
|
# create the action to connect with it
|
@@ -146,6 +193,14 @@ class MainWindow(_MainWindow):
|
|
146
193
|
triggered=self.open_python_script_example,
|
147
194
|
menuRole=qt.QAction.AboutRole,
|
148
195
|
)
|
196
|
+
self.python_script_example_action = qt.QAction(
|
197
|
+
self.tr("ID16b examples"),
|
198
|
+
self,
|
199
|
+
objectName="id16b-example",
|
200
|
+
toolTip=self.tr("ID16b use case."),
|
201
|
+
triggered=self.open_id16b_example,
|
202
|
+
menuRole=qt.QAction.AboutRole,
|
203
|
+
)
|
149
204
|
# Predefined workflows menu.
|
150
205
|
self.predefined_workflows_menu = qt.QMenu(
|
151
206
|
self.tr("&Examples"),
|
@@ -243,6 +298,11 @@ class MainWindow(_MainWindow):
|
|
243
298
|
orange_examples.workflows(), filter_names=("_script",)
|
244
299
|
)
|
245
300
|
|
301
|
+
def open_id16b_example(self):
|
302
|
+
return self.__open_examples(
|
303
|
+
orange_examples.workflows(), filter_names=("ID16b",)
|
304
|
+
)
|
305
|
+
|
246
306
|
def open_cor_search_example(self):
|
247
307
|
return self.__open_examples(
|
248
308
|
orange_examples.workflows(), filter_names=("find_cor", "cor_search")
|
@@ -293,7 +353,7 @@ class _OMain(ocMain):
|
|
293
353
|
)
|
294
354
|
return parser
|
295
355
|
|
296
|
-
def parse_arguments(self, argv:
|
356
|
+
def parse_arguments(self, argv: list[str]):
|
297
357
|
super().parse_arguments(argv)
|
298
358
|
# define silx plot backend. For now the si;pler is to
|
299
359
|
# define an environment variable.
|
@@ -310,7 +370,40 @@ class _OMain(ocMain):
|
|
310
370
|
silx.config.DEFAULT_PLOT_BACKEND = "matplotlib"
|
311
371
|
|
312
372
|
def setup_logging(self):
|
313
|
-
|
373
|
+
level = self.options.log_level
|
374
|
+
logformat = "%(asctime)s:%(levelname)s:%(name)s: %(message)s"
|
375
|
+
|
376
|
+
# File handler should always be at least INFO level so we need
|
377
|
+
# the application root level to be at least at INFO.
|
378
|
+
root_level = min(level, logging.INFO)
|
379
|
+
rootlogger = logging.getLogger()
|
380
|
+
rootlogger.setLevel(root_level)
|
381
|
+
|
382
|
+
# Standard output stream handler at the requested level
|
383
|
+
if sys.platform in ("linux", "linux2", "darwin"):
|
384
|
+
stream_hander = make_linux_stream_colored_handler(
|
385
|
+
level, fileobj=self.__stderr__
|
386
|
+
)
|
387
|
+
else:
|
388
|
+
stream_hander = make_stream_handler(
|
389
|
+
level, fileobj=self.__stderr__, fmt=logformat
|
390
|
+
)
|
391
|
+
rootlogger.addHandler(stream_hander)
|
392
|
+
# Setup log capture for MainWindow/Log
|
393
|
+
log_stream = TextStream(objectName="-log-stream")
|
394
|
+
self.output.connectStream(log_stream)
|
395
|
+
self.stack.push(closing(log_stream)) # close on exit
|
396
|
+
log_handler = make_stream_handler(level, fileobj=log_stream, fmt=logformat)
|
397
|
+
rootlogger.addHandler(log_handler)
|
398
|
+
|
399
|
+
# Also log to file
|
400
|
+
file_handler = make_file_handler(
|
401
|
+
root_level,
|
402
|
+
os.path.join(config.log_dir(), "canvas.log"),
|
403
|
+
mode="w",
|
404
|
+
)
|
405
|
+
rootlogger.addHandler(file_handler)
|
406
|
+
|
314
407
|
make_sql_logger(self.options.log_level)
|
315
408
|
|
316
409
|
def setup_application(self):
|
@@ -381,11 +474,12 @@ ABOUT_TEMPLATE = """\
|
|
381
474
|
<h4>{name}</h4>
|
382
475
|
<p>tomwer version: {tomwer_version}</p>
|
383
476
|
<p>nabu version: {nabu_version}</p>
|
384
|
-
<p>nxtomomill version: {nxtomomill_version}</p>
|
385
477
|
<p>nxtomo version: {nxtomo_version}</p>
|
478
|
+
<p>nxtomomill version: {nxtomomill_version}</p>
|
386
479
|
<p>tomoscan version: {tomoscan_version}</p>
|
480
|
+
<p>ewokscore version: {ewokscore_version}</p>
|
481
|
+
<p>ewoksorange version: {ewoksorange_version}</p>
|
387
482
|
<p>sluurp version: {sluurp_version}</p>
|
388
|
-
<p>ewoks version: {ewoks_version}</p>
|
389
483
|
"""
|
390
484
|
|
391
485
|
|
@@ -416,8 +510,13 @@ class AboutDialog(qt.QDialog):
|
|
416
510
|
sluurp_version=escape(
|
417
511
|
sluurp.__version__ if has_sluurp else "not installed"
|
418
512
|
),
|
419
|
-
|
420
|
-
|
513
|
+
ewokscore_version=escape(
|
514
|
+
ewokscore.__version__ if hasattr(ewokscore, "__version__") else "???"
|
515
|
+
),
|
516
|
+
ewoksorange_version=escape(
|
517
|
+
ewoksorange.__version__
|
518
|
+
if hasattr(ewoksorange, "__version__")
|
519
|
+
else "???"
|
421
520
|
),
|
422
521
|
)
|
423
522
|
text_label = qt.QLabel(text)
|
@@ -446,45 +545,45 @@ class OMain(_OMain):
|
|
446
545
|
|
447
546
|
def setup_logging(self):
|
448
547
|
super().setup_logging()
|
449
|
-
rootlogger = logging.getLogger()
|
450
|
-
rootlogger = TomwerLogger(rootlogger)
|
451
|
-
logging.setLoggerClass(TomwerLogger)
|
548
|
+
# rootlogger = logging.getLogger()
|
549
|
+
# rootlogger = TomwerLogger(rootlogger)
|
550
|
+
# logging.setLoggerClass(TomwerLogger)
|
452
551
|
|
453
552
|
def setup_sys_redirections(self):
|
454
|
-
self.
|
455
|
-
try:
|
456
|
-
self.output = doc = TerminalTextDocument()
|
553
|
+
self.output = doc = TerminalTextDocument()
|
457
554
|
|
458
|
-
|
459
|
-
|
460
|
-
|
461
|
-
|
555
|
+
stdout = TextStream(objectName="-stdout")
|
556
|
+
stderr = TextStream(objectName="-stderr")
|
557
|
+
doc.connectStream(stdout)
|
558
|
+
doc.connectStream(stderr, color=qt.Qt.red)
|
462
559
|
|
463
|
-
|
464
|
-
|
560
|
+
if sys.stdout is not None:
|
561
|
+
stdout.stream.connect(sys.stdout.write, qt.Qt.DirectConnection)
|
465
562
|
|
466
|
-
|
467
|
-
|
563
|
+
self.__stdout__ = sys.stdout
|
564
|
+
sys.stdout = stdout
|
468
565
|
|
469
|
-
|
470
|
-
|
566
|
+
if sys.stderr is not None:
|
567
|
+
stderr.stream.connect(sys.stderr.write, qt.Qt.DirectConnection)
|
471
568
|
|
472
|
-
|
473
|
-
|
474
|
-
|
475
|
-
|
569
|
+
self.__stderr__ = sys.stderr
|
570
|
+
sys.stderr = stderr
|
571
|
+
self.__excepthook__ = sys.excepthook
|
572
|
+
sys.excepthook = ExceptHook(stream=stderr)
|
476
573
|
|
477
|
-
|
478
|
-
|
479
|
-
except Exception:
|
480
|
-
super().setup_sys_redirections()
|
574
|
+
self.stack.push(closing(stdout))
|
575
|
+
self.stack.push(closing(stderr))
|
481
576
|
|
482
577
|
def argument_parser(self) -> argparse.ArgumentParser:
|
483
578
|
parser = super().argument_parser()
|
484
579
|
for action in parser._actions:
|
580
|
+
# avoid clearing settings because this make people confused
|
485
581
|
if action.dest == "clear_widget_settings":
|
486
582
|
parser._remove_action(action)
|
487
583
|
break
|
584
|
+
# by default log are only displaying errors. But we want to get warning as well (for deprecation for example).
|
585
|
+
if action.dest == "log_level":
|
586
|
+
action.default = logging.WARNING
|
488
587
|
|
489
588
|
parser.add_argument(
|
490
589
|
"--no-color-stdout-logs",
|
@@ -534,38 +633,45 @@ def dealWithLogFile():
|
|
534
633
|
)
|
535
634
|
|
536
635
|
|
537
|
-
|
538
|
-
"""
|
539
|
-
|
540
|
-
|
541
|
-
|
542
|
-
|
543
|
-
|
544
|
-
|
545
|
-
|
546
|
-
|
547
|
-
|
548
|
-
|
549
|
-
|
550
|
-
|
551
|
-
|
552
|
-
|
553
|
-
|
554
|
-
|
555
|
-
|
556
|
-
|
557
|
-
|
558
|
-
|
559
|
-
|
560
|
-
|
561
|
-
|
562
|
-
|
563
|
-
|
564
|
-
|
565
|
-
|
566
|
-
|
567
|
-
|
568
|
-
|
569
|
-
|
570
|
-
|
571
|
-
|
636
|
+
class _ColoredFormatter(logging.Formatter):
|
637
|
+
"""Dedicated colors to highlight level name by coloring logs (only for linux terminals)"""
|
638
|
+
|
639
|
+
@staticmethod
|
640
|
+
def color_formatting(message: str, levelname: str, ascii_time):
|
641
|
+
"""colors message using ascii"""
|
642
|
+
return (
|
643
|
+
f"{ascii_time} {LOG_COLORS[levelname]}[{levelname}]{_RESET_SEQ} {message}"
|
644
|
+
)
|
645
|
+
|
646
|
+
def format(self, record):
|
647
|
+
record.asctime = self.formatTime(record, "%Y-%m-%d %H:%M:%S")
|
648
|
+
record.message = record.getMessage()
|
649
|
+
return self.color_formatting(
|
650
|
+
message=record.message,
|
651
|
+
levelname=record.levelname,
|
652
|
+
ascii_time=record.asctime,
|
653
|
+
)
|
654
|
+
|
655
|
+
|
656
|
+
def make_linux_stream_colored_handler(level, fileobj=None):
|
657
|
+
handler = logging.StreamHandler(fileobj)
|
658
|
+
handler.setLevel(level)
|
659
|
+
formatter = _ColoredFormatter()
|
660
|
+
handler.setFormatter(formatter)
|
661
|
+
return handler
|
662
|
+
|
663
|
+
|
664
|
+
def make_stream_handler(level, fileobj=None, fmt=None):
|
665
|
+
handler = logging.StreamHandler(fileobj)
|
666
|
+
handler.setLevel(level)
|
667
|
+
if fmt:
|
668
|
+
handler.setFormatter(logging.Formatter(fmt))
|
669
|
+
return handler
|
670
|
+
|
671
|
+
|
672
|
+
def make_file_handler(level, filename, mode="w", fmt=None):
|
673
|
+
handler = logging.FileHandler(filename, mode=mode, encoding="utf-8")
|
674
|
+
handler.setLevel(level)
|
675
|
+
if fmt:
|
676
|
+
handler.setFormatter(logging.Formatter(fmt))
|
677
|
+
return handler
|
@@ -7,9 +7,8 @@ def splash_screen():
|
|
7
7
|
"""
|
8
8
|
|
9
9
|
:return: splash screen for orange-canvas
|
10
|
-
:rtype: tuple(QPixmap, QRect),
|
11
10
|
|
12
|
-
note: QRect is used by orange to define a mask to display the message.
|
11
|
+
:note: QRect is used by orange to define a mask to display the message.
|
13
12
|
In our case we overwrite the QSplashScreen so we don't need this.
|
14
13
|
"""
|
15
14
|
pixmap = icons.getQPixmap("tomwer")
|
@@ -20,7 +19,6 @@ def getIcon():
|
|
20
19
|
"""
|
21
20
|
|
22
21
|
:return: application icon
|
23
|
-
:rtype: QIcon
|
24
22
|
"""
|
25
23
|
pixmap = icons.getQPixmap("tomwer")
|
26
24
|
return qt.QIcon(pixmap)
|
@@ -0,0 +1,47 @@
|
|
1
|
+
from __future__ import annotations
|
2
|
+
|
3
|
+
import tomoscan.version
|
4
|
+
|
5
|
+
import ewokscore
|
6
|
+
import ewoksorange
|
7
|
+
import tomwer.version
|
8
|
+
import sluurp
|
9
|
+
|
10
|
+
try:
|
11
|
+
import nxtomomill.version
|
12
|
+
except ImportError:
|
13
|
+
has_nxtomomill = False
|
14
|
+
else:
|
15
|
+
has_nxtomomill = True
|
16
|
+
try:
|
17
|
+
import nabu
|
18
|
+
except ImportError:
|
19
|
+
has_nabu = False
|
20
|
+
else:
|
21
|
+
has_nabu = True
|
22
|
+
try:
|
23
|
+
import nxtomo.version
|
24
|
+
except ImportError:
|
25
|
+
has_nxtomo = False
|
26
|
+
else:
|
27
|
+
has_nxtomo = True
|
28
|
+
|
29
|
+
|
30
|
+
def get_tomotools_stack_versions() -> dict[str, str]:
|
31
|
+
"""Return the version of the main libraries used by tomwer"""
|
32
|
+
stack = {
|
33
|
+
"tomwer": tomwer.version.version,
|
34
|
+
}
|
35
|
+
|
36
|
+
if has_nabu:
|
37
|
+
stack["nabu"] = nabu.version
|
38
|
+
if has_nxtomo:
|
39
|
+
stack["nxtomo"] = nxtomo.version.version
|
40
|
+
if has_nxtomomill:
|
41
|
+
stack["nxtomomill"] = nxtomomill.version.version
|
42
|
+
stack["tomoscan"] = tomoscan.version.version
|
43
|
+
stack["ewokscore"] = ewokscore.__version__
|
44
|
+
stack["ewoksorange"] = ewoksorange.__version__
|
45
|
+
stack["sluurp"] = sluurp.__version__
|
46
|
+
|
47
|
+
return stack
|
@@ -52,13 +52,10 @@ class WidgetsScheme(Scheme):
|
|
52
52
|
def show_report_view(self):
|
53
53
|
return
|
54
54
|
|
55
|
-
def has_report(self):
|
55
|
+
def has_report(self) -> bool:
|
56
56
|
"""
|
57
57
|
Does this workflow have an associated report
|
58
58
|
|
59
|
-
Returns
|
60
|
-
-------
|
61
|
-
has_report: bool
|
62
59
|
"""
|
63
60
|
return self.__report_view is not None
|
64
61
|
|
@@ -66,9 +63,7 @@ class WidgetsScheme(Scheme):
|
|
66
63
|
"""
|
67
64
|
Return a OWReport instance used by the workflow.
|
68
65
|
|
69
|
-
|
70
|
-
-------
|
71
|
-
report : OWReport
|
66
|
+
:return: report
|
72
67
|
"""
|
73
68
|
return None
|
74
69
|
|
@@ -76,9 +71,7 @@ class WidgetsScheme(Scheme):
|
|
76
71
|
"""
|
77
72
|
Set the designated OWReport view for this workflow.
|
78
73
|
|
79
|
-
|
80
|
-
----------
|
81
|
-
view :
|
74
|
+
:param view:
|
82
75
|
"""
|
83
76
|
self.__report_view = None
|
84
77
|
|
tomwer/app/diffframe.py
CHANGED
tomwer/app/imagekeyeditor.py
CHANGED
tomwer/app/imagekeyupgrader.py
CHANGED
tomwer/app/multicor.py
CHANGED
@@ -1,12 +1,15 @@
|
|
1
1
|
#!/usr/bin/env python
|
2
2
|
# -*- coding: utf-8 -*-
|
3
|
+
"""Application to reconstruct a slice for a set of center of rotation value. Interface to nabu multicor
|
4
|
+
"""
|
5
|
+
|
6
|
+
from __future__ import annotations
|
3
7
|
|
4
8
|
import argparse
|
5
9
|
import logging
|
6
10
|
import signal
|
7
11
|
import sys
|
8
12
|
import time
|
9
|
-
from typing import Union
|
10
13
|
|
11
14
|
import silx
|
12
15
|
from silx.gui import qt
|
@@ -122,7 +125,7 @@ class SAAxisWindow(_SAAxisWindow):
|
|
122
125
|
def stop(self):
|
123
126
|
self._stopProcessingThread()
|
124
127
|
|
125
|
-
def _computeEstimatedCor(self) ->
|
128
|
+
def _computeEstimatedCor(self) -> float | None:
|
126
129
|
scan = self.getScan()
|
127
130
|
if scan is None:
|
128
131
|
return
|
tomwer/app/multipag.py
CHANGED
@@ -1,12 +1,15 @@
|
|
1
1
|
#!/usr/bin/env python
|
2
2
|
# -*- coding: utf-8 -*-
|
3
|
+
"""Application to reconstruct a slice with Paganin for a set of delta/beta values.
|
4
|
+
"""
|
5
|
+
|
6
|
+
from __future__ import annotations
|
3
7
|
|
4
8
|
import argparse
|
5
9
|
import logging
|
6
10
|
import signal
|
7
11
|
import sys
|
8
12
|
import time
|
9
|
-
from typing import Union
|
10
13
|
|
11
14
|
import silx
|
12
15
|
from silx.gui import qt
|
@@ -20,6 +23,10 @@ from tomwer.core.process.reconstruction.darkref.darkrefs import (
|
|
20
23
|
from tomwer.core.process.reconstruction.sadeltabeta.sadeltabeta import (
|
21
24
|
SADeltaBetaTask,
|
22
25
|
)
|
26
|
+
from tomwer.core.process.reconstruction.utils.cor import (
|
27
|
+
relative_pos_to_absolute,
|
28
|
+
absolute_pos_to_relative,
|
29
|
+
)
|
23
30
|
from tomwer.core.process.task import Task
|
24
31
|
from tomwer.core.scan.scanfactory import ScanFactory
|
25
32
|
from tomwer.core.utils.resource import increase_max_number_file
|
@@ -133,13 +140,17 @@ class SADeltaBetaWindow(_SADeltaBetaWindow):
|
|
133
140
|
|
134
141
|
def _relativeValueEdited(self):
|
135
142
|
old = self._absoluteCORValueQLE.blockSignals(True)
|
136
|
-
value =
|
143
|
+
value = relative_pos_to_absolute(
|
144
|
+
relative_pos=self._relativeCORValueQLE.value(), det_width=self._imageWidth
|
145
|
+
)
|
137
146
|
self._absoluteCORValueQLE.setValue(value)
|
138
147
|
self._absoluteCORValueQLE.blockSignals(old)
|
139
148
|
|
140
|
-
def
|
149
|
+
def _absoluteValueEdited(self):
|
141
150
|
old = self._relativeCORValueQLE.blockSignals(True)
|
142
|
-
value =
|
151
|
+
value = absolute_pos_to_relative(
|
152
|
+
absolute_pos=self._absoluteCORValueQLE.value(), det_width=self._imageWidth
|
153
|
+
)
|
143
154
|
self._relativeCORValueQLE.setValue(value)
|
144
155
|
self._relativeCORValueQLE.blockSignals(old)
|
145
156
|
|
@@ -200,7 +211,7 @@ class SADeltaBetaWindow(_SADeltaBetaWindow):
|
|
200
211
|
def stop(self):
|
201
212
|
self._stopProcessingThread()
|
202
213
|
|
203
|
-
def _computeEstimatedCor(self) ->
|
214
|
+
def _computeEstimatedCor(self) -> float | None:
|
204
215
|
scan = self.getScan()
|
205
216
|
if scan is None:
|
206
217
|
return
|
tomwer/app/nabuapp.py
CHANGED
tomwer/app/nxtomoeditor.py
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
#!/usr/bin/env python
|
2
2
|
# -*- coding: utf-8 -*-
|
3
|
+
"""Application to edit several entries of a NXtomo
|
4
|
+
"""
|
3
5
|
|
4
6
|
import argparse
|
5
7
|
import logging
|
@@ -9,6 +11,7 @@ import sys
|
|
9
11
|
from silx.gui import qt
|
10
12
|
|
11
13
|
from tomwer.core.scan.scanfactory import ScanFactory
|
14
|
+
from tomwer.core.process.edit.nxtomoeditor import NXtomoEditorTask
|
12
15
|
from tomwer.gui.edit.nxtomoeditor import NXtomoEditorDialog as _NXtomoEditorDialog
|
13
16
|
from tomwer.gui.utils.splashscreen import getMainSplashScreen
|
14
17
|
|
@@ -21,18 +24,20 @@ class NXtomoEditorDialog(_NXtomoEditorDialog):
|
|
21
24
|
super().__init__()
|
22
25
|
|
23
26
|
# connect signal / slot
|
24
|
-
self._buttons.button(qt.QDialogButtonBox.Ok).released.connect(
|
25
|
-
|
26
|
-
|
27
|
+
self._buttons.button(qt.QDialogButtonBox.Ok).released.connect(self._triggerTask)
|
28
|
+
|
29
|
+
def getScan(self):
|
30
|
+
return self.mainWidget.getScan()
|
27
31
|
|
28
|
-
def
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
32
|
+
def _triggerTask(self, *args, **kwargs):
|
33
|
+
task = NXtomoEditorTask(
|
34
|
+
inputs={
|
35
|
+
"data": self.getScan(),
|
36
|
+
"configuration": self.getConfigurationForTask(),
|
37
|
+
}
|
38
|
+
)
|
39
|
+
task.run()
|
40
|
+
print("edition finished")
|
36
41
|
|
37
42
|
|
38
43
|
def main(argv):
|
@@ -78,7 +83,7 @@ def main(argv):
|
|
78
83
|
)
|
79
84
|
except Exception as e:
|
80
85
|
_logger.error(
|
81
|
-
f"Fail to find
|
86
|
+
f"Fail to find a NXtomo from {options.scan_path} at {options.entry}. Error is {e}"
|
82
87
|
)
|
83
88
|
return
|
84
89
|
|
tomwer/app/patchrawdarkflat.py
CHANGED
tomwer/app/radiostack.py
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
#!/usr/bin/env python
|
2
2
|
# -*- coding: utf-8 -*-
|
3
|
-
|
3
|
+
"""Application to display scan radios as a stack
|
4
|
+
"""
|
4
5
|
import argparse
|
5
6
|
import logging
|
6
7
|
import os
|
@@ -21,7 +22,7 @@ _logger = logging.getLogger(__name__)
|
|
21
22
|
|
22
23
|
|
23
24
|
def getinputinfo():
|
24
|
-
return "tomwer
|
25
|
+
return "tomwer radio-stack [scanName]"
|
25
26
|
|
26
27
|
|
27
28
|
def addFolderAndSubFolder(stack, path):
|
tomwer/app/reducedarkflat.py
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
#!/usr/bin/env python
|
2
2
|
# -*- coding: utf-8 -*-
|
3
|
+
"""Application to compute reduced darks and flats for a given scan
|
4
|
+
"""
|
3
5
|
|
4
6
|
import argparse
|
5
7
|
import logging
|
@@ -60,6 +62,7 @@ def _exec_with_interaction(scan, dark_method, flat_method, overwrite):
|
|
60
62
|
|
61
63
|
class _DarkRefWidgetRunnable(DarkRefWidget):
|
62
64
|
sigScanReady = qt.Signal(str)
|
65
|
+
"""emit when scan ready"""
|
63
66
|
|
64
67
|
def __init__(self, scan, parent=None):
|
65
68
|
self.__scan = scan
|