nabu 2024.2.13__py3-none-any.whl → 2025.1.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- doc/doc_config.py +32 -0
- nabu/__init__.py +1 -1
- nabu/app/bootstrap_stitching.py +4 -2
- nabu/app/cast_volume.py +16 -14
- nabu/app/cli_configs.py +102 -9
- nabu/app/compare_volumes.py +1 -1
- nabu/app/composite_cor.py +2 -4
- nabu/app/diag_to_pix.py +5 -6
- nabu/app/diag_to_rot.py +10 -11
- nabu/app/double_flatfield.py +18 -5
- nabu/app/estimate_motion.py +75 -0
- nabu/app/multicor.py +28 -15
- nabu/app/parse_reconstruction_log.py +1 -0
- nabu/app/pcaflats.py +122 -0
- nabu/app/prepare_weights_double.py +1 -2
- nabu/app/reconstruct.py +1 -7
- nabu/app/reconstruct_helical.py +5 -9
- nabu/app/reduce_dark_flat.py +5 -4
- nabu/app/rotate.py +3 -1
- nabu/app/stitching.py +7 -2
- nabu/app/tests/test_reduce_dark_flat.py +2 -2
- nabu/app/validator.py +1 -4
- nabu/cuda/convolution.py +1 -1
- nabu/cuda/fft.py +1 -1
- nabu/cuda/medfilt.py +1 -1
- nabu/cuda/padding.py +1 -1
- nabu/cuda/src/backproj.cu +6 -6
- nabu/cuda/src/cone.cu +4 -0
- nabu/cuda/src/hierarchical_backproj.cu +14 -0
- nabu/cuda/utils.py +2 -2
- nabu/estimation/alignment.py +17 -31
- nabu/estimation/cor.py +27 -33
- nabu/estimation/cor_sino.py +2 -8
- nabu/estimation/focus.py +4 -8
- nabu/estimation/motion.py +557 -0
- nabu/estimation/tests/test_alignment.py +2 -0
- nabu/estimation/tests/test_motion_estimation.py +471 -0
- nabu/estimation/tests/test_tilt.py +1 -1
- nabu/estimation/tilt.py +6 -5
- nabu/estimation/translation.py +47 -1
- nabu/io/cast_volume.py +108 -18
- nabu/io/detector_distortion.py +5 -6
- nabu/io/reader.py +45 -6
- nabu/io/reader_helical.py +5 -4
- nabu/io/tests/test_cast_volume.py +2 -2
- nabu/io/tests/test_readers.py +41 -38
- nabu/io/tests/test_remove_volume.py +152 -0
- nabu/io/tests/test_writers.py +2 -2
- nabu/io/utils.py +8 -4
- nabu/io/writer.py +1 -2
- nabu/misc/fftshift.py +1 -1
- nabu/misc/fourier_filters.py +1 -1
- nabu/misc/histogram.py +1 -1
- nabu/misc/histogram_cuda.py +1 -1
- nabu/misc/padding_base.py +1 -1
- nabu/misc/rotation.py +1 -1
- nabu/misc/rotation_cuda.py +1 -1
- nabu/misc/tests/test_binning.py +1 -1
- nabu/misc/transpose.py +1 -1
- nabu/misc/unsharp.py +1 -1
- nabu/misc/unsharp_cuda.py +1 -1
- nabu/misc/unsharp_opencl.py +1 -1
- nabu/misc/utils.py +1 -1
- nabu/opencl/fft.py +1 -1
- nabu/opencl/padding.py +1 -1
- nabu/opencl/src/backproj.cl +6 -6
- nabu/opencl/utils.py +8 -8
- nabu/pipeline/config.py +2 -2
- nabu/pipeline/config_validators.py +46 -46
- nabu/pipeline/datadump.py +3 -3
- nabu/pipeline/estimators.py +271 -11
- nabu/pipeline/fullfield/chunked.py +103 -67
- nabu/pipeline/fullfield/chunked_cuda.py +5 -2
- nabu/pipeline/fullfield/computations.py +4 -1
- nabu/pipeline/fullfield/dataset_validator.py +0 -1
- nabu/pipeline/fullfield/get_double_flatfield.py +147 -0
- nabu/pipeline/fullfield/nabu_config.py +36 -17
- nabu/pipeline/fullfield/processconfig.py +41 -7
- nabu/pipeline/fullfield/reconstruction.py +14 -10
- nabu/pipeline/helical/dataset_validator.py +3 -4
- nabu/pipeline/helical/fbp.py +4 -4
- nabu/pipeline/helical/filtering.py +5 -4
- nabu/pipeline/helical/gridded_accumulator.py +10 -11
- nabu/pipeline/helical/helical_chunked_regridded.py +1 -0
- nabu/pipeline/helical/helical_reconstruction.py +12 -9
- nabu/pipeline/helical/helical_utils.py +1 -2
- nabu/pipeline/helical/nabu_config.py +2 -1
- nabu/pipeline/helical/span_strategy.py +1 -0
- nabu/pipeline/helical/weight_balancer.py +2 -3
- nabu/pipeline/params.py +20 -3
- nabu/pipeline/tests/__init__.py +0 -0
- nabu/pipeline/tests/test_estimators.py +240 -3
- nabu/pipeline/utils.py +1 -1
- nabu/pipeline/writer.py +1 -1
- nabu/preproc/alignment.py +0 -10
- nabu/preproc/ccd.py +53 -3
- nabu/preproc/ctf.py +8 -8
- nabu/preproc/ctf_cuda.py +1 -1
- nabu/preproc/double_flatfield_cuda.py +2 -2
- nabu/preproc/double_flatfield_variable_region.py +0 -1
- nabu/preproc/flatfield.py +307 -2
- nabu/preproc/flatfield_cuda.py +1 -2
- nabu/preproc/flatfield_variable_region.py +3 -3
- nabu/preproc/phase.py +2 -4
- nabu/preproc/phase_cuda.py +2 -2
- nabu/preproc/shift.py +4 -2
- nabu/preproc/shift_cuda.py +0 -1
- nabu/preproc/tests/test_ctf.py +4 -4
- nabu/preproc/tests/test_double_flatfield.py +1 -1
- nabu/preproc/tests/test_flatfield.py +1 -1
- nabu/preproc/tests/test_paganin.py +1 -3
- nabu/preproc/tests/test_pcaflats.py +154 -0
- nabu/preproc/tests/test_vshift.py +4 -1
- nabu/processing/azim.py +9 -5
- nabu/processing/convolution_cuda.py +6 -4
- nabu/processing/fft_base.py +7 -3
- nabu/processing/fft_cuda.py +25 -164
- nabu/processing/fft_opencl.py +28 -6
- nabu/processing/fftshift.py +1 -1
- nabu/processing/histogram.py +1 -1
- nabu/processing/muladd.py +0 -1
- nabu/processing/padding_base.py +1 -1
- nabu/processing/padding_cuda.py +0 -2
- nabu/processing/processing_base.py +12 -6
- nabu/processing/rotation_cuda.py +3 -1
- nabu/processing/tests/test_fft.py +2 -64
- nabu/processing/tests/test_fftshift.py +1 -1
- nabu/processing/tests/test_medfilt.py +1 -3
- nabu/processing/tests/test_padding.py +1 -1
- nabu/processing/tests/test_roll.py +1 -1
- nabu/processing/tests/test_rotation.py +4 -2
- nabu/processing/unsharp_opencl.py +1 -1
- nabu/reconstruction/astra.py +245 -0
- nabu/reconstruction/cone.py +39 -9
- nabu/reconstruction/fbp.py +14 -0
- nabu/reconstruction/fbp_base.py +40 -8
- nabu/reconstruction/fbp_opencl.py +8 -0
- nabu/reconstruction/filtering.py +59 -25
- nabu/reconstruction/filtering_cuda.py +22 -21
- nabu/reconstruction/filtering_opencl.py +10 -14
- nabu/reconstruction/hbp.py +26 -13
- nabu/reconstruction/mlem.py +55 -16
- nabu/reconstruction/projection.py +3 -5
- nabu/reconstruction/sinogram.py +1 -1
- nabu/reconstruction/sinogram_cuda.py +0 -1
- nabu/reconstruction/tests/test_cone.py +37 -2
- nabu/reconstruction/tests/test_deringer.py +4 -4
- nabu/reconstruction/tests/test_fbp.py +36 -15
- nabu/reconstruction/tests/test_filtering.py +27 -7
- nabu/reconstruction/tests/test_halftomo.py +28 -2
- nabu/reconstruction/tests/test_mlem.py +94 -64
- nabu/reconstruction/tests/test_projector.py +7 -2
- nabu/reconstruction/tests/test_reconstructor.py +1 -1
- nabu/reconstruction/tests/test_sino_normalization.py +0 -1
- nabu/resources/dataset_analyzer.py +210 -24
- nabu/resources/gpu.py +4 -4
- nabu/resources/logger.py +4 -4
- nabu/resources/nxflatfield.py +103 -37
- nabu/resources/tests/test_dataset_analyzer.py +37 -0
- nabu/resources/tests/test_extract.py +11 -0
- nabu/resources/tests/test_nxflatfield.py +5 -5
- nabu/resources/utils.py +16 -10
- nabu/stitching/alignment.py +8 -11
- nabu/stitching/config.py +44 -35
- nabu/stitching/definitions.py +2 -2
- nabu/stitching/frame_composition.py +8 -10
- nabu/stitching/overlap.py +4 -4
- nabu/stitching/sample_normalization.py +5 -5
- nabu/stitching/slurm_utils.py +2 -2
- nabu/stitching/stitcher/base.py +2 -0
- nabu/stitching/stitcher/dumper/base.py +0 -1
- nabu/stitching/stitcher/dumper/postprocessing.py +1 -1
- nabu/stitching/stitcher/post_processing.py +11 -9
- nabu/stitching/stitcher/pre_processing.py +37 -31
- nabu/stitching/stitcher/single_axis.py +2 -3
- nabu/stitching/stitcher_2D.py +2 -1
- nabu/stitching/tests/test_config.py +10 -11
- nabu/stitching/tests/test_sample_normalization.py +1 -1
- nabu/stitching/tests/test_slurm_utils.py +1 -2
- nabu/stitching/tests/test_y_preprocessing_stitching.py +11 -8
- nabu/stitching/tests/test_z_postprocessing_stitching.py +3 -3
- nabu/stitching/tests/test_z_preprocessing_stitching.py +27 -24
- nabu/stitching/utils/tests/__init__.py +0 -0
- nabu/stitching/utils/tests/test_post-processing.py +1 -0
- nabu/stitching/utils/utils.py +16 -18
- nabu/tests.py +0 -3
- nabu/testutils.py +62 -9
- nabu/utils.py +50 -20
- {nabu-2024.2.13.dist-info → nabu-2025.1.0.dist-info}/METADATA +7 -7
- nabu-2025.1.0.dist-info/RECORD +328 -0
- {nabu-2024.2.13.dist-info → nabu-2025.1.0.dist-info}/WHEEL +1 -1
- {nabu-2024.2.13.dist-info → nabu-2025.1.0.dist-info}/entry_points.txt +2 -1
- nabu/app/correct_rot.py +0 -70
- nabu/io/tests/test_detector_distortion.py +0 -178
- nabu-2024.2.13.dist-info/RECORD +0 -317
- /nabu/{stitching → app}/tests/__init__.py +0 -0
- {nabu-2024.2.13.dist-info → nabu-2025.1.0.dist-info}/licenses/LICENSE +0 -0
- {nabu-2024.2.13.dist-info → nabu-2025.1.0.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,328 @@
|
|
|
1
|
+
doc/conf.py,sha256=3xtCarCHrXPr50GbeRDuH-o3Jzojw7mpr7vpGfZPLAE,3787
|
|
2
|
+
doc/create_conf_doc.py,sha256=IVOdP70KvbW9WS_UQu3Iyd0YfS60E2fJ5IDtQ_s4cDw,1143
|
|
3
|
+
doc/doc_config.py,sha256=anqeOVjqE2e7eVzg7yuh9dvIneTkrA5doGl1cVBqT7Q,730
|
|
4
|
+
doc/get_mathjax.py,sha256=VIvKRCdDuF2VoY8JD3mSey9XX13AZMmwTJBHdt1tUs4,1012
|
|
5
|
+
nabu/__init__.py,sha256=Nz3-pFbLQQoLIL9zsmmXjr97c7pm9ezSJvKzq6cPbIk,270
|
|
6
|
+
nabu/tests.py,sha256=hOJD1GGxn_KE1bWMoxfjnjzI7d9JBUpoc9B2_tVFiEk,1370
|
|
7
|
+
nabu/testutils.py,sha256=4I62IP3VLOJx8JvGBgY1t4i4CiJMWfT_aUopxg39JIM,10047
|
|
8
|
+
nabu/utils.py,sha256=tJI64BNXMhD6W293fwwcgf9bvTalYG_5AwVGYkgi6tU,27179
|
|
9
|
+
nabu/app/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
10
|
+
nabu/app/bootstrap.py,sha256=3yLZJmrmQBmPJMBtE2ih2cspfqOy5T_UN2U8B3i_hkI,3266
|
|
11
|
+
nabu/app/bootstrap_stitching.py,sha256=wCKgugOQr6-lPMWEn4AYQeric0tCuRc9O-RnpBuTWAA,2230
|
|
12
|
+
nabu/app/cast_volume.py,sha256=OufJDx_ZJ-ZbhbvIPHxRox4jtL6PfWcL148g77BWCDU,11454
|
|
13
|
+
nabu/app/cli_configs.py,sha256=SakK1GhLDR4msZIJa0werjK6KxggrIED2yg6kxcDkJk,25482
|
|
14
|
+
nabu/app/compare_volumes.py,sha256=3qm3QsxV-D_myLAkhM_LlX0DTrDmhzfhrnNak-1538Q,3337
|
|
15
|
+
nabu/app/composite_cor.py,sha256=-qAbMJCFa0NmSb1hO2G1QvdW4fwEXSMBBbSFCnQXmCc,5068
|
|
16
|
+
nabu/app/create_distortion_map_from_poly.py,sha256=aa-vE-ndB9PsuHwdHUW7-8jGz4BxvjC-bQDWHlPV0Kg,6193
|
|
17
|
+
nabu/app/diag_to_pix.py,sha256=KKIj4YrcvEc8Ey-_T3yvxeSKTfrY5o13ekteMQN_cr4,14987
|
|
18
|
+
nabu/app/diag_to_rot.py,sha256=tBaF1Oy0-bjCqkLFK-Bu_n74easzLlRkI_FTC1cAH2Q,16933
|
|
19
|
+
nabu/app/double_flatfield.py,sha256=1yquRUIHYXmrIg7NGHMDIXpkUCS_muEioUeqLyWf8PI,5641
|
|
20
|
+
nabu/app/estimate_motion.py,sha256=-E21ttzzHYSYnDnFo4ggVgIP3AARLUgU2IA4L95vz7k,2844
|
|
21
|
+
nabu/app/generate_header.py,sha256=Voo-FAvwS_mU5gtDxyqpZnSpP_mlMSfd_6bEtgdi_tg,8919
|
|
22
|
+
nabu/app/histogram.py,sha256=gyLXKwFrU5WPQMkM1k8OdpIXSwGEEKC-f8RcTHKOho4,7930
|
|
23
|
+
nabu/app/multicor.py,sha256=FjmJurruRmrwXF7v56KlTszQGIGsqft1_P7AKR9feY0,4726
|
|
24
|
+
nabu/app/nx_z_splitter.py,sha256=p54jR-PAAw-AkGolM9fZE5lM2vbNLspCNCy5zBnJNP4,4976
|
|
25
|
+
nabu/app/parse_reconstruction_log.py,sha256=msOtA3xaqLZpISRqS0F9_SrkvbdvKNPE99tdWhPrkY0,4745
|
|
26
|
+
nabu/app/pcaflats.py,sha256=mzZzRvZKqVJAbzj75gYrlDqDzP1fpy_H5QCdjD-ivCw,4170
|
|
27
|
+
nabu/app/prepare_weights_double.py,sha256=jy78aP1UNKqSk82Wy6ZCkKjpYXxaGmlIj_vjB4SxS8A,5443
|
|
28
|
+
nabu/app/reconstruct.py,sha256=g_pkrs11QFuclgxKLih1JCRLhyM-Ln8ACXlMspA2phc,5681
|
|
29
|
+
nabu/app/reconstruct_helical.py,sha256=cMjcc8IUGUtqAOfObsznLkcGm6Ev4ZoE_vJa--fDSNQ,4257
|
|
30
|
+
nabu/app/reduce_dark_flat.py,sha256=nJg94M64Mtvcc8B-mKQT056s30fEJRHFYPMcxH3GGJ0,6599
|
|
31
|
+
nabu/app/rotate.py,sha256=st9tPf9XSH_nYPivANbcvBwDcY3snH-fYXJhVh7Suh4,6503
|
|
32
|
+
nabu/app/shrink_dataset.py,sha256=P9dorO0Q-gPAWgSHyZi3XQp4jkMTJacDYzNvJY4oh98,3507
|
|
33
|
+
nabu/app/stitching.py,sha256=WAcAAxWw9nTpajp273KylfRc-Rxw7HmyqzSLjJ4sWh4,4418
|
|
34
|
+
nabu/app/utils.py,sha256=XUBRWDmth4i3BZHd27rfarFAUP7OEcsMeVmDJ6T4EXA,1178
|
|
35
|
+
nabu/app/validator.py,sha256=rmSiMnp1PucJo4adsn7eQ-wVf1sFXA1qZFOOHDJPLVs,3338
|
|
36
|
+
nabu/app/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
37
|
+
nabu/app/tests/test_reduce_dark_flat.py,sha256=ouHz3q6RK4KgmYWt7Te-_THWqF9cX_81WMU0-X4tn7A,2694
|
|
38
|
+
nabu/cuda/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
39
|
+
nabu/cuda/convolution.py,sha256=2YfvcfOVVXSHH4PNoifsYhtG__rRQ2kD-nVjHTBNe3c,255
|
|
40
|
+
nabu/cuda/fft.py,sha256=cahlqESgKsHXwerCqW3NZBPPMCWSrCnAcSoTMAcOrqY,208
|
|
41
|
+
nabu/cuda/kernel.py,sha256=8v0b9kGNZfTPt2-xRbwrwX363Tw38B0TvsvmtmEtcrw,3776
|
|
42
|
+
nabu/cuda/medfilt.py,sha256=0V_zx2FSKvOwTwhyFQ8YlkzES5OKKu4tBx-xZlkllNI,230
|
|
43
|
+
nabu/cuda/padding.py,sha256=x6lk6_SoHzruHbQZCdN-FTgE4JlN3hyrtm3k6wwANZM,230
|
|
44
|
+
nabu/cuda/processing.py,sha256=nefntcARa917yirZqe5c90yPXua_sGzVUtg6Fzc2Vu8,2655
|
|
45
|
+
nabu/cuda/utils.py,sha256=C-0-X3mWXgUzHrEKqX0hXpir1M5M6wx1Im-HdEVIYBc,9628
|
|
46
|
+
nabu/cuda/src/ElementOp.cu,sha256=PhebQQgeF0V7MDNzeYiRXIeNq3tE2PsBx00XhanBmvg,7188
|
|
47
|
+
nabu/cuda/src/backproj.cu,sha256=EsJtb-HKK6hNnTzIYxK8B8YkgvuKJd2LC_seE-OzSbI,6197
|
|
48
|
+
nabu/cuda/src/backproj_polar.cu,sha256=sZbtw3KMfN69XyubJQSSLC87d5IPOyzbPBoRSNC1Cek,1851
|
|
49
|
+
nabu/cuda/src/boundary.h,sha256=eQhfKZm-o0kj88BvkUwzqfqxYfRde4Tuj8AhQvRK16Y,2898
|
|
50
|
+
nabu/cuda/src/cone.cu,sha256=BcW6eLhYVnJZ9WgyD8F35-fGtVeggFv01ZxuWkmCZ_g,3533
|
|
51
|
+
nabu/cuda/src/convolution.cu,sha256=O6r8qPpQjpaqnNivMRX0LK3dEACKk9xyNYO9u_JysU0,7353
|
|
52
|
+
nabu/cuda/src/dfi_fftshift.cu,sha256=ElgNXy8H14mff2hmyjxCq7CnFK_DSY2Z564QGytRO1o,2220
|
|
53
|
+
nabu/cuda/src/flatfield.cu,sha256=ZVVmEd-jcsK03VWv42uugYw6LeUnDEVY8qo_G07doHs,2058
|
|
54
|
+
nabu/cuda/src/fourier_wavelets.cu,sha256=571gDOFLy4cMKOockPZIxCJKcFWJwDYT8FdWjQJHEWE,547
|
|
55
|
+
nabu/cuda/src/halftomo.cu,sha256=agqNiL4gvY0S57_d0Xa7rvjXI5teOOXF9XHK1IA-aDQ,2902
|
|
56
|
+
nabu/cuda/src/helical_padding.cu,sha256=87Ia2jDWzA_1ZSmE-v1yBqccIrIvF5Op6Nbmyvk31Ww,3955
|
|
57
|
+
nabu/cuda/src/hierarchical_backproj.cu,sha256=4sCzv-Q-jngz6RgCIc5z1L4AsCc7qgZtpuDPI3i3ipc,9619
|
|
58
|
+
nabu/cuda/src/histogram.cu,sha256=bVdVA5GfT0-asMjmWk8r39a7W2jmjL-YVz60LUyvqiQ,808
|
|
59
|
+
nabu/cuda/src/interpolation.cu,sha256=Q4TjDklZToSjk9yCd4Rq97kQlhSAgFer7Pf4PUo4jYU,839
|
|
60
|
+
nabu/cuda/src/medfilt.cu,sha256=fyuuOEHxQFfQoDjyXr_BdNRHIUBN7e6T66kvW4OQI7A,2449
|
|
61
|
+
nabu/cuda/src/normalization.cu,sha256=uEJLeKZRe6yWYB9fSHnLjluIOiNBzJRK8LFYyVqrrn0,2028
|
|
62
|
+
nabu/cuda/src/padding.cu,sha256=ir5kmWq3Fm0dgyNLfWS3bVp_GrQGJcHjCNXXoW76TmY,4420
|
|
63
|
+
nabu/cuda/src/proj.cu,sha256=i5WZ6-V_yO2BoAVkrrELAWhFHQAOifnVwPqtIWFbcS4,3750
|
|
64
|
+
nabu/cuda/src/rotation.cu,sha256=inatw44lT0Qn4D2xguLi_YZsjzP96zfGGLiCc9vLhQw,657
|
|
65
|
+
nabu/cuda/src/transpose.cu,sha256=Enim7vLxTCFZbK3BmYdQ6ZatA_FLp6601VOSl8iGFjg,476
|
|
66
|
+
nabu/cuda/tests/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
|
67
|
+
nabu/estimation/__init__.py,sha256=HWE3ivArjlJx4FjFh2Q73VmpIyzod80KTmXvFo1AP1s,379
|
|
68
|
+
nabu/estimation/alignment.py,sha256=i7q6txkHDXuxusJ9bi6MlMVpOR8yv07LeWkKXGwqSz0,20839
|
|
69
|
+
nabu/estimation/cor.py,sha256=8RsyZ_MYT04EWvP2tLThftn_bD3cz9-uWo8D5FpXLKQ,50353
|
|
70
|
+
nabu/estimation/cor_sino.py,sha256=qN6y16UVqoDX696JYyn3iWXDxQo0FMcFTuGbT92BW_s,18959
|
|
71
|
+
nabu/estimation/distortion.py,sha256=DEXizQpgHBXmrhbQ0kuEchicxmiDgmU2qrh8bCgSezg,4701
|
|
72
|
+
nabu/estimation/focus.py,sha256=CdtMFk6Xt4qq1JwwKDmDcVCeVocz-mpV0saikO0B1mc,17995
|
|
73
|
+
nabu/estimation/motion.py,sha256=8fgwGsJMZleUugCCMRyZ2Zfi6-fWp-_dJpUnvetxGvk,26501
|
|
74
|
+
nabu/estimation/tilt.py,sha256=6R8l8gnf00m-xdgLhvQmkvZ3lIO_8hDglNsFjzlzZ4E,8834
|
|
75
|
+
nabu/estimation/translation.py,sha256=qoxT8VT38TZqrqLRwOef7-wBE5OeEObp_Qy9T2De2Do,10184
|
|
76
|
+
nabu/estimation/utils.py,sha256=31d17Ng__NxcLOtGXPmbPPW1veh1m0poCvRgDCJssUA,347
|
|
77
|
+
nabu/estimation/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
78
|
+
nabu/estimation/tests/test_alignment.py,sha256=knNn_IqVd5MR-K3LBNc1BkREZF9V8aRD829K_zD1atY,2513
|
|
79
|
+
nabu/estimation/tests/test_cor.py,sha256=YKrZc1v33WBcNEOTmzoifnotghgvUL8-78B0IxCmjCs,23811
|
|
80
|
+
nabu/estimation/tests/test_focus.py,sha256=cMxEeTLlfVHOvG_4oGMLpp6bVI6okYz0u4aNcW0vmNI,4188
|
|
81
|
+
nabu/estimation/tests/test_motion_estimation.py,sha256=WKUpkVand8VszoBIvsaEnhKqvwlsr4NVNtTaNvd-nsE,19179
|
|
82
|
+
nabu/estimation/tests/test_tilt.py,sha256=KIgTJqQvNfWndm8f3aRSdznWFl3AdQhYXiZPKLseYOs,1672
|
|
83
|
+
nabu/estimation/tests/test_translation.py,sha256=RkOnCYgk9DZGKlIka1snqTv4wbIz_nG7-EHAxnBHsJU,2999
|
|
84
|
+
nabu/io/__init__.py,sha256=AbQgj4-fCCHOKynO_PyAR9ejnFSuWKgroxxhxWVpjyQ,120
|
|
85
|
+
nabu/io/cast_volume.py,sha256=eJuiKuZILD3xClUtYOjCqmwnbW12gwg-gJTzj606u_Y,21499
|
|
86
|
+
nabu/io/detector_distortion.py,sha256=qO1Z6gejkBrixThvU_sLwH3UfLAe8aAO63YQ8z7PH78,11750
|
|
87
|
+
nabu/io/reader.py,sha256=CRQfzLqG10QNzKpPY1j3z2toEAti2bNgImMwWnHQfVE,41775
|
|
88
|
+
nabu/io/reader_helical.py,sha256=q3LOmu6F_4Uxi3rZZWJ-rsix2Lgu_saXXdiJF8TLi24,4533
|
|
89
|
+
nabu/io/utils.py,sha256=iSeBhOIcLlKgiHXdDLfAdyvSrgdv6I5iQUcjT2gv_WQ,9303
|
|
90
|
+
nabu/io/writer.py,sha256=0bZ2X0hvT-r_2Uu2u3fIfXZH7clxKIDhBwHmBS0ZcxM,15811
|
|
91
|
+
nabu/io/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
92
|
+
nabu/io/tests/test_cast_volume.py,sha256=UGrIYVp1fxm372YFJinLWAL-xCtcR731axYchhonZHY,10774
|
|
93
|
+
nabu/io/tests/test_readers.py,sha256=70vD7qPuhVjZnebDAR9zrXjk1cD65bCH_F_5xb0JfbA,18252
|
|
94
|
+
nabu/io/tests/test_remove_volume.py,sha256=q632Rq0qLneDcJLHGWCR8HYlvdnTvaEEyTQAsNv1ggM,5967
|
|
95
|
+
nabu/io/tests/test_writers.py,sha256=EJp3DKeaRko7FVTgGdjrl2tt6jES228_XT5Jb767I0w,3137
|
|
96
|
+
nabu/misc/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
97
|
+
nabu/misc/binning.py,sha256=x7mbKTfEKF8ZaZoPq2LJl9hfUsQ0qMNGMxaHE98PcNc,2920
|
|
98
|
+
nabu/misc/fftshift.py,sha256=5ktzFxD0XMrR7h8Y-ccnYZX92wmE5lhf4tuXhn8_vQg,219
|
|
99
|
+
nabu/misc/filters.py,sha256=8aoO7-g94PJ8zDUSKD0pV4knozsmZIGTDiiGgO3Fzhg,604
|
|
100
|
+
nabu/misc/fourier_filters.py,sha256=e3bEUXZLSWorsG8oUZ-AdYWx3fKrP2UsFg9M81ESwC8,5668
|
|
101
|
+
nabu/misc/histogram.py,sha256=eV6VfEl1gGP9_wbthh1xhiqtZHmb41o0OMI6G8q1sXw,223
|
|
102
|
+
nabu/misc/histogram_cuda.py,sha256=-eivBJlFRicRBWQtiDfs-iMiF6NDv43sWuAlul2dFqk,252
|
|
103
|
+
nabu/misc/kernel_base.py,sha256=ASiEvHiXhp_dLjkQxxAhob1fQ68ZmIkTsZM9uz11dbU,194
|
|
104
|
+
nabu/misc/padding.py,sha256=NUTNDsafUnI1pgy-YtemKINGUUufCb7w2EV-UrznCsM,2713
|
|
105
|
+
nabu/misc/padding_base.py,sha256=NQwOxhMnbssGBDKznE2Q6FMrIiQeAYRHVgsjxKy3Rzk,230
|
|
106
|
+
nabu/misc/processing_base.py,sha256=YTDfq2G64RVVuZn7JgWTie1YAtW-tT48Uq3ZuXH21hw,214
|
|
107
|
+
nabu/misc/rotation.py,sha256=4UgR3kaedemjeaZCfwmjF0HwfOLdSFE9ooSpMtoP85E,219
|
|
108
|
+
nabu/misc/rotation_cuda.py,sha256=agtjgKBjwOHJGXY-Y1HlbOUXi3Bl9ykyGv_a1qksucc,239
|
|
109
|
+
nabu/misc/transpose.py,sha256=ogJ1PPYO0sOPUfCgjk-Ho5cTjlBbP-KXGqhCgTj75DY,223
|
|
110
|
+
nabu/misc/unsharp.py,sha256=3xYsdiLTqTDlE8G-tIY7EeTf3nKxPrvMHOnXgkcKWvU,209
|
|
111
|
+
nabu/misc/unsharp_cuda.py,sha256=-csDxfQt_naYn5O8fOxksYNqyFKxbF8lV7yXlPd2XoM,235
|
|
112
|
+
nabu/misc/unsharp_opencl.py,sha256=HCPoobPwi2LEAfqGQ2qekjQi6G2VDKmqJQZTDXySv1Y,252
|
|
113
|
+
nabu/misc/utils.py,sha256=s8ACtKdw9rTmlD0APdrpeo_ZIneKsTv2Xq3X2TRxCRk,3898
|
|
114
|
+
nabu/misc/tests/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
|
115
|
+
nabu/misc/tests/test_binning.py,sha256=vcZZINi_v_KOw4DMqLIgPlF-CwLTG102Yf7dMQ5_SEo,1890
|
|
116
|
+
nabu/misc/tests/test_interpolation.py,sha256=H8ZJ7dppCcpxVa9wOBkJ9U0mymH5lGyCJ0LZCYIK8PE,2389
|
|
117
|
+
nabu/opencl/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
118
|
+
nabu/opencl/fft.py,sha256=0TOYjzIhRhvFgF6_oL2V89kOrlekPXu9eWpIkfOexAI,222
|
|
119
|
+
nabu/opencl/kernel.py,sha256=lmHRgWqpEbQUOunZe0xFuuw_Z_K6dq8BxjH3FLReVBU,5125
|
|
120
|
+
nabu/opencl/memcpy.py,sha256=s_0CCO-PTDmEsCW9_kVCNHwN7_hw7uNy_O6KJ0zS71I,1263
|
|
121
|
+
nabu/opencl/padding.py,sha256=CjeifU4xcUhgD_OILoIC4vPDQGVyVRjJXsMb8gxPL_0,238
|
|
122
|
+
nabu/opencl/processing.py,sha256=cKq_VLtLBPijp2pl7Zgc4mrVsYLUA27x26jPo484Kg4,2416
|
|
123
|
+
nabu/opencl/utils.py,sha256=OPqSJAZ82EwRmqu_H5_S59Y9a3CrqQhEQomWQj-EuSU,10239
|
|
124
|
+
nabu/opencl/src/ElementOp.cl,sha256=RMScHhHYDa6xXC4NLJrC1KpDRq-aMZG1lwq3O9pStiY,1258
|
|
125
|
+
nabu/opencl/src/backproj.cl,sha256=BmikalwFHhqO8xSWGq_txnkrkeAja5SlVcxhFxH2jIw,5470
|
|
126
|
+
nabu/opencl/src/fftshift.cl,sha256=xq-HNRWhuXqTVD_nD-38_41HPYZPCXAHDTpxsGURSTY,1726
|
|
127
|
+
nabu/opencl/src/halftomo.cl,sha256=IZ2VJwWLpfaNpzM8Ief13zsqDcq68lyFqG55qYWoHNE,1386
|
|
128
|
+
nabu/opencl/src/padding.cl,sha256=0e4wDB3wOVFIFw0f7VTfD45PK6HzDhooCgK2DZqiUfA,460
|
|
129
|
+
nabu/opencl/src/roll.cl,sha256=UTH4A9SfajGoX3wjOAm1inDT9-8RxCFfoZ5ePijMGOE,2486
|
|
130
|
+
nabu/opencl/src/transpose.cl,sha256=jFRIFccPefzbKFEqEIVYGrWac5XJs3FY1tEmvCzA74E,450
|
|
131
|
+
nabu/opencl/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
132
|
+
nabu/pipeline/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
133
|
+
nabu/pipeline/config.py,sha256=rOpCHywEi_StPDaz-fSYc36ondCMamMPhMy7o03HcJk,9207
|
|
134
|
+
nabu/pipeline/config_validators.py,sha256=Wx9nnUpfxTJ8H2ODkUyjImTtJS9V68TafLH1TecEFxI,16222
|
|
135
|
+
nabu/pipeline/datadump.py,sha256=tKW-Dl28FU2vf1OuIie_YI1-GT1DMreis57sOR-DuGU,7026
|
|
136
|
+
nabu/pipeline/dataset_validator.py,sha256=etQw9NC_YGsdWCgjsn8aJ3WfvcRuJlLVZlWoqhvvo-8,9263
|
|
137
|
+
nabu/pipeline/detector_distortion_provider.py,sha256=ru1AxbcuO-FA8FYooPBWgp1lzdSDUtzFUC1A_sS8jME,920
|
|
138
|
+
nabu/pipeline/estimators.py,sha256=ALzlcBxaVMt7OprEgndfBE_csuv9aKZax3erD3nBWU0,51786
|
|
139
|
+
nabu/pipeline/params.py,sha256=UKMQWFQnrlNMW5aIGty-JoGmBdkS6tpoAXCjW8n6FX8,4229
|
|
140
|
+
nabu/pipeline/processconfig.py,sha256=3xx2Lc8uEzPAqSMwUncr4RCiCtKn2c7wnXXbPSn8GNo,7719
|
|
141
|
+
nabu/pipeline/reader.py,sha256=wkxPHYOi_C8dHNc7kddB8AMtFuW7GjsP_tm6SJeHlEY,4792
|
|
142
|
+
nabu/pipeline/utils.py,sha256=5GGhT9Wu7tHDlF3w7YNjTTYkNBl5xHa9EcRZSGFUWtM,3538
|
|
143
|
+
nabu/pipeline/writer.py,sha256=NVeAtkWDtXg5UJ4C3wsbkfM23ZnK64atCWl8tjmjsuY,8166
|
|
144
|
+
nabu/pipeline/fullfield/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
145
|
+
nabu/pipeline/fullfield/chunked.py,sha256=gEm9XYk1MhNQBi-2VSVrXKQD55XmLPQAoHn9sCsEDIc,43272
|
|
146
|
+
nabu/pipeline/fullfield/chunked_cuda.py,sha256=US5prrhNjsx3QVHkY5duQp8uFcGdgYEPzVS7nfWkJRw,6047
|
|
147
|
+
nabu/pipeline/fullfield/computations.py,sha256=uqf7LvuDPm7n51BpP8eb8vTewDgRFyzSDP249g3FWBE,10098
|
|
148
|
+
nabu/pipeline/fullfield/dataset_validator.py,sha256=HK_bmlII9pc59PXCgKJOyLv7Xu3DYv_jbH3RmQSgzvI,2933
|
|
149
|
+
nabu/pipeline/fullfield/get_double_flatfield.py,sha256=uYFDAii6Nw4RCUQO_6Id6tXLdmtVbj_pxAHQWennSeE,5411
|
|
150
|
+
nabu/pipeline/fullfield/nabu_config.py,sha256=F1E4KwHTfw6tynBnBjvr1F6tflIFsvDp8Pyop7xNmGg,33146
|
|
151
|
+
nabu/pipeline/fullfield/processconfig.py,sha256=72hjxgClKcxmzypVpvcWzkzoXP7Ypu5VpRxMjYQVnJQ,38461
|
|
152
|
+
nabu/pipeline/fullfield/reconstruction.py,sha256=cljRyxD8rvZ5qDws_5AwChi7P-5T_0SSXsGkYUGOVb8,38006
|
|
153
|
+
nabu/pipeline/helical/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
154
|
+
nabu/pipeline/helical/dataset_validator.py,sha256=HdKjUSj3PIpJb1dKSzJg8s4zXbAnMPWaPn8kvp_xQEs,657
|
|
155
|
+
nabu/pipeline/helical/fbp.py,sha256=MKn587bO5Lj7yFu-Sll2RkOIY5r3rC-fmC10SzFU5i0,5841
|
|
156
|
+
nabu/pipeline/helical/filtering.py,sha256=dK93SP68QMCROTh8kWaYsm_NhqFpfj0I1Teek7dM6xg,10215
|
|
157
|
+
nabu/pipeline/helical/gridded_accumulator.py,sha256=DfyNp3MRQ1JWBjEMB_MJuJodtaProczeceh1xq2YvXU,26352
|
|
158
|
+
nabu/pipeline/helical/helical_chunked_regridded.py,sha256=Pedgb4D8SzMEHw_vIrSVTHXkt60gXmAIUGM69LBosaE,68463
|
|
159
|
+
nabu/pipeline/helical/helical_chunked_regridded_cuda.py,sha256=DdH55nQml3JWDX9VJaxflefyFWFZr6zBWwJRitCeeE8,3887
|
|
160
|
+
nabu/pipeline/helical/helical_reconstruction.py,sha256=-QwmcBif0XrONm01wJ1IhyRMU3YjG6fdAJEkImOk-Uc,24111
|
|
161
|
+
nabu/pipeline/helical/helical_utils.py,sha256=s38xbugkIJgcGeXqXJVSdGsUg-WPHt5hBmWuiYHVzR0,1437
|
|
162
|
+
nabu/pipeline/helical/nabu_config.py,sha256=lQU1AZaBSsvBEbNGAf5t0DRXFmNJzUqObrcqGKc7WM8,8047
|
|
163
|
+
nabu/pipeline/helical/processconfig.py,sha256=IlCfKkiclBmDDdT6Ail3aSj9Q7zV38YpFmF1_SsCjy4,2775
|
|
164
|
+
nabu/pipeline/helical/span_strategy.py,sha256=tKLWQv2woj3SSW5JLJu5pNbv48fy0vYNejnm7uHnaEc,25057
|
|
165
|
+
nabu/pipeline/helical/weight_balancer.py,sha256=9yQodctr1qUZFOEA-xfvUiolr-tI-HjX0Y8YIlO5gII,3975
|
|
166
|
+
nabu/pipeline/helical/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
167
|
+
nabu/pipeline/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
168
|
+
nabu/pipeline/tests/test_estimators.py,sha256=fYSc5ZA9j7e--AC9D4es7cSQ8-e0FsYq4IfXv4-LBcs,14901
|
|
169
|
+
nabu/pipeline/xrdct/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
170
|
+
nabu/preproc/__init__.py,sha256=dKxvZvWZXjKS3iPRaSXiUeM2dNGIOyTlirq5pdAWY0Y,284
|
|
171
|
+
nabu/preproc/alignment.py,sha256=PUw4YdpCmY6FVkUaosaT6LxFoNgPv7XHFy11Fhz1_6w,19
|
|
172
|
+
nabu/preproc/ccd.py,sha256=LELLZcoJaae9V6zW2lXehyP54-xWuvvQ3_0OIxWrpos,6979
|
|
173
|
+
nabu/preproc/ccd_cuda.py,sha256=IckZjk0fznVgX6VlBWZEURar_RqvMTN-g87Aj6Y8rJk,6093
|
|
174
|
+
nabu/preproc/ctf.py,sha256=LEZT5fawEIIT3Qx0V0910RSv8aPLYuuHDrMzTYqyd5o,14981
|
|
175
|
+
nabu/preproc/ctf_cuda.py,sha256=j6s8JOYQ7IVuu5HHAoGJhbTRW2zi7t5d6YrcAxIU0aQ,5268
|
|
176
|
+
nabu/preproc/distortion.py,sha256=XksQNrrSBfZS7mlvIdVEMZjw839ppQWP6AitTLcgfb0,3309
|
|
177
|
+
nabu/preproc/double_flatfield.py,sha256=WcYsNuotgQgm_KaioNa3OVI8rGfk3Wrn_YCW5v4mo4w,7895
|
|
178
|
+
nabu/preproc/double_flatfield_cuda.py,sha256=lqgvZyeujdWJ5nF_GNRMQx7punjqA3SZ8K3IIyL3HDY,6197
|
|
179
|
+
nabu/preproc/double_flatfield_variable_region.py,sha256=yiyvfGLFv3b93aKzHw84EQszPwQHfBv0PqtlQ8khvm4,2258
|
|
180
|
+
nabu/preproc/flatfield.py,sha256=t0NaV0NYaUAKtfWAop2srhL7wrfw6sGPMUAjs--LE3k,30574
|
|
181
|
+
nabu/preproc/flatfield_cuda.py,sha256=Iiqv7bHa870DZOH68L19xiN1kG9I9JXuckFfA3khGtY,5482
|
|
182
|
+
nabu/preproc/flatfield_variable_region.py,sha256=RVmSW515vgkHagjqotPNPUe97oQooHgdqkBn6hPH_2Q,3142
|
|
183
|
+
nabu/preproc/phase.py,sha256=nRFhnHN_Bmmu5AHDcoO-Kt59sXYFSQaTljHZ5dlZiA0,13857
|
|
184
|
+
nabu/preproc/phase_cuda.py,sha256=2oGjpmSl8U6dbzxrU_pt-_3JFm3XeBMCTCUNoxjIAuw,4944
|
|
185
|
+
nabu/preproc/shift.py,sha256=wAzZgafxbgboAZAs_m3q6Hxlz2ztMMN4FRY5balwNsE,3501
|
|
186
|
+
nabu/preproc/shift_cuda.py,sha256=4YOVRZ4oECEVWOQ6MzDBh8cOY2RtOOhlU7tir0Tp77M,4125
|
|
187
|
+
nabu/preproc/tests/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
|
188
|
+
nabu/preproc/tests/test_ccd_corr.py,sha256=KIpwaWYWT_6OPVXyVuLxXIIWreBkYF0rOnDMiegiLMU,2249
|
|
189
|
+
nabu/preproc/tests/test_ctf.py,sha256=4KtjLdiMqwtv3ZJgk-q5xzxoxSnKL_wleZtEgEgEw2A,9986
|
|
190
|
+
nabu/preproc/tests/test_double_flatfield.py,sha256=qUmgAktFHqzKJBHHfj3GJzorey0yk7R0e4nr8dRmbTo,2870
|
|
191
|
+
nabu/preproc/tests/test_flatfield.py,sha256=8_vmTtfmrpbuKUr4fW8NmtH-PtGWkSQkMBFD6hs0ul4,21055
|
|
192
|
+
nabu/preproc/tests/test_paganin.py,sha256=Ixlp624o0xtFs12akN6sDn-gHWXm1wVlcdumm2prqh4,2978
|
|
193
|
+
nabu/preproc/tests/test_pcaflats.py,sha256=tZpMNzEtcqhLgnfl02VYyn9Ez8_YmZgtHAZublYNTHo,6356
|
|
194
|
+
nabu/preproc/tests/test_vshift.py,sha256=Gq9sDtbbAAdLTJALH2qcbeYXE5dINQ8QpBnCgZM0tFQ,2972
|
|
195
|
+
nabu/processing/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
196
|
+
nabu/processing/azim.py,sha256=edTySuOWaZlc2dxU-PSY7Odd_mrVl0_MtjOvh8fzKxw,7264
|
|
197
|
+
nabu/processing/convolution_cuda.py,sha256=jOLKdEwzBwNZPTEjXIBWStZp22ieeukc6KGnuSNVnaA,15421
|
|
198
|
+
nabu/processing/fft_base.py,sha256=wSLiyJEwX51chfZG3CWPl0DvKp182qAmTnRY8N1mWW0,5741
|
|
199
|
+
nabu/processing/fft_cuda.py,sha256=0JNzdSPPQ1xS38mjsgriN3-Cj9MXCtADLVHzIQjQjWc,3467
|
|
200
|
+
nabu/processing/fft_opencl.py,sha256=Qhd9F32XCN22tet-en8S-yGkZDNsOMapqHlS0eTiPp0,2082
|
|
201
|
+
nabu/processing/fftshift.py,sha256=mFOKuqQtxDPXoFPPP_G-YMA4WFmmO0oPFXjBWrrfDO8,4880
|
|
202
|
+
nabu/processing/histogram.py,sha256=CumzHFjOw0JaHWlMnhCnj7I2Guam1HYqPVJeijKqC40,11376
|
|
203
|
+
nabu/processing/histogram_cuda.py,sha256=G0uKJNhDwPUTr8lyEBr1m5G0D4n3-eZwCCBC1FZaCyQ,3338
|
|
204
|
+
nabu/processing/kernel_base.py,sha256=0m5WxJIREntSMoUP_ECtGnuWMKN9AS6wJVdblEGDu_M,4366
|
|
205
|
+
nabu/processing/medfilt_cuda.py,sha256=usnNMKxFMrGI6ZIYNRDXBn5kzBzOyuVay8mnQSvNR2k,5691
|
|
206
|
+
nabu/processing/muladd.py,sha256=CZyVL2innf7suGvwM7xB16vUjgZSz0UYEm7Z563igyw,876
|
|
207
|
+
nabu/processing/muladd_cuda.py,sha256=wGivGyyMn7FN68hDT590RwSiV4Ju-TLGwa1bnw4Cd_k,2477
|
|
208
|
+
nabu/processing/padding_base.py,sha256=P6Zu8yLkHrCW3ZAZmeLfPn2ZfAH2_fZEB3CMLbCWL6E,2874
|
|
209
|
+
nabu/processing/padding_cuda.py,sha256=72bypO92I9TRVr63YO6COnht3v9nwt95QkfYiNJBqY8,2612
|
|
210
|
+
nabu/processing/padding_opencl.py,sha256=H7w5bY9Th9pJKYKaX1_u-XqUj8lM5XWfVViu0ax4W40,3074
|
|
211
|
+
nabu/processing/processing_base.py,sha256=sbMmkjjYvkqNosGsO8IeC2hlzIqLapdAh-wGv2ssG-o,4477
|
|
212
|
+
nabu/processing/roll_opencl.py,sha256=ms6ZW7ecG-kWq--wWijAjDB_uVWQtUylFp_EDKmfUKw,2283
|
|
213
|
+
nabu/processing/rotation.py,sha256=8tVQponi8tv8uPw-xT-0GyZecl3YIXyJgPkEnQMer8M,1836
|
|
214
|
+
nabu/processing/rotation_cuda.py,sha256=_NtcrqshEwbD7DUW1NA0HVq0nr8RBAKovEg1DvuADcw,2941
|
|
215
|
+
nabu/processing/transpose.py,sha256=bOnxEFXJd16YcTGyMS-3lwREIVaDkClE_Fkb8bOn1l8,4410
|
|
216
|
+
nabu/processing/unsharp.py,sha256=XqoieKlX5sEHalxObi5JBOjauRUSbiHc6rqYT_buTa4,2682
|
|
217
|
+
nabu/processing/unsharp_cuda.py,sha256=uKFCEk8bRqgJzR8HB_OeKYuwC5jKqaXpFI6pRv_pDY4,2152
|
|
218
|
+
nabu/processing/unsharp_opencl.py,sha256=vBVq5wA-rxOkULE-sv6WzNt5Pq9hc3gFcp4mM0kCo44,2651
|
|
219
|
+
nabu/processing/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
220
|
+
nabu/processing/tests/test_fft.py,sha256=9UnMcqnmzlBz5SHeJV9b8VOX-cAm35DBIbEP84l4nlM,7587
|
|
221
|
+
nabu/processing/tests/test_fftshift.py,sha256=Qwg3oOwNh_MRmg9BS1kMVhQSSfzQzrCOsppsvY3v5rg,2599
|
|
222
|
+
nabu/processing/tests/test_histogram.py,sha256=25CLs1WZpLF9xZ2DR82x4_YokA5Z76Qsnn6zY8YdJj8,2283
|
|
223
|
+
nabu/processing/tests/test_medfilt.py,sha256=rnReK3MMCsc74-NoycYSRSMp7bN4Qdg4cZbHfWQ9ZWQ,2652
|
|
224
|
+
nabu/processing/tests/test_muladd.py,sha256=cRhAC5hgmRV0BAwPA4o4M-kcx-UDniLK7sSyiN0F3kE,1927
|
|
225
|
+
nabu/processing/tests/test_padding.py,sha256=EQXYwAFDvtAjK6KRPAY7fNarRXPixuwqKItM3bkJDKY,8730
|
|
226
|
+
nabu/processing/tests/test_roll.py,sha256=XtEFz1V_OId1O2hGf4JJjesCyYLxKjoz966sGL-YzEs,2333
|
|
227
|
+
nabu/processing/tests/test_rotation.py,sha256=5O1yHthJfdoP-2loXob96j_V2IwI2eb8rouCYwDrdKk,2834
|
|
228
|
+
nabu/processing/tests/test_transpose.py,sha256=hTG17wTaB5Wv6twbW3ZFhBv6BYfqJY7DTQPoO0-KdkM,2760
|
|
229
|
+
nabu/processing/tests/test_unsharp.py,sha256=R3ovbwDDp3ccy2A8t6CcUVELXRWkED5EnQdN2FQOfQM,4391
|
|
230
|
+
nabu/reconstruction/__init__.py,sha256=EmKVvx_-FJvzJngG4ielIC7FhMCpI1Waaflg_lF44tk,163
|
|
231
|
+
nabu/reconstruction/astra.py,sha256=qnFYabU-Bzgys8hXjIBcwO2NazrvhNXUYFIkMHc6BmM,10444
|
|
232
|
+
nabu/reconstruction/cone.py,sha256=tSjaMDHeFV-h_IFbxUqSbhqlWmvlBcJQ8u89Y9Q9gg8,20559
|
|
233
|
+
nabu/reconstruction/fbp.py,sha256=ptHcQsZTxgMFa9PhFJeTzDekibWR-P1BUj2SvRrk770,5684
|
|
234
|
+
nabu/reconstruction/fbp_base.py,sha256=usd49ctQMI5w6uU5xn8qBsN7gI95iU9a3jRZgSPmOJk,18653
|
|
235
|
+
nabu/reconstruction/fbp_opencl.py,sha256=U-XP7v1m1lJ1ulvlF8tclJfEOWmZLCT1hevIw4gsNec,3497
|
|
236
|
+
nabu/reconstruction/filtering.py,sha256=monJnA_kk9k_Gy7bMAos9I-XgU8czWhf9vBth6ikcMM,10566
|
|
237
|
+
nabu/reconstruction/filtering_cuda.py,sha256=_S-BZMhtnNt8ugePSmf-LF7JvMPCOyGPUMSseymgwZw,4019
|
|
238
|
+
nabu/reconstruction/filtering_opencl.py,sha256=v-sUzbnRp6M1B221F-iSh-crBCGknjHYYsjFs05VhDY,3788
|
|
239
|
+
nabu/reconstruction/hbp.py,sha256=Qll7i20LWxUo1-SHRxemkYAolBTP8HScwt1OvWmD2r0,18642
|
|
240
|
+
nabu/reconstruction/mlem.py,sha256=wgC2pKl6RKB-f2318worB9VE-qCGoQcz24aKbtkrJos,5794
|
|
241
|
+
nabu/reconstruction/projection.py,sha256=SNocaOY9HuNiHs-VxkW9IS707JPJnd3sDjAbf7aIw2E,9081
|
|
242
|
+
nabu/reconstruction/reconstructor.py,sha256=16xxHcK4iie-uh-trf6x_IuvgxJKBvQRTE5B8tnc4F8,7358
|
|
243
|
+
nabu/reconstruction/reconstructor_cuda.py,sha256=m_3GzG44PRyiSEfTvYjgr5atLwl26hMfZOMyqTWxp0g,1644
|
|
244
|
+
nabu/reconstruction/rings.py,sha256=mpbCLuFM_6Uy9oNJkyQ8tZwhGhrbWtzRlArSRsC90bI,9527
|
|
245
|
+
nabu/reconstruction/rings_cuda.py,sha256=yWUQ-XK-2htZ59GM5aNORA4sjxUswEwWUZuWqKJXiNY,14878
|
|
246
|
+
nabu/reconstruction/sinogram.py,sha256=VeydpunbseI6azvMpoutldz3ZaSc6cKP4ibrGuvEHN4,17028
|
|
247
|
+
nabu/reconstruction/sinogram_cuda.py,sha256=DBF06ruzkZ5zn8x06Ron2NkB_FBKiZC2oM7kjeiV6jQ,10630
|
|
248
|
+
nabu/reconstruction/sinogram_opencl.py,sha256=vxJa5BeOd2NVdUayXYfQGAfO1AEbJfTGotuijT8qgCs,1486
|
|
249
|
+
nabu/reconstruction/tests/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
|
250
|
+
nabu/reconstruction/tests/test_cone.py,sha256=yRx0k1Nv1bTP2IyiwygtIoafQ6v18-qf9J1Rkg_OxSI,22732
|
|
251
|
+
nabu/reconstruction/tests/test_deringer.py,sha256=3xT7YltisnXa-NUd7aoMe88wOfTiTj-uxC6JFxGXtUA,8352
|
|
252
|
+
nabu/reconstruction/tests/test_fbp.py,sha256=SLdNjpWp3c7XVRUlR9nKyUvvzEcu9CkFE7WaP6nFxQc,16368
|
|
253
|
+
nabu/reconstruction/tests/test_filtering.py,sha256=J5U6PDykX2yThQn4fVrln4mNxC2TgwW9xRY7wE9X-dQ,5977
|
|
254
|
+
nabu/reconstruction/tests/test_halftomo.py,sha256=zCAOFGRaLicr2PLw3628Kdcuj_bhGZz8QZvWBL-c7As,6526
|
|
255
|
+
nabu/reconstruction/tests/test_mlem.py,sha256=QlrBZIJJetRxDRWoMDZ3wNepanAwGd6KgJd3hhoQ7dU,4983
|
|
256
|
+
nabu/reconstruction/tests/test_projector.py,sha256=QcHLnNWQ6HC9pJo9CdalaaeEDQ_vFpNMn5yXEpfBDXI,6259
|
|
257
|
+
nabu/reconstruction/tests/test_reconstructor.py,sha256=xzfEM0j48ScQoGqWVcAK74HG97tcF7FsVVLzvX_TgHE,3379
|
|
258
|
+
nabu/reconstruction/tests/test_sino_normalization.py,sha256=qNnpVUp3UcFGyLlSP0rCzE5hxdV6YENL9AF6mo72WcQ,3669
|
|
259
|
+
nabu/resources/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
260
|
+
nabu/resources/cor.py,sha256=-mcrTbj3G7o4PP5E_gIRo2j6_-ADmMkkOc_0CyQv84c,170
|
|
261
|
+
nabu/resources/dataset_analyzer.py,sha256=X52X2YAOGBSMRfWko4Z2-oL_VePpc27A1GZbbTAk5yI,25739
|
|
262
|
+
nabu/resources/gpu.py,sha256=oQA8PpPdyuIzpxq1PwVd9gJdyCiLIry2godUV1AbPW0,5769
|
|
263
|
+
nabu/resources/logger.py,sha256=xV9UoLZBw3wXAWYfOgqrnOtzJc9aC1VNO4LM2cHxWJg,3738
|
|
264
|
+
nabu/resources/nxflatfield.py,sha256=kgHPf_jGQiuJ_EFe8fladRkx_PM6PfdRtcf5Tf2cYgU,12385
|
|
265
|
+
nabu/resources/utils.py,sha256=79iO6I0sXx8VGXZOC9eXquNvasF37A9Zr6r2BYSwJWU,5974
|
|
266
|
+
nabu/resources/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
267
|
+
nabu/resources/templates/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
268
|
+
nabu/resources/templates/bm05_pag.conf,sha256=3-Zny2_QlQuZKge53N1vFLZ8yzq-y2cmpAAkByUdHX8,394
|
|
269
|
+
nabu/resources/templates/id16_ctf.conf,sha256=PJt_hvBlAweZSo6INnsmozHfBJvJ64b28x1mFfAOD6s,842
|
|
270
|
+
nabu/resources/templates/id16_holo.conf,sha256=sDd_rEJGZjOGVAsGub5sT2arfXDnc_sxyDBAcfKHNpw,773
|
|
271
|
+
nabu/resources/templates/id16a_fluo.conf,sha256=Nz1etzO2fSwksi7CThWJ5T1kZEdyBe8rMO7puNJ93Hc,542
|
|
272
|
+
nabu/resources/templates/id19_pag.conf,sha256=u4fFPEBprzOW9_5_ChkIgowQcYpLhjmA8Gwm5XgC4Jc,384
|
|
273
|
+
nabu/resources/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
274
|
+
nabu/resources/tests/test_dataset_analyzer.py,sha256=qp0cCwZfZMITWNDvxa-q84xpfUyFnQygDwCLN7QMSOs,1590
|
|
275
|
+
nabu/resources/tests/test_extract.py,sha256=6ufLTc4Wgf9-FLsscpG2TbUDEn767iLVdyOrwRQyI9A,443
|
|
276
|
+
nabu/resources/tests/test_nxflatfield.py,sha256=XCiFULzNyApdhr89a3a3BseJMPUN4JnzxQ8VdBaA8ac,4225
|
|
277
|
+
nabu/resources/tests/test_units.py,sha256=F2jFTck-1UwYET1MwTtX6ntzYUosfwOJkugSencGgz8,2155
|
|
278
|
+
nabu/stitching/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
279
|
+
nabu/stitching/alignment.py,sha256=J1wNjULS1PTB_37MSvw9-EX1yb5MuNElsqcdk3g9KWU,8923
|
|
280
|
+
nabu/stitching/config.py,sha256=ZYMvbxsJN-lUvJuJiWcVpdF4Pp5Pua3ifCLHP3d87J8,52991
|
|
281
|
+
nabu/stitching/definitions.py,sha256=PhSvXZwe-nPrqFebCs3M-OIKoLvD4oq3XRRnOEBvk7Y,137
|
|
282
|
+
nabu/stitching/frame_composition.py,sha256=bOuOn3SoyAgtEv_DZon-JbEfh5hW3RySTjK6ERxVZ2w,6626
|
|
283
|
+
nabu/stitching/overlap.py,sha256=pGDZqh0TAp3z89yVktO5x-yi0tG-qQugLmRuTO9AFIM,17168
|
|
284
|
+
nabu/stitching/sample_normalization.py,sha256=d6xjDp4-_MA4S2ytPXX3ROV2CBKcY4QAhE52t6HjC50,2025
|
|
285
|
+
nabu/stitching/single_axis_stitching.py,sha256=bAJlZhUOqW93VkX4nWFNrnQN4G92PHCn-87RpQ34oto,1214
|
|
286
|
+
nabu/stitching/slurm_utils.py,sha256=kTtqZOrkSLjY_AzL5Fd2n11uqmWPCYHJvN1qbbaGy-E,8993
|
|
287
|
+
nabu/stitching/stitcher_2D.py,sha256=g9MQttUrJTYNt4SreGjj3PkccyVCQ4MwyUUUbjsweC4,12667
|
|
288
|
+
nabu/stitching/y_stitching.py,sha256=Urt2lBXokxXxX5HFHEiLBqC69yy5b_KyuKFoU8smah4,1020
|
|
289
|
+
nabu/stitching/z_stitching.py,sha256=gNwj7qWvDFQaGroLVoQnKBPlbvr_CReUQEqxW15m2Ag,1835
|
|
290
|
+
nabu/stitching/stitcher/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
291
|
+
nabu/stitching/stitcher/base.py,sha256=Nyc5L-nvSLWOsrVVq_EP8V9j5AKnFVgxTijStyiF5-I,4326
|
|
292
|
+
nabu/stitching/stitcher/post_processing.py,sha256=jgNL-3nPevNGHtDKgYMGeJdUxR0ma-qCfzCcYJW8aEI,26868
|
|
293
|
+
nabu/stitching/stitcher/pre_processing.py,sha256=S5bvORC0IsXf82WW1-9YMpk3JzFvp-G9c1mM5_89UKU,51829
|
|
294
|
+
nabu/stitching/stitcher/single_axis.py,sha256=hocbPKtOmcx9z_Eavyzxj9W-yMgeLlaze6Dsv8NdWVc,20026
|
|
295
|
+
nabu/stitching/stitcher/stitcher.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
296
|
+
nabu/stitching/stitcher/y_stitcher.py,sha256=KXwkyw6cCFcuSBCq5OyAait2Ob_5WRrtawrAlAhk60k,317
|
|
297
|
+
nabu/stitching/stitcher/z_stitcher.py,sha256=pb8IezJOD9U7hTc6LCExRtkxOgBsUUCgf4G8yuvq11k,1397
|
|
298
|
+
nabu/stitching/stitcher/dumper/__init__.py,sha256=FcSlb-AvGWZHm_4x9GYvmTrB1488vKeHv6uVR1pKAa0,243
|
|
299
|
+
nabu/stitching/stitcher/dumper/base.py,sha256=kenknxtqyg_SQMDsLzd0yBYPlpepCaqyB5bvZnGEpuk,3397
|
|
300
|
+
nabu/stitching/stitcher/dumper/postprocessing.py,sha256=-50ZIzsBqp1344pcp_eGKaWeCvIXLevPNtvDtDiGP_E,18274
|
|
301
|
+
nabu/stitching/stitcher/dumper/preprocessing.py,sha256=7qOx27p92Tbbiah6gYEjkxfax7L8ictdrvzqfDm3vHo,2219
|
|
302
|
+
nabu/stitching/tests/test_alignment.py,sha256=MACak1ILOr8nRKeT0mWfMd-ZvhCl3SWjjcp6GjRbITc,2735
|
|
303
|
+
nabu/stitching/tests/test_config.py,sha256=oFlLm3VCC2DEE948IDU-PE9FklCjZU86K-sd8wvSDvA,7311
|
|
304
|
+
nabu/stitching/tests/test_frame_composition.py,sha256=fQLT426u-uF5TTURKN48uHKgeYiz3ogTjwo7o4YFE30,4839
|
|
305
|
+
nabu/stitching/tests/test_overlap.py,sha256=B_iT0pe9b9EJ77V59ilk-_Run6n5a1V9mTDuiPzqieg,7820
|
|
306
|
+
nabu/stitching/tests/test_sample_normalization.py,sha256=a-F8geN8qrteDeQK37oeSYNdt49siyWFs3fZgPTRn4g,1328
|
|
307
|
+
nabu/stitching/tests/test_slurm_utils.py,sha256=QTbtx5SRAK1JkbyI-GNSI5xeqVHI8KptD3STpOb09Pc,4951
|
|
308
|
+
nabu/stitching/tests/test_utils.py,sha256=hIahPlogtnZNr_YkbN_Rcv-y6qG47IiRSSss51-cWK4,647
|
|
309
|
+
nabu/stitching/tests/test_y_preprocessing_stitching.py,sha256=9AGMM3glAVsZ-M1v-_DD1u_QWUb5Id5QldIOYnw-1vY,5179
|
|
310
|
+
nabu/stitching/tests/test_z_postprocessing_stitching.py,sha256=vzWPGr2X-kN6WuRMHFMcEnSMjA9xv_TTq3pogpT8uEY,26908
|
|
311
|
+
nabu/stitching/tests/test_z_preprocessing_stitching.py,sha256=aIaYaROpoMflx_wW-cOoLUqmngMEnRCXlQUuoGldcs4,16445
|
|
312
|
+
nabu/stitching/utils/__init__.py,sha256=alIDGBnxWH4JvP-UW-7N99seBBi0r1GV1h8f1ERFBec,21
|
|
313
|
+
nabu/stitching/utils/post_processing.py,sha256=aow36shbYhFgAnbCoq6mtXVpjBNCKm7VSLIvv3EYVdA,11303
|
|
314
|
+
nabu/stitching/utils/utils.py,sha256=hX9WC-ZpmV31svQnKPO8Ek-uW-RZ3Ot4szfvuYpZjPg,24586
|
|
315
|
+
nabu/stitching/utils/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
316
|
+
nabu/stitching/utils/tests/test_post-processing.py,sha256=X79gYJ2dwF_bjFWVQLu9odHNJaMmljfuI1-ROIp7jdE,766
|
|
317
|
+
nabu/thirdparty/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
318
|
+
nabu/thirdparty/algotom_convert_sino.py,sha256=iZVRilvyqMyLTu8RKgbqDFUjObWW5X69rCARrnNizuI,13872
|
|
319
|
+
nabu/thirdparty/pore3d_deringer_munch.py,sha256=o4bisnFc-wMjuohWBT8wgWmfNehPQGtCl6G2NebJlbg,4500
|
|
320
|
+
nabu/thirdparty/tomocupy_remove_stripe.py,sha256=Khe4zFf0kRzu65Yxnvq58gt1ljOztqJGdMDhVAiM7lM,24363
|
|
321
|
+
nabu/thirdparty/tomopy_phase.py,sha256=hK4oPpkogLOhv23XzzEXQY2u3r8fJvASY_bINVs6ERE,8634
|
|
322
|
+
nabu/thirdparty/tomwer_load_flats_darks.py,sha256=ZNoVAinUb_wGYbfvs_4BVnWsjsQmNxSvCh1bWhR2WWg,5611
|
|
323
|
+
nabu-2025.1.0.dist-info/licenses/LICENSE,sha256=1eAIPSnEsnSFNUODnLtNtQTs76exG3ZxJ1DJR6zoUBA,1066
|
|
324
|
+
nabu-2025.1.0.dist-info/METADATA,sha256=Hm7AO-tcnARZvhjBTjJCvKA5L1CgV29yzAurY7oFG0s,4271
|
|
325
|
+
nabu-2025.1.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
326
|
+
nabu-2025.1.0.dist-info/entry_points.txt,sha256=YxzCY5CNQ1XHrIGbRKg-BgC1Jy7QaCITdITpyhhxpZU,1338
|
|
327
|
+
nabu-2025.1.0.dist-info/top_level.txt,sha256=fsm_N3eXLRZk2QXF9OSKPNDPFXOz8FAQjHh5avT3dok,9
|
|
328
|
+
nabu-2025.1.0.dist-info/RECORD,,
|
|
@@ -8,12 +8,13 @@ nabu-diag2pix = nabu.app.diag_to_pix:main
|
|
|
8
8
|
nabu-diag2rot = nabu.app.diag_to_rot:main
|
|
9
9
|
nabu-display-timings = nabu.app.parse_reconstruction_log:parse_reclog_cli
|
|
10
10
|
nabu-double-flatfield = nabu.app.double_flatfield:dff_cli
|
|
11
|
+
nabu-estimate-motion = nabu.app.estimate_motion:estimate_motion
|
|
11
12
|
nabu-generate-info = nabu.app.generate_header:generate_merged_info_file
|
|
12
13
|
nabu-helical = nabu.app.reconstruct_helical:main_helical
|
|
13
|
-
nabu-helical-correct-rot = nabu.app.correct_rot:main
|
|
14
14
|
nabu-helical-prepare-weights-double = nabu.app.prepare_weights_double:main
|
|
15
15
|
nabu-histogram = nabu.app.histogram:histogram_cli
|
|
16
16
|
nabu-multicor = nabu.app.multicor:main
|
|
17
|
+
nabu-pcaflats = nabu.app.pcaflats:main
|
|
17
18
|
nabu-poly2map = nabu.app.create_distortion_map_from_poly:create_distortion_maps_entry_point
|
|
18
19
|
nabu-reduce-dark-flat = nabu.app.reduce_dark_flat:main
|
|
19
20
|
nabu-rotate = nabu.app.rotate:rotate_cli
|
nabu/app/correct_rot.py
DELETED
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
from .. import version
|
|
2
|
-
from os import environ
|
|
3
|
-
|
|
4
|
-
import argparse
|
|
5
|
-
import shutil
|
|
6
|
-
import os
|
|
7
|
-
import sys
|
|
8
|
-
import re
|
|
9
|
-
import h5py
|
|
10
|
-
import numpy as np
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
from ..resources.logger import LoggerOrPrint
|
|
14
|
-
from .utils import parse_params_values
|
|
15
|
-
from .cli_configs import CorrectRotConfig
|
|
16
|
-
from silx.io.dictdump import h5todict
|
|
17
|
-
|
|
18
|
-
from nxtomo.application.nxtomo import NXtomo
|
|
19
|
-
|
|
20
|
-
import h5py
|
|
21
|
-
from nabu.utils import DictToObj
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
def main(user_args=None):
|
|
25
|
-
"""Applies the correction found by diag_to_rot to a nexus file"""
|
|
26
|
-
|
|
27
|
-
if user_args is None:
|
|
28
|
-
user_args = sys.argv[1:]
|
|
29
|
-
|
|
30
|
-
args = DictToObj(
|
|
31
|
-
parse_params_values(
|
|
32
|
-
CorrectRotConfig,
|
|
33
|
-
parser_description=main.__doc__,
|
|
34
|
-
program_version="nabu " + version,
|
|
35
|
-
user_args=user_args,
|
|
36
|
-
)
|
|
37
|
-
)
|
|
38
|
-
|
|
39
|
-
# now we read the results of the diag_to_rot utility, they are in the cor_file parameter
|
|
40
|
-
# of the cli
|
|
41
|
-
cor_data = DictToObj(h5todict(args.cor_file, "/"))
|
|
42
|
-
|
|
43
|
-
my_cor = cor_data.cor[0]
|
|
44
|
-
# we will take my_cor as cor at the first angular position
|
|
45
|
-
# and then we correct the x_translation at the other angles
|
|
46
|
-
|
|
47
|
-
# We now load the nexus that we wish to correct
|
|
48
|
-
nx_tomo = NXtomo().load(args.nexus_source, args.entry_name)
|
|
49
|
-
|
|
50
|
-
# The cor_file that we use for correction
|
|
51
|
-
# is providing us with the z_m that gives for each
|
|
52
|
-
# cor position found in the cor array the corresponding value of
|
|
53
|
-
# the translation along z (in meters)
|
|
54
|
-
z_translation = nx_tomo.sample.z_translation.value
|
|
55
|
-
z_translation = z_translation - z_translation[0]
|
|
56
|
-
|
|
57
|
-
# now we interpolate to find the correction
|
|
58
|
-
# for each position of the encoders
|
|
59
|
-
cors = np.interp(z_translation, cor_data.z_m, cor_data.cor)
|
|
60
|
-
|
|
61
|
-
# this is the correction
|
|
62
|
-
x_correction = nx_tomo.instrument.detector.x_pixel_size.value * (cors - my_cor) # we are in meters here
|
|
63
|
-
|
|
64
|
-
# and we apply it to the nexus that we have loaded
|
|
65
|
-
nx_tomo.sample.x_translation = nx_tomo.sample.x_translation.value + x_correction
|
|
66
|
-
|
|
67
|
-
# finally we write it to the corrected nexus file
|
|
68
|
-
nx_tomo.save(file_path=args.nexus_target, data_path=args.entry_name, overwrite=True)
|
|
69
|
-
|
|
70
|
-
return 0
|
|
@@ -1,178 +0,0 @@
|
|
|
1
|
-
import pytest
|
|
2
|
-
import numpy as np
|
|
3
|
-
import scipy.ndimage
|
|
4
|
-
from scipy import sparse
|
|
5
|
-
from nabu.io.detector_distortion import DetectorDistortionBase
|
|
6
|
-
from nabu.processing.rotation import Rotation, __have__skimage__
|
|
7
|
-
|
|
8
|
-
if __have__skimage__:
|
|
9
|
-
import skimage
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
@pytest.mark.skipif(not (__have__skimage__), reason="Need scikit-image for rotation")
|
|
13
|
-
def test_detector_distortion():
|
|
14
|
-
image = scipy.ndimage.gaussian_filter(np.random.random([379, 1357]), 3.0)
|
|
15
|
-
center_xz = ((image.shape[1] - 1) / 2, (image.shape[0] - 1) / 2)
|
|
16
|
-
|
|
17
|
-
part_to_be_retrieved = image[100:279]
|
|
18
|
-
|
|
19
|
-
rotated_image = skimage.transform.rotate(image, angle=5.0, center=center_xz[::])
|
|
20
|
-
|
|
21
|
-
corrector = DetectorDistortionRotation(detector_full_shape_vh=image.shape, center_xz=center_xz, angle_deg=-5.0)
|
|
22
|
-
start_x, end_x, start_z, end_z = corrector.set_sub_region_transformation(
|
|
23
|
-
target_sub_region=(
|
|
24
|
-
None,
|
|
25
|
-
None,
|
|
26
|
-
100,
|
|
27
|
-
279,
|
|
28
|
-
)
|
|
29
|
-
)
|
|
30
|
-
|
|
31
|
-
source = rotated_image[start_z:end_z, start_x:end_x]
|
|
32
|
-
|
|
33
|
-
retrieved = corrector.transform(source)
|
|
34
|
-
|
|
35
|
-
diff = (retrieved - part_to_be_retrieved)[:, 20:-20]
|
|
36
|
-
|
|
37
|
-
assert abs(diff).std() < 1e-3
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
class DetectorDistortionRotation(DetectorDistortionBase):
|
|
41
|
-
""" """
|
|
42
|
-
|
|
43
|
-
def __init__(self, detector_full_shape_vh=(0, 0), center_xz=(0, 0), angle_deg=0.0):
|
|
44
|
-
"""This is the basis class.
|
|
45
|
-
A simple identity transformation which has the only merit to show
|
|
46
|
-
how it works.Reimplement this function to have more parameters for other
|
|
47
|
-
transformations
|
|
48
|
-
"""
|
|
49
|
-
self._build_full_transformation(detector_full_shape_vh, center_xz, angle_deg)
|
|
50
|
-
|
|
51
|
-
def _build_full_transformation(self, detector_full_shape_vh, center_xz, angle_deg):
|
|
52
|
-
"""A simple identity.
|
|
53
|
-
Reimplement this function to have more parameters for other
|
|
54
|
-
transformations
|
|
55
|
-
"""
|
|
56
|
-
|
|
57
|
-
indices = np.indices(detector_full_shape_vh)
|
|
58
|
-
center_x, center_z = center_xz
|
|
59
|
-
coordinates = (indices.T - np.array([center_z, center_x])).T
|
|
60
|
-
|
|
61
|
-
c = np.cos(np.deg2rad(angle_deg))
|
|
62
|
-
s = np.sin(np.deg2rad(angle_deg))
|
|
63
|
-
|
|
64
|
-
rot_mat = np.array([[c, s], [-s, c]])
|
|
65
|
-
|
|
66
|
-
coordinates = np.tensordot(rot_mat, coordinates, axes=[1, 0])
|
|
67
|
-
|
|
68
|
-
# padding
|
|
69
|
-
sz, sx = detector_full_shape_vh
|
|
70
|
-
total_detector_npixs = sz * sx
|
|
71
|
-
xs = np.clip(np.array(coordinates[1].flat) + center_x, [[0]], [[sx - 1]])
|
|
72
|
-
zs = np.clip(np.array(coordinates[0].flat) + center_z, [[0]], [[sz - 1]])
|
|
73
|
-
|
|
74
|
-
ix0s = np.floor(xs)
|
|
75
|
-
ix1s = np.ceil(xs)
|
|
76
|
-
fx = xs - ix0s
|
|
77
|
-
|
|
78
|
-
iz0s = np.floor(zs)
|
|
79
|
-
iz1s = np.ceil(zs)
|
|
80
|
-
fz = zs - iz0s
|
|
81
|
-
|
|
82
|
-
I_tmp = np.empty([4 * sz * sx], np.int64)
|
|
83
|
-
J_tmp = np.empty([4 * sz * sx], np.int64)
|
|
84
|
-
V_tmp = np.ones([4 * sz * sx], "f")
|
|
85
|
-
|
|
86
|
-
I_tmp[:] = np.arange(sz * sx * 4) // 4
|
|
87
|
-
|
|
88
|
-
J_tmp[0::4] = iz0s * sx + ix0s
|
|
89
|
-
J_tmp[1::4] = iz0s * sx + ix1s
|
|
90
|
-
J_tmp[2::4] = iz1s * sx + ix0s
|
|
91
|
-
J_tmp[3::4] = iz1s * sx + ix1s
|
|
92
|
-
|
|
93
|
-
V_tmp[0::4] = (1 - fz) * (1 - fx)
|
|
94
|
-
V_tmp[1::4] = (1 - fz) * fx
|
|
95
|
-
V_tmp[2::4] = fz * (1 - fx)
|
|
96
|
-
V_tmp[3::4] = fz * fx
|
|
97
|
-
|
|
98
|
-
self.detector_full_shape_vh = detector_full_shape_vh
|
|
99
|
-
|
|
100
|
-
coo_tmp = sparse.coo_matrix((V_tmp.astype("f"), (I_tmp, J_tmp)), shape=(sz * sx, sz * sx))
|
|
101
|
-
|
|
102
|
-
csr_tmp = coo_tmp.tocsr()
|
|
103
|
-
|
|
104
|
-
self.full_csr_data = csr_tmp.data
|
|
105
|
-
self.full_csr_indices = csr_tmp.indices
|
|
106
|
-
self.full_csr_indptr = csr_tmp.indptr
|
|
107
|
-
|
|
108
|
-
## This will be used to save time if the same sub_region argument is requested several time in a row
|
|
109
|
-
self._status = None
|
|
110
|
-
|
|
111
|
-
def _set_sub_region_transformation(
|
|
112
|
-
self,
|
|
113
|
-
target_sub_region=(
|
|
114
|
-
(
|
|
115
|
-
None,
|
|
116
|
-
None,
|
|
117
|
-
0,
|
|
118
|
-
0,
|
|
119
|
-
),
|
|
120
|
-
),
|
|
121
|
-
):
|
|
122
|
-
(x_start, x_end, z_start, z_end) = target_sub_region
|
|
123
|
-
|
|
124
|
-
if z_start is None:
|
|
125
|
-
z_start = 0
|
|
126
|
-
if z_end is None:
|
|
127
|
-
z_end = self.detector_full_shape_vh[0]
|
|
128
|
-
|
|
129
|
-
if (x_start, x_end) not in [(None, None), (0, None), (0, self.detector_full_shape_vh[1])]:
|
|
130
|
-
message = f""" In the base class DetectorDistortionRotation only vertical slicing is accepted.
|
|
131
|
-
The sub_region contained (x_start, x_end)={(x_start, x_end)} which would slice the
|
|
132
|
-
full horizontal size which is {self.detector_full_shape_vh[1]}
|
|
133
|
-
"""
|
|
134
|
-
raise ValueError()
|
|
135
|
-
|
|
136
|
-
x_start, x_end = 0, self.detector_full_shape_vh[1]
|
|
137
|
-
|
|
138
|
-
row_ptr_start = z_start * self.detector_full_shape_vh[1]
|
|
139
|
-
row_ptr_end = z_end * self.detector_full_shape_vh[1]
|
|
140
|
-
|
|
141
|
-
indices_start = self.full_csr_indptr[row_ptr_start]
|
|
142
|
-
indices_end = self.full_csr_indptr[row_ptr_end]
|
|
143
|
-
|
|
144
|
-
data_tmp = self.full_csr_data[indices_start:indices_end]
|
|
145
|
-
|
|
146
|
-
target_offset = self.full_csr_indptr[row_ptr_start]
|
|
147
|
-
indptr_tmp = self.full_csr_indptr[row_ptr_start : row_ptr_end + 1] - target_offset
|
|
148
|
-
|
|
149
|
-
indices_tmp = self.full_csr_indices[indices_start:indices_end]
|
|
150
|
-
|
|
151
|
-
iz_source = (indices_tmp) // self.detector_full_shape_vh[1]
|
|
152
|
-
|
|
153
|
-
z_start_source = iz_source.min()
|
|
154
|
-
z_end_source = iz_source.max() + 1
|
|
155
|
-
source_offset = z_start_source * self.detector_full_shape_vh[1]
|
|
156
|
-
indices_tmp = indices_tmp - source_offset
|
|
157
|
-
|
|
158
|
-
target_size = (z_end - z_start) * self.detector_full_shape_vh[1]
|
|
159
|
-
source_size = (z_end_source - z_start_source) * self.detector_full_shape_vh[1]
|
|
160
|
-
|
|
161
|
-
self.transformation_matrix = sparse.csr_matrix(
|
|
162
|
-
(data_tmp, indices_tmp, indptr_tmp), shape=(target_size, source_size)
|
|
163
|
-
)
|
|
164
|
-
|
|
165
|
-
self.target_shape = ((z_end - z_start), self.detector_full_shape_vh[1])
|
|
166
|
-
|
|
167
|
-
## For the identity matrix the source and the target have the same size.
|
|
168
|
-
## The two following lines are trivial.
|
|
169
|
-
## For this identity transformation only the slicing of the appropriate part
|
|
170
|
-
## of the identity sparse matrix is slightly laborious.
|
|
171
|
-
## Practical case will be more complicated and source_sub_region
|
|
172
|
-
## will be in general larger than the target_sub_region
|
|
173
|
-
self._status = {
|
|
174
|
-
"target_sub_region": ((x_start, x_end, z_start, z_end)),
|
|
175
|
-
"source_sub_region": ((x_start, x_end, z_start_source, z_end_source)),
|
|
176
|
-
}
|
|
177
|
-
|
|
178
|
-
return self._status["source_sub_region"]
|