nabu 2023.2.1__py3-none-any.whl → 2024.1.0rc3__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 (183) hide show
  1. doc/conf.py +1 -1
  2. doc/doc_config.py +32 -0
  3. nabu/__init__.py +2 -1
  4. nabu/app/bootstrap_stitching.py +1 -1
  5. nabu/app/cli_configs.py +122 -2
  6. nabu/app/composite_cor.py +27 -2
  7. nabu/app/correct_rot.py +70 -0
  8. nabu/app/create_distortion_map_from_poly.py +42 -18
  9. nabu/app/diag_to_pix.py +358 -0
  10. nabu/app/diag_to_rot.py +449 -0
  11. nabu/app/generate_header.py +4 -3
  12. nabu/app/histogram.py +2 -2
  13. nabu/app/multicor.py +6 -1
  14. nabu/app/parse_reconstruction_log.py +151 -0
  15. nabu/app/prepare_weights_double.py +83 -22
  16. nabu/app/reconstruct.py +5 -1
  17. nabu/app/reconstruct_helical.py +7 -0
  18. nabu/app/reduce_dark_flat.py +6 -3
  19. nabu/app/rotate.py +4 -4
  20. nabu/app/stitching.py +16 -2
  21. nabu/app/tests/test_reduce_dark_flat.py +18 -2
  22. nabu/app/validator.py +4 -4
  23. nabu/cuda/convolution.py +8 -376
  24. nabu/cuda/fft.py +4 -0
  25. nabu/cuda/kernel.py +4 -4
  26. nabu/cuda/medfilt.py +5 -158
  27. nabu/cuda/padding.py +5 -71
  28. nabu/cuda/processing.py +23 -2
  29. nabu/cuda/src/ElementOp.cu +78 -0
  30. nabu/cuda/src/backproj.cu +28 -2
  31. nabu/cuda/src/fourier_wavelets.cu +2 -2
  32. nabu/cuda/src/normalization.cu +23 -0
  33. nabu/cuda/src/padding.cu +2 -2
  34. nabu/cuda/src/transpose.cu +16 -0
  35. nabu/cuda/utils.py +39 -0
  36. nabu/estimation/alignment.py +10 -1
  37. nabu/estimation/cor.py +808 -38
  38. nabu/estimation/cor_sino.py +7 -9
  39. nabu/estimation/tests/test_cor.py +85 -3
  40. nabu/io/reader.py +26 -18
  41. nabu/io/tests/test_cast_volume.py +3 -3
  42. nabu/io/tests/test_detector_distortion.py +3 -3
  43. nabu/io/tiffwriter_zmm.py +2 -2
  44. nabu/io/utils.py +14 -4
  45. nabu/io/writer.py +5 -3
  46. nabu/misc/fftshift.py +6 -0
  47. nabu/misc/histogram.py +5 -285
  48. nabu/misc/histogram_cuda.py +8 -104
  49. nabu/misc/kernel_base.py +3 -121
  50. nabu/misc/padding_base.py +5 -69
  51. nabu/misc/processing_base.py +3 -107
  52. nabu/misc/rotation.py +5 -62
  53. nabu/misc/rotation_cuda.py +5 -65
  54. nabu/misc/transpose.py +6 -0
  55. nabu/misc/unsharp.py +3 -78
  56. nabu/misc/unsharp_cuda.py +5 -52
  57. nabu/misc/unsharp_opencl.py +8 -85
  58. nabu/opencl/fft.py +6 -0
  59. nabu/opencl/kernel.py +21 -6
  60. nabu/opencl/padding.py +5 -72
  61. nabu/opencl/processing.py +27 -5
  62. nabu/opencl/src/backproj.cl +3 -3
  63. nabu/opencl/src/fftshift.cl +65 -12
  64. nabu/opencl/src/padding.cl +2 -2
  65. nabu/opencl/src/roll.cl +96 -0
  66. nabu/opencl/src/transpose.cl +16 -0
  67. nabu/pipeline/config_validators.py +63 -3
  68. nabu/pipeline/dataset_validator.py +2 -2
  69. nabu/pipeline/estimators.py +193 -35
  70. nabu/pipeline/fullfield/chunked.py +34 -17
  71. nabu/pipeline/fullfield/chunked_cuda.py +7 -5
  72. nabu/pipeline/fullfield/computations.py +48 -13
  73. nabu/pipeline/fullfield/nabu_config.py +13 -13
  74. nabu/pipeline/fullfield/processconfig.py +10 -5
  75. nabu/pipeline/fullfield/reconstruction.py +1 -2
  76. nabu/pipeline/helical/fbp.py +5 -0
  77. nabu/pipeline/helical/filtering.py +12 -9
  78. nabu/pipeline/helical/gridded_accumulator.py +179 -33
  79. nabu/pipeline/helical/helical_chunked_regridded.py +262 -151
  80. nabu/pipeline/helical/helical_chunked_regridded_cuda.py +4 -11
  81. nabu/pipeline/helical/helical_reconstruction.py +56 -18
  82. nabu/pipeline/helical/span_strategy.py +1 -1
  83. nabu/pipeline/helical/tests/test_accumulator.py +4 -0
  84. nabu/pipeline/params.py +23 -2
  85. nabu/pipeline/processconfig.py +3 -8
  86. nabu/pipeline/tests/test_chunk_reader.py +78 -0
  87. nabu/pipeline/tests/test_estimators.py +120 -2
  88. nabu/pipeline/utils.py +25 -0
  89. nabu/pipeline/writer.py +2 -0
  90. nabu/preproc/ccd_cuda.py +9 -7
  91. nabu/preproc/ctf.py +21 -26
  92. nabu/preproc/ctf_cuda.py +25 -25
  93. nabu/preproc/double_flatfield.py +14 -2
  94. nabu/preproc/double_flatfield_cuda.py +7 -11
  95. nabu/preproc/flatfield_cuda.py +23 -27
  96. nabu/preproc/phase.py +19 -24
  97. nabu/preproc/phase_cuda.py +21 -21
  98. nabu/preproc/shift_cuda.py +58 -28
  99. nabu/preproc/tests/test_ctf.py +5 -5
  100. nabu/preproc/tests/test_double_flatfield.py +2 -2
  101. nabu/preproc/tests/test_vshift.py +13 -2
  102. nabu/processing/__init__.py +0 -0
  103. nabu/processing/convolution_cuda.py +375 -0
  104. nabu/processing/fft_base.py +163 -0
  105. nabu/processing/fft_cuda.py +256 -0
  106. nabu/processing/fft_opencl.py +54 -0
  107. nabu/processing/fftshift.py +134 -0
  108. nabu/processing/histogram.py +286 -0
  109. nabu/processing/histogram_cuda.py +103 -0
  110. nabu/processing/kernel_base.py +126 -0
  111. nabu/processing/medfilt_cuda.py +159 -0
  112. nabu/processing/muladd.py +29 -0
  113. nabu/processing/muladd_cuda.py +68 -0
  114. nabu/processing/padding_base.py +71 -0
  115. nabu/processing/padding_cuda.py +75 -0
  116. nabu/processing/padding_opencl.py +77 -0
  117. nabu/processing/processing_base.py +123 -0
  118. nabu/processing/roll_opencl.py +64 -0
  119. nabu/processing/rotation.py +63 -0
  120. nabu/processing/rotation_cuda.py +66 -0
  121. nabu/processing/tests/__init__.py +0 -0
  122. nabu/processing/tests/test_fft.py +268 -0
  123. nabu/processing/tests/test_fftshift.py +71 -0
  124. nabu/{misc → processing}/tests/test_histogram.py +2 -4
  125. nabu/{cuda → processing}/tests/test_medfilt.py +1 -1
  126. nabu/processing/tests/test_muladd.py +54 -0
  127. nabu/{cuda → processing}/tests/test_padding.py +119 -75
  128. nabu/processing/tests/test_roll.py +63 -0
  129. nabu/{misc → processing}/tests/test_rotation.py +3 -2
  130. nabu/processing/tests/test_transpose.py +72 -0
  131. nabu/{misc → processing}/tests/test_unsharp.py +41 -8
  132. nabu/processing/transpose.py +126 -0
  133. nabu/processing/unsharp.py +79 -0
  134. nabu/processing/unsharp_cuda.py +53 -0
  135. nabu/processing/unsharp_opencl.py +75 -0
  136. nabu/reconstruction/fbp.py +34 -10
  137. nabu/reconstruction/fbp_base.py +35 -16
  138. nabu/reconstruction/fbp_opencl.py +7 -12
  139. nabu/reconstruction/filtering.py +2 -2
  140. nabu/reconstruction/filtering_cuda.py +13 -14
  141. nabu/reconstruction/filtering_opencl.py +3 -4
  142. nabu/reconstruction/projection.py +2 -0
  143. nabu/reconstruction/rings.py +158 -1
  144. nabu/reconstruction/rings_cuda.py +218 -58
  145. nabu/reconstruction/sinogram_cuda.py +16 -12
  146. nabu/reconstruction/tests/test_deringer.py +116 -14
  147. nabu/reconstruction/tests/test_fbp.py +22 -31
  148. nabu/reconstruction/tests/test_filtering.py +11 -2
  149. nabu/resources/dataset_analyzer.py +89 -26
  150. nabu/resources/nxflatfield.py +2 -2
  151. nabu/resources/tests/test_nxflatfield.py +1 -1
  152. nabu/resources/utils.py +9 -2
  153. nabu/stitching/alignment.py +184 -0
  154. nabu/stitching/config.py +241 -39
  155. nabu/stitching/definitions.py +6 -0
  156. nabu/stitching/frame_composition.py +4 -2
  157. nabu/stitching/overlap.py +99 -3
  158. nabu/stitching/sample_normalization.py +60 -0
  159. nabu/stitching/slurm_utils.py +10 -10
  160. nabu/stitching/tests/test_alignment.py +99 -0
  161. nabu/stitching/tests/test_config.py +16 -1
  162. nabu/stitching/tests/test_overlap.py +68 -2
  163. nabu/stitching/tests/test_sample_normalization.py +49 -0
  164. nabu/stitching/tests/test_slurm_utils.py +5 -5
  165. nabu/stitching/tests/test_utils.py +3 -33
  166. nabu/stitching/tests/test_z_stitching.py +391 -22
  167. nabu/stitching/utils.py +144 -202
  168. nabu/stitching/z_stitching.py +309 -126
  169. nabu/testutils.py +18 -0
  170. nabu/thirdparty/tomocupy_remove_stripe.py +586 -0
  171. nabu/utils.py +32 -6
  172. {nabu-2023.2.1.dist-info → nabu-2024.1.0rc3.dist-info}/LICENSE +1 -1
  173. {nabu-2023.2.1.dist-info → nabu-2024.1.0rc3.dist-info}/METADATA +5 -5
  174. nabu-2024.1.0rc3.dist-info/RECORD +296 -0
  175. {nabu-2023.2.1.dist-info → nabu-2024.1.0rc3.dist-info}/WHEEL +1 -1
  176. {nabu-2023.2.1.dist-info → nabu-2024.1.0rc3.dist-info}/entry_points.txt +5 -1
  177. nabu/conftest.py +0 -14
  178. nabu/opencl/fftshift.py +0 -92
  179. nabu/opencl/tests/test_fftshift.py +0 -55
  180. nabu/opencl/tests/test_padding.py +0 -84
  181. nabu-2023.2.1.dist-info/RECORD +0 -252
  182. /nabu/cuda/src/{fftshift.cu → dfi_fftshift.cu} +0 -0
  183. {nabu-2023.2.1.dist-info → nabu-2024.1.0rc3.dist-info}/top_level.txt +0 -0
