nabu 2024.2.4__py3-none-any.whl → 2025.1.0.dev4__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.
Files changed (164) hide show
  1. doc/doc_config.py +32 -0
  2. nabu/__init__.py +1 -1
  3. nabu/app/bootstrap_stitching.py +4 -2
  4. nabu/app/cast_volume.py +7 -13
  5. nabu/app/cli_configs.py +0 -5
  6. nabu/app/compare_volumes.py +1 -1
  7. nabu/app/composite_cor.py +2 -4
  8. nabu/app/correct_rot.py +0 -8
  9. nabu/app/diag_to_pix.py +5 -6
  10. nabu/app/diag_to_rot.py +10 -11
  11. nabu/app/multicor.py +1 -1
  12. nabu/app/parse_reconstruction_log.py +1 -0
  13. nabu/app/prepare_weights_double.py +1 -2
  14. nabu/app/reconstruct_helical.py +1 -5
  15. nabu/app/reduce_dark_flat.py +0 -2
  16. nabu/app/rotate.py +3 -1
  17. nabu/app/tests/test_reduce_dark_flat.py +2 -2
  18. nabu/app/validator.py +1 -4
  19. nabu/cuda/convolution.py +1 -1
  20. nabu/cuda/fft.py +1 -1
  21. nabu/cuda/medfilt.py +1 -1
  22. nabu/cuda/padding.py +1 -1
  23. nabu/cuda/src/cone.cu +19 -9
  24. nabu/cuda/src/hierarchical_backproj.cu +16 -0
  25. nabu/cuda/utils.py +2 -2
  26. nabu/estimation/alignment.py +17 -31
  27. nabu/estimation/cor.py +23 -29
  28. nabu/estimation/cor_sino.py +2 -8
  29. nabu/estimation/focus.py +4 -8
  30. nabu/estimation/tests/test_alignment.py +2 -0
  31. nabu/estimation/tests/test_tilt.py +1 -1
  32. nabu/estimation/tilt.py +5 -4
  33. nabu/io/cast_volume.py +5 -5
  34. nabu/io/detector_distortion.py +5 -6
  35. nabu/io/reader.py +3 -3
  36. nabu/io/reader_helical.py +5 -4
  37. nabu/io/tests/test_cast_volume.py +2 -2
  38. nabu/io/tests/test_readers.py +4 -4
  39. nabu/io/tests/test_writers.py +2 -2
  40. nabu/io/utils.py +8 -4
  41. nabu/io/writer.py +1 -2
  42. nabu/misc/fftshift.py +1 -1
  43. nabu/misc/fourier_filters.py +1 -1
  44. nabu/misc/histogram.py +1 -1
  45. nabu/misc/histogram_cuda.py +1 -1
  46. nabu/misc/padding_base.py +1 -1
  47. nabu/misc/rotation.py +1 -1
  48. nabu/misc/rotation_cuda.py +1 -1
  49. nabu/misc/tests/test_binning.py +1 -1
  50. nabu/misc/transpose.py +1 -1
  51. nabu/misc/unsharp.py +1 -1
  52. nabu/misc/unsharp_cuda.py +1 -1
  53. nabu/misc/unsharp_opencl.py +1 -1
  54. nabu/misc/utils.py +1 -1
  55. nabu/opencl/fft.py +1 -1
  56. nabu/opencl/padding.py +1 -1
  57. nabu/opencl/utils.py +8 -8
  58. nabu/pipeline/config.py +2 -2
  59. nabu/pipeline/config_validators.py +4 -3
  60. nabu/pipeline/datadump.py +3 -3
  61. nabu/pipeline/estimators.py +6 -6
  62. nabu/pipeline/fullfield/chunked.py +4 -5
  63. nabu/pipeline/fullfield/dataset_validator.py +0 -1
  64. nabu/pipeline/fullfield/nabu_config.py +2 -1
  65. nabu/pipeline/fullfield/reconstruction.py +9 -8
  66. nabu/pipeline/helical/dataset_validator.py +3 -4
  67. nabu/pipeline/helical/fbp.py +4 -4
  68. nabu/pipeline/helical/filtering.py +5 -4
  69. nabu/pipeline/helical/gridded_accumulator.py +9 -10
  70. nabu/pipeline/helical/helical_chunked_regridded.py +1 -0
  71. nabu/pipeline/helical/helical_reconstruction.py +10 -7
  72. nabu/pipeline/helical/helical_utils.py +1 -2
  73. nabu/pipeline/helical/nabu_config.py +1 -0
  74. nabu/pipeline/helical/span_strategy.py +1 -0
  75. nabu/pipeline/helical/weight_balancer.py +1 -2
  76. nabu/pipeline/tests/__init__.py +0 -0
  77. nabu/pipeline/utils.py +1 -1
  78. nabu/pipeline/writer.py +1 -1
  79. nabu/preproc/alignment.py +0 -10
  80. nabu/preproc/ctf.py +8 -8
  81. nabu/preproc/ctf_cuda.py +1 -1
  82. nabu/preproc/double_flatfield_cuda.py +2 -2
  83. nabu/preproc/double_flatfield_variable_region.py +0 -1
  84. nabu/preproc/flatfield.py +1 -1
  85. nabu/preproc/flatfield_cuda.py +1 -2
  86. nabu/preproc/flatfield_variable_region.py +3 -3
  87. nabu/preproc/phase.py +2 -4
  88. nabu/preproc/phase_cuda.py +2 -2
  89. nabu/preproc/shift_cuda.py +0 -1
  90. nabu/preproc/tests/test_ctf.py +3 -3
  91. nabu/preproc/tests/test_double_flatfield.py +1 -1
  92. nabu/preproc/tests/test_flatfield.py +1 -1
  93. nabu/preproc/tests/test_vshift.py +4 -1
  94. nabu/processing/azim.py +2 -2
  95. nabu/processing/convolution_cuda.py +6 -4
  96. nabu/processing/fft_base.py +1 -1
  97. nabu/processing/fft_cuda.py +19 -8
  98. nabu/processing/fft_opencl.py +9 -4
  99. nabu/processing/fftshift.py +1 -1
  100. nabu/processing/histogram.py +1 -1
  101. nabu/processing/muladd.py +0 -1
  102. nabu/processing/padding_base.py +1 -1
  103. nabu/processing/padding_cuda.py +0 -1
  104. nabu/processing/processing_base.py +1 -1
  105. nabu/processing/tests/test_fft.py +1 -1
  106. nabu/processing/tests/test_fftshift.py +1 -1
  107. nabu/processing/tests/test_medfilt.py +1 -3
  108. nabu/processing/tests/test_padding.py +1 -1
  109. nabu/processing/tests/test_roll.py +1 -1
  110. nabu/processing/unsharp_opencl.py +1 -1
  111. nabu/reconstruction/astra.py +245 -0
  112. nabu/reconstruction/cone.py +9 -4
  113. nabu/reconstruction/fbp_base.py +2 -2
  114. nabu/reconstruction/filtering_cuda.py +1 -1
  115. nabu/reconstruction/hbp.py +16 -3
  116. nabu/reconstruction/mlem.py +0 -1
  117. nabu/reconstruction/projection.py +3 -5
  118. nabu/reconstruction/sinogram.py +1 -1
  119. nabu/reconstruction/sinogram_cuda.py +0 -1
  120. nabu/reconstruction/tests/test_cone.py +76 -3
  121. nabu/reconstruction/tests/test_deringer.py +2 -2
  122. nabu/reconstruction/tests/test_fbp.py +1 -1
  123. nabu/reconstruction/tests/test_halftomo.py +27 -1
  124. nabu/reconstruction/tests/test_mlem.py +3 -2
  125. nabu/reconstruction/tests/test_projector.py +7 -2
  126. nabu/reconstruction/tests/test_sino_normalization.py +0 -1
  127. nabu/resources/dataset_analyzer.py +4 -4
  128. nabu/resources/gpu.py +4 -4
  129. nabu/resources/logger.py +4 -4
  130. nabu/resources/nxflatfield.py +2 -2
  131. nabu/resources/tests/test_nxflatfield.py +4 -4
  132. nabu/stitching/alignment.py +1 -4
  133. nabu/stitching/config.py +19 -16
  134. nabu/stitching/frame_composition.py +8 -10
  135. nabu/stitching/overlap.py +2 -2
  136. nabu/stitching/slurm_utils.py +2 -2
  137. nabu/stitching/stitcher/base.py +2 -0
  138. nabu/stitching/stitcher/dumper/base.py +0 -1
  139. nabu/stitching/stitcher/dumper/postprocessing.py +1 -1
  140. nabu/stitching/stitcher/post_processing.py +6 -6
  141. nabu/stitching/stitcher/pre_processing.py +13 -11
  142. nabu/stitching/stitcher/single_axis.py +3 -4
  143. nabu/stitching/stitcher_2D.py +2 -1
  144. nabu/stitching/tests/test_config.py +7 -8
  145. nabu/stitching/tests/test_sample_normalization.py +1 -1
  146. nabu/stitching/tests/test_slurm_utils.py +1 -2
  147. nabu/stitching/tests/test_z_postprocessing_stitching.py +1 -1
  148. nabu/stitching/tests/test_z_preprocessing_stitching.py +4 -4
  149. nabu/stitching/utils/tests/__init__.py +0 -0
  150. nabu/stitching/utils/tests/test_post-processing.py +1 -0
  151. nabu/stitching/utils/utils.py +10 -12
  152. nabu/tests.py +0 -3
  153. nabu/testutils.py +30 -8
  154. nabu/utils.py +28 -18
  155. {nabu-2024.2.4.dist-info → nabu-2025.1.0.dev4.dist-info}/METADATA +25 -25
  156. nabu-2025.1.0.dev4.dist-info/RECORD +320 -0
  157. {nabu-2024.2.4.dist-info → nabu-2025.1.0.dev4.dist-info}/WHEEL +1 -1
  158. nabu/io/tests/test_detector_distortion.py +0 -178
  159. nabu/resources/tests/test_extract.py +0 -9
  160. nabu-2024.2.4.dist-info/RECORD +0 -318
  161. /nabu/{stitching → app}/tests/__init__.py +0 -0
  162. {nabu-2024.2.4.dist-info → nabu-2025.1.0.dev4.dist-info}/LICENSE +0 -0
  163. {nabu-2024.2.4.dist-info → nabu-2025.1.0.dev4.dist-info}/entry_points.txt +0 -0
  164. {nabu-2024.2.4.dist-info → nabu-2025.1.0.dev4.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,320 @@
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=V5zdPYiUiPrnkJuHBsh6IGZqzmQjMO3MsSAbVLM_FJw,275
6
+ nabu/tests.py,sha256=hOJD1GGxn_KE1bWMoxfjnjzI7d9JBUpoc9B2_tVFiEk,1370
7
+ nabu/testutils.py,sha256=xYRhwM38eUMHK156la_YTf5a119mU0Nre6OrbnnqS9o,8633
8
+ nabu/utils.py,sha256=COC0rgyjsVTnAnWEwZqUZSu8RZYizDFlj2oFk1HMBmU,26599
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=fBjVWOgLWS_JBF5qEdN-b-7GCOQVx15cwerh4BmAsTQ,11171
13
+ nabu/app/cli_configs.py,sha256=x32idqLU2iMWxMi8ysYneUnq8mgpyAcT_-1udvAWWuM,22141
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/correct_rot.py,sha256=rIgBZZ_q-WPTy0mH22_XUXSXYqmR9DQkKlgEw_ol1kI,1988
17
+ nabu/app/create_distortion_map_from_poly.py,sha256=aa-vE-ndB9PsuHwdHUW7-8jGz4BxvjC-bQDWHlPV0Kg,6193
18
+ nabu/app/diag_to_pix.py,sha256=KKIj4YrcvEc8Ey-_T3yvxeSKTfrY5o13ekteMQN_cr4,14987
19
+ nabu/app/diag_to_rot.py,sha256=tBaF1Oy0-bjCqkLFK-Bu_n74easzLlRkI_FTC1cAH2Q,16933
20
+ nabu/app/double_flatfield.py,sha256=6ko_ZJomtwWVHs1pchWy7Pa5_rCO12NyUmyptKarEd0,5420
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=25v7tmN2_p1OQNhsI0qbCn3rpBmXzpJUDhHSVwzkLKo,4068
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/prepare_weights_double.py,sha256=jy78aP1UNKqSk82Wy6ZCkKjpYXxaGmlIj_vjB4SxS8A,5443
27
+ nabu/app/reconstruct.py,sha256=L5N6BnP8lUQbXGi4NtcAZQ7h-T8CbyiBBP6s1SlPqrg,5792
28
+ nabu/app/reconstruct_helical.py,sha256=meHlSfW-wc1GtMNsE2ihhMlvVRPYkXq-UlJ4oqhJgX4,4277
29
+ nabu/app/reduce_dark_flat.py,sha256=nJ67oRGRWRw3P5Q3oTdW17_SszVxwkNSiYUjTkZJQZA,6555
30
+ nabu/app/rotate.py,sha256=st9tPf9XSH_nYPivANbcvBwDcY3snH-fYXJhVh7Suh4,6503
31
+ nabu/app/shrink_dataset.py,sha256=P9dorO0Q-gPAWgSHyZi3XQp4jkMTJacDYzNvJY4oh98,3507
32
+ nabu/app/stitching.py,sha256=T5nQVp7D6jNg86vMi8BCQANJJsKstvwItJWZDs05t64,4194
33
+ nabu/app/utils.py,sha256=XUBRWDmth4i3BZHd27rfarFAUP7OEcsMeVmDJ6T4EXA,1178
34
+ nabu/app/validator.py,sha256=rmSiMnp1PucJo4adsn7eQ-wVf1sFXA1qZFOOHDJPLVs,3338
35
+ nabu/app/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
36
+ nabu/app/tests/test_reduce_dark_flat.py,sha256=ouHz3q6RK4KgmYWt7Te-_THWqF9cX_81WMU0-X4tn7A,2694
37
+ nabu/cuda/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
38
+ nabu/cuda/convolution.py,sha256=2YfvcfOVVXSHH4PNoifsYhtG__rRQ2kD-nVjHTBNe3c,255
39
+ nabu/cuda/fft.py,sha256=cahlqESgKsHXwerCqW3NZBPPMCWSrCnAcSoTMAcOrqY,208
40
+ nabu/cuda/kernel.py,sha256=8v0b9kGNZfTPt2-xRbwrwX363Tw38B0TvsvmtmEtcrw,3776
41
+ nabu/cuda/medfilt.py,sha256=0V_zx2FSKvOwTwhyFQ8YlkzES5OKKu4tBx-xZlkllNI,230
42
+ nabu/cuda/padding.py,sha256=x6lk6_SoHzruHbQZCdN-FTgE4JlN3hyrtm3k6wwANZM,230
43
+ nabu/cuda/processing.py,sha256=nefntcARa917yirZqe5c90yPXua_sGzVUtg6Fzc2Vu8,2655
44
+ nabu/cuda/utils.py,sha256=8FkRKNe3ONQrizWSnqtBJOrhbGAMc24I-wSrNGD2q_0,9627
45
+ nabu/cuda/src/ElementOp.cu,sha256=PhebQQgeF0V7MDNzeYiRXIeNq3tE2PsBx00XhanBmvg,7188
46
+ nabu/cuda/src/backproj.cu,sha256=Zq9w8TP9zSYCHH_91dfrTVLOSEmY0y4hzm7J2qdCdJ8,6257
47
+ nabu/cuda/src/backproj_polar.cu,sha256=sZbtw3KMfN69XyubJQSSLC87d5IPOyzbPBoRSNC1Cek,1851
48
+ nabu/cuda/src/boundary.h,sha256=eQhfKZm-o0kj88BvkUwzqfqxYfRde4Tuj8AhQvRK16Y,2898
49
+ nabu/cuda/src/cone.cu,sha256=IuuVpHPnGekQmLq7_FyJ3pN4Ntjs7k5yeUiPKty7H9w,3399
50
+ nabu/cuda/src/convolution.cu,sha256=O6r8qPpQjpaqnNivMRX0LK3dEACKk9xyNYO9u_JysU0,7353
51
+ nabu/cuda/src/dfi_fftshift.cu,sha256=ElgNXy8H14mff2hmyjxCq7CnFK_DSY2Z564QGytRO1o,2220
52
+ nabu/cuda/src/flatfield.cu,sha256=ZVVmEd-jcsK03VWv42uugYw6LeUnDEVY8qo_G07doHs,2058
53
+ nabu/cuda/src/fourier_wavelets.cu,sha256=571gDOFLy4cMKOockPZIxCJKcFWJwDYT8FdWjQJHEWE,547
54
+ nabu/cuda/src/halftomo.cu,sha256=agqNiL4gvY0S57_d0Xa7rvjXI5teOOXF9XHK1IA-aDQ,2902
55
+ nabu/cuda/src/helical_padding.cu,sha256=87Ia2jDWzA_1ZSmE-v1yBqccIrIvF5Op6Nbmyvk31Ww,3955
56
+ nabu/cuda/src/hierarchical_backproj.cu,sha256=HT18tjIviwubvWiufC51TVIftBA5qD3-k94l1J19l8Y,9625
57
+ nabu/cuda/src/histogram.cu,sha256=bVdVA5GfT0-asMjmWk8r39a7W2jmjL-YVz60LUyvqiQ,808
58
+ nabu/cuda/src/interpolation.cu,sha256=Q4TjDklZToSjk9yCd4Rq97kQlhSAgFer7Pf4PUo4jYU,839
59
+ nabu/cuda/src/medfilt.cu,sha256=fyuuOEHxQFfQoDjyXr_BdNRHIUBN7e6T66kvW4OQI7A,2449
60
+ nabu/cuda/src/normalization.cu,sha256=uEJLeKZRe6yWYB9fSHnLjluIOiNBzJRK8LFYyVqrrn0,2028
61
+ nabu/cuda/src/padding.cu,sha256=ir5kmWq3Fm0dgyNLfWS3bVp_GrQGJcHjCNXXoW76TmY,4420
62
+ nabu/cuda/src/proj.cu,sha256=i5WZ6-V_yO2BoAVkrrELAWhFHQAOifnVwPqtIWFbcS4,3750
63
+ nabu/cuda/src/rotation.cu,sha256=inatw44lT0Qn4D2xguLi_YZsjzP96zfGGLiCc9vLhQw,657
64
+ nabu/cuda/src/transpose.cu,sha256=Enim7vLxTCFZbK3BmYdQ6ZatA_FLp6601VOSl8iGFjg,476
65
+ nabu/cuda/tests/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
66
+ nabu/estimation/__init__.py,sha256=HWE3ivArjlJx4FjFh2Q73VmpIyzod80KTmXvFo1AP1s,379
67
+ nabu/estimation/alignment.py,sha256=i7q6txkHDXuxusJ9bi6MlMVpOR8yv07LeWkKXGwqSz0,20839
68
+ nabu/estimation/cor.py,sha256=xKr3CWHktz1F-D1-h1UY6WCKZhPN0515NW2F9E87C-o,50291
69
+ nabu/estimation/cor_sino.py,sha256=qN6y16UVqoDX696JYyn3iWXDxQo0FMcFTuGbT92BW_s,18959
70
+ nabu/estimation/distortion.py,sha256=DEXizQpgHBXmrhbQ0kuEchicxmiDgmU2qrh8bCgSezg,4701
71
+ nabu/estimation/focus.py,sha256=CdtMFk6Xt4qq1JwwKDmDcVCeVocz-mpV0saikO0B1mc,17995
72
+ nabu/estimation/tilt.py,sha256=VllpMNX-_4XIyqSFYSh4y_rxnZX9U1ZlpflHjBS6hp0,8765
73
+ nabu/estimation/translation.py,sha256=L-SCLozW1I-FyGta9LjbNPLYRnaznwenF-p9rISM2pE,8581
74
+ nabu/estimation/utils.py,sha256=31d17Ng__NxcLOtGXPmbPPW1veh1m0poCvRgDCJssUA,347
75
+ nabu/estimation/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
76
+ nabu/estimation/tests/test_alignment.py,sha256=knNn_IqVd5MR-K3LBNc1BkREZF9V8aRD829K_zD1atY,2513
77
+ nabu/estimation/tests/test_cor.py,sha256=YKrZc1v33WBcNEOTmzoifnotghgvUL8-78B0IxCmjCs,23811
78
+ nabu/estimation/tests/test_focus.py,sha256=cMxEeTLlfVHOvG_4oGMLpp6bVI6okYz0u4aNcW0vmNI,4188
79
+ nabu/estimation/tests/test_tilt.py,sha256=KIgTJqQvNfWndm8f3aRSdznWFl3AdQhYXiZPKLseYOs,1672
80
+ nabu/estimation/tests/test_translation.py,sha256=RkOnCYgk9DZGKlIka1snqTv4wbIz_nG7-EHAxnBHsJU,2999
81
+ nabu/io/__init__.py,sha256=AbQgj4-fCCHOKynO_PyAR9ejnFSuWKgroxxhxWVpjyQ,120
82
+ nabu/io/cast_volume.py,sha256=5weJeXeNsK7-6guodB8ym4OoK_LF1ykxKmG3bXFNBRk,16716
83
+ nabu/io/detector_distortion.py,sha256=qO1Z6gejkBrixThvU_sLwH3UfLAe8aAO63YQ8z7PH78,11750
84
+ nabu/io/reader.py,sha256=39zW7zMmXa7A9Lhx2IlkObO_g-ux2UY6HE04GZZqHXY,40524
85
+ nabu/io/reader_helical.py,sha256=q3LOmu6F_4Uxi3rZZWJ-rsix2Lgu_saXXdiJF8TLi24,4533
86
+ nabu/io/utils.py,sha256=iSeBhOIcLlKgiHXdDLfAdyvSrgdv6I5iQUcjT2gv_WQ,9303
87
+ nabu/io/writer.py,sha256=0bZ2X0hvT-r_2Uu2u3fIfXZH7clxKIDhBwHmBS0ZcxM,15811
88
+ nabu/io/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
89
+ nabu/io/tests/test_cast_volume.py,sha256=UGrIYVp1fxm372YFJinLWAL-xCtcR731axYchhonZHY,10774
90
+ nabu/io/tests/test_readers.py,sha256=E26UE_nwqKcA6fBvzSdANNwqJ4Py07Dho61ShcMLb50,18131
91
+ nabu/io/tests/test_writers.py,sha256=EJp3DKeaRko7FVTgGdjrl2tt6jES228_XT5Jb767I0w,3137
92
+ nabu/misc/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
93
+ nabu/misc/binning.py,sha256=x7mbKTfEKF8ZaZoPq2LJl9hfUsQ0qMNGMxaHE98PcNc,2920
94
+ nabu/misc/fftshift.py,sha256=5ktzFxD0XMrR7h8Y-ccnYZX92wmE5lhf4tuXhn8_vQg,219
95
+ nabu/misc/filters.py,sha256=8aoO7-g94PJ8zDUSKD0pV4knozsmZIGTDiiGgO3Fzhg,604
96
+ nabu/misc/fourier_filters.py,sha256=e3bEUXZLSWorsG8oUZ-AdYWx3fKrP2UsFg9M81ESwC8,5668
97
+ nabu/misc/histogram.py,sha256=eV6VfEl1gGP9_wbthh1xhiqtZHmb41o0OMI6G8q1sXw,223
98
+ nabu/misc/histogram_cuda.py,sha256=-eivBJlFRicRBWQtiDfs-iMiF6NDv43sWuAlul2dFqk,252
99
+ nabu/misc/kernel_base.py,sha256=ASiEvHiXhp_dLjkQxxAhob1fQ68ZmIkTsZM9uz11dbU,194
100
+ nabu/misc/padding.py,sha256=NUTNDsafUnI1pgy-YtemKINGUUufCb7w2EV-UrznCsM,2713
101
+ nabu/misc/padding_base.py,sha256=NQwOxhMnbssGBDKznE2Q6FMrIiQeAYRHVgsjxKy3Rzk,230
102
+ nabu/misc/processing_base.py,sha256=YTDfq2G64RVVuZn7JgWTie1YAtW-tT48Uq3ZuXH21hw,214
103
+ nabu/misc/rotation.py,sha256=4UgR3kaedemjeaZCfwmjF0HwfOLdSFE9ooSpMtoP85E,219
104
+ nabu/misc/rotation_cuda.py,sha256=agtjgKBjwOHJGXY-Y1HlbOUXi3Bl9ykyGv_a1qksucc,239
105
+ nabu/misc/transpose.py,sha256=ogJ1PPYO0sOPUfCgjk-Ho5cTjlBbP-KXGqhCgTj75DY,223
106
+ nabu/misc/unsharp.py,sha256=3xYsdiLTqTDlE8G-tIY7EeTf3nKxPrvMHOnXgkcKWvU,209
107
+ nabu/misc/unsharp_cuda.py,sha256=-csDxfQt_naYn5O8fOxksYNqyFKxbF8lV7yXlPd2XoM,235
108
+ nabu/misc/unsharp_opencl.py,sha256=HCPoobPwi2LEAfqGQ2qekjQi6G2VDKmqJQZTDXySv1Y,252
109
+ nabu/misc/utils.py,sha256=s8ACtKdw9rTmlD0APdrpeo_ZIneKsTv2Xq3X2TRxCRk,3898
110
+ nabu/misc/tests/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
111
+ nabu/misc/tests/test_binning.py,sha256=vcZZINi_v_KOw4DMqLIgPlF-CwLTG102Yf7dMQ5_SEo,1890
112
+ nabu/misc/tests/test_interpolation.py,sha256=H8ZJ7dppCcpxVa9wOBkJ9U0mymH5lGyCJ0LZCYIK8PE,2389
113
+ nabu/opencl/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
114
+ nabu/opencl/fft.py,sha256=0TOYjzIhRhvFgF6_oL2V89kOrlekPXu9eWpIkfOexAI,222
115
+ nabu/opencl/kernel.py,sha256=lmHRgWqpEbQUOunZe0xFuuw_Z_K6dq8BxjH3FLReVBU,5125
116
+ nabu/opencl/memcpy.py,sha256=s_0CCO-PTDmEsCW9_kVCNHwN7_hw7uNy_O6KJ0zS71I,1263
117
+ nabu/opencl/padding.py,sha256=CjeifU4xcUhgD_OILoIC4vPDQGVyVRjJXsMb8gxPL_0,238
118
+ nabu/opencl/processing.py,sha256=cKq_VLtLBPijp2pl7Zgc4mrVsYLUA27x26jPo484Kg4,2416
119
+ nabu/opencl/utils.py,sha256=OPqSJAZ82EwRmqu_H5_S59Y9a3CrqQhEQomWQj-EuSU,10239
120
+ nabu/opencl/src/ElementOp.cl,sha256=RMScHhHYDa6xXC4NLJrC1KpDRq-aMZG1lwq3O9pStiY,1258
121
+ nabu/opencl/src/backproj.cl,sha256=M226iOQ-0WhGsJZfUn3mUCfBHqqGAqWa2caK9Igk058,5559
122
+ nabu/opencl/src/fftshift.cl,sha256=xq-HNRWhuXqTVD_nD-38_41HPYZPCXAHDTpxsGURSTY,1726
123
+ nabu/opencl/src/halftomo.cl,sha256=IZ2VJwWLpfaNpzM8Ief13zsqDcq68lyFqG55qYWoHNE,1386
124
+ nabu/opencl/src/padding.cl,sha256=0e4wDB3wOVFIFw0f7VTfD45PK6HzDhooCgK2DZqiUfA,460
125
+ nabu/opencl/src/roll.cl,sha256=UTH4A9SfajGoX3wjOAm1inDT9-8RxCFfoZ5ePijMGOE,2486
126
+ nabu/opencl/src/transpose.cl,sha256=jFRIFccPefzbKFEqEIVYGrWac5XJs3FY1tEmvCzA74E,450
127
+ nabu/opencl/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
128
+ nabu/pipeline/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
129
+ nabu/pipeline/config.py,sha256=rOpCHywEi_StPDaz-fSYc36ondCMamMPhMy7o03HcJk,9207
130
+ nabu/pipeline/config_validators.py,sha256=ertytKkgp154AI0lOZbCWK9vMugSEoWVp7dy1x32wsk,16395
131
+ nabu/pipeline/datadump.py,sha256=tKW-Dl28FU2vf1OuIie_YI1-GT1DMreis57sOR-DuGU,7026
132
+ nabu/pipeline/dataset_validator.py,sha256=etQw9NC_YGsdWCgjsn8aJ3WfvcRuJlLVZlWoqhvvo-8,9263
133
+ nabu/pipeline/detector_distortion_provider.py,sha256=ru1AxbcuO-FA8FYooPBWgp1lzdSDUtzFUC1A_sS8jME,920
134
+ nabu/pipeline/estimators.py,sha256=Wi1VVt-yl-SpbYon5t3zQTjSx6rY_FxAMmpBRlv6lrA,40465
135
+ nabu/pipeline/params.py,sha256=EoovjCUTUXmj5HQ3qE0RhP7XD3cndaiT21TdvjTIhE8,3746
136
+ nabu/pipeline/processconfig.py,sha256=3xx2Lc8uEzPAqSMwUncr4RCiCtKn2c7wnXXbPSn8GNo,7719
137
+ nabu/pipeline/reader.py,sha256=wkxPHYOi_C8dHNc7kddB8AMtFuW7GjsP_tm6SJeHlEY,4792
138
+ nabu/pipeline/utils.py,sha256=5GGhT9Wu7tHDlF3w7YNjTTYkNBl5xHa9EcRZSGFUWtM,3538
139
+ nabu/pipeline/writer.py,sha256=NVeAtkWDtXg5UJ4C3wsbkfM23ZnK64atCWl8tjmjsuY,8166
140
+ nabu/pipeline/fullfield/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
141
+ nabu/pipeline/fullfield/chunked.py,sha256=PFAVK2ROCJ8xzorRwU4nTN54OOaMlOZakj2V4jgJwn0,40765
142
+ nabu/pipeline/fullfield/chunked_cuda.py,sha256=Jdkk6ZIt3S6UZYbupHtSj2vrj3krWMcqRHHprfblDfk,5848
143
+ nabu/pipeline/fullfield/computations.py,sha256=AEp3qvwyY-l8-GzjH1E6kmcmU6OgDp6sB-mltq0Jnxg,9970
144
+ nabu/pipeline/fullfield/dataset_validator.py,sha256=HK_bmlII9pc59PXCgKJOyLv7Xu3DYv_jbH3RmQSgzvI,2933
145
+ nabu/pipeline/fullfield/nabu_config.py,sha256=1z-CODIWvMIybXSleyVptTzeHVaG6n5cemhAByltZOM,31910
146
+ nabu/pipeline/fullfield/processconfig.py,sha256=2eE9W0KjsHq8aSCXlczsISpWM9SMjWL03fN1RqZWyxg,36815
147
+ nabu/pipeline/fullfield/reconstruction.py,sha256=XtIC4fUEo93-nWPocP6WCkwgjTBrZTva3Mjrz39QxFM,37520
148
+ nabu/pipeline/helical/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
149
+ nabu/pipeline/helical/dataset_validator.py,sha256=HdKjUSj3PIpJb1dKSzJg8s4zXbAnMPWaPn8kvp_xQEs,657
150
+ nabu/pipeline/helical/fbp.py,sha256=MKn587bO5Lj7yFu-Sll2RkOIY5r3rC-fmC10SzFU5i0,5841
151
+ nabu/pipeline/helical/filtering.py,sha256=dK93SP68QMCROTh8kWaYsm_NhqFpfj0I1Teek7dM6xg,10215
152
+ nabu/pipeline/helical/gridded_accumulator.py,sha256=ZaH80g6_YwUHzrV3p3Lu9-k7WfdUBLQmUBa236lCr6c,26357
153
+ nabu/pipeline/helical/helical_chunked_regridded.py,sha256=Pedgb4D8SzMEHw_vIrSVTHXkt60gXmAIUGM69LBosaE,68463
154
+ nabu/pipeline/helical/helical_chunked_regridded_cuda.py,sha256=DdH55nQml3JWDX9VJaxflefyFWFZr6zBWwJRitCeeE8,3887
155
+ nabu/pipeline/helical/helical_reconstruction.py,sha256=3W3ncinPbQkI0JHFKMHCTL9NYh9GPutY3Uyo_kOxwbs,24121
156
+ nabu/pipeline/helical/helical_utils.py,sha256=s38xbugkIJgcGeXqXJVSdGsUg-WPHt5hBmWuiYHVzR0,1437
157
+ nabu/pipeline/helical/nabu_config.py,sha256=bhAIhcArlki57MpQodXvS8yjO7wkDd1I89_sM5naVuU,8055
158
+ nabu/pipeline/helical/processconfig.py,sha256=IlCfKkiclBmDDdT6Ail3aSj9Q7zV38YpFmF1_SsCjy4,2775
159
+ nabu/pipeline/helical/span_strategy.py,sha256=tKLWQv2woj3SSW5JLJu5pNbv48fy0vYNejnm7uHnaEc,25057
160
+ nabu/pipeline/helical/weight_balancer.py,sha256=0Ebgs8p8J63cLsN3ESTzIzwE6vZX4Y5_gzqgFeS5LoY,3980
161
+ nabu/pipeline/helical/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
162
+ nabu/pipeline/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
163
+ nabu/pipeline/tests/test_estimators.py,sha256=usi2Rp0zry5ADJV9k8nHhCqdDBSuHguZvyH-jkg-F48,6146
164
+ nabu/pipeline/xrdct/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
165
+ nabu/preproc/__init__.py,sha256=dKxvZvWZXjKS3iPRaSXiUeM2dNGIOyTlirq5pdAWY0Y,284
166
+ nabu/preproc/alignment.py,sha256=PUw4YdpCmY6FVkUaosaT6LxFoNgPv7XHFy11Fhz1_6w,19
167
+ nabu/preproc/ccd.py,sha256=AHU9iwXLrzisMOfIfMtKwDfd9vP5m_-MBI0rmP4u7eg,5145
168
+ nabu/preproc/ccd_cuda.py,sha256=IckZjk0fznVgX6VlBWZEURar_RqvMTN-g87Aj6Y8rJk,6093
169
+ nabu/preproc/ctf.py,sha256=LEZT5fawEIIT3Qx0V0910RSv8aPLYuuHDrMzTYqyd5o,14981
170
+ nabu/preproc/ctf_cuda.py,sha256=j6s8JOYQ7IVuu5HHAoGJhbTRW2zi7t5d6YrcAxIU0aQ,5268
171
+ nabu/preproc/distortion.py,sha256=XksQNrrSBfZS7mlvIdVEMZjw839ppQWP6AitTLcgfb0,3309
172
+ nabu/preproc/double_flatfield.py,sha256=WcYsNuotgQgm_KaioNa3OVI8rGfk3Wrn_YCW5v4mo4w,7895
173
+ nabu/preproc/double_flatfield_cuda.py,sha256=lqgvZyeujdWJ5nF_GNRMQx7punjqA3SZ8K3IIyL3HDY,6197
174
+ nabu/preproc/double_flatfield_variable_region.py,sha256=yiyvfGLFv3b93aKzHw84EQszPwQHfBv0PqtlQ8khvm4,2258
175
+ nabu/preproc/flatfield.py,sha256=EX4zz7l8YddyGcY8bSF0QLeu7XQWzxj1jLXf70_t4Vs,19401
176
+ nabu/preproc/flatfield_cuda.py,sha256=Iiqv7bHa870DZOH68L19xiN1kG9I9JXuckFfA3khGtY,5482
177
+ nabu/preproc/flatfield_variable_region.py,sha256=RVmSW515vgkHagjqotPNPUe97oQooHgdqkBn6hPH_2Q,3142
178
+ nabu/preproc/phase.py,sha256=nRFhnHN_Bmmu5AHDcoO-Kt59sXYFSQaTljHZ5dlZiA0,13857
179
+ nabu/preproc/phase_cuda.py,sha256=2oGjpmSl8U6dbzxrU_pt-_3JFm3XeBMCTCUNoxjIAuw,4944
180
+ nabu/preproc/shift.py,sha256=UVa962Gj4b1CRAsez57glvBGXXFSDVnquB3Zd0JgquQ,3424
181
+ nabu/preproc/shift_cuda.py,sha256=4YOVRZ4oECEVWOQ6MzDBh8cOY2RtOOhlU7tir0Tp77M,4125
182
+ nabu/preproc/tests/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
183
+ nabu/preproc/tests/test_ccd_corr.py,sha256=KIpwaWYWT_6OPVXyVuLxXIIWreBkYF0rOnDMiegiLMU,2249
184
+ nabu/preproc/tests/test_ctf.py,sha256=5C-PKzMcIQQFR4RsNh6au8TVGqbKhPV3_5djVaSB9p8,9992
185
+ nabu/preproc/tests/test_double_flatfield.py,sha256=qUmgAktFHqzKJBHHfj3GJzorey0yk7R0e4nr8dRmbTo,2870
186
+ nabu/preproc/tests/test_flatfield.py,sha256=8_vmTtfmrpbuKUr4fW8NmtH-PtGWkSQkMBFD6hs0ul4,21055
187
+ nabu/preproc/tests/test_paganin.py,sha256=aHfNsJcVALVYkbNHrhcO9lFYfco2qYA5PnzAjKTG2BU,2998
188
+ nabu/preproc/tests/test_vshift.py,sha256=Gq9sDtbbAAdLTJALH2qcbeYXE5dINQ8QpBnCgZM0tFQ,2972
189
+ nabu/processing/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
190
+ nabu/processing/azim.py,sha256=GIv_C1NYjUP3IYd51qvfECTDu-rfs3Dl2Hb5-ZhdhHY,7080
191
+ nabu/processing/convolution_cuda.py,sha256=jOLKdEwzBwNZPTEjXIBWStZp22ieeukc6KGnuSNVnaA,15421
192
+ nabu/processing/fft_base.py,sha256=xoyILNWUKAP8T2Wp6A8UGYKalDRkpvGyLn22vmxANlk,5656
193
+ nabu/processing/fft_cuda.py,sha256=4NK7XjWkhPLG11jjpuV0r4ylqiKsZ5UPRy38olY0Po0,9388
194
+ nabu/processing/fft_opencl.py,sha256=J2Oqe-EoxT9hYNfrjKdkCLiWKnHozNAs4FvTSAmjMlw,1605
195
+ nabu/processing/fftshift.py,sha256=mFOKuqQtxDPXoFPPP_G-YMA4WFmmO0oPFXjBWrrfDO8,4880
196
+ nabu/processing/histogram.py,sha256=CumzHFjOw0JaHWlMnhCnj7I2Guam1HYqPVJeijKqC40,11376
197
+ nabu/processing/histogram_cuda.py,sha256=G0uKJNhDwPUTr8lyEBr1m5G0D4n3-eZwCCBC1FZaCyQ,3338
198
+ nabu/processing/kernel_base.py,sha256=0m5WxJIREntSMoUP_ECtGnuWMKN9AS6wJVdblEGDu_M,4366
199
+ nabu/processing/medfilt_cuda.py,sha256=usnNMKxFMrGI6ZIYNRDXBn5kzBzOyuVay8mnQSvNR2k,5691
200
+ nabu/processing/muladd.py,sha256=CZyVL2innf7suGvwM7xB16vUjgZSz0UYEm7Z563igyw,876
201
+ nabu/processing/muladd_cuda.py,sha256=wGivGyyMn7FN68hDT590RwSiV4Ju-TLGwa1bnw4Cd_k,2477
202
+ nabu/processing/padding_base.py,sha256=P6Zu8yLkHrCW3ZAZmeLfPn2ZfAH2_fZEB3CMLbCWL6E,2874
203
+ nabu/processing/padding_cuda.py,sha256=x5aXHNa1pvUnYaftFGlvuqZqyNKD4_bjsqr-hVPgNB4,2649
204
+ nabu/processing/padding_opencl.py,sha256=H7w5bY9Th9pJKYKaX1_u-XqUj8lM5XWfVViu0ax4W40,3074
205
+ nabu/processing/processing_base.py,sha256=cQl5gjp1tS6d3P50O9RkYcD4BSayrMWY8KyMmNkvK-M,4411
206
+ nabu/processing/roll_opencl.py,sha256=ms6ZW7ecG-kWq--wWijAjDB_uVWQtUylFp_EDKmfUKw,2283
207
+ nabu/processing/rotation.py,sha256=8tVQponi8tv8uPw-xT-0GyZecl3YIXyJgPkEnQMer8M,1836
208
+ nabu/processing/rotation_cuda.py,sha256=mfExwPCTyoKFhv8ZmE833jI_D6o-J-p5-TxacGdb-e4,2796
209
+ nabu/processing/transpose.py,sha256=bOnxEFXJd16YcTGyMS-3lwREIVaDkClE_Fkb8bOn1l8,4410
210
+ nabu/processing/unsharp.py,sha256=XqoieKlX5sEHalxObi5JBOjauRUSbiHc6rqYT_buTa4,2682
211
+ nabu/processing/unsharp_cuda.py,sha256=uKFCEk8bRqgJzR8HB_OeKYuwC5jKqaXpFI6pRv_pDY4,2152
212
+ nabu/processing/unsharp_opencl.py,sha256=vBVq5wA-rxOkULE-sv6WzNt5Pq9hc3gFcp4mM0kCo44,2651
213
+ nabu/processing/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
214
+ nabu/processing/tests/test_fft.py,sha256=BlUvHjpLtyrn_kpAhM7rldhrdQ8tb_APY1Q2IwntoN0,10260
215
+ nabu/processing/tests/test_fftshift.py,sha256=Qwg3oOwNh_MRmg9BS1kMVhQSSfzQzrCOsppsvY3v5rg,2599
216
+ nabu/processing/tests/test_histogram.py,sha256=25CLs1WZpLF9xZ2DR82x4_YokA5Z76Qsnn6zY8YdJj8,2283
217
+ nabu/processing/tests/test_medfilt.py,sha256=rnReK3MMCsc74-NoycYSRSMp7bN4Qdg4cZbHfWQ9ZWQ,2652
218
+ nabu/processing/tests/test_muladd.py,sha256=cRhAC5hgmRV0BAwPA4o4M-kcx-UDniLK7sSyiN0F3kE,1927
219
+ nabu/processing/tests/test_padding.py,sha256=EQXYwAFDvtAjK6KRPAY7fNarRXPixuwqKItM3bkJDKY,8730
220
+ nabu/processing/tests/test_roll.py,sha256=XtEFz1V_OId1O2hGf4JJjesCyYLxKjoz966sGL-YzEs,2333
221
+ nabu/processing/tests/test_rotation.py,sha256=vedRXV9RePJywBKoyBkGANP1dhZCjphbYOhdnsBDQtE,2737
222
+ nabu/processing/tests/test_transpose.py,sha256=hTG17wTaB5Wv6twbW3ZFhBv6BYfqJY7DTQPoO0-KdkM,2760
223
+ nabu/processing/tests/test_unsharp.py,sha256=R3ovbwDDp3ccy2A8t6CcUVELXRWkED5EnQdN2FQOfQM,4391
224
+ nabu/reconstruction/__init__.py,sha256=EmKVvx_-FJvzJngG4ielIC7FhMCpI1Waaflg_lF44tk,163
225
+ nabu/reconstruction/astra.py,sha256=qnFYabU-Bzgys8hXjIBcwO2NazrvhNXUYFIkMHc6BmM,10444
226
+ nabu/reconstruction/cone.py,sha256=RZj1JoxqskShvglgxUnsbYw7qbm6Rralt7hJ96eU-8c,19015
227
+ nabu/reconstruction/fbp.py,sha256=uwEniGdEOn1atc9mTAHEDeF1y-ZqneifCKVr-ieHZss,5015
228
+ nabu/reconstruction/fbp_base.py,sha256=wY0fa81DH6Wmq6rJMtibD6L9sqwvhujYVdtaNBMxaEE,17099
229
+ nabu/reconstruction/fbp_opencl.py,sha256=coEGLq65PCuvWnhAbIyLPHACkWjMB0XOceMp9ZIDWtc,3274
230
+ nabu/reconstruction/filtering.py,sha256=fg_loze-VkiFqBAqQ7AGkKwCDz-5UskSSh27klaakD0,8659
231
+ nabu/reconstruction/filtering_cuda.py,sha256=ZrocsgEy3eLWt-_4S8pJ1Lml-JVZdMW1YTegaG44U6U,4037
232
+ nabu/reconstruction/filtering_opencl.py,sha256=B9zcvSxvt3KMxEXxoirop1vfqM0kSRP-LhvGgqDGQlA,3957
233
+ nabu/reconstruction/hbp.py,sha256=RRd2aYKycnFhaGu2BrL37nK50nsGmKt3D3QxywPq9Tg,18682
234
+ nabu/reconstruction/mlem.py,sha256=66_porIK6Fn4KO6NIO3ZZHBPEEA1rf2Qk23YYwaZwzg,3568
235
+ nabu/reconstruction/projection.py,sha256=SNocaOY9HuNiHs-VxkW9IS707JPJnd3sDjAbf7aIw2E,9081
236
+ nabu/reconstruction/reconstructor.py,sha256=16xxHcK4iie-uh-trf6x_IuvgxJKBvQRTE5B8tnc4F8,7358
237
+ nabu/reconstruction/reconstructor_cuda.py,sha256=m_3GzG44PRyiSEfTvYjgr5atLwl26hMfZOMyqTWxp0g,1644
238
+ nabu/reconstruction/rings.py,sha256=mpbCLuFM_6Uy9oNJkyQ8tZwhGhrbWtzRlArSRsC90bI,9527
239
+ nabu/reconstruction/rings_cuda.py,sha256=yBGv_MITcWzD1VWLIchloV8IB43D_5Rxf1MoqYoTvMw,13704
240
+ nabu/reconstruction/sinogram.py,sha256=VeydpunbseI6azvMpoutldz3ZaSc6cKP4ibrGuvEHN4,17028
241
+ nabu/reconstruction/sinogram_cuda.py,sha256=DBF06ruzkZ5zn8x06Ron2NkB_FBKiZC2oM7kjeiV6jQ,10630
242
+ nabu/reconstruction/sinogram_opencl.py,sha256=vxJa5BeOd2NVdUayXYfQGAfO1AEbJfTGotuijT8qgCs,1486
243
+ nabu/reconstruction/tests/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
244
+ nabu/reconstruction/tests/test_cone.py,sha256=4a5EjEt8pbpdvDFDITiEcnuTGDMRY_jgZ-EQGBRn19Y,21457
245
+ nabu/reconstruction/tests/test_deringer.py,sha256=HsEPlqa5sup1NoayjZjBATy67Y7MBlB-PsN780y02Rw,8368
246
+ nabu/reconstruction/tests/test_fbp.py,sha256=xQgqbsF2D2TP98o9qlqM1hlvqRmiOlRpcPwlgSA8edQ,15305
247
+ nabu/reconstruction/tests/test_filtering.py,sha256=I5H1KSfd4iXTJWSqeMPR5Q7v5rFTXO6Vp2jYU4ugl58,5247
248
+ nabu/reconstruction/tests/test_halftomo.py,sha256=FFv58sSA-5WDcJ_Y5tSm1P7QQwNX4SUIYtHQQb_G3xM,6532
249
+ nabu/reconstruction/tests/test_mlem.py,sha256=JWby9nqWqockgUh2RQoqrC8BtfB4v5SCNayk4bBJ4TM,3791
250
+ nabu/reconstruction/tests/test_projector.py,sha256=QcHLnNWQ6HC9pJo9CdalaaeEDQ_vFpNMn5yXEpfBDXI,6259
251
+ nabu/reconstruction/tests/test_reconstructor.py,sha256=3p2Wk_OqgZqkNOkhK_NJWlHkOIENTJhLuwVRI8Y1_Ak,3385
252
+ nabu/reconstruction/tests/test_sino_normalization.py,sha256=qNnpVUp3UcFGyLlSP0rCzE5hxdV6YENL9AF6mo72WcQ,3669
253
+ nabu/resources/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
254
+ nabu/resources/cor.py,sha256=-mcrTbj3G7o4PP5E_gIRo2j6_-ADmMkkOc_0CyQv84c,170
255
+ nabu/resources/dataset_analyzer.py,sha256=TFpec0j4Hlp1GS7InTyxkbYDni9ux4DHDlZrGdGuRzg,18540
256
+ nabu/resources/gpu.py,sha256=oQA8PpPdyuIzpxq1PwVd9gJdyCiLIry2godUV1AbPW0,5769
257
+ nabu/resources/logger.py,sha256=xV9UoLZBw3wXAWYfOgqrnOtzJc9aC1VNO4LM2cHxWJg,3738
258
+ nabu/resources/nxflatfield.py,sha256=4B8MYKPEtREOe4ZMTpDVlIxldXPutdI8DgO0P8AeRo0,9317
259
+ nabu/resources/utils.py,sha256=LtOWEYneEzz0mDIpUWM23v9ILJ8FM0YFaVG3fFVc7OU,5725
260
+ nabu/resources/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
261
+ nabu/resources/templates/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
262
+ nabu/resources/templates/bm05_pag.conf,sha256=3-Zny2_QlQuZKge53N1vFLZ8yzq-y2cmpAAkByUdHX8,394
263
+ nabu/resources/templates/id16_ctf.conf,sha256=PJt_hvBlAweZSo6INnsmozHfBJvJ64b28x1mFfAOD6s,842
264
+ nabu/resources/templates/id16_holo.conf,sha256=sDd_rEJGZjOGVAsGub5sT2arfXDnc_sxyDBAcfKHNpw,773
265
+ nabu/resources/templates/id16a_fluo.conf,sha256=Nz1etzO2fSwksi7CThWJ5T1kZEdyBe8rMO7puNJ93Hc,542
266
+ nabu/resources/templates/id19_pag.conf,sha256=u4fFPEBprzOW9_5_ChkIgowQcYpLhjmA8Gwm5XgC4Jc,384
267
+ nabu/resources/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
268
+ nabu/resources/tests/test_nxflatfield.py,sha256=cbUWBOhE9sfdpKmxPTfu3_waPHFC2dZjy6z9gWpfzBA,4193
269
+ nabu/resources/tests/test_units.py,sha256=F2jFTck-1UwYET1MwTtX6ntzYUosfwOJkugSencGgz8,2155
270
+ nabu/stitching/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
271
+ nabu/stitching/alignment.py,sha256=UbyhDAYlISeb6pD0NCzdPo1h5rQwjROVP29jsXoYTsg,8954
272
+ nabu/stitching/config.py,sha256=C7pp6BX-t2aaADsFYgdVNC9mepwsTBnLB33ofGb6rUM,52832
273
+ nabu/stitching/definitions.py,sha256=JbmYwXKxOTYCr2LDXbHO-uNE2OLOBm4ir9AQ7e-Q3lY,158
274
+ nabu/stitching/frame_composition.py,sha256=bOuOn3SoyAgtEv_DZon-JbEfh5hW3RySTjK6ERxVZ2w,6626
275
+ nabu/stitching/overlap.py,sha256=bW_QjjEOihFqVFVmGt3_nmEx4wYKGjpzSDFL9Q9_o6E,17214
276
+ nabu/stitching/sample_normalization.py,sha256=_radin_wxnuD3MMmZNAOKA__aPa2z3ss4TFbZeocpXc,2069
277
+ nabu/stitching/single_axis_stitching.py,sha256=bAJlZhUOqW93VkX4nWFNrnQN4G92PHCn-87RpQ34oto,1214
278
+ nabu/stitching/slurm_utils.py,sha256=kTtqZOrkSLjY_AzL5Fd2n11uqmWPCYHJvN1qbbaGy-E,8993
279
+ nabu/stitching/stitcher_2D.py,sha256=g9MQttUrJTYNt4SreGjj3PkccyVCQ4MwyUUUbjsweC4,12667
280
+ nabu/stitching/y_stitching.py,sha256=Urt2lBXokxXxX5HFHEiLBqC69yy5b_KyuKFoU8smah4,1020
281
+ nabu/stitching/z_stitching.py,sha256=gNwj7qWvDFQaGroLVoQnKBPlbvr_CReUQEqxW15m2Ag,1835
282
+ nabu/stitching/stitcher/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
283
+ nabu/stitching/stitcher/base.py,sha256=Nyc5L-nvSLWOsrVVq_EP8V9j5AKnFVgxTijStyiF5-I,4326
284
+ nabu/stitching/stitcher/post_processing.py,sha256=7xmpoU-g0NzBi3-QvhLzFROAhQSA5kSx8Xya4O1bG2A,26207
285
+ nabu/stitching/stitcher/pre_processing.py,sha256=peIISQciwk4__l-F1Ud7TrjKsBAZ2wutV6zO_Kq6j9Q,51470
286
+ nabu/stitching/stitcher/single_axis.py,sha256=Ewr8gZ_LeiidLVh-usQj6V8zQSjqT_m2Kq1CcBom53Y,19985
287
+ nabu/stitching/stitcher/stitcher.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
288
+ nabu/stitching/stitcher/y_stitcher.py,sha256=KXwkyw6cCFcuSBCq5OyAait2Ob_5WRrtawrAlAhk60k,317
289
+ nabu/stitching/stitcher/z_stitcher.py,sha256=S22nkQZ_6NwQm8h9mOhMvEZgUxXGQf6xadR5j6A91gI,1360
290
+ nabu/stitching/stitcher/dumper/__init__.py,sha256=065KlsJai-Q3BnfuzmTP4XzO9wDV2a0CjlMdcV28Hc8,176
291
+ nabu/stitching/stitcher/dumper/base.py,sha256=kenknxtqyg_SQMDsLzd0yBYPlpepCaqyB5bvZnGEpuk,3397
292
+ nabu/stitching/stitcher/dumper/postprocessing.py,sha256=lOvKRvaxnAnow_y-0LJ2Lwjq1U9OZbFYH0rAgqKED4w,14368
293
+ nabu/stitching/stitcher/dumper/preprocessing.py,sha256=7qOx27p92Tbbiah6gYEjkxfax7L8ictdrvzqfDm3vHo,2219
294
+ nabu/stitching/tests/test_alignment.py,sha256=MACak1ILOr8nRKeT0mWfMd-ZvhCl3SWjjcp6GjRbITc,2735
295
+ nabu/stitching/tests/test_config.py,sha256=joelu7WubWbT3z5NxhiGdhaMOhI8z7-XkTmN6U9Cc-o,7302
296
+ nabu/stitching/tests/test_frame_composition.py,sha256=fQLT426u-uF5TTURKN48uHKgeYiz3ogTjwo7o4YFE30,4839
297
+ nabu/stitching/tests/test_overlap.py,sha256=B_iT0pe9b9EJ77V59ilk-_Run6n5a1V9mTDuiPzqieg,7820
298
+ nabu/stitching/tests/test_sample_normalization.py,sha256=a-F8geN8qrteDeQK37oeSYNdt49siyWFs3fZgPTRn4g,1328
299
+ nabu/stitching/tests/test_slurm_utils.py,sha256=QTbtx5SRAK1JkbyI-GNSI5xeqVHI8KptD3STpOb09Pc,4951
300
+ nabu/stitching/tests/test_utils.py,sha256=hIahPlogtnZNr_YkbN_Rcv-y6qG47IiRSSss51-cWK4,647
301
+ nabu/stitching/tests/test_y_preprocessing_stitching.py,sha256=Hi7UtxzELBsjeLsvI3Qjq__VXVDsHAuKLJyYalxXtGI,5021
302
+ nabu/stitching/tests/test_z_postprocessing_stitching.py,sha256=vAQB8nGa2-GdqGNj7PM63aA_NyXJIefn9JqVByV6jro,26930
303
+ nabu/stitching/tests/test_z_preprocessing_stitching.py,sha256=UDka2f6_6ex2Zu4T5hJhjbt5jB19r16pnnfPLL6KiVM,16127
304
+ nabu/stitching/utils/__init__.py,sha256=alIDGBnxWH4JvP-UW-7N99seBBi0r1GV1h8f1ERFBec,21
305
+ nabu/stitching/utils/post_processing.py,sha256=aow36shbYhFgAnbCoq6mtXVpjBNCKm7VSLIvv3EYVdA,11303
306
+ nabu/stitching/utils/utils.py,sha256=w92DtLj_cf5EfrE0lxtTaSWnWJi6eIC_O1-TR36590M,24574
307
+ nabu/stitching/utils/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
308
+ nabu/stitching/utils/tests/test_post-processing.py,sha256=X79gYJ2dwF_bjFWVQLu9odHNJaMmljfuI1-ROIp7jdE,766
309
+ nabu/thirdparty/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
310
+ nabu/thirdparty/algotom_convert_sino.py,sha256=iZVRilvyqMyLTu8RKgbqDFUjObWW5X69rCARrnNizuI,13872
311
+ nabu/thirdparty/pore3d_deringer_munch.py,sha256=o4bisnFc-wMjuohWBT8wgWmfNehPQGtCl6G2NebJlbg,4500
312
+ nabu/thirdparty/tomocupy_remove_stripe.py,sha256=Khe4zFf0kRzu65Yxnvq58gt1ljOztqJGdMDhVAiM7lM,24363
313
+ nabu/thirdparty/tomopy_phase.py,sha256=hK4oPpkogLOhv23XzzEXQY2u3r8fJvASY_bINVs6ERE,8634
314
+ nabu/thirdparty/tomwer_load_flats_darks.py,sha256=ZNoVAinUb_wGYbfvs_4BVnWsjsQmNxSvCh1bWhR2WWg,5611
315
+ nabu-2025.1.0.dev4.dist-info/LICENSE,sha256=1eAIPSnEsnSFNUODnLtNtQTs76exG3ZxJ1DJR6zoUBA,1066
316
+ nabu-2025.1.0.dev4.dist-info/METADATA,sha256=0Qg0LEOMdgLG7OSFJFOSUqhcj5VVR105UfZBwA4GdMk,5516
317
+ nabu-2025.1.0.dev4.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
318
+ nabu-2025.1.0.dev4.dist-info/entry_points.txt,sha256=cJKGkBeykVL7uK3E4R0RLRqMXifTL2qdO573syPAvJc,1288
319
+ nabu-2025.1.0.dev4.dist-info/top_level.txt,sha256=fsm_N3eXLRZk2QXF9OSKPNDPFXOz8FAQjHh5avT3dok,9
320
+ nabu-2025.1.0.dev4.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: bdist_wheel (0.41.1)
2
+ Generator: setuptools (75.8.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
@@ -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"]
@@ -1,9 +0,0 @@
1
- from nabu.utils import list_match_queries
2
-
3
-
4
- def test_list_match_queries():
5
-
6
- # entry0000 .... entry0099
7
- avail = ["entry%04d" % i for i in range(100)]
8
- query = "entry0000"
9
- list_match_queries()