tomwer 1.2.1__py3-none-any.whl → 1.3.12__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/tutorials/icat_publication.ows +58 -0
- orangecontrib/tomwer/widgets/__init__.py +11 -11
- orangecontrib/tomwer/widgets/control/DataDiscoveryOW.py +2 -2
- orangecontrib/tomwer/widgets/control/DataListOW.py +9 -7
- orangecontrib/tomwer/widgets/control/DataListenerOW.py +6 -6
- orangecontrib/tomwer/widgets/control/DataSelectorOW.py +21 -10
- orangecontrib/tomwer/widgets/control/DataValidatorOW.py +6 -6
- orangecontrib/tomwer/widgets/control/EDF2NXTomomillOW.py +24 -7
- orangecontrib/tomwer/widgets/control/EmailOW.py +4 -4
- orangecontrib/tomwer/widgets/control/NXTomomillMixIn.py +3 -3
- orangecontrib/tomwer/widgets/control/NXTomomillOW.py +64 -23
- orangecontrib/tomwer/widgets/control/NXtomoConcatenate.py +20 -8
- orangecontrib/tomwer/widgets/control/NotifierOW.py +1 -0
- orangecontrib/tomwer/widgets/control/SingleTomoObjOW.py +6 -6
- orangecontrib/tomwer/widgets/control/VolumeSelector.py +7 -4
- orangecontrib/tomwer/widgets/control/VolumeSymLinkOW.py +182 -182
- orangecontrib/tomwer/widgets/debugtools/DatasetGeneratorOW.py +5 -5
- orangecontrib/tomwer/widgets/edit/DarkFlatPatchOW.py +4 -4
- orangecontrib/tomwer/widgets/edit/ImageKeyEditorOW.py +3 -3
- orangecontrib/tomwer/widgets/edit/ImageKeyUpgraderOW.py +8 -1
- orangecontrib/tomwer/widgets/edit/NXtomoEditorOW.py +3 -3
- orangecontrib/tomwer/widgets/edit/test/test_nxtomo_editor.py +3 -3
- orangecontrib/tomwer/widgets/icat/PublishProcessedDataOW.py +115 -0
- orangecontrib/tomwer/widgets/icat/RawDataScreenshotCreatorOW.py +98 -0
- orangecontrib/tomwer/widgets/icat/SaveToGalleryAndPublishOW.py +129 -0
- orangecontrib/tomwer/widgets/icat/__init__.py +13 -0
- orangecontrib/tomwer/widgets/icat/icons/add_gallery.png +0 -0
- orangecontrib/tomwer/widgets/icat/icons/add_gallery.svg +82 -0
- orangecontrib/tomwer/widgets/icat/icons/publish_processed_data.png +0 -0
- orangecontrib/tomwer/widgets/icat/icons/publish_processed_data.svg +95 -0
- orangecontrib/tomwer/widgets/icat/icons/raw_screenshots.png +0 -0
- orangecontrib/tomwer/widgets/icat/icons/raw_screenshots.svg +143 -0
- orangecontrib/tomwer/widgets/icons/tomwer_data_portal.png +0 -0
- orangecontrib/tomwer/widgets/icons/tomwer_data_portal.svg +76 -0
- orangecontrib/tomwer/widgets/reconstruction/AxisOW.py +22 -20
- orangecontrib/tomwer/widgets/reconstruction/CastNabuVolumeOW.py +19 -3
- orangecontrib/tomwer/widgets/reconstruction/NabuHelicalPrepareWeightsDoubleOW.py +184 -169
- orangecontrib/tomwer/widgets/reconstruction/NabuOW.py +23 -0
- orangecontrib/tomwer/widgets/reconstruction/NabuVolumeOW.py +39 -5
- orangecontrib/tomwer/widgets/reconstruction/SAAxisOW.py +18 -22
- orangecontrib/tomwer/widgets/reconstruction/SADeltaBetaOW.py +18 -26
- orangecontrib/tomwer/widgets/reconstruction/SinoNormOW.py +15 -19
- orangecontrib/tomwer/widgets/visualization/DataViewerOW.py +9 -9
- orangecontrib/tomwer/widgets/visualization/DiffViewerOW.py +1 -1
- orangecontrib/tomwer/widgets/visualization/LivesliceOW.py +1 -1
- orangecontrib/tomwer/widgets/visualization/NXtomoMetadataViewerOW.py +3 -3
- orangecontrib/tomwer/widgets/visualization/SinogramViewerOW.py +0 -1
- orangecontrib/tomwer/widgets/visualization/VolumeViewerOW.py +3 -29
- tomwer/__main__.py +7 -64
- tomwer/app/axis.py +3 -3
- tomwer/app/canvas.py +8 -0
- tomwer/app/canvas_launcher/config.py +16 -14
- tomwer/app/canvas_launcher/environ.py +1 -0
- tomwer/app/canvas_launcher/mainwindow.py +4 -1
- tomwer/app/darkref.py +1 -1
- tomwer/app/darkrefpatch.py +1 -1
- tomwer/app/diffframe.py +3 -3
- tomwer/app/imagekeyeditor.py +5 -5
- tomwer/app/imagekeyupgrader.py +5 -5
- tomwer/app/intensitynormalization.py +14 -13
- tomwer/app/{saaxis.py → multicor.py} +3 -3
- tomwer/app/{sadeltabeta.py → multipag.py} +3 -3
- tomwer/app/nabuapp.py +0 -11
- tomwer/app/radiostack.py +6 -4
- tomwer/app/samplemoved.py +3 -2
- tomwer/app/scanviewer.py +4 -2
- tomwer/app/sinogramviewer.py +3 -2
- tomwer/app/slicestack.py +3 -2
- tomwer/app/zstitching.py +88 -6
- tomwer/core/cluster/cluster.py +26 -0
- tomwer/core/log/logger.py +7 -5
- tomwer/core/process/conditions/filters.py +1 -1
- tomwer/core/process/control/datalistener/datalistener.py +19 -14
- tomwer/core/process/control/datawatcher/edfdwprocess.py +0 -9
- tomwer/core/process/control/nxtomoconcatenate.py +13 -13
- tomwer/core/process/control/nxtomomill.py +92 -34
- tomwer/core/process/control/scantransfer.py +20 -43
- tomwer/core/process/control/scanvalidator.py +3 -2
- tomwer/core/process/control/test/test_concatenate_nxtomos.py +9 -9
- tomwer/core/process/control/test/test_email.py +4 -4
- tomwer/core/process/control/test/test_h52nx_process.py +59 -7
- tomwer/core/process/control/test/test_volume_link.py +64 -64
- tomwer/core/process/control/timer.py +1 -1
- tomwer/core/process/control/volumesymlink.py +200 -200
- tomwer/core/process/edit/darkflatpatch.py +14 -15
- tomwer/core/process/edit/imagekeyeditor.py +41 -39
- tomwer/core/process/icat/__init__.py +0 -0
- tomwer/core/process/icat/createscreenshots.py +100 -0
- tomwer/core/process/icat/gallery.py +377 -0
- tomwer/core/process/icat/icatbase.py +36 -0
- tomwer/core/process/icat/publish.py +228 -0
- tomwer/core/process/icat/screenshots.py +27 -0
- tomwer/core/process/output.py +52 -0
- tomwer/core/process/reconstruction/axis/axis.py +280 -69
- tomwer/core/process/reconstruction/axis/mode.py +163 -48
- tomwer/core/process/reconstruction/axis/params.py +29 -21
- tomwer/core/process/reconstruction/darkref/darkrefs.py +41 -127
- tomwer/core/process/reconstruction/darkref/darkrefscopy.py +4 -3
- tomwer/core/process/reconstruction/darkref/params.py +1 -1
- tomwer/core/process/reconstruction/nabu/castvolume.py +4 -4
- tomwer/core/process/reconstruction/nabu/helical.py +9 -5
- tomwer/core/process/reconstruction/nabu/nabucommon.py +71 -78
- tomwer/core/process/reconstruction/nabu/nabuscores.py +425 -53
- tomwer/core/process/reconstruction/nabu/nabuslices.py +114 -93
- tomwer/core/process/reconstruction/nabu/nabuvolume.py +54 -27
- tomwer/core/process/reconstruction/nabu/plane.py +9 -0
- tomwer/core/process/reconstruction/nabu/settings.py +2 -2
- tomwer/core/process/reconstruction/nabu/utils.py +164 -26
- tomwer/core/process/reconstruction/output.py +108 -0
- tomwer/core/process/reconstruction/saaxis/saaxis.py +238 -264
- tomwer/core/process/reconstruction/sadeltabeta/sadeltabeta.py +151 -87
- tomwer/core/process/reconstruction/scores/params.py +7 -4
- tomwer/core/process/reconstruction/scores/scores.py +13 -0
- tomwer/core/process/reconstruction/test/test_axis_params.py +2 -2
- tomwer/core/process/reconstruction/test/test_darkref.py +3 -3
- tomwer/core/process/reconstruction/test/test_darkref_copy.py +7 -7
- tomwer/core/process/reconstruction/test/test_saaxis.py +3 -4
- tomwer/core/process/reconstruction/test/test_sadeltabeta.py +2 -2
- tomwer/core/process/stitching/nabustitcher.py +13 -12
- tomwer/core/process/task.py +34 -26
- tomwer/core/process/test/test_axis.py +13 -12
- tomwer/core/process/test/test_dark_and_flat.py +10 -7
- tomwer/core/process/test/test_data_transfer.py +10 -8
- tomwer/core/process/test/test_nabu.py +14 -6
- tomwer/core/process/test/test_normalization.py +4 -4
- tomwer/core/scan/blissscan.py +3 -3
- tomwer/core/scan/edfscan.py +13 -10
- tomwer/core/scan/hdf5scan.py +19 -530
- tomwer/core/scan/nxtomoscan.py +534 -0
- tomwer/core/scan/scanbase.py +72 -44
- tomwer/core/scan/scanfactory.py +13 -13
- tomwer/core/scan/test/test_edf.py +2 -2
- tomwer/core/scan/test/test_future_scan.py +3 -3
- tomwer/core/scan/test/test_h5.py +18 -16
- tomwer/core/scan/test/test_process_registration.py +4 -40
- tomwer/core/scan/test/test_scan.py +5 -78
- tomwer/core/settings.py +22 -2
- tomwer/core/test/test_scanutils.py +8 -7
- tomwer/core/test/test_utils.py +35 -28
- tomwer/core/tomwer_object.py +1 -1
- tomwer/core/utils/__init__.py +0 -466
- tomwer/core/utils/deprecation.py +1 -1
- tomwer/core/utils/dictutils.py +14 -0
- tomwer/core/utils/lbsram.py +35 -0
- tomwer/core/utils/nxtomoutils.py +1 -1
- tomwer/core/utils/scanutils.py +6 -6
- tomwer/core/utils/spec.py +263 -0
- tomwer/core/volume/edfvolume.py +6 -6
- tomwer/core/volume/hdf5volume.py +6 -6
- tomwer/core/volume/jp2kvolume.py +6 -6
- tomwer/core/volume/rawvolume.py +6 -6
- tomwer/core/volume/tiffvolume.py +12 -12
- tomwer/core/volume/volumefactory.py +2 -2
- tomwer/gui/cluster/slurm.py +274 -65
- tomwer/gui/cluster/supervisor.py +12 -0
- tomwer/gui/cluster/test/test_cluster.py +14 -2
- tomwer/gui/cluster/test/test_supervisor.py +3 -3
- tomwer/gui/configuration/__init__.py +0 -0
- tomwer/gui/{reconstruction/nabu → configuration}/action.py +1 -32
- tomwer/gui/configuration/level.py +22 -0
- tomwer/gui/control/actions.py +54 -0
- tomwer/gui/control/datalist.py +83 -16
- tomwer/gui/control/datalistener.py +4 -16
- tomwer/gui/control/datawatcher/controlwidget.py +2 -4
- tomwer/gui/control/datawatcher/datawatcher.py +1 -24
- tomwer/gui/control/{email.py → emailnotifier.py} +9 -18
- tomwer/gui/control/history.py +2 -2
- tomwer/gui/control/observations.py +2 -2
- tomwer/gui/control/reducedarkflatselector.py +9 -9
- tomwer/gui/control/selectorwidgetbase.py +36 -9
- tomwer/gui/control/serie/seriecreator.py +5 -22
- tomwer/gui/control/test/test_email.py +1 -1
- tomwer/gui/control/test/test_scanvalidator.py +6 -5
- tomwer/gui/control/test/test_single_tomo_obj.py +3 -3
- tomwer/gui/control/tomoobjdisplaymode.py +8 -0
- tomwer/gui/debugtools/datasetgenerator.py +3 -3
- tomwer/gui/edit/dkrfpatch.py +20 -26
- tomwer/gui/edit/imagekeyeditor.py +11 -12
- tomwer/gui/edit/nxtomoeditor.py +111 -44
- tomwer/gui/edit/nxtomowarmer.py +7 -6
- tomwer/gui/edit/test/test_dkrf_patch.py +13 -13
- tomwer/gui/edit/test/test_image_key_editor.py +3 -3
- tomwer/gui/edit/test/test_nx_editor.py +40 -16
- tomwer/gui/icat/__init__.py +0 -0
- tomwer/gui/icat/createscreenshots.py +80 -0
- tomwer/gui/icat/gallery.py +214 -0
- tomwer/gui/icat/publish.py +187 -0
- tomwer/gui/imagefromfile.py +2 -2
- tomwer/gui/qfolderdialog.py +24 -1
- tomwer/gui/reconstruction/axis/CompareImages.py +88 -168
- tomwer/gui/reconstruction/axis/axis.py +171 -57
- tomwer/gui/reconstruction/axis/radioaxis.py +122 -257
- tomwer/gui/reconstruction/darkref/darkrefcopywidget.py +3 -2
- tomwer/gui/reconstruction/darkref/darkrefwidget.py +2 -1
- tomwer/gui/reconstruction/nabu/castvolume.py +14 -3
- tomwer/gui/reconstruction/nabu/check.py +9 -9
- tomwer/gui/reconstruction/nabu/helical.py +29 -12
- tomwer/gui/reconstruction/nabu/nabuconfig/base.py +2 -4
- tomwer/gui/reconstruction/nabu/nabuconfig/nabuconfig.py +2 -1
- tomwer/gui/reconstruction/nabu/nabuconfig/output.py +126 -35
- tomwer/gui/reconstruction/nabu/nabuconfig/phase.py +39 -32
- tomwer/gui/reconstruction/nabu/nabuconfig/preprocessing.py +222 -31
- tomwer/gui/reconstruction/nabu/nabuconfig/reconstruction.py +57 -27
- tomwer/gui/reconstruction/nabu/nabuflow.py +12 -20
- tomwer/gui/reconstruction/nabu/slices.py +10 -11
- tomwer/gui/reconstruction/nabu/volume.py +22 -10
- tomwer/gui/reconstruction/normalization/intensity.py +18 -48
- tomwer/gui/reconstruction/saaxis/corrangeselector.py +8 -24
- tomwer/gui/reconstruction/saaxis/dimensionwidget.py +1 -1
- tomwer/gui/reconstruction/saaxis/saaxis.py +9 -21
- tomwer/gui/reconstruction/sadeltabeta/saadeltabeta.py +45 -12
- tomwer/gui/reconstruction/scores/control.py +2 -9
- tomwer/gui/reconstruction/scores/scoreplot.py +13 -11
- tomwer/gui/reconstruction/test/test_axis.py +41 -16
- tomwer/gui/reconstruction/test/test_nabu.py +31 -9
- tomwer/gui/reconstruction/test/test_saaxis.py +3 -3
- tomwer/gui/reconstruction/test/test_sadeltabeta.py +12 -2
- tomwer/gui/settings.py +5 -28
- tomwer/gui/stackplot.py +2 -5
- tomwer/gui/stitching/action.py +49 -0
- tomwer/gui/stitching/config/axisparams.py +7 -24
- tomwer/gui/stitching/config/output.py +10 -8
- tomwer/gui/stitching/config/positionoveraxis.py +22 -23
- tomwer/gui/stitching/normalization.py +117 -0
- tomwer/gui/stitching/stitchandbackground.py +4 -6
- tomwer/gui/stitching/stitching.py +267 -45
- tomwer/gui/stitching/stitching_preview.py +62 -55
- tomwer/gui/stitching/stitching_raw.py +13 -12
- tomwer/gui/stitching/z_stitching/fineestimation.py +0 -60
- tomwer/gui/utils/buttons.py +112 -29
- tomwer/gui/utils/inputwidget.py +43 -25
- tomwer/gui/utils/lineselector/lineselector.py +1 -1
- tomwer/gui/utils/scandescription.py +4 -0
- tomwer/gui/utils/step.py +144 -0
- tomwer/gui/utils/unitsystem.py +2 -5
- tomwer/gui/utils/vignettes.py +176 -15
- tomwer/gui/visualization/dataviewer.py +48 -35
- tomwer/gui/visualization/diffviewer/diffviewer.py +7 -16
- tomwer/gui/visualization/diffviewer/shiftwidget.py +2 -5
- tomwer/gui/visualization/scanoverview.py +1 -1
- tomwer/gui/visualization/sinogramviewer.py +20 -36
- tomwer/gui/visualization/test/test_diffviewer.py +3 -3
- tomwer/gui/visualization/test/test_nx_tomo_metadata_viewer.py +4 -4
- tomwer/gui/visualization/test/test_sinogramviewer.py +2 -2
- tomwer/gui/visualization/test/test_stacks.py +3 -3
- tomwer/gui/visualization/test/test_volumeviewer.py +65 -67
- tomwer/gui/visualization/volumeviewer.py +114 -113
- tomwer/io/utils/h5pyutils.py +3 -3
- tomwer/io/utils/raw_and_processed_data.py +84 -0
- tomwer/io/utils/tomoobj.py +4 -6
- tomwer/io/utils/utils.py +7 -7
- tomwer/resources/gui/icons/parameters.svg +1 -1
- tomwer/resources/gui/icons/ruler.png +0 -0
- tomwer/resources/gui/icons/ruler.svg +273 -0
- tomwer/resources/gui/icons/short_description.png +0 -0
- tomwer/resources/gui/icons/short_description.svg +58 -0
- tomwer/resources/gui/icons/url.png +0 -0
- tomwer/resources/gui/icons/url.svg +58 -0
- tomwer/resources/gui/illustrations/no_rot.svg +1 -1
- tomwer/synctools/stacks/edit/darkflatpatch.py +19 -14
- tomwer/synctools/stacks/edit/imagekeyeditor.py +2 -2
- tomwer/synctools/stacks/reconstruction/axis.py +4 -4
- tomwer/synctools/stacks/reconstruction/castvolume.py +22 -7
- tomwer/synctools/stacks/reconstruction/dkrefcopy.py +25 -20
- tomwer/synctools/stacks/reconstruction/nabu.py +2 -2
- tomwer/synctools/stacks/reconstruction/normalization.py +2 -2
- tomwer/synctools/stacks/reconstruction/saaxis.py +2 -2
- tomwer/synctools/stacks/reconstruction/sadeltabeta.py +2 -2
- tomwer/synctools/test/test_darkRefs.py +7 -58
- tomwer/synctools/test/test_foldertransfer.py +6 -6
- tomwer/synctools/utils/scanstages.py +6 -6
- tomwer/tests/conftest.py +34 -0
- tomwer/tests/datasets.py +13 -0
- tomwer/tests/test_scripts.py +91 -41
- tomwer/tests/utils.py +5 -0
- tomwer/third_part/WaitingOverlay.py +110 -0
- tomwer/third_part/__init__.py +0 -0
- tomwer/version.py +2 -2
- tomwer-1.3.12-py3.11-nspkg.pth +1 -0
- {tomwer-1.2.1.dist-info → tomwer-1.3.12.dist-info}/METADATA +73 -58
- {tomwer-1.2.1.dist-info → tomwer-1.3.12.dist-info}/RECORD +287 -286
- {tomwer-1.2.1.dist-info → tomwer-1.3.12.dist-info}/WHEEL +1 -1
- orangecontrib/tomwer/widgets/reconstruction/TofuOW.py +0 -197
- orangecontrib/tomwer/widgets/reconstruction/icons/XY_lamino.svg +0 -168
- orangecontrib/tomwer/widgets/reconstruction/icons/XZ_lamino.svg +0 -275
- orangecontrib/tomwer/widgets/reconstruction/icons/YZ_lamino.svg +0 -182
- tomwer/app/lamino.py +0 -143
- tomwer/core/process/reconstruction/lamino/__init__.py +0 -1
- tomwer/core/process/reconstruction/lamino/tofu.py +0 -1000
- tomwer/core/process/test/test_lamino.py +0 -76
- tomwer/core/test/test_lamino.py +0 -92
- tomwer/gui/reconstruction/lamino/__init__.py +0 -31
- tomwer/gui/reconstruction/lamino/tofu/TofuOptionLoader.py +0 -107
- tomwer/gui/reconstruction/lamino/tofu/__init__.py +0 -1
- tomwer/gui/reconstruction/lamino/tofu/misc.py +0 -148
- tomwer/gui/reconstruction/lamino/tofu/projections.py +0 -896
- tomwer/gui/reconstruction/lamino/tofu/settings.py +0 -75
- tomwer/gui/reconstruction/lamino/tofu/tofu.py +0 -432
- tomwer/gui/reconstruction/lamino/tofu/tofuexpert.py +0 -567
- tomwer/gui/reconstruction/lamino/tofu/tofuoutput.py +0 -760
- tomwer/gui/reconstruction/test/test_lamino.py +0 -189
- tomwer/resources/gui/icons/esrf_1.svg +0 -307
- tomwer/resources/gui/icons/lamino_parameters.svg +0 -70
- tomwer/resources/gui/icons/triangle.svg +0 -80
- tomwer/resources/gui/illustrations/lamino_angle.png +0 -0
- tomwer/resources/gui/illustrations/lamino_angle.svg +0 -509
- tomwer/resources/gui/illustrations/lamino_beta_angle.png +0 -0
- tomwer/resources/gui/illustrations/lamino_beta_angle.svg +0 -97
- tomwer/resources/gui/illustrations/lamino_theta_angle.png +0 -0
- tomwer/resources/gui/illustrations/lamino_theta_angle.svg +0 -368
- tomwer/resources/gui/illustrations/manual_slice.png +0 -0
- tomwer/resources/gui/illustrations/manual_slice.svg +0 -221
- tomwer/resources/gui/illustrations/psi_angle.png +0 -0
- tomwer/resources/gui/illustrations/psi_angle.svg +0 -479
- tomwer/resources/gui/illustrations/rotation_center.png +0 -0
- tomwer/resources/gui/illustrations/rotation_center.svg +0 -276
- tomwer/resources/gui/illustrations/slice_stack.png +0 -0
- tomwer/resources/gui/illustrations/slice_stack.svg +0 -266
- tomwer/resources/gui/illustrations/xy_slice.png +0 -0
- tomwer/resources/gui/illustrations/xy_slice.svg +0 -269
- tomwer/resources/gui/illustrations/xz_slice.png +0 -0
- tomwer/resources/gui/illustrations/xz_slice.svg +0 -270
- tomwer/resources/gui/illustrations/yz_slice.png +0 -0
- tomwer/resources/gui/illustrations/yz_slice.svg +0 -270
- tomwer/synctools/stacks/reconstruction/lamino.py +0 -233
- tomwer/synctools/test/test_scanstages.py +0 -162
- tomwer/tests/utils/__init__.py +0 -247
- tomwer/tests/utils/utilstest.py +0 -220
- tomwer-1.2.1-py3.11-nspkg.pth +0 -1
- /tomwer/core/process/control/{email.py → emailnotifier.py} +0 -0
- {tomwer-1.2.1.dist-info → tomwer-1.3.12.dist-info}/LICENSE +0 -0
- {tomwer-1.2.1.dist-info → tomwer-1.3.12.dist-info}/entry_points.txt +0 -0
- {tomwer-1.2.1.dist-info → tomwer-1.3.12.dist-info}/namespace_packages.txt +0 -0
- {tomwer-1.2.1.dist-info → tomwer-1.3.12.dist-info}/top_level.txt +0 -0
@@ -38,17 +38,18 @@ from nabu.estimation.cor import (
|
|
38
38
|
CenterOfRotationAdaptiveSearch,
|
39
39
|
CenterOfRotationGrowingWindow,
|
40
40
|
CenterOfRotationSlidingWindow,
|
41
|
+
CenterOfRotationOctaveAccurate,
|
41
42
|
)
|
42
|
-
from nabu.pipeline.estimators import SinoCORFinder
|
43
|
+
from nabu.pipeline.estimators import SinoCORFinder, CORFinder
|
43
44
|
from nabu.resources.nxflatfield import update_dataset_info_flats_darks
|
44
45
|
from processview.core.manager import DatasetState, ProcessManager
|
45
46
|
from processview.core.superviseprocess import SuperviseProcess
|
46
|
-
from
|
47
|
+
from tomwer.core.utils.deprecation import deprecated_warning
|
47
48
|
|
48
49
|
import tomwer.version
|
49
50
|
from tomwer.core.process.reconstruction.utils.cor import absolute_pos_to_relative
|
50
51
|
from tomwer.core.process.task import Task
|
51
|
-
from tomwer.core.scan.
|
52
|
+
from tomwer.core.scan.nxtomoscan import NXtomoScan
|
52
53
|
from tomwer.core.scan.scanbase import TomwerScanBase
|
53
54
|
from tomwer.core.scan.scanfactory import ScanFactory
|
54
55
|
from tomwer.core.utils import image, logconfig
|
@@ -75,7 +76,7 @@ else:
|
|
75
76
|
has_composite_cor_finder = True
|
76
77
|
from silx.io.url import DataUrl
|
77
78
|
from silx.io.utils import h5py_read_dataset
|
78
|
-
from
|
79
|
+
from silx.io.utils import open as open_hdf5
|
79
80
|
|
80
81
|
_logger = logging.getLogger(__name__)
|
81
82
|
if not has_composite_cor_finder:
|
@@ -108,7 +109,7 @@ def adapt_tomwer_scan_to_nabu(scan: TomwerScanBase):
|
|
108
109
|
updating infos regarding flat and dark if needed
|
109
110
|
"""
|
110
111
|
dataset_infos = scan.to_nabu_dataset_analyser()
|
111
|
-
if isinstance(scan,
|
112
|
+
if isinstance(scan, NXtomoScan):
|
112
113
|
try:
|
113
114
|
update_dataset_info_flats_darks(
|
114
115
|
dataset_infos,
|
@@ -173,6 +174,50 @@ def compute_cor_nabu_growing_window(
|
|
173
174
|
return res
|
174
175
|
|
175
176
|
|
177
|
+
def compute_cor_nabu_growing_window_radios(
|
178
|
+
scan: TomwerScanBase,
|
179
|
+
):
|
180
|
+
"""
|
181
|
+
Call nabu.preproc.alignement.CenterOfRotationGrowingWindow.find_shift
|
182
|
+
|
183
|
+
:param TomwerScanBase scan:
|
184
|
+
|
185
|
+
:return:
|
186
|
+
"""
|
187
|
+
has_darks = scan.reduced_darks is not None and len(scan.reduced_darks) > 0
|
188
|
+
has_flats = scan.reduced_flats is not None and len(scan.reduced_flats) > 0
|
189
|
+
|
190
|
+
projection_angles = scan.get_proj_angle_url()
|
191
|
+
projection_angles_i = {
|
192
|
+
value.path(): key for key, value in projection_angles.items()
|
193
|
+
}
|
194
|
+
url_radio_1, url_radio_2 = AxisTask.get_inputs_urls(scan=scan)
|
195
|
+
angle_radio_1 = float(projection_angles_i[url_radio_1.url.path()])
|
196
|
+
angle_radio_2 = float(projection_angles_i[url_radio_2.url.path()])
|
197
|
+
radio_angles = tuple(numpy.radians((angle_radio_1, angle_radio_2)))
|
198
|
+
|
199
|
+
corfinder = CORFinder(
|
200
|
+
dataset_info=adapt_tomwer_scan_to_nabu(scan),
|
201
|
+
method="growing-window",
|
202
|
+
do_flatfield=has_darks and has_flats,
|
203
|
+
cor_options=scan.axis_params.get_nabu_cor_options_as_dict(),
|
204
|
+
radio_angles=radio_angles,
|
205
|
+
logger=_logger,
|
206
|
+
)
|
207
|
+
res = corfinder.find_cor() # Returns absolute cor
|
208
|
+
if isinstance(res, numpy.ndarray):
|
209
|
+
if len(res) == 1:
|
210
|
+
res = res[0]
|
211
|
+
else:
|
212
|
+
raise ValueError(
|
213
|
+
"nabu rsult is expected to be a scalar, numpy array found. Please upgrade nabu this issue is expected to be solved"
|
214
|
+
)
|
215
|
+
|
216
|
+
return _absolute_pos_to_relative_with_warning(
|
217
|
+
absolute_pos=res, det_width=scan.dim_1
|
218
|
+
)
|
219
|
+
|
220
|
+
|
176
221
|
def compute_cor_nabu_growing_window_sinogram(
|
177
222
|
scan: TomwerScanBase,
|
178
223
|
):
|
@@ -183,12 +228,15 @@ def compute_cor_nabu_growing_window_sinogram(
|
|
183
228
|
|
184
229
|
:return:
|
185
230
|
"""
|
231
|
+
has_darks = scan.reduced_darks is not None and len(scan.reduced_darks) > 0
|
232
|
+
has_flats = scan.reduced_flats is not None and len(scan.reduced_flats) > 0
|
233
|
+
|
186
234
|
corfinder = SinoCORFinder(
|
187
235
|
dataset_info=adapt_tomwer_scan_to_nabu(scan),
|
188
|
-
method="growing-window",
|
236
|
+
method="sino-growing-window",
|
189
237
|
slice_idx=scan.axis_params.sinogram_line or "middle",
|
190
238
|
subsampling=scan.axis_params.sinogram_subsampling,
|
191
|
-
do_flatfield=
|
239
|
+
do_flatfield=has_darks and has_flats,
|
192
240
|
cor_options=scan.axis_params.get_nabu_cor_options_as_dict(),
|
193
241
|
logger=_logger,
|
194
242
|
)
|
@@ -213,12 +261,15 @@ def compute_scan_sino_coarse_to_fine(scan):
|
|
213
261
|
:param scan:
|
214
262
|
:return:
|
215
263
|
"""
|
264
|
+
has_darks = scan.reduced_darks is not None and len(scan.reduced_darks) > 0
|
265
|
+
has_flats = scan.reduced_flats is not None and len(scan.reduced_flats) > 0
|
266
|
+
|
216
267
|
corfinder = SinoCORFinder(
|
217
268
|
dataset_info=adapt_tomwer_scan_to_nabu(scan),
|
218
269
|
method=AxisMode.sino_coarse_to_fine.value,
|
219
270
|
slice_idx=scan.axis_params.sinogram_line or "middle",
|
220
271
|
subsampling=scan.axis_params.sinogram_subsampling,
|
221
|
-
do_flatfield=
|
272
|
+
do_flatfield=has_darks and has_flats,
|
222
273
|
cor_options=scan.axis_params.get_nabu_cor_options_as_dict(),
|
223
274
|
logger=_logger,
|
224
275
|
)
|
@@ -252,8 +303,6 @@ def compute_scan_composite_coarse_to_fine(scan: TomwerScanBase):
|
|
252
303
|
# allow some tolerance for the "side" argument that is there only
|
253
304
|
# in the new one
|
254
305
|
|
255
|
-
extra_args = {}
|
256
|
-
|
257
306
|
cor_options = scan.axis_params.get_nabu_cor_options_as_dict()
|
258
307
|
for key in "low_pass", "high_pass":
|
259
308
|
if key in cor_options:
|
@@ -266,7 +315,6 @@ def compute_scan_composite_coarse_to_fine(scan: TomwerScanBase):
|
|
266
315
|
cor_options=cor_options,
|
267
316
|
logger=_logger,
|
268
317
|
take_log=take_log,
|
269
|
-
**extra_args,
|
270
318
|
)
|
271
319
|
res = corfinder.find_cor()
|
272
320
|
return _absolute_pos_to_relative_with_warning(
|
@@ -318,13 +366,7 @@ def compute_scan_cor_nabu_growing_window(scan):
|
|
318
366
|
if scan.axis_params.use_sinogram:
|
319
367
|
return compute_cor_nabu_growing_window_sinogram(scan=scan)
|
320
368
|
else:
|
321
|
-
return
|
322
|
-
radio_1=radio_1.copy(),
|
323
|
-
radio_2=radio_2.copy(),
|
324
|
-
side=scan.axis_params.side,
|
325
|
-
padding_mode=scan.axis_params.padding_mode,
|
326
|
-
flip_frame_2_lr=scan.axis_params.flip_lr,
|
327
|
-
)
|
369
|
+
return compute_cor_nabu_growing_window_radios(scan=scan)
|
328
370
|
|
329
371
|
|
330
372
|
def compute_cor_nabu_sliding_window(
|
@@ -360,17 +402,45 @@ def compute_cor_nabu_sliding_window(
|
|
360
402
|
padding_mode=padding_mode,
|
361
403
|
median_filt_shape=None,
|
362
404
|
)
|
363
|
-
# now fixed but on some version nabu could return a numpy array instead of float
|
364
|
-
if isinstance(res, numpy.ndarray):
|
365
|
-
if len(res) == 1:
|
366
|
-
res = res[0]
|
367
|
-
else:
|
368
|
-
raise ValueError(
|
369
|
-
"nabu result is expected to be a scalar, numpy array found. Please upgrade nabu this issue is expected to be solved"
|
370
|
-
)
|
371
405
|
return res
|
372
406
|
|
373
407
|
|
408
|
+
def compute_cor_nabu_sliding_window_radios(
|
409
|
+
scan,
|
410
|
+
):
|
411
|
+
"""
|
412
|
+
Call nabu.preproc.alignement.CenterOfRotationGrowingWindow.find_shift
|
413
|
+
|
414
|
+
:param TomwerScanBase scan:
|
415
|
+
|
416
|
+
:return:
|
417
|
+
"""
|
418
|
+
has_darks = scan.reduced_darks is not None and len(scan.reduced_darks) > 0
|
419
|
+
has_flats = scan.reduced_flats is not None and len(scan.reduced_flats) > 0
|
420
|
+
|
421
|
+
projection_angles = scan.get_proj_angle_url()
|
422
|
+
projection_angles_i = {
|
423
|
+
value.path(): key for key, value in projection_angles.items()
|
424
|
+
}
|
425
|
+
url_radio_1, url_radio_2 = AxisTask.get_inputs_urls(scan=scan)
|
426
|
+
angle_radio_1 = float(projection_angles_i[url_radio_1.url.path()])
|
427
|
+
angle_radio_2 = float(projection_angles_i[url_radio_2.url.path()])
|
428
|
+
radio_angles = tuple(numpy.radians((angle_radio_1, angle_radio_2)))
|
429
|
+
|
430
|
+
corfinder = CORFinder(
|
431
|
+
dataset_info=adapt_tomwer_scan_to_nabu(scan),
|
432
|
+
method="sliding-window",
|
433
|
+
do_flatfield=has_darks and has_flats,
|
434
|
+
cor_options=scan.axis_params.get_nabu_cor_options_as_dict(),
|
435
|
+
radio_angles=radio_angles,
|
436
|
+
logger=_logger,
|
437
|
+
)
|
438
|
+
res = corfinder.find_cor() # Returns absolute cor.
|
439
|
+
return _absolute_pos_to_relative_with_warning(
|
440
|
+
absolute_pos=res, det_width=scan.dim_1
|
441
|
+
)
|
442
|
+
|
443
|
+
|
374
444
|
def compute_cor_nabu_sliding_window_sinogram(
|
375
445
|
scan,
|
376
446
|
):
|
@@ -381,24 +451,19 @@ def compute_cor_nabu_sliding_window_sinogram(
|
|
381
451
|
|
382
452
|
:return:
|
383
453
|
"""
|
454
|
+
has_darks = scan.reduced_darks is not None and len(scan.reduced_darks) > 0
|
455
|
+
has_flats = scan.reduced_flats is not None and len(scan.reduced_flats) > 0
|
456
|
+
|
384
457
|
corfinder = SinoCORFinder(
|
385
458
|
dataset_info=adapt_tomwer_scan_to_nabu(scan),
|
386
|
-
method="sliding-window",
|
459
|
+
method="sino-sliding-window",
|
387
460
|
slice_idx=scan.axis_params.sinogram_line or "middle",
|
388
461
|
subsampling=scan.axis_params.sinogram_subsampling,
|
389
|
-
do_flatfield=
|
462
|
+
do_flatfield=has_darks and has_flats,
|
390
463
|
cor_options=scan.axis_params.get_nabu_cor_options_as_dict(),
|
391
464
|
logger=_logger,
|
392
465
|
)
|
393
466
|
res = corfinder.find_cor()
|
394
|
-
# now fixed but on some version nabu could return a numpy array instead of float
|
395
|
-
if isinstance(res, numpy.ndarray):
|
396
|
-
if len(res) == 1:
|
397
|
-
res = res[0]
|
398
|
-
else:
|
399
|
-
raise ValueError(
|
400
|
-
"nabu result is expected to be a scalar, numpy array found. Please upgrade nabu this issue is expected to be solved"
|
401
|
-
)
|
402
467
|
return _absolute_pos_to_relative_with_warning(
|
403
468
|
absolute_pos=res, det_width=scan.dim_1
|
404
469
|
)
|
@@ -431,13 +496,129 @@ def compute_scan_cor_nabu_sliding_window(scan):
|
|
431
496
|
if scan.axis_params.use_sinogram:
|
432
497
|
return compute_cor_nabu_sliding_window_sinogram(scan=scan)
|
433
498
|
else:
|
434
|
-
return
|
435
|
-
|
436
|
-
|
437
|
-
|
438
|
-
|
439
|
-
|
440
|
-
|
499
|
+
return compute_cor_nabu_sliding_window_radios(scan=scan)
|
500
|
+
|
501
|
+
|
502
|
+
def compute_scan_fourier_angles(scan):
|
503
|
+
"""
|
504
|
+
run 'scan_fourier_angles' algorithm for the requested scan
|
505
|
+
"""
|
506
|
+
has_darks = scan.reduced_darks is not None and len(scan.reduced_darks) > 0
|
507
|
+
has_flats = scan.reduced_flats is not None and len(scan.reduced_flats) > 0
|
508
|
+
|
509
|
+
corfinder = SinoCORFinder(
|
510
|
+
dataset_info=adapt_tomwer_scan_to_nabu(scan),
|
511
|
+
method="fourier-angles",
|
512
|
+
slice_idx=scan.axis_params.sinogram_line or "middle",
|
513
|
+
subsampling=scan.axis_params.sinogram_subsampling,
|
514
|
+
do_flatfield=has_darks and has_flats,
|
515
|
+
cor_options=scan.axis_params.get_nabu_cor_options_as_dict(),
|
516
|
+
logger=_logger,
|
517
|
+
)
|
518
|
+
res = corfinder.find_cor()
|
519
|
+
return _absolute_pos_to_relative_with_warning(
|
520
|
+
absolute_pos=res, det_width=scan.dim_1
|
521
|
+
)
|
522
|
+
|
523
|
+
|
524
|
+
def compute_scan_octave_accurate_radios(
|
525
|
+
scan,
|
526
|
+
):
|
527
|
+
"""
|
528
|
+
Call nabu.preproc.alignement.CenterOfRotationGrowingWindow.find_shift
|
529
|
+
|
530
|
+
:param TomwerScanBase scan:
|
531
|
+
|
532
|
+
:return:
|
533
|
+
"""
|
534
|
+
has_darks = scan.reduced_darks is not None and len(scan.reduced_darks) > 0
|
535
|
+
has_flats = scan.reduced_flats is not None and len(scan.reduced_flats) > 0
|
536
|
+
|
537
|
+
has_darks = scan.reduced_darks is not None and len(scan.reduced_darks) > 0
|
538
|
+
has_flats = scan.reduced_flats is not None and len(scan.reduced_flats) > 0
|
539
|
+
|
540
|
+
projection_angles = scan.get_proj_angle_url()
|
541
|
+
projection_angles_i = {
|
542
|
+
value.path(): key for key, value in projection_angles.items()
|
543
|
+
}
|
544
|
+
url_radio_1, url_radio_2 = AxisTask.get_inputs_urls(scan=scan)
|
545
|
+
angle_radio_1 = float(projection_angles_i[url_radio_1.url.path()])
|
546
|
+
angle_radio_2 = float(projection_angles_i[url_radio_2.url.path()])
|
547
|
+
radio_angles = tuple(numpy.radians((angle_radio_1, angle_radio_2)))
|
548
|
+
|
549
|
+
corfinder = CORFinder(
|
550
|
+
dataset_info=adapt_tomwer_scan_to_nabu(scan),
|
551
|
+
method="octave-accurate",
|
552
|
+
do_flatfield=has_darks and has_flats,
|
553
|
+
cor_options=scan.axis_params.get_nabu_cor_options_as_dict(),
|
554
|
+
radio_angles=radio_angles,
|
555
|
+
logger=_logger,
|
556
|
+
)
|
557
|
+
res = corfinder.find_cor()
|
558
|
+
return _absolute_pos_to_relative_with_warning(
|
559
|
+
absolute_pos=res, det_width=scan.dim_1
|
560
|
+
)
|
561
|
+
|
562
|
+
|
563
|
+
def compute_scan_octave_accurate(scan):
|
564
|
+
"""
|
565
|
+
Compute center of rotation from `octave-accurate` algorithm
|
566
|
+
scan
|
567
|
+
:param scan:
|
568
|
+
:return:
|
569
|
+
"""
|
570
|
+
cor_options = scan.axis_params.get_nabu_cor_options_as_dict()
|
571
|
+
radio_1, radio_2 = AxisTask.get_inputs(scan=scan)
|
572
|
+
extra_options = {}
|
573
|
+
for key in "low_pass", "high_pass":
|
574
|
+
if key in cor_options:
|
575
|
+
extra_options[key] = float(cor_options[key])
|
576
|
+
|
577
|
+
corfinder = CenterOfRotationOctaveAccurate(cor_options=cor_options)
|
578
|
+
res = corfinder.find_shift(
|
579
|
+
img_1=radio_1,
|
580
|
+
img_2=numpy.fliplr(radio_2) if scan.axis_params.flip_lr else radio_2,
|
581
|
+
side=scan.axis_params.side,
|
582
|
+
padding_mode=scan.axis_params.padding_mode,
|
583
|
+
**extra_options,
|
584
|
+
)
|
585
|
+
return res
|
586
|
+
|
587
|
+
|
588
|
+
def compute_cor_nabu_centered_radios(
|
589
|
+
scan,
|
590
|
+
):
|
591
|
+
"""
|
592
|
+
Call nabu.preproc.alignement.CenterOfRotationGrowingWindow.find_shift
|
593
|
+
|
594
|
+
:param TomwerScanBase scan:
|
595
|
+
|
596
|
+
:return:
|
597
|
+
"""
|
598
|
+
has_darks = scan.reduced_darks is not None and len(scan.reduced_darks) > 0
|
599
|
+
has_flats = scan.reduced_flats is not None and len(scan.reduced_flats) > 0
|
600
|
+
|
601
|
+
projection_angles = scan.get_proj_angle_url()
|
602
|
+
projection_angles_i = {
|
603
|
+
value.path(): key for key, value in projection_angles.items()
|
604
|
+
}
|
605
|
+
url_radio_1, url_radio_2 = AxisTask.get_inputs_urls(scan=scan)
|
606
|
+
angle_radio_1 = float(projection_angles_i[url_radio_1.url.path()])
|
607
|
+
angle_radio_2 = float(projection_angles_i[url_radio_2.url.path()])
|
608
|
+
radio_angles = tuple(numpy.radians((angle_radio_1, angle_radio_2)))
|
609
|
+
|
610
|
+
corfinder = CORFinder(
|
611
|
+
dataset_info=adapt_tomwer_scan_to_nabu(scan),
|
612
|
+
method="centered",
|
613
|
+
do_flatfield=has_darks and has_flats,
|
614
|
+
cor_options=scan.axis_params.get_nabu_cor_options_as_dict(),
|
615
|
+
radio_angles=radio_angles,
|
616
|
+
logger=_logger,
|
617
|
+
)
|
618
|
+
res = corfinder.find_cor()
|
619
|
+
return _absolute_pos_to_relative_with_warning(
|
620
|
+
absolute_pos=res, det_width=scan.dim_1
|
621
|
+
)
|
441
622
|
|
442
623
|
|
443
624
|
def compute_cor_nabu_centered(
|
@@ -446,6 +627,7 @@ def compute_cor_nabu_centered(
|
|
446
627
|
padding_mode,
|
447
628
|
flip_frame_2_lr=True,
|
448
629
|
horz_fft_width=False,
|
630
|
+
vert_fft_width=False,
|
449
631
|
):
|
450
632
|
"""
|
451
633
|
Call nabu.preproc.alignement.CenterOfRotation.find_shift
|
@@ -462,7 +644,9 @@ def compute_cor_nabu_centered(
|
|
462
644
|
|
463
645
|
:return:
|
464
646
|
"""
|
465
|
-
nabu_class = CenterOfRotation(
|
647
|
+
nabu_class = CenterOfRotation(
|
648
|
+
horz_fft_width=horz_fft_width, vert_fft_width=vert_fft_width
|
649
|
+
)
|
466
650
|
return nabu_class.find_shift(
|
467
651
|
img_1=radio_1,
|
468
652
|
img_2=numpy.fliplr(radio_2) if flip_frame_2_lr else radio_2,
|
@@ -491,12 +675,7 @@ def compute_scan_cor_nabu_centered(scan):
|
|
491
675
|
"mode %s" % scan.axis_params.padding_mode
|
492
676
|
)
|
493
677
|
|
494
|
-
return
|
495
|
-
radio_1=radio_1.copy(),
|
496
|
-
radio_2=radio_2.copy(),
|
497
|
-
padding_mode=scan.axis_params.padding_mode,
|
498
|
-
flip_frame_2_lr=scan.axis_params.flip_lr,
|
499
|
-
)
|
678
|
+
return compute_cor_nabu_centered_radios(scan)
|
500
679
|
|
501
680
|
|
502
681
|
def compute_cor_nabu_global(
|
@@ -526,6 +705,42 @@ def compute_cor_nabu_global(
|
|
526
705
|
)
|
527
706
|
|
528
707
|
|
708
|
+
def compute_cor_nabu_global_radios(
|
709
|
+
scan: TomwerScanBase,
|
710
|
+
):
|
711
|
+
"""
|
712
|
+
Call nabu.preproc.alignement.CenterOfRotationGrowingWindow.find_shift
|
713
|
+
|
714
|
+
:param TomwerScanBase scan:
|
715
|
+
|
716
|
+
:return:
|
717
|
+
"""
|
718
|
+
has_darks = scan.reduced_darks is not None and len(scan.reduced_darks) > 0
|
719
|
+
has_flats = scan.reduced_flats is not None and len(scan.reduced_flats) > 0
|
720
|
+
|
721
|
+
projection_angles = scan.get_proj_angle_url()
|
722
|
+
projection_angles_i = {
|
723
|
+
value.path(): key for key, value in projection_angles.items()
|
724
|
+
}
|
725
|
+
url_radio_1, url_radio_2 = AxisTask.get_inputs_urls(scan=scan)
|
726
|
+
angle_radio_1 = float(projection_angles_i[url_radio_1.url.path()])
|
727
|
+
angle_radio_2 = float(projection_angles_i[url_radio_2.url.path()])
|
728
|
+
radio_angles = tuple(numpy.radians((angle_radio_1, angle_radio_2)))
|
729
|
+
|
730
|
+
corfinder = CORFinder(
|
731
|
+
dataset_info=adapt_tomwer_scan_to_nabu(scan),
|
732
|
+
method="global",
|
733
|
+
do_flatfield=has_darks and has_flats,
|
734
|
+
cor_options=scan.axis_params.get_nabu_cor_options_as_dict(),
|
735
|
+
radio_angles=radio_angles,
|
736
|
+
logger=_logger,
|
737
|
+
)
|
738
|
+
res = corfinder.find_cor()
|
739
|
+
return _absolute_pos_to_relative_with_warning(
|
740
|
+
absolute_pos=res, det_width=scan.dim_1
|
741
|
+
)
|
742
|
+
|
743
|
+
|
529
744
|
def compute_scan_cor_nabu_global(scan):
|
530
745
|
"""
|
531
746
|
Call to nabu.preproc.alignment.CenterOfRotation from the scan axis_params
|
@@ -544,13 +759,7 @@ def compute_scan_cor_nabu_global(scan):
|
|
544
759
|
"compute scan axis from nabu CenterOfRotation with padding "
|
545
760
|
"mode %s" % scan.axis_params.padding_mode
|
546
761
|
)
|
547
|
-
|
548
|
-
return compute_cor_nabu_global(
|
549
|
-
radio_1=radio_1.copy(),
|
550
|
-
radio_2=radio_2.copy(),
|
551
|
-
padding_mode=scan.axis_params.padding_mode,
|
552
|
-
flip_frame_2_lr=scan.axis_params.flip_lr,
|
553
|
-
)
|
762
|
+
return compute_cor_nabu_global_radios(scan)
|
554
763
|
|
555
764
|
|
556
765
|
def get_stdmax_column(x: numpy.ndarray) -> float:
|
@@ -597,6 +806,9 @@ class AxisTask(
|
|
597
806
|
AxisMode.growing_window_radios: compute_scan_cor_nabu_growing_window,
|
598
807
|
AxisMode.sino_coarse_to_fine: compute_scan_sino_coarse_to_fine,
|
599
808
|
AxisMode.composite_coarse_to_fine: compute_scan_composite_coarse_to_fine,
|
809
|
+
AxisMode.near: compute_scan_composite_coarse_to_fine,
|
810
|
+
AxisMode.sino_fourier_angles: compute_scan_fourier_angles,
|
811
|
+
AxisMode.octave_accurate_radios: compute_scan_octave_accurate,
|
600
812
|
}
|
601
813
|
|
602
814
|
def __init__(
|
@@ -722,17 +934,16 @@ class AxisTask(
|
|
722
934
|
assert isinstance(scan, TomwerScanBase)
|
723
935
|
if scan.process_file is not None:
|
724
936
|
entry = "entry"
|
725
|
-
if isinstance(scan,
|
937
|
+
if isinstance(scan, NXtomoScan):
|
726
938
|
entry = scan.entry
|
727
|
-
|
728
|
-
|
729
|
-
|
730
|
-
|
731
|
-
|
732
|
-
|
733
|
-
|
734
|
-
|
735
|
-
)
|
939
|
+
self.register_process(
|
940
|
+
process_file=scan.process_file,
|
941
|
+
entry=entry,
|
942
|
+
results={"center_of_rotation": cor if cor is not None else "-"},
|
943
|
+
configuration=self._axis_params.to_dict(),
|
944
|
+
process_index=scan.pop_process_index(),
|
945
|
+
overwrite=True,
|
946
|
+
)
|
736
947
|
|
737
948
|
try:
|
738
949
|
extra = {
|
@@ -953,7 +1164,7 @@ class AxisTask(
|
|
953
1164
|
:return:
|
954
1165
|
"""
|
955
1166
|
if entry is None:
|
956
|
-
with
|
1167
|
+
with open_hdf5(process_file) as h5f:
|
957
1168
|
entries = AxisTask._get_process_nodes(root_node=h5f, process=AxisTask)
|
958
1169
|
if len(entries) == 0:
|
959
1170
|
_logger.info("unable to find a Axis process in %s" % process_file)
|
@@ -964,7 +1175,7 @@ class AxisTask(
|
|
964
1175
|
entry = list(entries.keys())[0]
|
965
1176
|
_logger.info("take %s as default entry" % entry)
|
966
1177
|
|
967
|
-
with
|
1178
|
+
with open_hdf5(process_file) as h5f:
|
968
1179
|
axis_nodes = AxisTask._get_process_nodes(
|
969
1180
|
root_node=h5f[entry], process=AxisTask
|
970
1181
|
)
|