@@ -1,12 +1,12 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: nabu
3
- Version: 2023.2.1
3
+ Version: 2024.1.0rc3
4
4
  Summary: Nabu - Tomography software
5
5
  Author-email: Pierre Paleo <pierre.paleo@esrf.fr>, Henri Payno <henri.payno@esrf.fr>, Alessandro Mirone <mirone@esrf.fr>, Jérôme Lesaint <jerome.lesaint@esrf.fr>
6
6
  Maintainer-email: Pierre Paleo <pierre.paleo@esrf.fr>
7
7
  License: MIT License
8
8
 
9
- Copyright (c) 2020-2023 ESRF
9
+ Copyright (c) 2020-2024 ESRF
10
10
 
11
11
  Permission is hereby granted, free of charge, to any person obtaining a copy
12
12
  of this software and associated documentation files (the "Software"), to deal
@@ -53,7 +53,7 @@ Requires-Dist: numpy >1.9.0
53
53
  Requires-Dist: scipy
54
54
  Requires-Dist: h5py >=3.0
55
55
  Requires-Dist: silx >=0.15.0
56
- Requires-Dist: tomoscan <2.0,>=1.3.2
56
+ Requires-Dist: tomoscan >=2.0.0a7
57
57
  Requires-Dist: psutil
58
58
  Requires-Dist: pytest
59
59
  Requires-Dist: tifffile
@@ -69,8 +69,8 @@ Requires-Dist: glymur ; extra == 'full'
69
69
  Requires-Dist: pycuda ; extra == 'full'
70
70
  Requires-Dist: scikit-cuda ; extra == 'full'
71
71
  Requires-Dist: pycudwt ; extra == 'full'
72
- Requires-Dist: sluurp >=0.2 ; extra == 'full'
73
- Requires-Dist: nxtomomill <1.0,>=0.12.3 ; extra == 'full'
72
+ Requires-Dist: sluurp >=0.3 ; extra == 'full'
73
+ Requires-Dist: pyvkfft ; extra == 'full'
74
74
 
75
75
  # Nabu
76
76
 
