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,51 +1,20 @@
|
|
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 to select a slice in a volume
|
27
3
|
"""
|
28
4
|
|
29
|
-
|
30
|
-
__authors__ = [
|
31
|
-
"H. Payno",
|
32
|
-
]
|
33
|
-
|
34
|
-
__license__ = "MIT"
|
35
|
-
__date__ = "25/02/2021"
|
36
|
-
|
5
|
+
from __future__ import annotations
|
37
6
|
|
38
7
|
import logging
|
39
8
|
import os
|
40
9
|
import weakref
|
41
10
|
from contextlib import AbstractContextManager
|
42
|
-
from typing import Union
|
43
11
|
|
44
12
|
import numpy
|
45
13
|
from matplotlib import image as _matplotlib_image
|
46
14
|
from silx.gui import qt
|
47
15
|
from silx.gui.plot import PlotWidget
|
48
16
|
|
17
|
+
from tomwer.core.process.reconstruction.utils.cor import relative_pos_to_absolute
|
49
18
|
from tomwer.core.process.reconstruction.scores.params import ScoreMethod
|
50
19
|
from tomwer.gui import icons, settings
|
51
20
|
from tomwer.gui.reconstruction.saaxis.dimensionwidget import DimensionWidget
|
@@ -61,6 +30,7 @@ _logger = logging.getLogger(__name__)
|
|
61
30
|
|
62
31
|
class VariableScorePlot(PlotWidget):
|
63
32
|
sigMouseWheelActive = qt.Signal(object)
|
33
|
+
"""emit when the mouse wheel get activated"""
|
64
34
|
|
65
35
|
MARKER_COLOR = "#ff292199"
|
66
36
|
|
@@ -98,10 +68,10 @@ class VariableScorePlot(PlotWidget):
|
|
98
68
|
def onMouseWheel(self, xPixel, yPixel, angleInDegrees):
|
99
69
|
pass
|
100
70
|
|
101
|
-
def _contextMenu(self, pos):
|
71
|
+
def _contextMenu(self, pos: qt.QPoint):
|
102
72
|
"""Handle plot area customContextMenuRequested signal.
|
103
73
|
|
104
|
-
:param
|
74
|
+
:param pos: Mouse position relative to plot area
|
105
75
|
"""
|
106
76
|
# avoir reset zoom
|
107
77
|
pass
|
@@ -113,7 +83,9 @@ class VariableSelection(qt.QWidget):
|
|
113
83
|
sigSelectionModeChanged = qt.Signal()
|
114
84
|
"""Signal emitted when selection mode changed"""
|
115
85
|
sigAutoFocusLocked = qt.Signal()
|
86
|
+
"""signal send when the 'auto' mode is locked / activated"""
|
116
87
|
sigAutoFocusUnLocked = qt.Signal()
|
88
|
+
"""signal send when the 'auto' mode is unlocked / unactivated"""
|
117
89
|
|
118
90
|
sigVariableValueSelected = qt.Signal(float)
|
119
91
|
"""signal emitted when the cor value is selected by the user from
|
@@ -336,7 +308,9 @@ class CorSelection(VariableSelection):
|
|
336
308
|
if relative_value is None or self._img_width is None:
|
337
309
|
self._absoluteVarValueLE.clear()
|
338
310
|
else:
|
339
|
-
absolute_value =
|
311
|
+
absolute_value = relative_pos_to_absolute(
|
312
|
+
relative_pos=relative_value, det_width=self._img_width
|
313
|
+
)
|
340
314
|
self._absoluteVarValueLE.setText(f"{absolute_value:.3f}")
|
341
315
|
|
342
316
|
def getWindowTitle(self):
|
@@ -451,7 +425,7 @@ class _VariableValueLabels(qt.QWidget):
|
|
451
425
|
# paint oblique text
|
452
426
|
with PainterRotationCM(
|
453
427
|
painter=painter,
|
454
|
-
x=var_px_pos + self._slider_ticks_margin / 2.0,
|
428
|
+
x=var_px_pos + (self._slider_ticks_margin / 2.0),
|
455
429
|
y=0,
|
456
430
|
angle=self.rotation_angle_degree,
|
457
431
|
) as l_painter:
|
@@ -687,13 +661,13 @@ class ScorePlot(qt.QWidget):
|
|
687
661
|
def setVarScores(
|
688
662
|
self,
|
689
663
|
scores: dict,
|
690
|
-
score_method:
|
664
|
+
score_method: str | ScoreMethod,
|
691
665
|
img_width=None,
|
692
666
|
update_only_scores=False,
|
693
667
|
):
|
694
668
|
"""
|
695
669
|
|
696
|
-
:param
|
670
|
+
:param scores: cor value (float) as key and
|
697
671
|
tuple(url: DataUrl, score: float) as value
|
698
672
|
"""
|
699
673
|
score_method = ScoreMethod.from_value(score_method)
|
@@ -765,23 +739,23 @@ class ScorePlot(qt.QWidget):
|
|
765
739
|
self._plot.getPlotWidget().clear()
|
766
740
|
self._varValueWidget.setImgWidth(None)
|
767
741
|
|
768
|
-
def setVoxelSize(self, dim0, dim1, dim2, unit):
|
742
|
+
def setVoxelSize(self, dim0, dim1, dim2, unit: str | float):
|
769
743
|
"""
|
770
744
|
|
771
|
-
:param
|
772
|
-
:param
|
773
|
-
:param
|
774
|
-
:param
|
745
|
+
:param dim0:
|
746
|
+
:param dim1:
|
747
|
+
:param dim2:
|
748
|
+
:param unit:
|
775
749
|
"""
|
776
750
|
self._voxelSizeW.setValues(dim0=dim0, dim1=dim1, dim2=dim2, unit=unit)
|
777
751
|
|
778
|
-
def setVolumeSize(self, dim0, dim1, dim2, unit):
|
752
|
+
def setVolumeSize(self, dim0, dim1, dim2, unit: str | float):
|
779
753
|
"""
|
780
754
|
|
781
|
-
:param
|
782
|
-
:param
|
783
|
-
:param
|
784
|
-
:param
|
755
|
+
:param dim0:
|
756
|
+
:param dim1:
|
757
|
+
:param dim2:
|
758
|
+
:param unit:
|
785
759
|
"""
|
786
760
|
self._volumeSizeW.setValues(dim0=dim0, dim1=dim1, dim2=dim2, unit=unit)
|
787
761
|
|
File without changes
|
@@ -1,31 +1,5 @@
|
|
1
1
|
# coding: utf-8
|
2
|
-
|
3
|
-
#
|
4
|
-
# Copyright (c) 2017-2019 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
|
-
__authors__ = ["H. Payno"]
|
26
|
-
__license__ = "MIT"
|
27
|
-
__date__ = "16/06/2021"
|
28
|
-
|
2
|
+
from __future__ import annotations
|
29
3
|
|
30
4
|
import os
|
31
5
|
import shutil
|
@@ -39,8 +13,8 @@ from silx.gui.utils.testutils import TestCaseQt
|
|
39
13
|
|
40
14
|
from tomwer.core.process.reconstruction.axis.mode import AxisMode
|
41
15
|
from tomwer.core.scan.nxtomoscan import NXtomoScan
|
42
|
-
from tomwer.gui.reconstruction.axis import
|
43
|
-
from tomwer.gui.reconstruction.axis.
|
16
|
+
from tomwer.gui.reconstruction.axis import AxisMainWindow
|
17
|
+
from tomwer.gui.reconstruction.axis.ManualFramesSelection import ManualFramesSelection
|
44
18
|
from tomwer.synctools.axis import QAxisRP
|
45
19
|
from tomwer.tests.datasets import TomwerCIDatasets
|
46
20
|
from tomwer.tests.utils import skip_gui_test
|
@@ -54,7 +28,7 @@ class TestWindowAxis(TestCaseQt):
|
|
54
28
|
def setUp(self):
|
55
29
|
self.tempdir = tempfile.mkdtemp()
|
56
30
|
self.recons_params = QAxisRP()
|
57
|
-
self._window =
|
31
|
+
self._window = AxisMainWindow(axis_params=self.recons_params)
|
58
32
|
self.scan = MockNXtomo(
|
59
33
|
scan_path=os.path.join(self.tempdir, "nx_tomo.nx"),
|
60
34
|
n_proj=10,
|
@@ -73,8 +47,8 @@ class TestWindowAxis(TestCaseQt):
|
|
73
47
|
|
74
48
|
def testSetImagesNumpyArray(self):
|
75
49
|
"""Test the setImages function"""
|
76
|
-
radio_axis = self._window._axisWidget
|
77
|
-
radio_axis_plot = self._window._axisWidget.
|
50
|
+
radio_axis = self._window._axisWidget
|
51
|
+
radio_axis_plot = self._window._axisWidget.getPlot()
|
78
52
|
numpy.testing.assert_array_equal(
|
79
53
|
radio_axis_plot.getPlot().getActiveImage().getData(), numpy.empty((0, 0, 4))
|
80
54
|
)
|
@@ -90,7 +64,7 @@ class TestWindowAxis(TestCaseQt):
|
|
90
64
|
|
91
65
|
def testSetScan(self):
|
92
66
|
"""Test the setScan function"""
|
93
|
-
radio_axis_plot = self._window._axisWidget.
|
67
|
+
radio_axis_plot = self._window._axisWidget.getPlot()
|
94
68
|
numpy.testing.assert_array_equal(
|
95
69
|
radio_axis_plot.getPlot().getActiveImage().getData(), numpy.empty((0, 0, 4))
|
96
70
|
)
|
@@ -107,7 +81,7 @@ class TestWindowAxis(TestCaseQt):
|
|
107
81
|
correctly working"""
|
108
82
|
imgA = numpy.random.random((100, 100))
|
109
83
|
imgB = numpy.random.random((100, 100))
|
110
|
-
radio_axis = self._window._axisWidget
|
84
|
+
radio_axis = self._window._axisWidget
|
111
85
|
radio_axis.setImages(imgA=imgA, imgB=imgB, flipB=False)
|
112
86
|
self.qapp.processEvents()
|
113
87
|
self.assertTrue(radio_axis.getXShift() == 0)
|
@@ -116,24 +90,24 @@ class TestWindowAxis(TestCaseQt):
|
|
116
90
|
radio_axis.getShiftStep() == 1.0,
|
117
91
|
f"shift is {radio_axis.getShiftStep()} when 1.0 expected",
|
118
92
|
)
|
119
|
-
radio_axis.
|
93
|
+
radio_axis._settingsWidget._shiftControl._leftButton.click()
|
120
94
|
self.qapp.processEvents()
|
121
95
|
self.assertTrue(radio_axis.getXShift() == -1)
|
122
96
|
self.assertTrue(radio_axis.getYShift() == 0)
|
123
|
-
radio_axis.
|
97
|
+
radio_axis._settingsWidget._shiftControl._rightButton.click()
|
124
98
|
self.qapp.processEvents()
|
125
99
|
self.assertTrue(radio_axis.getXShift() == 0)
|
126
100
|
self.assertTrue(radio_axis.getYShift() == 0)
|
127
|
-
radio_axis.
|
101
|
+
radio_axis._settingsWidget._displacementSelector._fineButton.click()
|
128
102
|
self.qapp.processEvents()
|
129
103
|
self.assertTrue(radio_axis.getShiftStep() == 0.1)
|
130
|
-
radio_axis.
|
104
|
+
radio_axis._settingsWidget._shiftControl._topButton.click()
|
131
105
|
self.qapp.processEvents()
|
132
106
|
self.assertTrue(radio_axis.getXShift() == 0)
|
133
107
|
self.assertTrue(radio_axis.getYShift() == 0.1)
|
134
108
|
radio_axis.setShiftStep(0.2)
|
135
109
|
self.assertTrue(radio_axis.getShiftStep() == 0.2)
|
136
|
-
radio_axis.
|
110
|
+
radio_axis._settingsWidget._shiftControl._bottomButton.click()
|
137
111
|
self.qapp.processEvents()
|
138
112
|
self.assertTrue(radio_axis.getXShift() == 0)
|
139
113
|
self.assertTrue(radio_axis.getYShift() == -0.1)
|
@@ -143,17 +117,17 @@ class TestWindowAxis(TestCaseQt):
|
|
143
117
|
axis_obj = QAxisRP()
|
144
118
|
self._window.setReconsParams(axis_obj)
|
145
119
|
self.qapp.processEvents()
|
146
|
-
self.assertEqual(self._window._axisWidget.
|
120
|
+
self.assertEqual(self._window._axisWidget.getMode(), axis_obj.mode)
|
147
121
|
# TODO: change the mode to see if the object is modify
|
148
122
|
|
149
123
|
def testAxisObjectManual(self):
|
150
124
|
"""Test that the GUI change according to the Axis object"""
|
151
125
|
axis_params = QAxisRP()
|
152
126
|
axis_params.mode = AxisMode.manual
|
153
|
-
axis_params.
|
127
|
+
axis_params.set_relative_value(-6.0)
|
154
128
|
# note : for now only the xshift is managed !
|
155
129
|
self._window.setReconsParams(axis_params)
|
156
|
-
radio_axis = self._window._axisWidget
|
130
|
+
radio_axis = self._window._axisWidget
|
157
131
|
self.assertEqual(radio_axis.getXShift(), -6.0)
|
158
132
|
self.assertEqual(radio_axis.getYShift(), 0.0)
|
159
133
|
|
@@ -166,7 +140,7 @@ class TestWindowsAxisSetScan(TestCaseQt):
|
|
166
140
|
def setUp(self):
|
167
141
|
TestCaseQt.setUp(self)
|
168
142
|
self.recons_params = QAxisRP()
|
169
|
-
self.widget =
|
143
|
+
self.widget = AxisMainWindow(axis_params=self.recons_params)
|
170
144
|
self.scan_dir = tempfile.mkdtemp()
|
171
145
|
# create dataset
|
172
146
|
self.master_file = os.path.join(self.scan_dir, "frm_edftomomill_twoentries.nx")
|
@@ -197,32 +171,32 @@ def test__getClosestAssociatedAngle():
|
|
197
171
|
test _getClosestAssociatedAngle function
|
198
172
|
"""
|
199
173
|
assert (
|
200
|
-
|
174
|
+
ManualFramesSelection._getClosestAssociatedAngle(angle=12.3, angles=(12.3,))
|
201
175
|
== 12.3
|
202
176
|
)
|
203
177
|
assert (
|
204
|
-
|
178
|
+
ManualFramesSelection._getClosestAssociatedAngle(
|
205
179
|
angle=12.3, angles=(2.06, 10.3, 100.6)
|
206
180
|
)
|
207
181
|
== 10.3
|
208
182
|
)
|
209
183
|
assert (
|
210
|
-
|
184
|
+
ManualFramesSelection._getClosestAssociatedAngle(
|
211
185
|
angle=100.2, angles=(2.06, 10.3, 100.6)
|
212
186
|
)
|
213
187
|
== 100.6
|
214
188
|
)
|
215
189
|
assert (
|
216
|
-
|
190
|
+
ManualFramesSelection._getClosestAssociatedAngle(angle=12.3, angles=()) is None
|
217
191
|
)
|
218
192
|
assert (
|
219
|
-
|
193
|
+
ManualFramesSelection._getClosestAssociatedAngle(
|
220
194
|
angle=300.2, angles=(2.06, 10.3, 100.6)
|
221
195
|
)
|
222
196
|
== 100.6
|
223
197
|
)
|
224
198
|
assert (
|
225
|
-
|
199
|
+
ManualFramesSelection._getClosestAssociatedAngle(
|
226
200
|
angle=-12, angles=(2.06, 10.3, 100.6)
|
227
201
|
)
|
228
202
|
== 2.06
|
@@ -1,30 +1,5 @@
|
|
1
1
|
# coding: utf-8
|
2
|
-
|
3
|
-
# Copyright (C) 2016 European Synchrotron Radiation Facility
|
4
|
-
#
|
5
|
-
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
-
# of this software and associated documentation files (the "Software"), to deal
|
7
|
-
# in the Software without restriction, including without limitation the rights
|
8
|
-
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
-
# copies of the Software, and to permit persons to whom the Software is
|
10
|
-
# furnished to do so, subject to the following conditions:
|
11
|
-
#
|
12
|
-
# The above copyright notice and this permission notice shall be included in
|
13
|
-
# all copies or substantial portions of the Software.
|
14
|
-
#
|
15
|
-
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
-
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
-
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
-
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
-
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
-
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
21
|
-
# THE SOFTWARE.
|
22
|
-
#
|
23
|
-
#############################################################################*/
|
24
|
-
|
25
|
-
__authors__ = ["H. Payno"]
|
26
|
-
__license__ = "MIT"
|
27
|
-
__date__ = "05/02/2020"
|
2
|
+
from __future__ import annotations
|
28
3
|
|
29
4
|
|
30
5
|
import os
|
@@ -43,9 +18,12 @@ from tomwer.gui.reconstruction.nabu.nabuconfig.reconstruction import (
|
|
43
18
|
_NabuReconstructionConfig,
|
44
19
|
)
|
45
20
|
from tomwer.gui.reconstruction.nabu.nabuflow import NabuFlowControl
|
46
|
-
from tomwer.gui.reconstruction.nabu.volume import
|
21
|
+
from tomwer.gui.reconstruction.nabu.volume import NabuVolumeTabWidget
|
22
|
+
from tomwer.gui.reconstruction.axis.EstimatedCORWidget import EstimatedCORWidget
|
47
23
|
from tomwer.tests.utils import skip_gui_test
|
48
24
|
from tomwer.core.process.output import ProcessDataOutputDirMode
|
25
|
+
from tomwer.tests.conftest import qtapp # noqa F401
|
26
|
+
from tomwer.synctools.axis import QAxisRP
|
49
27
|
|
50
28
|
|
51
29
|
class ProcessClass:
|
@@ -100,7 +78,7 @@ class TestNabuFlow(TestCaseQt):
|
|
100
78
|
class TestNabuPreProcConfig(TestCaseQt):
|
101
79
|
def setUp(self):
|
102
80
|
TestCaseQt.setUp(self)
|
103
|
-
self.nabuWidget = _NabuPreProcessingConfig(parent=None
|
81
|
+
self.nabuWidget = _NabuPreProcessingConfig(parent=None)
|
104
82
|
|
105
83
|
def tearDown(self):
|
106
84
|
self.nabuWidget.setAttribute(qt.Qt.WA_DeleteOnClose)
|
@@ -124,6 +102,7 @@ class TestNabuPreProcConfig(TestCaseQt):
|
|
124
102
|
"sino_rings_options": "sigma=1.0 ; levels=10 ; padding=False",
|
125
103
|
"tilt_correction": "",
|
126
104
|
"autotilt_options": "",
|
105
|
+
"rotate_projections_center": "",
|
127
106
|
}
|
128
107
|
self.assertEqual(self.nabuWidget.getConfiguration(), ini_conf)
|
129
108
|
|
@@ -143,6 +122,7 @@ class TestNabuPreProcConfig(TestCaseQt):
|
|
143
122
|
"sino_rings_options": "sigma=1.4 ; levels=11 ; padding=True",
|
144
123
|
"tilt_correction": "1d-correlation",
|
145
124
|
"autotilt_options": "low_pass=1; high_pass=20",
|
125
|
+
"rotate_projections_center": (2.1, 3.0),
|
146
126
|
}
|
147
127
|
self.nabuWidget.setConfiguration(conf=conf)
|
148
128
|
self.assertEqual(self.nabuWidget.getConfiguration(), conf)
|
@@ -152,7 +132,7 @@ class TestNabuPreProcConfig(TestCaseQt):
|
|
152
132
|
class TestNabuPhaseConfig(TestCaseQt):
|
153
133
|
def setUp(self):
|
154
134
|
TestCaseQt.setUp(self)
|
155
|
-
self.nabuWidget = _NabuPhaseConfig(parent=None
|
135
|
+
self.nabuWidget = _NabuPhaseConfig(parent=None)
|
156
136
|
|
157
137
|
def tearDown(self):
|
158
138
|
self.nabuWidget.setAttribute(qt.Qt.WA_DeleteOnClose)
|
@@ -208,7 +188,7 @@ class TestNabuPhaseConfig(TestCaseQt):
|
|
208
188
|
class TestNabuReconstructionConfig(TestCaseQt):
|
209
189
|
def setUp(self):
|
210
190
|
TestCaseQt.setUp(self)
|
211
|
-
self.nabuWidget = _NabuReconstructionConfig(parent=None
|
191
|
+
self.nabuWidget = _NabuReconstructionConfig(parent=None)
|
212
192
|
|
213
193
|
def tearDown(self):
|
214
194
|
self.nabuWidget.setAttribute(qt.Qt.WA_DeleteOnClose)
|
@@ -334,7 +314,7 @@ class TestNabuOutputConfig(TestCaseQt):
|
|
334
314
|
class TestNabuVolumeWidget(TestCaseQt):
|
335
315
|
def setUp(self):
|
336
316
|
TestCaseQt.setUp(self)
|
337
|
-
self.nabuWidget =
|
317
|
+
self.nabuWidget = NabuVolumeTabWidget(parent=None)
|
338
318
|
self.nabuWidget.setConfigurationLevel("advanced")
|
339
319
|
|
340
320
|
def tearDown(self):
|
@@ -379,3 +359,8 @@ class TestNabuVolumeWidget(TestCaseQt):
|
|
379
359
|
}
|
380
360
|
)
|
381
361
|
self.assertEqual(self.nabuWidget.getConfiguration(), conf)
|
362
|
+
|
363
|
+
|
364
|
+
def test_EstimatedCorWidget(qtapp): # noqa F811
|
365
|
+
"""test of EstimatedCorWidget"""
|
366
|
+
EstimatedCORWidget(parent=None, axis_params=QAxisRP())
|
@@ -1,30 +1,5 @@
|
|
1
1
|
# coding: utf-8
|
2
|
-
|
3
|
-
#
|
4
|
-
# Copyright (c) 2017-2019 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
|
-
__authors__ = ["H. Payno"]
|
26
|
-
__license__ = "MIT"
|
27
|
-
__date__ = "03/02/2021"
|
2
|
+
from __future__ import annotations
|
28
3
|
|
29
4
|
|
30
5
|
import os
|
@@ -37,7 +12,7 @@ import pytest
|
|
37
12
|
from silx.gui import qt
|
38
13
|
from silx.gui.utils.testutils import TestCaseQt
|
39
14
|
from silx.io.url import DataUrl
|
40
|
-
from pyunitsystem import
|
15
|
+
from pyunitsystem.metricsystem import MetricSystem
|
41
16
|
|
42
17
|
from tomwer.core.process.reconstruction.saaxis.params import (
|
43
18
|
ReconstructionMode,
|
@@ -64,11 +39,11 @@ class TestDimensionWidget(TestCaseQt):
|
|
64
39
|
|
65
40
|
def testDimension(self):
|
66
41
|
"""Insure setting dimensions values and unit are correct"""
|
67
|
-
self.assertTrue(self._window.unit() is
|
42
|
+
self.assertTrue(self._window.unit() is MetricSystem.MILLIMETER)
|
68
43
|
# check initial values
|
69
44
|
self.assertEqual(
|
70
45
|
self._window.getValues(),
|
71
|
-
(0.001, 0.001, 0.001,
|
46
|
+
(0.001, 0.001, 0.001, MetricSystem.METER),
|
72
47
|
)
|
73
48
|
# set dim 0 to 20 mm
|
74
49
|
self._window._dim0ValueQLE.setValue(20)
|
@@ -76,7 +51,7 @@ class TestDimensionWidget(TestCaseQt):
|
|
76
51
|
self.qapp.processEvents()
|
77
52
|
self.assertEqual(
|
78
53
|
self._window.getValues(),
|
79
|
-
(0.02, 0.001, 0.001,
|
54
|
+
(0.02, 0.001, 0.001, MetricSystem.METER),
|
80
55
|
)
|
81
56
|
# set dim 1 to 0.6 millimeter
|
82
57
|
self._window._dim1ValueQLE.setValue(0.6)
|
@@ -84,26 +59,24 @@ class TestDimensionWidget(TestCaseQt):
|
|
84
59
|
self.qapp.processEvents()
|
85
60
|
self.assertEqual(
|
86
61
|
self._window.getValues(),
|
87
|
-
(0.02, 0.0006, 0.001,
|
62
|
+
(0.02, 0.0006, 0.001, MetricSystem.METER),
|
88
63
|
)
|
89
64
|
# change display to micrometer
|
90
|
-
self._window.setUnit(
|
65
|
+
self._window.setUnit(MetricSystem.MICROMETER)
|
91
66
|
self.assertEqual(
|
92
67
|
self._window.getValues(),
|
93
|
-
(0.02, 0.0006, 0.001,
|
68
|
+
(0.02, 0.0006, 0.001, MetricSystem.METER),
|
94
69
|
)
|
95
70
|
self.assertEqual(
|
96
71
|
self._window._dim0ValueQLE.value(),
|
97
|
-
20
|
98
|
-
* metricsystem.MetricSystem.MILLIMETER.value
|
99
|
-
/ metricsystem.MetricSystem.MICROMETER.value,
|
72
|
+
20 * MetricSystem.MILLIMETER.value / MetricSystem.MICROMETER.value,
|
100
73
|
)
|
101
74
|
self._window._dim2ValueQLE.setValue(500)
|
102
75
|
self._window._dim2ValueQLE.editingFinished.emit()
|
103
76
|
self.qapp.processEvents()
|
104
77
|
self.assertEqual(
|
105
78
|
self._window.getValues(),
|
106
|
-
(0.02, 0.0006, 0.0005,
|
79
|
+
(0.02, 0.0006, 0.0005, MetricSystem.METER),
|
107
80
|
)
|
108
81
|
|
109
82
|
def testConstructorWithColors(self):
|
@@ -1,30 +1,5 @@
|
|
1
1
|
# coding: utf-8
|
2
|
-
|
3
|
-
#
|
4
|
-
# Copyright (c) 2017-2019 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
|
-
__authors__ = ["H. Payno"]
|
26
|
-
__license__ = "MIT"
|
27
|
-
__date__ = "09/06/2021"
|
2
|
+
from __future__ import annotations
|
28
3
|
|
29
4
|
|
30
5
|
import os
|
@@ -1,34 +1,6 @@
|
|
1
|
-
# /*##########################################################################
|
2
|
-
# Copyright (C) 2017 European Synchrotron Radiation Facility
|
3
|
-
#
|
4
|
-
# This file is part of the PyMca X-ray Fluorescence Toolkit developed at
|
5
|
-
# the ESRF by the Software group.
|
6
|
-
#
|
7
|
-
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
8
|
-
# of this software and associated documentation files (the "Software"), to deal
|
9
|
-
# in the Software without restriction, including without limitation the rights
|
10
|
-
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
11
|
-
# copies of the Software, and to permit persons to whom the Software is
|
12
|
-
# furnished to do so, subject to the following conditions:
|
13
|
-
#
|
14
|
-
# The above copyright notice and this permission notice shall be included in
|
15
|
-
# all copies or substantial portions of the Software.
|
16
|
-
#
|
17
|
-
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
18
|
-
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
19
|
-
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
20
|
-
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
21
|
-
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
22
|
-
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
23
|
-
# THE SOFTWARE.
|
24
|
-
#
|
25
|
-
#############################################################################*/
|
26
1
|
"""Some widget construction to check if a sample moved"""
|
27
2
|
|
28
|
-
|
29
|
-
__license__ = "MIT"
|
30
|
-
__date__ = "19/03/2018"
|
31
|
-
|
3
|
+
from __future__ import annotations
|
32
4
|
|
33
5
|
import logging
|
34
6
|
import weakref
|
@@ -169,7 +141,7 @@ class SampleMovedWidget(qt.QMainWindow):
|
|
169
141
|
|
170
142
|
images value can be str (path to the file) or data
|
171
143
|
|
172
|
-
:param
|
144
|
+
:param images: images to set. key is index or file name, value
|
173
145
|
the image.
|
174
146
|
"""
|
175
147
|
self.clear()
|
@@ -1,34 +1,6 @@
|
|
1
|
-
# /*##########################################################################
|
2
|
-
# Copyright (C) 2017 European Synchrotron Radiation Facility
|
3
|
-
#
|
4
|
-
# This file is part of the PyMca X-ray Fluorescence Toolkit developed at
|
5
|
-
# the ESRF by the Software group.
|
6
|
-
#
|
7
|
-
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
8
|
-
# of this software and associated documentation files (the "Software"), to deal
|
9
|
-
# in the Software without restriction, including without limitation the rights
|
10
|
-
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
11
|
-
# copies of the Software, and to permit persons to whom the Software is
|
12
|
-
# furnished to do so, subject to the following conditions:
|
13
|
-
#
|
14
|
-
# The above copyright notice and this permission notice shall be included in
|
15
|
-
# all copies or substantial portions of the Software.
|
16
|
-
#
|
17
|
-
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
18
|
-
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
19
|
-
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
20
|
-
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
21
|
-
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
22
|
-
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
23
|
-
# THE SOFTWARE.
|
24
|
-
#
|
25
|
-
#############################################################################*/
|
26
1
|
"""Some widget construction to check if a sample moved"""
|
27
2
|
|
28
|
-
|
29
|
-
__license__ = "MIT"
|
30
|
-
__date__ = "17/08/2021"
|
31
|
-
|
3
|
+
from __future__ import annotations
|
32
4
|
|
33
5
|
import functools
|
34
6
|
import logging
|
@@ -81,13 +53,11 @@ class SelectionTable(qt.QTableWidget):
|
|
81
53
|
for imgFrmFile in imgFile.getImages(_load=False):
|
82
54
|
self.addUrl(imgFrmFile.url, **kwargs)
|
83
55
|
|
84
|
-
def addUrl(self, url, **kwargs):
|
56
|
+
def addUrl(self, url: DataUrl, **kwargs) -> int:
|
85
57
|
"""
|
86
58
|
|
87
|
-
:param url:
|
88
|
-
:param args:
|
59
|
+
:param url: DataUrl to add
|
89
60
|
:return: index of the created items row
|
90
|
-
:rtype int
|
91
61
|
"""
|
92
62
|
assert isinstance(url, DataUrl)
|
93
63
|
row = self.rowCount()
|
tomwer/gui/settings.py
CHANGED
@@ -1,3 +1,6 @@
|
|
1
|
+
"""gui settings
|
2
|
+
"""
|
3
|
+
|
1
4
|
from silx.gui import qt
|
2
5
|
|
3
6
|
|
@@ -6,3 +9,7 @@ Y_AXIS_DOWNWARD = True
|
|
6
9
|
|
7
10
|
EDITING_BACKGROUND_COLOR = qt.QColor("#c3d0d6")
|
8
11
|
"""Background color used to notify the user that application waits end of edition before taking it into account"""
|
12
|
+
|
13
|
+
TAB_LABEL_PLATFORM_SETTINGS = "platform settings (for local reconstruction)"
|
14
|
+
|
15
|
+
TAB_LABEL_RECONSTRUCTION_SETTINGS = "reconstruction settings"
|