tomwer 1.3.27__py3-none-any.whl → 1.4.0rc0__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 +48 -49
- 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 +40 -85
- 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 -7
- 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 +7 -4
- 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 +63 -111
- tomwer/core/process/reconstruction/axis/mode.py +5 -3
- tomwer/core/process/reconstruction/axis/params.py +5 -146
- tomwer/core/process/reconstruction/axis/projectiontype.py +0 -28
- 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 +47 -48
- tomwer/core/process/reconstruction/nabu/nabuslices.py +59 -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 +18 -47
- tomwer/core/process/reconstruction/sadeltabeta/params.py +2 -31
- tomwer/core/process/reconstruction/sadeltabeta/sadeltabeta.py +16 -44
- 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/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_axis.py +1 -79
- 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 +4 -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 +46 -54
- tomwer/core/scan/scanbase.py +104 -200
- 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/{test → tests}/test_process_registration.py +1 -28
- 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/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 +264 -0
- tomwer/gui/reconstruction/axis/AxisOptionsWidget.py +153 -0
- tomwer/gui/reconstruction/axis/AxisSettingsWidget.py +776 -0
- tomwer/gui/reconstruction/axis/AxisWidget.py +526 -0
- tomwer/gui/reconstruction/axis/CalculationWidget.py +374 -0
- tomwer/gui/reconstruction/axis/CompareImages.py +11 -44
- tomwer/gui/reconstruction/axis/ControlWidget.py +277 -0
- tomwer/gui/reconstruction/axis/InputWidget.py +491 -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 +16 -49
- 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 +19 -48
- 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 +8 -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 +23 -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 +4 -32
- 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 +27 -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 +2 -31
- tomwer/synctools/stacks/reconstruction/castvolume.py +12 -43
- tomwer/synctools/stacks/reconstruction/dkrefcopy.py +3 -26
- tomwer/synctools/stacks/reconstruction/nabu.py +1 -26
- tomwer/synctools/stacks/reconstruction/normalization.py +1 -26
- tomwer/synctools/stacks/reconstruction/saaxis.py +1 -26
- tomwer/synctools/stacks/reconstruction/sadeltabeta.py +1 -26
- 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 +215 -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 +3 -3
- {tomwer-1.3.27.dist-info → tomwer-1.4.0rc0.dist-info}/LICENSE +3 -3
- tomwer-1.4.0rc0.dist-info/METADATA +337 -0
- tomwer-1.4.0rc0.dist-info/RECORD +909 -0
- {tomwer-1.3.27.dist-info → tomwer-1.4.0rc0.dist-info}/WHEEL +1 -1
- {tomwer-1.3.27.dist-info → tomwer-1.4.0rc0.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/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/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 -1388
- 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.27-py3.11-nspkg.pth +0 -1
- tomwer-1.3.27.dist-info/METADATA +0 -292
- tomwer-1.3.27.dist-info/RECORD +0 -785
- tomwer-1.3.27.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/process/reconstruction/{test → tests}/test_utils.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.27.dist-info → tomwer-1.4.0rc0.dist-info}/top_level.txt +0 -0
@@ -1,45 +1,13 @@
|
|
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
|
@@ -61,6 +29,7 @@ _logger = logging.getLogger(__name__)
|
|
61
29
|
|
62
30
|
class VariableScorePlot(PlotWidget):
|
63
31
|
sigMouseWheelActive = qt.Signal(object)
|
32
|
+
"""emit when the mouse wheel get activated"""
|
64
33
|
|
65
34
|
MARKER_COLOR = "#ff292199"
|
66
35
|
|
@@ -98,10 +67,10 @@ class VariableScorePlot(PlotWidget):
|
|
98
67
|
def onMouseWheel(self, xPixel, yPixel, angleInDegrees):
|
99
68
|
pass
|
100
69
|
|
101
|
-
def _contextMenu(self, pos):
|
70
|
+
def _contextMenu(self, pos: qt.QPoint):
|
102
71
|
"""Handle plot area customContextMenuRequested signal.
|
103
72
|
|
104
|
-
:param
|
73
|
+
:param pos: Mouse position relative to plot area
|
105
74
|
"""
|
106
75
|
# avoir reset zoom
|
107
76
|
pass
|
@@ -113,7 +82,9 @@ class VariableSelection(qt.QWidget):
|
|
113
82
|
sigSelectionModeChanged = qt.Signal()
|
114
83
|
"""Signal emitted when selection mode changed"""
|
115
84
|
sigAutoFocusLocked = qt.Signal()
|
85
|
+
"""signal send when the 'auto' mode is locked / activated"""
|
116
86
|
sigAutoFocusUnLocked = qt.Signal()
|
87
|
+
"""signal send when the 'auto' mode is unlocked / unactivated"""
|
117
88
|
|
118
89
|
sigVariableValueSelected = qt.Signal(float)
|
119
90
|
"""signal emitted when the cor value is selected by the user from
|
@@ -336,7 +307,7 @@ class CorSelection(VariableSelection):
|
|
336
307
|
if relative_value is None or self._img_width is None:
|
337
308
|
self._absoluteVarValueLE.clear()
|
338
309
|
else:
|
339
|
-
absolute_value = relative_value + self._img_width / 2.0
|
310
|
+
absolute_value = relative_value + (self._img_width - 1) / 2.0
|
340
311
|
self._absoluteVarValueLE.setText(f"{absolute_value:.3f}")
|
341
312
|
|
342
313
|
def getWindowTitle(self):
|
@@ -687,13 +658,13 @@ class ScorePlot(qt.QWidget):
|
|
687
658
|
def setVarScores(
|
688
659
|
self,
|
689
660
|
scores: dict,
|
690
|
-
score_method:
|
661
|
+
score_method: str | ScoreMethod,
|
691
662
|
img_width=None,
|
692
663
|
update_only_scores=False,
|
693
664
|
):
|
694
665
|
"""
|
695
666
|
|
696
|
-
:param
|
667
|
+
:param scores: cor value (float) as key and
|
697
668
|
tuple(url: DataUrl, score: float) as value
|
698
669
|
"""
|
699
670
|
score_method = ScoreMethod.from_value(score_method)
|
@@ -765,23 +736,23 @@ class ScorePlot(qt.QWidget):
|
|
765
736
|
self._plot.getPlotWidget().clear()
|
766
737
|
self._varValueWidget.setImgWidth(None)
|
767
738
|
|
768
|
-
def setVoxelSize(self, dim0, dim1, dim2, unit):
|
739
|
+
def setVoxelSize(self, dim0, dim1, dim2, unit: str | float):
|
769
740
|
"""
|
770
741
|
|
771
|
-
:param
|
772
|
-
:param
|
773
|
-
:param
|
774
|
-
:param
|
742
|
+
:param dim0:
|
743
|
+
:param dim1:
|
744
|
+
:param dim2:
|
745
|
+
:param unit:
|
775
746
|
"""
|
776
747
|
self._voxelSizeW.setValues(dim0=dim0, dim1=dim1, dim2=dim2, unit=unit)
|
777
748
|
|
778
|
-
def setVolumeSize(self, dim0, dim1, dim2, unit):
|
749
|
+
def setVolumeSize(self, dim0, dim1, dim2, unit: str | float):
|
779
750
|
"""
|
780
751
|
|
781
|
-
:param
|
782
|
-
:param
|
783
|
-
:param
|
784
|
-
:param
|
752
|
+
:param dim0:
|
753
|
+
:param dim1:
|
754
|
+
:param dim2:
|
755
|
+
:param unit:
|
785
756
|
"""
|
786
757
|
self._volumeSizeW.setValues(dim0=dim0, dim1=dim1, dim2=dim2, unit=unit)
|
787
758
|
|
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,7 +18,7 @@ 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
|
47
22
|
from tomwer.tests.utils import skip_gui_test
|
48
23
|
from tomwer.core.process.output import ProcessDataOutputDirMode
|
49
24
|
|
@@ -100,7 +75,7 @@ class TestNabuFlow(TestCaseQt):
|
|
100
75
|
class TestNabuPreProcConfig(TestCaseQt):
|
101
76
|
def setUp(self):
|
102
77
|
TestCaseQt.setUp(self)
|
103
|
-
self.nabuWidget = _NabuPreProcessingConfig(parent=None
|
78
|
+
self.nabuWidget = _NabuPreProcessingConfig(parent=None)
|
104
79
|
|
105
80
|
def tearDown(self):
|
106
81
|
self.nabuWidget.setAttribute(qt.Qt.WA_DeleteOnClose)
|
@@ -124,6 +99,7 @@ class TestNabuPreProcConfig(TestCaseQt):
|
|
124
99
|
"sino_rings_options": "sigma=1.0 ; levels=10 ; padding=False",
|
125
100
|
"tilt_correction": "",
|
126
101
|
"autotilt_options": "",
|
102
|
+
"rotate_projections_center": "",
|
127
103
|
}
|
128
104
|
self.assertEqual(self.nabuWidget.getConfiguration(), ini_conf)
|
129
105
|
|
@@ -143,6 +119,7 @@ class TestNabuPreProcConfig(TestCaseQt):
|
|
143
119
|
"sino_rings_options": "sigma=1.4 ; levels=11 ; padding=True",
|
144
120
|
"tilt_correction": "1d-correlation",
|
145
121
|
"autotilt_options": "low_pass=1; high_pass=20",
|
122
|
+
"rotate_projections_center": (2.1, 3.0),
|
146
123
|
}
|
147
124
|
self.nabuWidget.setConfiguration(conf=conf)
|
148
125
|
self.assertEqual(self.nabuWidget.getConfiguration(), conf)
|
@@ -152,7 +129,7 @@ class TestNabuPreProcConfig(TestCaseQt):
|
|
152
129
|
class TestNabuPhaseConfig(TestCaseQt):
|
153
130
|
def setUp(self):
|
154
131
|
TestCaseQt.setUp(self)
|
155
|
-
self.nabuWidget = _NabuPhaseConfig(parent=None
|
132
|
+
self.nabuWidget = _NabuPhaseConfig(parent=None)
|
156
133
|
|
157
134
|
def tearDown(self):
|
158
135
|
self.nabuWidget.setAttribute(qt.Qt.WA_DeleteOnClose)
|
@@ -208,7 +185,7 @@ class TestNabuPhaseConfig(TestCaseQt):
|
|
208
185
|
class TestNabuReconstructionConfig(TestCaseQt):
|
209
186
|
def setUp(self):
|
210
187
|
TestCaseQt.setUp(self)
|
211
|
-
self.nabuWidget = _NabuReconstructionConfig(parent=None
|
188
|
+
self.nabuWidget = _NabuReconstructionConfig(parent=None)
|
212
189
|
|
213
190
|
def tearDown(self):
|
214
191
|
self.nabuWidget.setAttribute(qt.Qt.WA_DeleteOnClose)
|
@@ -334,7 +311,7 @@ class TestNabuOutputConfig(TestCaseQt):
|
|
334
311
|
class TestNabuVolumeWidget(TestCaseQt):
|
335
312
|
def setUp(self):
|
336
313
|
TestCaseQt.setUp(self)
|
337
|
-
self.nabuWidget =
|
314
|
+
self.nabuWidget = NabuVolumeTabWidget(parent=None)
|
338
315
|
self.nabuWidget.setConfigurationLevel("advanced")
|
339
316
|
|
340
317
|
def tearDown(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__ = "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"
|