@@ -0,0 +1,296 @@
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=KFgxnRQejwbIvTDyVIZ7pynIPRleDvWZjrxJpc-uKGI,274
6
+ nabu/tests.py,sha256=cew9OY2uTyncHI_HM32W8CP6B1GTGKaOW65XtMEqs7o,1417
7
+ nabu/testutils.py,sha256=qqtGgkIhpOpXhgeoXlqCb91Rx-JlI4ALaDF6nt8YRRk,13298
8
+ nabu/utils.py,sha256=1OKKhQ6-t7OOwTLQkTJuK5Hk9lb7hkEZrDtTdcmvD4c,24164
9
+ nabu/app/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
10
+ nabu/app/bootstrap.py,sha256=UQZzCBKtSXtQp5U0aXtlUhbjbwzgILTI4zD4zVffhBI,3246
11
+ nabu/app/bootstrap_stitching.py,sha256=Inr0_zRAtyeMTK1BKxGqoDf-Na0O33CICmQJYja06ug,2148
12
+ nabu/app/cast_volume.py,sha256=60mSXKivRMbK1TA8gsQROX2gmzCunCZG4TVP15t96yA,10928
13
+ nabu/app/cli_configs.py,sha256=FBh9bG80oY0fwfOntmgqgumS5i120_r60tCsj_mcdvE,22109
14
+ nabu/app/compare_volumes.py,sha256=Mu5O4uP-ANo-el-fE5PLvEq42BTk5FkrscaFRyQZdis,3341
15
+ nabu/app/composite_cor.py,sha256=N0Q7dxak7GktcuwxtwQ0PdZcmCS5CboChlxa2UCLMIA,5132
16
+ nabu/app/correct_rot.py,sha256=K0UQz4l5caFvsSr1-1y5hZvt6e45NAH3qYOhzHm2mGc,2130
17
+ nabu/app/create_distortion_map_from_poly.py,sha256=5knKx0VLyj-s1ObGwQWlh_ml_Uz4J8jvVBsU9EypLOw,6199
18
+ nabu/app/diag_to_pix.py,sha256=iSB9gJ5t45Rf025a0yx3Wom9yYRIlvsO8yPvSv5R6MY,15217
19
+ nabu/app/diag_to_rot.py,sha256=86lqINSN4SoQ0Eqf0fGYCw-eAhBHm8ds7TDWtLNE6Cg,17111
20
+ nabu/app/double_flatfield.py,sha256=zm9oHWR_QgAV2B3SeNWwgxpJtBsnnWUW4O2lCn5Hjbc,5450
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=7Y-V6IH0L9BBoPa1pW9hbY3CsBvJtABgwRQSwd5dMD8,2996
24
+ nabu/app/nx_z_splitter.py,sha256=p54jR-PAAw-AkGolM9fZE5lM2vbNLspCNCy5zBnJNP4,4976
25
+ nabu/app/parse_reconstruction_log.py,sha256=9eiJftCkyNvtZmTDjeOuKgu3a9Fe4KzJcfcI_ZdDlUM,4586
26
+ nabu/app/prepare_weights_double.py,sha256=5TkhTwNbvgeG8jlDLCwlkeOV_YMINySwdpmjaTM6pbk,5495
27
+ nabu/app/reconstruct.py,sha256=Lt3Qu11p_eaq4U6tMfQOw-gRSfGhgFwPms2LkjbZaWY,3968
28
+ nabu/app/reconstruct_helical.py,sha256=odjjCtq12vV_oGIpcK_P00nmH8YlFtq0_r28eBb-O_0,4454
29
+ nabu/app/reduce_dark_flat.py,sha256=fkUuVEgU54m9IeoJSHBL9hZ9iyHIOMYO8QjAZIZcXq4,6586
30
+ nabu/app/rotate.py,sha256=Rj8W7UDZHS4FLgMsGq4xvHfOujWJsyVexn-NOg3Gja0,6445
31
+ nabu/app/shrink_dataset.py,sha256=P9dorO0Q-gPAWgSHyZi3XQp4jkMTJacDYzNvJY4oh98,3507
32
+ nabu/app/stitching.py,sha256=Ibp1oVokLVMz-VX762j1C0E88Di0YJvRt-b8NjGoe7g,3310
33
+ nabu/app/utils.py,sha256=XUBRWDmth4i3BZHd27rfarFAUP7OEcsMeVmDJ6T4EXA,1178
34
+ nabu/app/validator.py,sha256=IR-DcUV5h1Fc5CChBfBIaglrGpfKNICX7tGirAroMiw,3368
35
+ nabu/app/tests/test_reduce_dark_flat.py,sha256=T-_zyzD0-f2c5Z-tlzmRF5p3vPtyL2RFb-D5fIYYEoM,2641
36
+ nabu/cuda/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
37
+ nabu/cuda/convolution.py,sha256=n8KsJ7IZdPOs_K5QZC6qblnOvIKYwxtdt03oNa0GiMU,241
38
+ nabu/cuda/fft.py,sha256=FaLlZZWS3N32O6Lt7MioNTLNTyD1KwVSAVYyUYuIe9o,194
39
+ nabu/cuda/kernel.py,sha256=jTTrjb6jwWUEk5NJJNs_BoNjpRiknhYRApZuA58vJis,3381
40
+ nabu/cuda/medfilt.py,sha256=4pFzE-JR1RufxfsgViewRTlh_a-YrTZikx-qvTZ2yUs,216
41
+ nabu/cuda/padding.py,sha256=DdexJvSuQPk9Svqlk1xZUfJBjs_Ru9E4kF-0Q7RPEyM,216
42
+ nabu/cuda/processing.py,sha256=07wCxP6YkBpS_UvEIu6dsXvhaINY06peNdkKZrcIcls,2605
43
+ nabu/cuda/utils.py,sha256=27zlJrxG6vLnbTSY-N8MDwL3m12zi9WqbavU8ZDnV3s,9741
44
+ nabu/cuda/src/ElementOp.cu,sha256=PhebQQgeF0V7MDNzeYiRXIeNq3tE2PsBx00XhanBmvg,7188
45
+ nabu/cuda/src/backproj.cu,sha256=Zq9w8TP9zSYCHH_91dfrTVLOSEmY0y4hzm7J2qdCdJ8,6257
46
+ nabu/cuda/src/backproj_polar.cu,sha256=sZbtw3KMfN69XyubJQSSLC87d5IPOyzbPBoRSNC1Cek,1851
47
+ nabu/cuda/src/boundary.h,sha256=eQhfKZm-o0kj88BvkUwzqfqxYfRde4Tuj8AhQvRK16Y,2898
48
+ nabu/cuda/src/convolution.cu,sha256=O6r8qPpQjpaqnNivMRX0LK3dEACKk9xyNYO9u_JysU0,7353
49
+ nabu/cuda/src/dfi_fftshift.cu,sha256=ElgNXy8H14mff2hmyjxCq7CnFK_DSY2Z564QGytRO1o,2220
50
+ nabu/cuda/src/flatfield.cu,sha256=ZVVmEd-jcsK03VWv42uugYw6LeUnDEVY8qo_G07doHs,2058
51
+ nabu/cuda/src/fourier_wavelets.cu,sha256=571gDOFLy4cMKOockPZIxCJKcFWJwDYT8FdWjQJHEWE,547
52
+ nabu/cuda/src/halftomo.cu,sha256=agqNiL4gvY0S57_d0Xa7rvjXI5teOOXF9XHK1IA-aDQ,2902
53
+ nabu/cuda/src/helical_padding.cu,sha256=87Ia2jDWzA_1ZSmE-v1yBqccIrIvF5Op6Nbmyvk31Ww,3955
54
+ nabu/cuda/src/histogram.cu,sha256=bVdVA5GfT0-asMjmWk8r39a7W2jmjL-YVz60LUyvqiQ,808
55
+ nabu/cuda/src/interpolation.cu,sha256=Q4TjDklZToSjk9yCd4Rq97kQlhSAgFer7Pf4PUo4jYU,839
56
+ nabu/cuda/src/medfilt.cu,sha256=fyuuOEHxQFfQoDjyXr_BdNRHIUBN7e6T66kvW4OQI7A,2449
57
+ nabu/cuda/src/normalization.cu,sha256=uEJLeKZRe6yWYB9fSHnLjluIOiNBzJRK8LFYyVqrrn0,2028
58
+ nabu/cuda/src/padding.cu,sha256=ir5kmWq3Fm0dgyNLfWS3bVp_GrQGJcHjCNXXoW76TmY,4420
59
+ nabu/cuda/src/proj.cu,sha256=i5WZ6-V_yO2BoAVkrrELAWhFHQAOifnVwPqtIWFbcS4,3750
60
+ nabu/cuda/src/rotation.cu,sha256=inatw44lT0Qn4D2xguLi_YZsjzP96zfGGLiCc9vLhQw,657
61
+ nabu/cuda/src/transpose.cu,sha256=Enim7vLxTCFZbK3BmYdQ6ZatA_FLp6601VOSl8iGFjg,476
62
+ nabu/cuda/tests/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
63
+ nabu/estimation/__init__.py,sha256=HWE3ivArjlJx4FjFh2Q73VmpIyzod80KTmXvFo1AP1s,379
64
+ nabu/estimation/alignment.py,sha256=bG5eskq-bGOdyRpxZ1t-udbcwKOvHUn6C4HmUrNOX9c,21584
65
+ nabu/estimation/cor.py,sha256=dG-Yg8o_sKJkmb9ghVnV-W1Zm0otJBg9MINBiEVKbdY,68114
66
+ nabu/estimation/cor_sino.py,sha256=xbTD-F3eemUuvsyV6dmJOTxSOL-KI15-JNPMC3S9ZAU,6394
67
+ nabu/estimation/distortion.py,sha256=DEXizQpgHBXmrhbQ0kuEchicxmiDgmU2qrh8bCgSezg,4701
68
+ nabu/estimation/focus.py,sha256=5Ot97-SfhdoaZaske3J_ZdPLIPGswovmGxmPM6ir2BU,15765
69
+ nabu/estimation/tilt.py,sha256=8xdNvJkA4rKLBSaGMq6ldR-Azoa1o6WlQ6lO5PuIGGk,8647
70
+ nabu/estimation/translation.py,sha256=L-SCLozW1I-FyGta9LjbNPLYRnaznwenF-p9rISM2pE,8581
71
+ nabu/estimation/utils.py,sha256=m1dYxyU1uSmyjRkPDhfXFzZ_o2mw8X2ApmvCC1MsvlQ,1401
72
+ nabu/estimation/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
73
+ nabu/estimation/tests/test_alignment.py,sha256=odDbSXGPZz-aqCkPfFrZqqMp4NDz-4Sju87vWrOdA30,2491
74
+ nabu/estimation/tests/test_cor.py,sha256=TND-fGoupHQFhp-omp6SQFETxZAaL0WyjC5JZNzCvmI,21268
75
+ nabu/estimation/tests/test_focus.py,sha256=deaVGbIFSzHDAReoeAy-1HLsnKWpJQsC2SL9WTWEV6o,4170
76
+ nabu/estimation/tests/test_tilt.py,sha256=PN4tnV3-XU2nNA608kQShaHugWn_-wbHzWCTnLIaCTk,1658
77
+ nabu/estimation/tests/test_translation.py,sha256=RkOnCYgk9DZGKlIka1snqTv4wbIz_nG7-EHAxnBHsJU,2999
78
+ nabu/io/__init__.py,sha256=Mx0HRIENk0dJbN3b9tzPZhiOnPMxBItgVNQn_QLLrlI,176
79
+ nabu/io/cast_volume.py,sha256=KhwS8RKl17s39hJSSHnKVMIDMikVWYPYTomvQJgKBP8,15196
80
+ nabu/io/detector_distortion.py,sha256=Or4icugi0fGRKWIG0I9hCuR1UZA5Cel25ZGY7cR2j4I,11744
81
+ nabu/io/reader.py,sha256=1DlUYObfOBEGYJHEqyw1Mb2uQ_b_Z7-FFqMWS-4tIB0,23083
82
+ nabu/io/reader_helical.py,sha256=_6vZBH-US_VT7oOGJUtYXqPwFws7xZKcmdOthpwvlIQ,4477
83
+ nabu/io/tiffwriter_zmm.py,sha256=ykaSFqdbYhGNxdBrJRT_rxihx5wj9G8qMQMI1e07fNk,3838
84
+ nabu/io/utils.py,sha256=EcaAdjD09h_6dbVX2Bl3xGhK83hXBslixcJ4zn5kfLM,9241
85
+ nabu/io/writer.py,sha256=cWKY7RcNUztOs1ktzLP2G087fLvq4yNMNdvvBdnoOSk,31417
86
+ nabu/io/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
87
+ nabu/io/tests/test_cast_volume.py,sha256=3zd_aGhMeMPkjg1I3Kq4oKltxwVloizXKgaDV8g_F7Q,10391
88
+ nabu/io/tests/test_detector_distortion.py,sha256=-l-fl_RmSoZHl9aDoHDoJE13L8w9ghBXGASc9PYGzqw,6341
89
+ nabu/io/tests/test_writers.py,sha256=PjHRI8euuRnejwE_LNMSdwqUq18V0V3VJwmRhi8xvyk,7188
90
+ nabu/misc/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
91
+ nabu/misc/binning.py,sha256=x7mbKTfEKF8ZaZoPq2LJl9hfUsQ0qMNGMxaHE98PcNc,2920
92
+ nabu/misc/fftshift.py,sha256=TF0RwlDqo_umTwBQb2juCA8Hrff4H20XULdcIyDTajI,205
93
+ nabu/misc/filters.py,sha256=8aoO7-g94PJ8zDUSKD0pV4knozsmZIGTDiiGgO3Fzhg,604
94
+ nabu/misc/fourier_filters.py,sha256=kGIOYTQtAMMvCgPz7PHTr38EiCKphM6X_16iBDbjwrQ,5691
95
+ nabu/misc/histogram.py,sha256=-BVR9ji2MFqgYIJpZV8qG2M4vjK9oT0rpJo66AAisYk,209
96
+ nabu/misc/histogram_cuda.py,sha256=bmB4JYE81wMGGAxBw4FuAr_c3kBptLilPxro9E2gVOE,238
97
+ nabu/misc/kernel_base.py,sha256=ASiEvHiXhp_dLjkQxxAhob1fQ68ZmIkTsZM9uz11dbU,194
98
+ nabu/misc/padding.py,sha256=NUTNDsafUnI1pgy-YtemKINGUUufCb7w2EV-UrznCsM,2713
99
+ nabu/misc/padding_base.py,sha256=41L_bwAlAA96b701CISqzOZTmhgQDSa1vzCjG8Tt-wE,216
100
+ nabu/misc/processing_base.py,sha256=YTDfq2G64RVVuZn7JgWTie1YAtW-tT48Uq3ZuXH21hw,214
101
+ nabu/misc/rotation.py,sha256=SNktZ6e9EDTZC6Pe1frtW5CMs5sQP_AWQnLdB1WLMF0,205
102
+ nabu/misc/rotation_cuda.py,sha256=_1fFuTHgAGuGY7_yufCD6M2nUnKkwNTxWQ0r3nK9W8A,225
103
+ nabu/misc/transpose.py,sha256=nCaCFIXWFZ6WP74dq8iGJA7SiJZ9_ChbXHfs6ER2hDw,209
104
+ nabu/misc/unsharp.py,sha256=AglfX-Aw4WD24-8fW2PmiThRQLG6t30bK9WFV8zbvUs,195
105
+ nabu/misc/unsharp_cuda.py,sha256=RawUFnfvdn5NhJmzplEfFhx75aaOdHWZfbwBtGZGVnk,221
106
+ nabu/misc/unsharp_opencl.py,sha256=dugGYYbVLPK64tXPHY4JtmBN39dptua9N0TPC1jLCx0,238
107
+ nabu/misc/utils.py,sha256=MvR66T-aqpt_zhLT3usbPjrBomW4ilcTQMrMuhdwY74,3906
108
+ nabu/misc/tests/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
109
+ nabu/misc/tests/test_binning.py,sha256=0TqnJrDhfqSeWF6ZJsMqFUQ0M2SJ1AHPpD1sWA0hBfE,1884
110
+ nabu/misc/tests/test_interpolation.py,sha256=H8ZJ7dppCcpxVa9wOBkJ9U0mymH5lGyCJ0LZCYIK8PE,2389
111
+ nabu/opencl/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
112
+ nabu/opencl/fft.py,sha256=-3Ao5Ug4_pEzIliQsBiGJc_PgyURPd8pRje8LWx51pU,208
113
+ nabu/opencl/kernel.py,sha256=C48xhgxhIkI-0j5CODJJTw-rdjjy8FiyQSJ0YuoYH5c,4736
114
+ nabu/opencl/memcpy.py,sha256=s_0CCO-PTDmEsCW9_kVCNHwN7_hw7uNy_O6KJ0zS71I,1263
115
+ nabu/opencl/padding.py,sha256=fe7AZ1VtQJ4F7zq31FjXSYQnleAubWwpEYTCxdZNcSI,224
116
+ nabu/opencl/processing.py,sha256=7JBZUpPoHMJVI4TEpk1YDn1lLjy0f6XU0qR-PFNfkwA,2122
117
+ nabu/opencl/utils.py,sha256=yPAt7xQ15n98Gf_ZSkazKUathZBe3WzD47TE-l0cjzs,10141
118
+ nabu/opencl/src/ElementOp.cl,sha256=RMScHhHYDa6xXC4NLJrC1KpDRq-aMZG1lwq3O9pStiY,1258
119
+ nabu/opencl/src/backproj.cl,sha256=M226iOQ-0WhGsJZfUn3mUCfBHqqGAqWa2caK9Igk058,5559
120
+ nabu/opencl/src/fftshift.cl,sha256=xq-HNRWhuXqTVD_nD-38_41HPYZPCXAHDTpxsGURSTY,1726
121
+ nabu/opencl/src/halftomo.cl,sha256=IZ2VJwWLpfaNpzM8Ief13zsqDcq68lyFqG55qYWoHNE,1386
122
+ nabu/opencl/src/padding.cl,sha256=0e4wDB3wOVFIFw0f7VTfD45PK6HzDhooCgK2DZqiUfA,460
123
+ nabu/opencl/src/roll.cl,sha256=UTH4A9SfajGoX3wjOAm1inDT9-8RxCFfoZ5ePijMGOE,2486
124
+ nabu/opencl/src/transpose.cl,sha256=jFRIFccPefzbKFEqEIVYGrWac5XJs3FY1tEmvCzA74E,450
125
+ nabu/opencl/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
126
+ nabu/pipeline/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
127
+ nabu/pipeline/config.py,sha256=amc05PX0kZA5wHjD1oFP59MfW4pBA-gjBypy4tKLnv0,9221
128
+ nabu/pipeline/config_validators.py,sha256=rvK1Q_KmA1LUeNTefNxXCpYfDQ1zAdk1kFePrLintwc,16300
129
+ nabu/pipeline/datadump.py,sha256=Ua4tbzxfGMOiT2-7WZn3IDiJqzzK-TyFuku_XUkH8_Q,6520
130
+ nabu/pipeline/dataset_validator.py,sha256=b6RYIoaElX8QkqYPFl7KsMU7wai7jJjG6QtTQBvPd_o,9207
131
+ nabu/pipeline/detector_distortion_provider.py,sha256=ru1AxbcuO-FA8FYooPBWgp1lzdSDUtzFUC1A_sS8jME,920
132
+ nabu/pipeline/estimators.py,sha256=ea1ObPhvtceUYP5bkuX185ujh5RU9FcCNMXU-TQuhw8,41146
133
+ nabu/pipeline/fallback_utils.py,sha256=7ccrKYE-rp3fydb72VA6W0_eKcEoqYBEAPlmij_lyEc,6086
134
+ nabu/pipeline/params.py,sha256=VdrekcxOnbrMzvvLcwEWINiMM0uVKmPxJJBwp3lhHBg,3479
135
+ nabu/pipeline/processconfig.py,sha256=3wCobeC_gI9OTO7v0Hk-IeEJUdKoavK-OzKLd1da5Dg,8216
136
+ nabu/pipeline/utils.py,sha256=NONAgBfTfUYvBNfoTqD33MAYaPZyCJL10SnR6B0lLec,3462
137
+ nabu/pipeline/writer.py,sha256=mUpD0kNHrPQhnHwybMMxA7pjaKi53aP8QLBJsqEcQ-4,7501
138
+ nabu/pipeline/fullfield/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
139
+ nabu/pipeline/fullfield/chunked.py,sha256=qGE9gpww2zPbtPeM1Fe0RPRhl3onqxs8fr3HRug-x6I,36919
140
+ nabu/pipeline/fullfield/chunked_cuda.py,sha256=aGzjY8MX6OL8auEj6Y0RfOGCmFnczsdfj6-8Net5AbQ,5645
141
+ nabu/pipeline/fullfield/computations.py,sha256=VpIURVXh8EpNSfait_AIFM4Ci-GK_546Wkb-Wn9r31Y,9935
142
+ nabu/pipeline/fullfield/dataset_validator.py,sha256=sRgUECUc8aOjFbwrW-dHjvIf7K3T40YPSIgt3cInKAc,3055
143
+ nabu/pipeline/fullfield/nabu_config.py,sha256=a0mMoLkvlvHgX6RmUS1m1UhJS-XB3O6wBCnkNoI90Cs,30358
144
+ nabu/pipeline/fullfield/processconfig.py,sha256=SzA9FA7aK5V13q8f8fFmKvumvK0ATkl5Bi_lAs2r8m8,35658
145
+ nabu/pipeline/fullfield/reconstruction.py,sha256=Km_ZDtoiDQdX3TdTh6E9bzS5hoMC0jYU5eZWodaLbIg,36627
146
+ nabu/pipeline/helical/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
147
+ nabu/pipeline/helical/dataset_validator.py,sha256=0YQc0hdYdpaXznFaKmlj9SIu7mNs0xXMejcRkhOZHaI,640
148
+ nabu/pipeline/helical/fbp.py,sha256=0fAz-Fb0Rn_FzellvcS2cy-Wvm-5dxEf494YFt4pLws,5845
149
+ nabu/pipeline/helical/filtering.py,sha256=vkxiPkUbm8_KtfUbVwPu8WEvibAJII81TqZW8fvRqnM,10234
150
+ nabu/pipeline/helical/gridded_accumulator.py,sha256=me6yW7oPrGnlKy0FJvKe70mjqmy7YmClZTsJKdvGOw4,26308
151
+ nabu/pipeline/helical/helical_chunked_regridded.py,sha256=D-192oOK4O3yCFPEATMKyp9cZBNy06ZiFRcB8RECiGw,68449
152
+ nabu/pipeline/helical/helical_chunked_regridded_cuda.py,sha256=DqNM3fx2a_HsHmpY48MBCYK0pdJNXeu7nKKfFFFNW6I,3863
153
+ nabu/pipeline/helical/helical_reconstruction.py,sha256=rkanRA8mYJjzL9eP8v9eHDn-w00YPzySS1S_hHh3N98,24060
154
+ nabu/pipeline/helical/helical_utils.py,sha256=uFAQHDqENHqQWUpu1n99dnBCCKOlkgjDjvYORY6XFY0,1439
155
+ nabu/pipeline/helical/nabu_config.py,sha256=LmYUWC14oDpktLnjbz7qH1yt9NARNbgNG8GXr7E-UM8,8042
156
+ nabu/pipeline/helical/processconfig.py,sha256=IlCfKkiclBmDDdT6Ail3aSj9Q7zV38YpFmF1_SsCjy4,2775
157
+ nabu/pipeline/helical/span_strategy.py,sha256=7zV_Oo_liFiuv6m70o08XyoEIo_7QYs7MV7qtHFTgbc,25044
158
+ nabu/pipeline/helical/utils.py,sha256=51Qbh8db6-DX0iB9B9Kb07uwIG6_upAJg_8nhyzbB7o,1555
159
+ nabu/pipeline/helical/weight_balancer.py,sha256=j0TGe50tbbsilQvml9CgMxeSy83CNaifHj-xuMGl8uE,3981
160
+ nabu/pipeline/helical/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
161
+ nabu/pipeline/helical/tests/test_accumulator.py,sha256=nNHwqUgSyUpdZVYNVyxqekj0SoThCF8s-8o3NfSw6vI,6416
162
+ nabu/pipeline/helical/tests/test_pipeline_elements_full.py,sha256=zeR9SaeD0mnhtKU7qo4Qrn_lg1I1Vhg4dqzj6jy8tpg,14569
163
+ nabu/pipeline/helical/tests/test_strategy.py,sha256=rt8SsUHBMMcVFl48kRGcOyf1y4bYqaA2xDznQxE7wFs,2721
164
+ nabu/pipeline/tests/test_chunk_reader.py,sha256=Z5N620l4jZmG_15v5GPbqf4LgZeO2hJvcsptq_YpltU,3641
165
+ nabu/pipeline/tests/test_estimators.py,sha256=6VK7fxxfrRTWSSi2bhHqbLy8pZJ2DALO1gJkuxpLDSQ,8392
166
+ nabu/pipeline/xrdct/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
167
+ nabu/preproc/__init__.py,sha256=dKxvZvWZXjKS3iPRaSXiUeM2dNGIOyTlirq5pdAWY0Y,284
168
+ nabu/preproc/alignment.py,sha256=WDSPIlogwPfQDTqEyRH_ovaQ7vCpnR6XE_Ycif1wP0I,379
169
+ nabu/preproc/ccd.py,sha256=AHU9iwXLrzisMOfIfMtKwDfd9vP5m_-MBI0rmP4u7eg,5145
170
+ nabu/preproc/ccd_cuda.py,sha256=G9BWM2BJop8On3QWFkENZwFccNUss0ES3v931emL3RQ,6068
171
+ nabu/preproc/ctf.py,sha256=xyTfmN8Nr6Rh9EXy1c1PIpC0zfzViFnytxjLaDrArn0,14657
172
+ nabu/preproc/ctf_cuda.py,sha256=UAWPDbDboMJcSs5BLRmBp6cY8Wq7lmVmWn_F4-3QAiw,5245
173
+ nabu/preproc/distortion.py,sha256=XksQNrrSBfZS7mlvIdVEMZjw839ppQWP6AitTLcgfb0,3309
174
+ nabu/preproc/double_flatfield.py,sha256=W0NFkDIMzwgHbM844CwyGa2aBws-x-hCjqsXCOx6KkY,8213
175
+ nabu/preproc/double_flatfield_cuda.py,sha256=67DZWa0q4ham6d21QGeiSY-kgkkJETN0YxjgcBlpncs,6153
176
+ nabu/preproc/double_flatfield_variable_region.py,sha256=9NnI_MoY2mhjp1ifpfhTq5slkDhgoK-bMznkW6xRU_4,2279
177
+ nabu/preproc/flatfield.py,sha256=KCZvIqxKB9eizI6nc0ez831ImHoDuQ9StSSvCNXIGZA,19202
178
+ nabu/preproc/flatfield_cuda.py,sha256=AFStTXZifDA4SGgtrIQz-rcnR1NvSXx8a-dC8Yrr7HE,5331
179
+ nabu/preproc/flatfield_variable_region.py,sha256=JnIn_hkt2YQdREIkEnMSF4B16JcrmtS6jLfUiBS97B4,3155
180
+ nabu/preproc/phase.py,sha256=gtf-fgQJ_zsTgaj0yBAhNlT074jI7YSCEBYfY0wGkQc,16383
181
+ nabu/preproc/phase_cuda.py,sha256=6fqzteAVXoEVaiGBlfE59Vhcjr7-i8KICHTA6ZistHo,5057
182
+ nabu/preproc/shift.py,sha256=UVa962Gj4b1CRAsez57glvBGXXFSDVnquB3Zd0JgquQ,3424
183
+ nabu/preproc/shift_cuda.py,sha256=soiCNBSn-zxIHAFgVvDy8jJFCWvZ54blZEd-D5NZrw4,4165
184
+ nabu/preproc/tests/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
185
+ nabu/preproc/tests/test_ccd_corr.py,sha256=KIpwaWYWT_6OPVXyVuLxXIIWreBkYF0rOnDMiegiLMU,2249
186
+ nabu/preproc/tests/test_ctf.py,sha256=lXKCkICjeM7jda-Cku9Aze09YUwj1a8wuNOraVHVEws,9848
187
+ nabu/preproc/tests/test_double_flatfield.py,sha256=HZ5KxY3xGplTzRTFKiFyqAhIjyl4mSrbHRzYTnMr4HA,2873
188
+ nabu/preproc/tests/test_flatfield.py,sha256=CnK8pFnCmBdwjDSEi9S0FwYIo_zXuHzlEIiIpWjYFf4,23498
189
+ nabu/preproc/tests/test_paganin.py,sha256=e7ksHwTsg06aomLxQ-bMNxZjzAx_5pqpp9nvbwuz7iY,2182
190
+ nabu/preproc/tests/test_vshift.py,sha256=dkX-xK8OCROP7kAOtMYRFrWWByEUsVzvhbNWm2RPn1U,2867
191
+ nabu/processing/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
192
+ nabu/processing/convolution_cuda.py,sha256=jkRp7_Q6mUtwN08iGd82Gv8rSZgjTfYYhCuk2smtGlo,15313
193
+ nabu/processing/fft_base.py,sha256=PuP3w4VQLPUIVemcDpT0K-zVPX_yii12ciONZZj0fzE,5656
194
+ nabu/processing/fft_cuda.py,sha256=7cg2IEuW47xezVk9mM8Hn_iYQzrfft6-aLc20TGjiyI,8918
195
+ nabu/processing/fft_opencl.py,sha256=8raIclnr-nRGBet_YyLJiWHFB5mPLMbdP40bHVaW7Do,1386
196
+ nabu/processing/fftshift.py,sha256=XY7UsI63fAq9N5sCDpABCchf_wu9fZ_4KH3StGwgnqw,4880
197
+ nabu/processing/histogram.py,sha256=Edl3PfJkj0lbj1gSBHfuylm1oJFenNwtGsJJ8Z3-UWw,11316
198
+ nabu/processing/histogram_cuda.py,sha256=6MU1C5gxjHPwu7ILO7pEidGZq6L1pKVinGMkv5o2NSo,3277
199
+ nabu/processing/kernel_base.py,sha256=DIGVkjhSPjPPk1E66ZDZrWuQXv5OHR8TaqhaUWpvy_U,4251
200
+ nabu/processing/medfilt_cuda.py,sha256=usnNMKxFMrGI6ZIYNRDXBn5kzBzOyuVay8mnQSvNR2k,5691
201
+ nabu/processing/muladd.py,sha256=QI4EnPFNTUHeZIpctlazjcgUyHBkhBX7PQE_iII8r44,895
202
+ nabu/processing/muladd_cuda.py,sha256=xNCo_CC-E40s03852J-ReCOR4mhp5tSRMpNfNkG9SCM,2445
203
+ nabu/processing/padding_base.py,sha256=eIG-SG002TcRtTEdv00Ubr5gwcaVUuYlyMpIZSNuXBw,2874
204
+ nabu/processing/padding_cuda.py,sha256=p6edM96Kj4rzulzvAUUZzHlHso3Vp0uzCPOD7-6rxfg,2689
205
+ nabu/processing/padding_opencl.py,sha256=dzH8EQc1DXnLgKpE8vBGWsloe-gFU8-AgLOw0-8GNuI,3049
206
+ nabu/processing/processing_base.py,sha256=D72UmfNKby-XXgANz82pYjd2uYlTpPP3RLxR_LPHgMo,4412
207
+ nabu/processing/roll_opencl.py,sha256=0R6ff8sncuRC7K8gPdjhmIyC2d83iL3pTvmXf5b-6io,2263
208
+ nabu/processing/rotation.py,sha256=8tVQponi8tv8uPw-xT-0GyZecl3YIXyJgPkEnQMer8M,1836
209
+ nabu/processing/rotation_cuda.py,sha256=9gXMdVX8tqeeOY0R9W8sw9fMh5vj35rRIqMLgJT86Vg,2746
210
+ nabu/processing/transpose.py,sha256=bOnxEFXJd16YcTGyMS-3lwREIVaDkClE_Fkb8bOn1l8,4410
211
+ nabu/processing/unsharp.py,sha256=XqoieKlX5sEHalxObi5JBOjauRUSbiHc6rqYT_buTa4,2682
212
+ nabu/processing/unsharp_cuda.py,sha256=tbgw3selI4x4qsSxyQJ8Q4HUxdEBbZOJtSys-0yzj4o,2127
213
+ nabu/processing/unsharp_opencl.py,sha256=ikmZhQB-kji3UFrvFzHJNvDUpaVSpzcCJRX_bqSQeGQ,2637
214
+ nabu/processing/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
215
+ nabu/processing/tests/test_fft.py,sha256=zDGDTXZjHBVbiVFiQfkrkYFFMyotJRFU-KgoNm1FGms,9827
216
+ nabu/processing/tests/test_fftshift.py,sha256=90QlNO62pN9P_oY54JYrPX5pLjzO5SSC4ZEyr5F__hQ,2559
217
+ nabu/processing/tests/test_histogram.py,sha256=25CLs1WZpLF9xZ2DR82x4_YokA5Z76Qsnn6zY8YdJj8,2283
218
+ nabu/processing/tests/test_medfilt.py,sha256=lVfLWIxWiLfODFc14WYbq1W02rgQDtCnrSgXnWgU6yU,2722
219
+ nabu/processing/tests/test_muladd.py,sha256=cRhAC5hgmRV0BAwPA4o4M-kcx-UDniLK7sSyiN0F3kE,1927
220
+ nabu/processing/tests/test_padding.py,sha256=7jkOt-kFYgymyCgczE98lcWKLkkZZmM2A5Ob6DVG1mk,8736
221
+ nabu/processing/tests/test_roll.py,sha256=Jo0VBMtLVjUE__Wh7gT2zpyJ1T_S5P7kNFWdio_TXSo,2352
222
+ nabu/processing/tests/test_rotation.py,sha256=vedRXV9RePJywBKoyBkGANP1dhZCjphbYOhdnsBDQtE,2737
223
+ nabu/processing/tests/test_transpose.py,sha256=hTG17wTaB5Wv6twbW3ZFhBv6BYfqJY7DTQPoO0-KdkM,2760
224
+ nabu/processing/tests/test_unsharp.py,sha256=R3ovbwDDp3ccy2A8t6CcUVELXRWkED5EnQdN2FQOfQM,4391
225
+ nabu/reconstruction/__init__.py,sha256=EmKVvx_-FJvzJngG4ielIC7FhMCpI1Waaflg_lF44tk,163
226
+ nabu/reconstruction/cone.py,sha256=kVe1CWtkfOkeYH1jrSFVO9mON58p5BR1_MKxdmiEgbM,11028
227
+ nabu/reconstruction/fbp.py,sha256=5GB7XCnxftSHq1ZBLjWi-7OTiyCU4qe-M4EPzvsoxLg,4829
228
+ nabu/reconstruction/fbp_base.py,sha256=igY--_GiKGAcephOU1I8O1GjVcryJnReyywlgtROXW4,16833
229
+ nabu/reconstruction/fbp_opencl.py,sha256=coEGLq65PCuvWnhAbIyLPHACkWjMB0XOceMp9ZIDWtc,3274
230
+ nabu/reconstruction/filtering.py,sha256=iqtFJoAfrw_o1Ta9dG_YjuIXWzSyYRgo8tHCthPgkjQ,7984
231
+ nabu/reconstruction/filtering_cuda.py,sha256=F5kLJ1yfQo5im8CeXy4PAh3WocYVUPLNcK5qcPjVmJM,3673
232
+ nabu/reconstruction/filtering_opencl.py,sha256=B9zcvSxvt3KMxEXxoirop1vfqM0kSRP-LhvGgqDGQlA,3957
233
+ nabu/reconstruction/projection.py,sha256=7WVPlYLUmCmB2yR1JYmVLJ5fZ3CMMKQ3vS9yuTUb8J8,9099
234
+ nabu/reconstruction/reconstructor.py,sha256=wSva2EK-NTJi8N_ubzJWIZ4sv2ksfrA9YcA2ioEtISo,7299
235
+ nabu/reconstruction/reconstructor_cuda.py,sha256=m_3GzG44PRyiSEfTvYjgr5atLwl26hMfZOMyqTWxp0g,1644
236
+ nabu/reconstruction/rings.py,sha256=mpbCLuFM_6Uy9oNJkyQ8tZwhGhrbWtzRlArSRsC90bI,9527
237
+ nabu/reconstruction/rings_cuda.py,sha256=LZ_XKmkccmBI1hxR_Zr7eP_mxRx0TTPgso6Y_jfEoJE,13010
238
+ nabu/reconstruction/sinogram.py,sha256=KTSGP_JJABf4Yr9l628HPbyWsBnpbnyGKyPEq3ZrPIE,17026
239
+ nabu/reconstruction/sinogram_cuda.py,sha256=wS84AIy3T00d1kTtuJOQmA3hktbDVs4ybwB9haiBcoY,10623
240
+ nabu/reconstruction/sinogram_opencl.py,sha256=p793N26VknU8KIZLtDgFY6HNx0TylemZ1YL4WKD3fHs,1403
241
+ nabu/reconstruction/tests/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
242
+ nabu/reconstruction/tests/test_cone.py,sha256=R9Q-o9jz5ZBRwpGRRDwWr4owrrI3bJow5f_x_toq_lw,11813
243
+ nabu/reconstruction/tests/test_deringer.py,sha256=u7HTMKH0DiZ1JAs68svi7eOCQt_sgxpXH6RQ12rDaVE,8299
244
+ nabu/reconstruction/tests/test_fbp.py,sha256=p80zPCZkgJpERpqG5HHfbtbHBeqJUT8WY-q6FXOJJ7M,10053
245
+ nabu/reconstruction/tests/test_filtering.py,sha256=PFJLQMDBQo-UuS_CfKrWZ_DdHarmVlcbsiZ_kmToWXY,4782
246
+ nabu/reconstruction/tests/test_halftomo.py,sha256=rdPY4oL8JTJqDzpn-pdqjDp72pN39-5DipKqBTyyBxo,4171
247
+ nabu/reconstruction/tests/test_projector.py,sha256=W4zntShzL47HjMGQG11zIYzMXwX0KfMN4BVIAapdy_I,6033
248
+ nabu/reconstruction/tests/test_reconstructor.py,sha256=dEGqlQHfFwX_V2Ybnq5AAM5tprXn_2OuCSrC6cW4S0A,3221
249
+ nabu/reconstruction/tests/test_sino_normalization.py,sha256=fGv5Dlidxgm8ZC70Nk6oqVgpY2jzOW9NJaGlo44IJOo,3692
250
+ nabu/resources/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
251
+ nabu/resources/cor.py,sha256=-mcrTbj3G7o4PP5E_gIRo2j6_-ADmMkkOc_0CyQv84c,170
252
+ nabu/resources/dataset_analyzer.py,sha256=ErhX_p13L-Wh96bHO8vkh2nTCUViJi-Z8CQSRR09cjg,16433
253
+ nabu/resources/gpu.py,sha256=rwCFHJ8DGvVP1bnd1bFJKs6dO55ZuONcfxXEEpuIez0,5701
254
+ nabu/resources/logger.py,sha256=-lOzhN_sU4R3BIfC69aMj2O8S_ocsvXsmwkhWlcxVEc,3758
255
+ nabu/resources/nxflatfield.py,sha256=W0mooruk98TaRb6rtpqzPl5TWwuI3zj-7S7CM7IjEwU,9221
256
+ nabu/resources/utils.py,sha256=LtOWEYneEzz0mDIpUWM23v9ILJ8FM0YFaVG3fFVc7OU,5725
257
+ nabu/resources/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
258
+ nabu/resources/templates/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
259
+ nabu/resources/templates/bm05_pag.conf,sha256=3-Zny2_QlQuZKge53N1vFLZ8yzq-y2cmpAAkByUdHX8,394
260
+ nabu/resources/templates/id16_ctf.conf,sha256=PJt_hvBlAweZSo6INnsmozHfBJvJ64b28x1mFfAOD6s,842
261
+ nabu/resources/templates/id16_holo.conf,sha256=sDd_rEJGZjOGVAsGub5sT2arfXDnc_sxyDBAcfKHNpw,773
262
+ nabu/resources/templates/id19_pag.conf,sha256=u4fFPEBprzOW9_5_ChkIgowQcYpLhjmA8Gwm5XgC4Jc,384
263
+ nabu/resources/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
264
+ nabu/resources/tests/test_nxflatfield.py,sha256=wLcBYpeD1UHGbimRrisGzgS9oVnQ8nNzayfXCowuLuk,4297
265
+ nabu/resources/tests/test_units.py,sha256=F2jFTck-1UwYET1MwTtX6ntzYUosfwOJkugSencGgz8,2155
266
+ nabu/stitching/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
267
+ nabu/stitching/alignment.py,sha256=MSj-6npGfUnD3C5R5rqKwTogVRUDPmJuEZkPG9hMiUY,6752
268
+ nabu/stitching/config.py,sha256=sFGcrs05KA5HH4auIU1gONtM2d2YCAjmibHxdwet_ww,51360
269
+ nabu/stitching/definitions.py,sha256=RyqzZY3KLwN4j0SkOFA-T1aicPbO2jBrqfWdz-1djxk,130
270
+ nabu/stitching/frame_composition.py,sha256=OGM9cLrLfEP5_hvhDbNq_zr2wdMeAuTTNlVqZk-qVBU,5889
271
+ nabu/stitching/overlap.py,sha256=eXAKsILS5jwqFY62JhDijeNW8H50rP-yjdUUGqjj0aY,15700
272
+ nabu/stitching/sample_normalization.py,sha256=_radin_wxnuD3MMmZNAOKA__aPa2z3ss4TFbZeocpXc,2069
273
+ nabu/stitching/slurm_utils.py,sha256=sZ-VQPh_YlJ1Lkh7ap8qxII0rBpZryMyoxE5Xn557t8,8906
274
+ nabu/stitching/utils.py,sha256=kMn2JEMDhcBQMweSlM0rUd-037H7iNUURTFMhXOTzC8,23651
275
+ nabu/stitching/z_stitching.py,sha256=yI0jmmP3y_0VrbzYUBXT9x3F0KIBwNOAuTdQ3nlCdsM,103356
276
+ nabu/stitching/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
277
+ nabu/stitching/tests/test_alignment.py,sha256=MACak1ILOr8nRKeT0mWfMd-ZvhCl3SWjjcp6GjRbITc,2735
278
+ nabu/stitching/tests/test_config.py,sha256=ttWuVB9Y_MM3_wGdKbcbYi_PG3vN87cL7o5zKsMzn9g,8490
279
+ nabu/stitching/tests/test_frame_composition.py,sha256=MM4pn1mno21gLUVMYo2R4iUxN-2MfxSIectGtLhLDqI,6043
280
+ nabu/stitching/tests/test_overlap.py,sha256=vfZuK32pclWL0Hg8u5NH0JoxKO28qk3ObRMmTwVaPgA,2588
281
+ nabu/stitching/tests/test_sample_normalization.py,sha256=E49E_Quv-Qon6qSuaH9ZBZLqq4TPuBl8RqgB18Rwjc0,1348
282
+ nabu/stitching/tests/test_slurm_utils.py,sha256=bbhCQd06R3irGB4B9r79KKlf0AlBchI53N2ldsXoAQQ,4950
283
+ nabu/stitching/tests/test_utils.py,sha256=CjV0vPvXEchJ5vo6o7hGQA-PsOOAyAamuQ6fiHKCQ9M,641
284
+ nabu/stitching/tests/test_z_stitching.py,sha256=1bNvNkWDqV4mE5tgHBKqshDnoJtMPzUS2xCkf9qd2XM,42620
285
+ nabu/thirdparty/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
286
+ nabu/thirdparty/algotom_convert_sino.py,sha256=iZVRilvyqMyLTu8RKgbqDFUjObWW5X69rCARrnNizuI,13872
287
+ nabu/thirdparty/pore3d_deringer_munch.py,sha256=o4bisnFc-wMjuohWBT8wgWmfNehPQGtCl6G2NebJlbg,4500
288
+ nabu/thirdparty/tomocupy_remove_stripe.py,sha256=VgXHr2tzTAAGZix5pwhFfbPxj4tt3yXBcjCPNQSLPAg,22810
289
+ nabu/thirdparty/tomopy_phase.py,sha256=hK4oPpkogLOhv23XzzEXQY2u3r8fJvASY_bINVs6ERE,8634
290
+ nabu/thirdparty/tomwer_load_flats_darks.py,sha256=ZNoVAinUb_wGYbfvs_4BVnWsjsQmNxSvCh1bWhR2WWg,5611
291
+ nabu-2024.1.0rc3.dist-info/LICENSE,sha256=1eAIPSnEsnSFNUODnLtNtQTs76exG3ZxJ1DJR6zoUBA,1066
292
+ nabu-2024.1.0rc3.dist-info/METADATA,sha256=q6_cXr8-lpZGerhGxTc_pnfMqRob6c0KXEbSL8Xv4d4,5229
293
+ nabu-2024.1.0rc3.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
294
+ nabu-2024.1.0rc3.dist-info/entry_points.txt,sha256=cJKGkBeykVL7uK3E4R0RLRqMXifTL2qdO573syPAvJc,1288
295
+ nabu-2024.1.0rc3.dist-info/top_level.txt,sha256=fsm_N3eXLRZk2QXF9OSKPNDPFXOz8FAQjHh5avT3dok,9
296
+ nabu-2024.1.0rc3.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: bdist_wheel (0.41.1)
2
+ Generator: bdist_wheel (0.42.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
@@ -4,13 +4,17 @@ nabu-cast = nabu.app.cast_volume:main
4
4
  nabu-compare-volumes = nabu.app.compare_volumes:compare_volumes_cli
5
5
  nabu-composite-cor = nabu.app.composite_cor:main
6
6
  nabu-config = nabu.app.bootstrap:bootstrap
7
+ nabu-diag2pix = nabu.app.diag_to_pix:main
8
+ nabu-diag2rot = nabu.app.diag_to_rot:main
9
+ nabu-display-timings = nabu.app.parse_reconstruction_log:parse_reclog_cli
7
10
  nabu-double-flatfield = nabu.app.double_flatfield:dff_cli
8
11
  nabu-generate-info = nabu.app.generate_header:generate_merged_info_file
9
12
  nabu-helical = nabu.app.reconstruct_helical:main_helical
13
+ nabu-helical-correct-rot = nabu.app.correct_rot:main
10
14
  nabu-helical-prepare-weights-double = nabu.app.prepare_weights_double:main
11
15
  nabu-histogram = nabu.app.histogram:histogram_cli
12
16
  nabu-multicor = nabu.app.multicor:main
13
- nabu-poly2map = nabu.app.create_distortion_map_from_poly:horizontal_match_entry_point
17
+ nabu-poly2map = nabu.app.create_distortion_map_from_poly:create_distortion_maps_entry_point
14
18
  nabu-reduce-dark-flat = nabu.app.reduce_dark_flat:main
15
19
  nabu-rotate = nabu.app.rotate:rotate_cli
16
20
  nabu-shrink-dataset = nabu.app.shrink_dataset:shrink_cli
nabu/conftest.py DELETED
@@ -1,14 +0,0 @@
1
- import pytest
2
- from tomoscan.test.utils import HDF5MockContext
3
-
4
-
5
- @pytest.fixture(scope="function")
6
- def hdf5_scan(tmp_path):
7
- """simple fixture to create a scan and provide it to another function"""
8
- test_dir = tmp_path / "my_hdf5_scan"
9
- with HDF5MockContext(
10
- scan_path=str(test_dir),
11
- n_proj=10,
12
- n_ini_proj=10,
13
- ) as scan:
14
- yield scan
nabu/opencl/fftshift.py DELETED
@@ -1,92 +0,0 @@
1
- import numpy as np
2
- from ..utils import get_opencl_srcfile, updiv, check_supported
3
- from .kernel import OpenCLKernel
4
- from .processing import OpenCLProcessing
5
- import pyopencl.array as parray
6
- from pyopencl.tools import dtype_to_ctype
7
-
8
- '''
9
- class OpenCLfftshift:
10
- def __init__(
11
- self,
12
- shape,
13
- dtype,
14
- axes=None,
15
- opencl_options=None,
16
- ):
17
- self.opencl_processing = OpenCLProcessing(**(opencl_options or {}))
18
- self._set_shape_axes(shape, axes)
19
- self._set_dtype(dtype)
20
-
21
- def _set_shape_axes(self, shape, axes):
22
- ... # TODO
23
-
24
- def _set_dtype(self, dtype):
25
- self.dtype = dtype
26
- self.dtype_c = dtype_to_ctype(self.dtype)
27
-
28
- def _init_kernel(self):
29
- self.fftshift = OpenCLKernel(
30
- kernel_name,
31
- self.opencl_processing.ctx,
32
- filename=get_opencl_srcfile("fftshift.cl"),
33
- options=["-DDTYPE=%s" % self.dtype_c],
34
- )
35
-
36
- def _init_opencl_coordinate_transform(self):
37
- if self.mode == "constant":
38
- self.d_padded_array_constant = parray.to_device(self.queue, self.padded_array_constant)
39
- self.memcpy2D = OpenCLMemcpy2D(ctx=self.opencl_processing.ctx, queue=self.queue)
40
- return
41
- self._coords_transform_kernel = OpenCLKernel(
42
- "coordinate_transform",
43
- self.opencl_processing.ctx,
44
- filename=get_opencl_srcfile("padding.cl"),
45
- )
46
- self._coords_transform_local_size = (16, 16, 1)
47
- self._coords_transform_global_size = [
48
- updiv(a, b) for a, b in zip(self.padded_shape[::-1], self._coords_transform_local_size)
49
- ]
50
- self.d_coords_rows = parray.to_device(self.queue, self.coords_rows)
51
- self.d_coords_cols = parray.to_device(self.queue, self.coords_cols)
52
-
53
- def _pad_constant(self, image, output):
54
- pad_y, pad_x = self.pad_width
55
- # the following line is not implemented in pyopencl
56
- # self.d_padded_array_constant[pad_y[0] : pad_y[0] + self.shape[0], pad_x[0] : pad_x[0] + self.shape[1]] = image[:]
57
- # cl.enqueue_copy is too cumbersome to use for Buffer <-> Buffer.
58
- # Use a dedicated kernel instead.
59
- # This is not optimal (two copies) - TODO write a constant padding kernel
60
- self.memcpy2D(self.d_padded_array_constant, image, image.shape[::-1], dst_offset_xy=(pad_x[0], pad_y[0]))
61
- output[:] = self.d_padded_array_constant[:]
62
- return output
63
-
64
- def pad(self, image, output=None):
65
- """
66
- Pad an array.
67
-
68
- Parameters
69
- ----------
70
- image: pycuda.gpuarray.GPUArray
71
- Image to pad
72
- output: pycuda.gpuarray.GPUArray, optional
73
- Output image. If provided, must be in the expected shape.
74
- """
75
- if output is None:
76
- output = self.opencl_processing.allocate_array("d_output", self.padded_shape)
77
- if self.mode == "constant":
78
- return self._pad_constant(image, output)
79
- self._coords_transform_kernel(
80
- self.queue,
81
- image,
82
- output,
83
- self.d_coords_cols,
84
- self.d_coords_rows,
85
- np.int32(self.shape[1]),
86
- np.int32(self.padded_shape[1]),
87
- np.int32(self.padded_shape[0]),
88
- global_size=self._coords_transform_global_size,
89
- local_size=self._coords_transform_local_size,
90
- )
91
- return output
92
- '''
@@ -1,55 +0,0 @@
1
- """
2
- import numpy as np
3
- import pytest
4
- from nabu.opencl.utils import __has_pyopencl__, get_opencl_context
5
- from nabu.utils import calc_padding_lengths, get_opencl_srcfile
6
- from nabu.testutils import get_data, generate_tests_scenarios, __do_long_tests__
7
-
8
- if __has_pyopencl__:
9
- import pyopencl.array as parray
10
- from nabu.opencl.fftshift import OpenCLfftshift
11
-
12
-
13
- scenarios = generate_tests_scenarios(
14
- {
15
- "shape": [(511, 512), (512, 511)],
16
- "pad_width": [((256, 255), (128, 127)), ((0, 0), (6, 7))],
17
- "mode": OpenCLPadding.supported_modes if __has_pyopencl__ else [],
18
- "constant_values": [0, ((1.0, 2.0), (3.0, 4.0))],
19
- "output_is_none": [True, False],
20
- }
21
- )
22
-
23
-
24
- @pytest.fixture(scope="class")
25
- def bootstrap(request):
26
- cls = request.cls
27
- cls.data = get_data('brain_phantom.npz')['data']
28
- cls.tol = 1e-7
29
- cls.ctx = get_opencl_context("all")
30
- yield
31
-
32
-
33
- @pytest.mark.skipif(not (__has_pyopencl__), reason="Need OpenCL and pyopencl for this test")
34
- @pytest.mark.usefixtures("bootstrap")
35
- class TestOpenCLFFTshift:
36
- @pytest.mark.parametrize("config", scenarios)
37
- def test_fftshift(self, config):
38
- direction = config["direction"]
39
- shape = config["shape"]
40
- dtype = config["dtype"]
41
-
42
- data = np.squeeze(self.data[: shape[0], : shape[1]]).astype(dtype) # can be 1D or 2D
43
-
44
- shifter = OpenCLfftshift(data.shape, data.dtype, opencl_options={"ctx": self.ctx})
45
- queue = shifter.queue
46
- d_data = parray.to_device(queue, data)
47
- shifter(d_data) # in-place
48
- res = d_data.get()
49
-
50
- reference_shifter = np.fft.fftshift if direction == "forward" else np.fft.ifftshift
51
- ref = reference_shifter(x, axes=config["axes"])
52
-
53
- err_max = np.max(np.abs(res - ref))
54
- assert err_max < self.tol, str("Something wrong with fftshift for configuration %s" % (str(config)))
55
- """
@@ -1,84 +0,0 @@
1
- import numpy as np
2
- import pytest
3
- from nabu.opencl.utils import __has_pyopencl__, get_opencl_context
4
- from nabu.utils import calc_padding_lengths, get_opencl_srcfile
5
- from nabu.testutils import get_data, generate_tests_scenarios
6
-
7
- if __has_pyopencl__:
8
- import pyopencl.array as parray
9
- from nabu.opencl.kernel import OpenCLKernel
10
- from nabu.opencl.padding import OpenCLPadding
11
-
12
-
13
- scenarios = generate_tests_scenarios(
14
- {
15
- "shape": [(511, 512), (512, 511)],
16
- "pad_width": [((256, 255), (128, 127)), ((0, 0), (6, 7))],
17
- "mode": OpenCLPadding.supported_modes if __has_pyopencl__ else [],
18
- "constant_values": [0, ((1.0, 2.0), (3.0, 4.0))],
19
- "output_is_none": [True, False],
20
- }
21
- )
22
-
23
-
24
- @pytest.fixture(scope="class")
25
- def bootstrap(request):
26
- cls = request.cls
27
- cls.data = get_data("brain_phantom.npz")["data"]
28
- cls.tol = 1e-7
29
- cls.ctx = get_opencl_context("all")
30
- yield
31
-
32
-
33
- @pytest.mark.skipif(not (__has_pyopencl__), reason="Need OpenCL and pyopencl for this test")
34
- @pytest.mark.usefixtures("bootstrap")
35
- class TestOpenCLPadding:
36
- @pytest.mark.parametrize("config", scenarios)
37
- def test_padding(self, config):
38
- shape = config["shape"]
39
- data = self.data[: shape[0], : shape[1]]
40
- kwargs = {}
41
- if config["mode"] == "constant":
42
- kwargs["constant_values"] = config["constant_values"]
43
- ref = np.pad(data, config["pad_width"], mode=config["mode"], **kwargs)
44
- opencl_padding = OpenCLPadding(
45
- config["shape"],
46
- config["pad_width"],
47
- mode=config["mode"],
48
- constant_values=config["constant_values"],
49
- opencl_options={"ctx": self.ctx},
50
- )
51
- queue = opencl_padding.queue
52
- d_img = parray.to_device(queue, np.ascontiguousarray(data, dtype="f"))
53
- if config["output_is_none"]:
54
- output = None
55
- else:
56
- output = parray.zeros(queue, ref.shape, "f")
57
- res = opencl_padding.pad(d_img, output=output)
58
-
59
- err_max = np.max(np.abs(res.get() - ref))
60
- assert err_max < self.tol, str("Something wrong with padding for configuration %s" % (str(config)))
61
-
62
- def test_custom_coordinate_transform(self):
63
- data = self.data
64
- R, C = np.indices(data.shape, dtype=np.int32)
65
-
66
- pad_width = ((256, 255), (254, 251))
67
- mode = "reflect"
68
-
69
- coords_R = np.pad(R, pad_width, mode=mode)
70
- coords_C = np.pad(C, pad_width, mode=mode)
71
- # Further transform of coordinates - here FFT layout
72
- coords_R = np.roll(coords_R, (-pad_width[0][0], -pad_width[1][0]), axis=(0, 1))
73
- coords_C = np.roll(coords_C, (-pad_width[0][0], -pad_width[1][0]), axis=(0, 1))
74
-
75
- opencl_padding = OpenCLPadding(data.shape, (coords_R, coords_C), mode=mode, opencl_options={"ctx": self.ctx})
76
- queue = opencl_padding.queue
77
- d_img = parray.to_device(queue, data)
78
- d_out = parray.zeros(queue, opencl_padding.padded_shape, "f")
79
- res = opencl_padding.pad(d_img, output=d_out)
80
-
81
- ref = np.roll(np.pad(data, pad_width, mode=mode), (-pad_width[0][0], -pad_width[1][0]), axis=(0, 1))
82
-
83
- err_max = np.max(np.abs(d_out.get() - ref))
84
- assert err_max < self.tol, "Something wrong with custom padding"