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,43 +1,14 @@
|
|
1
|
-
# coding: utf-8
|
2
|
-
# /*##########################################################################
|
3
|
-
#
|
4
|
-
# Copyright (c) 2016-2017 European Synchrotron Radiation Facility
|
5
|
-
#
|
6
|
-
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
7
|
-
# of this software and associated documentation files (the "Software"), to deal
|
8
|
-
# in the Software without restriction, including without limitation the rights
|
9
|
-
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
10
|
-
# copies of the Software, and to permit persons to whom the Software is
|
11
|
-
# furnished to do so, subject to the following conditions:
|
12
|
-
#
|
13
|
-
# The above copyright notice and this permission notice shall be included in
|
14
|
-
# all copies or substantial portions of the Software.
|
15
|
-
#
|
16
|
-
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
17
|
-
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
18
|
-
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
19
|
-
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
20
|
-
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
21
|
-
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
22
|
-
# THE SOFTWARE.
|
23
|
-
#
|
24
|
-
# ###########################################################################*/
|
25
1
|
"""
|
26
2
|
contains gui relative to semi-automatic axis calculation
|
27
3
|
"""
|
28
4
|
|
5
|
+
from __future__ import annotations
|
29
6
|
|
30
|
-
|
31
|
-
"H. Payno",
|
32
|
-
]
|
33
|
-
__license__ = "MIT"
|
34
|
-
__date__ = "05/02/2021"
|
35
|
-
|
36
|
-
|
37
|
-
from collections.abc import Iterable
|
7
|
+
from typing import Iterable
|
38
8
|
|
39
9
|
from silx.gui import qt
|
40
|
-
from pyunitsystem import
|
10
|
+
from pyunitsystem.metricsystem import MetricSystem
|
11
|
+
from tomwer.gui.utils.qt_utils import block_signals
|
41
12
|
|
42
13
|
|
43
14
|
class DimensionWidget(qt.QGroupBox):
|
@@ -45,12 +16,10 @@ class DimensionWidget(qt.QGroupBox):
|
|
45
16
|
Simple widget to display value over 3 dimensions
|
46
17
|
|
47
18
|
:param parent:
|
48
|
-
:param
|
19
|
+
:param title: QGroupBox title
|
49
20
|
:param dims_name: name of the dimension. If set will be store in each
|
50
21
|
QDoubleLine prefix
|
51
|
-
:type dims_name: tuple
|
52
22
|
:param dims_colors: color associated to the three dimensions if any
|
53
|
-
:type dims_colors: tuple
|
54
23
|
"""
|
55
24
|
|
56
25
|
valuesChanged = qt.Signal()
|
@@ -68,10 +37,10 @@ class DimensionWidget(qt.QGroupBox):
|
|
68
37
|
assert dims_colors is None or (
|
69
38
|
isinstance(dims_colors, Iterable) and len(dims_colors) == 3
|
70
39
|
)
|
71
|
-
self._dim0Value = 1.0 *
|
72
|
-
self._dim1Value = 1.0 *
|
73
|
-
self._dim2Value = 1.0 *
|
74
|
-
self._displayUnit =
|
40
|
+
self._dim0Value = 1.0 * MetricSystem.MILLIMETER.value
|
41
|
+
self._dim1Value = 1.0 * MetricSystem.MILLIMETER.value
|
42
|
+
self._dim2Value = 1.0 * MetricSystem.MILLIMETER.value
|
43
|
+
self._displayUnit = MetricSystem.MILLIMETER
|
75
44
|
# defined unit to display values. Always stored in m (International
|
76
45
|
# System)
|
77
46
|
## set GUI
|
@@ -134,105 +103,99 @@ class DimensionWidget(qt.QGroupBox):
|
|
134
103
|
def setUnit(self, unit):
|
135
104
|
"""
|
136
105
|
define with which unit we should display the size
|
137
|
-
:param unit: metric to be used for display. Internally this is always
|
138
|
-
stored using the international metric system
|
106
|
+
:param unit: metric to be used for display. Internally this is always stored using the international metric system
|
139
107
|
"""
|
140
|
-
self._displayUnit =
|
108
|
+
self._displayUnit = MetricSystem.from_value(unit)
|
141
109
|
for widget in (self._dim0ValueQLE, self._dim1ValueQLE, self._dim2ValueQLE):
|
142
110
|
widget.setSuffix(str(self.unit()))
|
143
111
|
# update displayed values
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
self.blockSignals(old)
|
112
|
+
with block_signals(self):
|
113
|
+
self._dim0ValueQLE.setValue(self._getDim0DisplayValue())
|
114
|
+
self._dim1ValueQLE.setValue(self._getDim1DisplayValue())
|
115
|
+
self._dim2ValueQLE.setValue(self._getDim2DisplayValue())
|
149
116
|
|
150
|
-
def unit(self) ->
|
117
|
+
def unit(self) -> MetricSystem:
|
151
118
|
"""
|
152
119
|
|
153
120
|
:return: metric system used for display
|
154
|
-
:rtype: metricsystem.MetricSystem
|
155
121
|
"""
|
156
122
|
return self._displayUnit
|
157
123
|
|
158
|
-
def setValues(
|
124
|
+
def setValues(
|
125
|
+
self,
|
126
|
+
dim0: float,
|
127
|
+
dim1: float,
|
128
|
+
dim2: float,
|
129
|
+
unit: str | MetricSystem = "mm",
|
130
|
+
) -> None:
|
159
131
|
"""
|
160
132
|
|
161
|
-
:param
|
162
|
-
:param
|
163
|
-
:param
|
164
|
-
:param
|
165
|
-
:return:
|
133
|
+
:param dim0: value to dim0
|
134
|
+
:param dim1: value to dim1
|
135
|
+
:param dim2: value to dim2
|
136
|
+
:param unit: unit used for the provided values
|
166
137
|
"""
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
self.blockSignals(old)
|
138
|
+
with block_signals(self):
|
139
|
+
self.setDim0value(value=dim0, unit=unit)
|
140
|
+
self.setDim1value(value=dim1, unit=unit)
|
141
|
+
self.setDim2value(value=dim2, unit=unit)
|
172
142
|
self.valuesChanged.emit()
|
173
143
|
|
174
144
|
def getValues(self) -> tuple:
|
175
145
|
"""
|
176
146
|
|
177
147
|
:return: (dim0 value, dim1 value, dim2 value, unit)
|
178
|
-
:rtype: tuple
|
179
148
|
"""
|
180
149
|
return (
|
181
150
|
self.getDim0Value()[0],
|
182
151
|
self.getDim1Value()[0],
|
183
152
|
self.getDim2Value()[0],
|
184
|
-
|
153
|
+
MetricSystem.METER,
|
185
154
|
)
|
186
155
|
|
187
156
|
def getDim0Value(self) -> tuple:
|
188
|
-
"""Return Dim 0 value and unit. Unit is always
|
189
|
-
return self._dim0Value,
|
157
|
+
"""Return Dim 0 value and unit. Unit is always meter"""
|
158
|
+
return self._dim0Value, MetricSystem.METER
|
190
159
|
|
191
|
-
def setDim0value(self, value, unit="mm"):
|
160
|
+
def setDim0value(self, value: str | MetricSystem, unit="mm"):
|
192
161
|
"""
|
193
162
|
|
194
163
|
:param value: value to set to dim 0.
|
195
|
-
:param Union[str,MetricSystem] unit:
|
196
164
|
:return:
|
197
165
|
"""
|
198
|
-
self._dim0Value = value *
|
199
|
-
|
200
|
-
|
201
|
-
self.blockSignals(old)
|
166
|
+
self._dim0Value = value * MetricSystem.from_value(unit).value
|
167
|
+
with block_signals(self):
|
168
|
+
self._dim0ValueQLE.setValue(self._dim0Value)
|
202
169
|
self.valuesChanged.emit()
|
203
170
|
|
204
171
|
def getDim1Value(self) -> tuple:
|
205
|
-
"""Return Dim 0 value and unit. Unit is always
|
206
|
-
return self._dim1Value,
|
172
|
+
"""Return Dim 0 value and unit. Unit is always meter"""
|
173
|
+
return self._dim1Value, MetricSystem.METER
|
207
174
|
|
208
|
-
def setDim1value(self, value, unit="mm"):
|
175
|
+
def setDim1value(self, value: str | MetricSystem, unit="mm"):
|
209
176
|
"""
|
210
177
|
|
211
178
|
:param value: value to set to dim 1.
|
212
|
-
:param Union[str,MetricSystem] unit:
|
213
179
|
:return:
|
214
180
|
"""
|
215
|
-
self._dim1Value = value *
|
216
|
-
|
217
|
-
|
218
|
-
self.blockSignals(old)
|
181
|
+
self._dim1Value = value * MetricSystem.from_value(unit).value
|
182
|
+
with block_signals(self):
|
183
|
+
self._dim1ValueQLE.setValue(self._dim1Value)
|
219
184
|
self.valuesChanged.emit()
|
220
185
|
|
221
186
|
def getDim2Value(self) -> tuple:
|
222
|
-
"""Return Dim 0 value and unit. Unit is always
|
223
|
-
return self._dim2Value,
|
187
|
+
"""Return Dim 0 value and unit. Unit is always meter"""
|
188
|
+
return self._dim2Value, MetricSystem.METER
|
224
189
|
|
225
|
-
def setDim2value(self, value, unit="mm"):
|
190
|
+
def setDim2value(self, value: str | MetricSystem, unit="mm"):
|
226
191
|
"""
|
227
192
|
|
228
193
|
:param value: value to set to dim 2.
|
229
|
-
:param Union[str,MetricSystem] unit:
|
230
194
|
:return:
|
231
195
|
"""
|
232
|
-
self._dim2Value = value *
|
233
|
-
|
234
|
-
|
235
|
-
self.blockSignals(old)
|
196
|
+
self._dim2Value = value * MetricSystem.from_value(unit).value
|
197
|
+
with block_signals(self):
|
198
|
+
self._dim2ValueQLE.setValue(self._dim2Value)
|
236
199
|
self.valuesChanged.emit()
|
237
200
|
|
238
201
|
def _valuesChanged(self, *args, **kwargs):
|
@@ -240,21 +203,18 @@ class DimensionWidget(qt.QGroupBox):
|
|
240
203
|
|
241
204
|
def _userSetDim0(self):
|
242
205
|
"""callback when the user modify the dim 0 QDSP"""
|
243
|
-
|
244
|
-
|
245
|
-
self.blockSignals(old)
|
206
|
+
with block_signals(self):
|
207
|
+
self._dim0Value = self._dim0ValueQLE.value() * self.unit().value
|
246
208
|
self.valuesChanged.emit()
|
247
209
|
|
248
210
|
def _userSetDim1(self):
|
249
211
|
"""callback when the user modify the dim 1 QDSP"""
|
250
|
-
|
251
|
-
|
252
|
-
self.blockSignals(old)
|
212
|
+
with block_signals(self):
|
213
|
+
self._dim1Value = self._dim1ValueQLE.value() * self.unit().value
|
253
214
|
self.valuesChanged.emit()
|
254
215
|
|
255
216
|
def _userSetDim2(self):
|
256
217
|
"""callback when the user modify the dim 2 QDSP"""
|
257
|
-
|
258
|
-
|
259
|
-
self.blockSignals(old)
|
218
|
+
with block_signals(self):
|
219
|
+
self._dim2Value = self._dim2ValueQLE.value() * self.unit().value
|
260
220
|
self.valuesChanged.emit()
|
@@ -1,41 +1,11 @@
|
|
1
|
-
# coding: utf-8
|
2
|
-
# /*##########################################################################
|
3
|
-
#
|
4
|
-
# Copyright (c) 2016-2017 European Synchrotron Radiation Facility
|
5
|
-
#
|
6
|
-
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
7
|
-
# of this software and associated documentation files (the "Software"), to deal
|
8
|
-
# in the Software without restriction, including without limitation the rights
|
9
|
-
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
10
|
-
# copies of the Software, and to permit persons to whom the Software is
|
11
|
-
# furnished to do so, subject to the following conditions:
|
12
|
-
#
|
13
|
-
# The above copyright notice and this permission notice shall be included in
|
14
|
-
# all copies or substantial portions of the Software.
|
15
|
-
#
|
16
|
-
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
17
|
-
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
18
|
-
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
19
|
-
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
20
|
-
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
21
|
-
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
22
|
-
# THE SOFTWARE.
|
23
|
-
#
|
24
|
-
# ###########################################################################*/
|
25
1
|
"""
|
26
2
|
contains gui relative to semi-automatic axis calculation
|
27
3
|
"""
|
28
4
|
|
29
|
-
|
30
|
-
__authors__ = [
|
31
|
-
"H. Payno",
|
32
|
-
]
|
33
|
-
__license__ = "MIT"
|
34
|
-
__date__ = "01/02/2021"
|
5
|
+
from __future__ import annotations
|
35
6
|
|
36
7
|
|
37
8
|
import logging
|
38
|
-
from typing import Union
|
39
9
|
|
40
10
|
import numpy
|
41
11
|
from silx.gui import qt
|
@@ -45,14 +15,16 @@ from tomwer.core.process.reconstruction.nabu.utils import _NabuMode, slice_index
|
|
45
15
|
from tomwer.core.process.reconstruction.saaxis.params import SAAxisParams
|
46
16
|
from tomwer.core.process.reconstruction.saaxis.saaxis import SAAxisTask
|
47
17
|
from tomwer.gui import icons
|
48
|
-
from tomwer.gui.reconstruction.axis.
|
49
|
-
from tomwer.gui.reconstruction.nabu.slices import
|
18
|
+
from tomwer.gui.reconstruction.axis.CalculationWidget import CalculationWidget
|
19
|
+
from tomwer.gui.reconstruction.nabu.slices import NabuWidget
|
20
|
+
from tomwer.gui.reconstruction.nabu.platform import NabuPlatformSettings
|
50
21
|
from tomwer.gui.reconstruction.saaxis.corrangeselector import SliceAndCorWidget
|
51
22
|
from tomwer.gui.reconstruction.scores.control import ControlWidget
|
52
23
|
from tomwer.gui.reconstruction.scores.scoreplot import CorSelection
|
53
24
|
from tomwer.gui.reconstruction.scores.scoreplot import ScorePlot as _ScorePlot
|
54
25
|
from tomwer.gui.utils.buttons import TabBrowsersButtons
|
55
26
|
from tomwer.gui.utils.scandescription import ScanNameLabelAndShape
|
27
|
+
from tomwer.gui.settings import TAB_LABEL_PLATFORM_SETTINGS
|
56
28
|
from tomwer.synctools.axis import QAxisRP
|
57
29
|
|
58
30
|
_logger = logging.getLogger(__file__)
|
@@ -96,12 +68,13 @@ class NabuAutoCorDiag(qt.QDialog):
|
|
96
68
|
GUI to compute an estimation of the Center Of Rotation
|
97
69
|
"""
|
98
70
|
|
99
|
-
class CalculationWidget(
|
71
|
+
class CalculationWidget(CalculationWidget):
|
100
72
|
def _modeChanged(self, *args, **kwargs):
|
101
73
|
super()._modeChanged()
|
102
74
|
self.getMethodLockPB().hide()
|
103
75
|
|
104
76
|
sigRequestAutoCor = qt.Signal()
|
77
|
+
"""emit when user request auto cor"""
|
105
78
|
|
106
79
|
def __init__(self, parent=None, qarixrp=None):
|
107
80
|
assert qarixrp is not None, "An instance of QAxisRP should be provided"
|
@@ -114,7 +87,7 @@ class NabuAutoCorDiag(qt.QDialog):
|
|
114
87
|
self._automatic_cor.getMethodLockPB().hide()
|
115
88
|
|
116
89
|
qcb = self._automatic_cor._qcbPosition
|
117
|
-
for mode in (axis_mode.AxisMode.manual,
|
90
|
+
for mode in (axis_mode.AxisMode.manual,):
|
118
91
|
idx = qcb.findText(mode.value)
|
119
92
|
if idx >= 0:
|
120
93
|
qcb.removeItem(idx)
|
@@ -150,11 +123,17 @@ class _SAAxisTabWidget(qt.QTabWidget):
|
|
150
123
|
sinogram_icon = icons.getQIcon("sinogram")
|
151
124
|
self.addTab(self._sliceAndCorWidget, sinogram_icon, "slice && cor range")
|
152
125
|
# nabu reconstruction parameters
|
153
|
-
self._nabuSettings =
|
126
|
+
self._nabuSettings = NabuWidget(self)
|
154
127
|
self._nabuSettings.setConfigurationLevel(level="required")
|
155
128
|
self._nabuSettings.hideSlicesInterface()
|
156
129
|
nabu_icon = icons.getQIcon("nabu")
|
157
130
|
self.addTab(self._nabuSettings, nabu_icon, "reconstruction settings")
|
131
|
+
# platform settings
|
132
|
+
self._localPlatformSettings = NabuPlatformSettings(self)
|
133
|
+
settings_icons = icons.getQIcon("parameters")
|
134
|
+
self.addTab(
|
135
|
+
self._localPlatformSettings, settings_icons, TAB_LABEL_PLATFORM_SETTINGS
|
136
|
+
)
|
158
137
|
# results
|
159
138
|
self._resultsViewer = ScorePlot(self, variable_name="cor", backend=backend)
|
160
139
|
results_icon = icons.getQIcon("results")
|
@@ -419,7 +398,7 @@ class SAAxisWindow(qt.QMainWindow):
|
|
419
398
|
else:
|
420
399
|
relative_cor = None
|
421
400
|
if relative_cor is None:
|
422
|
-
relative_cor = scan.
|
401
|
+
relative_cor = scan.x_rotation_axis_pixel_position
|
423
402
|
|
424
403
|
if relative_cor is not None and numpy.issubdtype(
|
425
404
|
type(relative_cor), numpy.number
|
@@ -455,7 +434,7 @@ class SAAxisWindow(qt.QMainWindow):
|
|
455
434
|
window.raise_()
|
456
435
|
window.show()
|
457
436
|
|
458
|
-
def _computeEstimatedCor(self) ->
|
437
|
+
def _computeEstimatedCor(self) -> float | None:
|
459
438
|
"""callback when calculation of a estimated cor is requested.
|
460
439
|
Should be implemted by OrangeWidget or application"""
|
461
440
|
raise NotImplementedError("Base class")
|
@@ -1,60 +1,29 @@
|
|
1
1
|
# coding: utf-8
|
2
|
-
|
3
|
-
|
4
|
-
# Copyright (c) 2016-2017 European Synchrotron Radiation Facility
|
5
|
-
#
|
6
|
-
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
7
|
-
# of this software and associated documentation files (the "Software"), to deal
|
8
|
-
# in the Software without restriction, including without limitation the rights
|
9
|
-
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
10
|
-
# copies of the Software, and to permit persons to whom the Software is
|
11
|
-
# furnished to do so, subject to the following conditions:
|
12
|
-
#
|
13
|
-
# The above copyright notice and this permission notice shall be included in
|
14
|
-
# all copies or substantial portions of the Software.
|
15
|
-
#
|
16
|
-
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
17
|
-
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
18
|
-
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
19
|
-
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
20
|
-
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
21
|
-
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
22
|
-
# THE SOFTWARE.
|
23
|
-
#
|
24
|
-
# ###########################################################################*/
|
2
|
+
from __future__ import annotations
|
3
|
+
|
25
4
|
"""
|
26
5
|
contains gui to select a slice in a volume
|
27
6
|
"""
|
28
7
|
|
29
|
-
|
30
|
-
__authors__ = [
|
31
|
-
"H. Payno",
|
32
|
-
]
|
33
|
-
|
34
|
-
__license__ = "MIT"
|
35
|
-
__date__ = "04/02/2021"
|
36
|
-
|
37
|
-
|
38
8
|
import functools
|
39
9
|
|
40
10
|
import numpy
|
41
11
|
from silx.gui import qt
|
42
12
|
from silx.gui.plot import PlotWidget
|
43
13
|
|
44
|
-
# class SliceSelectorWithMiddle(qt.QWidget):
|
45
|
-
|
46
14
|
|
47
15
|
class SliceSelector(qt.QWidget):
|
48
16
|
"""
|
49
17
|
Allow definition of n slices with a volume slice selector and spin boxes
|
50
|
-
|
51
|
-
|
18
|
+
|
19
|
+
:param insert: if True add spin boxes at the beginning of the layout otherwise append them
|
20
|
+
:param invert_y_axis: will be provided to silx plot
|
52
21
|
"""
|
53
22
|
|
54
23
|
sigSlicesChanged = qt.Signal()
|
55
24
|
"""signal emitted when slices value change"""
|
56
25
|
|
57
|
-
def __init__(self, parent=None, insert=True, invert_y_axis=False):
|
26
|
+
def __init__(self, parent=None, insert: bool = True, invert_y_axis: bool = False):
|
58
27
|
self._updatePlaneFrmSBLock = False
|
59
28
|
self._insert = insert
|
60
29
|
self._slicesQSB = []
|
@@ -172,10 +141,10 @@ class _SliceSelectorFrmVolume(PlotWidget):
|
|
172
141
|
self.setInteractiveMode("select", zoomOnWheel=False)
|
173
142
|
self.setPanWithArrowKeys(False)
|
174
143
|
|
175
|
-
def _contextMenu(self, pos):
|
144
|
+
def _contextMenu(self, pos: qt.QPoint):
|
176
145
|
"""Handle plot area customContextMenuRequested signal.
|
177
146
|
|
178
|
-
:param
|
147
|
+
:param pos: Mouse position relative to plot area
|
179
148
|
"""
|
180
149
|
# avoir rest zoom action
|
181
150
|
pass
|
@@ -1,41 +1,14 @@
|
|
1
1
|
# coding: utf-8
|
2
|
-
|
3
|
-
#
|
4
|
-
# Copyright (c) 2016-2017 European Synchrotron Radiation Facility
|
5
|
-
#
|
6
|
-
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
7
|
-
# of this software and associated documentation files (the "Software"), to deal
|
8
|
-
# in the Software without restriction, including without limitation the rights
|
9
|
-
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
10
|
-
# copies of the Software, and to permit persons to whom the Software is
|
11
|
-
# furnished to do so, subject to the following conditions:
|
12
|
-
#
|
13
|
-
# The above copyright notice and this permission notice shall be included in
|
14
|
-
# all copies or substantial portions of the Software.
|
15
|
-
#
|
16
|
-
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
17
|
-
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
18
|
-
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
19
|
-
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
20
|
-
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
21
|
-
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
22
|
-
# THE SOFTWARE.
|
23
|
-
#
|
24
|
-
# ###########################################################################*/
|
2
|
+
|
25
3
|
"""
|
26
4
|
contains gui relative to semi-automatic axis calculation
|
27
5
|
"""
|
28
6
|
|
29
|
-
|
30
|
-
__authors__ = [
|
31
|
-
"H. Payno",
|
32
|
-
]
|
33
|
-
__license__ = "MIT"
|
34
|
-
__date__ = "20/05/2021"
|
7
|
+
from __future__ import annotations
|
35
8
|
|
36
9
|
|
37
10
|
import logging
|
38
|
-
import
|
11
|
+
from typing import Iterable
|
39
12
|
|
40
13
|
import numpy
|
41
14
|
from silx.gui import qt
|
@@ -52,13 +25,15 @@ from tomwer.core.process.reconstruction.scores.params import ScoreMethod
|
|
52
25
|
from tomwer.core.scan.scanbase import TomwerScanBase
|
53
26
|
from tomwer.gui import icons
|
54
27
|
from tomwer.gui.reconstruction.nabu.nabuconfig.phase import _NabuPhaseConfig
|
55
|
-
from tomwer.gui.reconstruction.nabu.slices import
|
28
|
+
from tomwer.gui.reconstruction.nabu.slices import NabuWidget
|
29
|
+
from tomwer.gui.reconstruction.nabu.platform import NabuPlatformSettings
|
56
30
|
from tomwer.gui.reconstruction.saaxis.sliceselector import SliceSelector
|
57
31
|
from tomwer.gui.reconstruction.scores.control import ControlWidget
|
58
32
|
from tomwer.gui.reconstruction.scores.scoreplot import DelaBetaSelection
|
59
33
|
from tomwer.gui.reconstruction.scores.scoreplot import ScorePlot as _ScorePlot
|
60
34
|
from tomwer.gui.utils.buttons import TabBrowsersButtons
|
61
35
|
from tomwer.gui.utils.scandescription import ScanNameLabelAndShape
|
36
|
+
from tomwer.gui.settings import TAB_LABEL_PLATFORM_SETTINGS
|
62
37
|
from tomwer.synctools.sadeltabeta import QSADeltaBetaParams
|
63
38
|
|
64
39
|
_logger = logging.getLogger(__name__)
|
@@ -104,12 +79,18 @@ class _SADeltaBetaTabWidget(qt.QTabWidget):
|
|
104
79
|
self._deltaBetaSelectionWidget, delta_beta_icon, "delta beta values"
|
105
80
|
)
|
106
81
|
# nabu reconstruction parameters
|
107
|
-
self._nabuSettings =
|
82
|
+
self._nabuSettings = NabuWidget(self)
|
108
83
|
self._nabuSettings.setConfigurationLevel(level="required")
|
109
84
|
self._nabuSettings.hidePaganinInterface()
|
110
85
|
self._nabuSettings.hideSlicesInterface()
|
111
86
|
nabu_icon = icons.getQIcon("nabu")
|
112
87
|
self.addTab(self._nabuSettings, nabu_icon, "reconstruction settings")
|
88
|
+
# platform settings
|
89
|
+
self._localPlatformSettings = NabuPlatformSettings(self)
|
90
|
+
settings_icons = icons.getQIcon("parameters")
|
91
|
+
self.addTab(
|
92
|
+
self._localPlatformSettings, settings_icons, TAB_LABEL_PLATFORM_SETTINGS
|
93
|
+
)
|
113
94
|
# results
|
114
95
|
self._resultsViewer = ScorePlot(self, variable_name="db", backend=backend)
|
115
96
|
results_icon = icons.getQIcon("results")
|
@@ -356,13 +337,13 @@ class SADeltaBetaWindow(qt.QMainWindow):
|
|
356
337
|
def setDBScores(
|
357
338
|
self,
|
358
339
|
scores: dict,
|
359
|
-
score_method:
|
340
|
+
score_method: str | ScoreMethod,
|
360
341
|
img_width=None,
|
361
342
|
update_only_scores=False,
|
362
343
|
):
|
363
344
|
"""
|
364
345
|
|
365
|
-
:param
|
346
|
+
:param scores: cor value (float) as key and
|
366
347
|
tuple(url: DataUrl, score: float) as value
|
367
348
|
"""
|
368
349
|
self._tabWidget.setDeltaBetaScores(
|
@@ -392,6 +373,7 @@ class DeltaBetaSelectionWidget(qt.QWidget):
|
|
392
373
|
"""Widget used to select the range of delta / beta to use"""
|
393
374
|
|
394
375
|
sigConfigurationChanged = qt.Signal()
|
376
|
+
"""emit when configuration change"""
|
395
377
|
|
396
378
|
_DEFAULT_VERTICAL_SLICE_MODE = ("middle", "other")
|
397
379
|
|
@@ -423,7 +405,7 @@ class DeltaBetaSelectionWidget(qt.QWidget):
|
|
423
405
|
# paganin main window
|
424
406
|
self._paganinGB = qt.QGroupBox("paganin", self)
|
425
407
|
self._paganinGB.setLayout(qt.QVBoxLayout())
|
426
|
-
self._mainWindow = _NabuPhaseConfig(self
|
408
|
+
self._mainWindow = _NabuPhaseConfig(self)
|
427
409
|
self._mainWindow.setConfigurationLevel(ConfigurationLevel.ADVANCED)
|
428
410
|
self._mainWindow._ctfOpts.hide()
|
429
411
|
self._paganinGB.layout().addWidget(self._mainWindow)
|
@@ -447,7 +429,7 @@ class DeltaBetaSelectionWidget(qt.QWidget):
|
|
447
429
|
def _updated(self, *args, **kwargs):
|
448
430
|
self.sigConfigurationChanged.emit()
|
449
431
|
|
450
|
-
def setSlice(self, slice_:
|
432
|
+
def setSlice(self, slice_: str | int):
|
451
433
|
if isinstance(slice_, str):
|
452
434
|
if slice_ != "middle":
|
453
435
|
raise ValueError(f"Slice should be 'middle' or an int. Not {slice_}")
|
@@ -496,7 +478,7 @@ class DeltaBetaSelectionWidget(qt.QWidget):
|
|
496
478
|
db_values = self._mainWindow._paganinOpts.getDeltaBeta()
|
497
479
|
return retrieve_lst_of_value_from_str(db_values, type_=float)
|
498
480
|
|
499
|
-
def setDeltaBetaValues(self, values:
|
481
|
+
def setDeltaBetaValues(self, values: numpy.array | Iterable):
|
500
482
|
values = numpy.array(values)
|
501
483
|
step = None
|
502
484
|
if len(values) > 3:
|
@@ -1,38 +1,10 @@
|
|
1
1
|
# coding: utf-8
|
2
|
-
|
3
|
-
#
|
4
|
-
# Copyright (c) 2016-2017 European Synchrotron Radiation Facility
|
5
|
-
#
|
6
|
-
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
7
|
-
# of this software and associated documentation files (the "Software"), to deal
|
8
|
-
# in the Software without restriction, including without limitation the rights
|
9
|
-
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
10
|
-
# copies of the Software, and to permit persons to whom the Software is
|
11
|
-
# furnished to do so, subject to the following conditions:
|
12
|
-
#
|
13
|
-
# The above copyright notice and this permission notice shall be included in
|
14
|
-
# all copies or substantial portions of the Software.
|
15
|
-
#
|
16
|
-
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
17
|
-
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
18
|
-
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
19
|
-
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
20
|
-
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
21
|
-
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
22
|
-
# THE SOFTWARE.
|
23
|
-
#
|
24
|
-
# ###########################################################################*/
|
2
|
+
|
25
3
|
"""
|
26
4
|
contains gui to select a slice in a volume
|
27
5
|
"""
|
28
6
|
|
29
|
-
|
30
|
-
__authors__ = [
|
31
|
-
"H. Payno",
|
32
|
-
]
|
33
|
-
|
34
|
-
__license__ = "MIT"
|
35
|
-
__date__ = "21/05/2021"
|
7
|
+
from __future__ import annotations
|
36
8
|
|
37
9
|
|
38
10
|
from silx.gui import qt
|