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.
- doc/conf.py +1 -1
- doc/doc_config.py +32 -0
- nabu/__init__.py +2 -1
- nabu/app/bootstrap_stitching.py +1 -1
- nabu/app/cli_configs.py +122 -2
- nabu/app/composite_cor.py +27 -2
- nabu/app/correct_rot.py +70 -0
- nabu/app/create_distortion_map_from_poly.py +42 -18
- nabu/app/diag_to_pix.py +358 -0
- nabu/app/diag_to_rot.py +449 -0
- nabu/app/generate_header.py +4 -3
- nabu/app/histogram.py +2 -2
- nabu/app/multicor.py +6 -1
- nabu/app/parse_reconstruction_log.py +151 -0
- nabu/app/prepare_weights_double.py +83 -22
- nabu/app/reconstruct.py +5 -1
- nabu/app/reconstruct_helical.py +7 -0
- nabu/app/reduce_dark_flat.py +6 -3
- nabu/app/rotate.py +4 -4
- nabu/app/stitching.py +16 -2
- nabu/app/tests/test_reduce_dark_flat.py +18 -2
- nabu/app/validator.py +4 -4
- nabu/cuda/convolution.py +8 -376
- nabu/cuda/fft.py +4 -0
- nabu/cuda/kernel.py +4 -4
- nabu/cuda/medfilt.py +5 -158
- nabu/cuda/padding.py +5 -71
- nabu/cuda/processing.py +23 -2
- nabu/cuda/src/ElementOp.cu +78 -0
- nabu/cuda/src/backproj.cu +28 -2
- nabu/cuda/src/fourier_wavelets.cu +2 -2
- nabu/cuda/src/normalization.cu +23 -0
- nabu/cuda/src/padding.cu +2 -2
- nabu/cuda/src/transpose.cu +16 -0
- nabu/cuda/utils.py +39 -0
- nabu/estimation/alignment.py +10 -1
- nabu/estimation/cor.py +808 -38
- nabu/estimation/cor_sino.py +7 -9
- nabu/estimation/tests/test_cor.py +85 -3
- nabu/io/reader.py +26 -18
- nabu/io/tests/test_cast_volume.py +3 -3
- nabu/io/tests/test_detector_distortion.py +3 -3
- nabu/io/tiffwriter_zmm.py +2 -2
- nabu/io/utils.py +14 -4
- nabu/io/writer.py +5 -3
- nabu/misc/fftshift.py +6 -0
- nabu/misc/histogram.py +5 -285
- nabu/misc/histogram_cuda.py +8 -104
- nabu/misc/kernel_base.py +3 -121
- nabu/misc/padding_base.py +5 -69
- nabu/misc/processing_base.py +3 -107
- nabu/misc/rotation.py +5 -62
- nabu/misc/rotation_cuda.py +5 -65
- nabu/misc/transpose.py +6 -0
- nabu/misc/unsharp.py +3 -78
- nabu/misc/unsharp_cuda.py +5 -52
- nabu/misc/unsharp_opencl.py +8 -85
- nabu/opencl/fft.py +6 -0
- nabu/opencl/kernel.py +21 -6
- nabu/opencl/padding.py +5 -72
- nabu/opencl/processing.py +27 -5
- nabu/opencl/src/backproj.cl +3 -3
- nabu/opencl/src/fftshift.cl +65 -12
- nabu/opencl/src/padding.cl +2 -2
- nabu/opencl/src/roll.cl +96 -0
- nabu/opencl/src/transpose.cl +16 -0
- nabu/pipeline/config_validators.py +63 -3
- nabu/pipeline/dataset_validator.py +2 -2
- nabu/pipeline/estimators.py +193 -35
- nabu/pipeline/fullfield/chunked.py +34 -17
- nabu/pipeline/fullfield/chunked_cuda.py +7 -5
- nabu/pipeline/fullfield/computations.py +48 -13
- nabu/pipeline/fullfield/nabu_config.py +13 -13
- nabu/pipeline/fullfield/processconfig.py +10 -5
- nabu/pipeline/fullfield/reconstruction.py +1 -2
- nabu/pipeline/helical/fbp.py +5 -0
- nabu/pipeline/helical/filtering.py +12 -9
- nabu/pipeline/helical/gridded_accumulator.py +179 -33
- nabu/pipeline/helical/helical_chunked_regridded.py +262 -151
- nabu/pipeline/helical/helical_chunked_regridded_cuda.py +4 -11
- nabu/pipeline/helical/helical_reconstruction.py +56 -18
- nabu/pipeline/helical/span_strategy.py +1 -1
- nabu/pipeline/helical/tests/test_accumulator.py +4 -0
- nabu/pipeline/params.py +23 -2
- nabu/pipeline/processconfig.py +3 -8
- nabu/pipeline/tests/test_chunk_reader.py +78 -0
- nabu/pipeline/tests/test_estimators.py +120 -2
- nabu/pipeline/utils.py +25 -0
- nabu/pipeline/writer.py +2 -0
- nabu/preproc/ccd_cuda.py +9 -7
- nabu/preproc/ctf.py +21 -26
- nabu/preproc/ctf_cuda.py +25 -25
- nabu/preproc/double_flatfield.py +14 -2
- nabu/preproc/double_flatfield_cuda.py +7 -11
- nabu/preproc/flatfield_cuda.py +23 -27
- nabu/preproc/phase.py +19 -24
- nabu/preproc/phase_cuda.py +21 -21
- nabu/preproc/shift_cuda.py +58 -28
- nabu/preproc/tests/test_ctf.py +5 -5
- nabu/preproc/tests/test_double_flatfield.py +2 -2
- nabu/preproc/tests/test_vshift.py +13 -2
- nabu/processing/__init__.py +0 -0
- nabu/processing/convolution_cuda.py +375 -0
- nabu/processing/fft_base.py +163 -0
- nabu/processing/fft_cuda.py +256 -0
- nabu/processing/fft_opencl.py +54 -0
- nabu/processing/fftshift.py +134 -0
- nabu/processing/histogram.py +286 -0
- nabu/processing/histogram_cuda.py +103 -0
- nabu/processing/kernel_base.py +126 -0
- nabu/processing/medfilt_cuda.py +159 -0
- nabu/processing/muladd.py +29 -0
- nabu/processing/muladd_cuda.py +68 -0
- nabu/processing/padding_base.py +71 -0
- nabu/processing/padding_cuda.py +75 -0
- nabu/processing/padding_opencl.py +77 -0
- nabu/processing/processing_base.py +123 -0
- nabu/processing/roll_opencl.py +64 -0
- nabu/processing/rotation.py +63 -0
- nabu/processing/rotation_cuda.py +66 -0
- nabu/processing/tests/__init__.py +0 -0
- nabu/processing/tests/test_fft.py +268 -0
- nabu/processing/tests/test_fftshift.py +71 -0
- nabu/{misc → processing}/tests/test_histogram.py +2 -4
- nabu/{cuda → processing}/tests/test_medfilt.py +1 -1
- nabu/processing/tests/test_muladd.py +54 -0
- nabu/{cuda → processing}/tests/test_padding.py +119 -75
- nabu/processing/tests/test_roll.py +63 -0
- nabu/{misc → processing}/tests/test_rotation.py +3 -2
- nabu/processing/tests/test_transpose.py +72 -0
- nabu/{misc → processing}/tests/test_unsharp.py +41 -8
- nabu/processing/transpose.py +126 -0
- nabu/processing/unsharp.py +79 -0
- nabu/processing/unsharp_cuda.py +53 -0
- nabu/processing/unsharp_opencl.py +75 -0
- nabu/reconstruction/fbp.py +34 -10
- nabu/reconstruction/fbp_base.py +35 -16
- nabu/reconstruction/fbp_opencl.py +7 -12
- nabu/reconstruction/filtering.py +2 -2
- nabu/reconstruction/filtering_cuda.py +13 -14
- nabu/reconstruction/filtering_opencl.py +3 -4
- nabu/reconstruction/projection.py +2 -0
- nabu/reconstruction/rings.py +158 -1
- nabu/reconstruction/rings_cuda.py +218 -58
- nabu/reconstruction/sinogram_cuda.py +16 -12
- nabu/reconstruction/tests/test_deringer.py +116 -14
- nabu/reconstruction/tests/test_fbp.py +22 -31
- nabu/reconstruction/tests/test_filtering.py +11 -2
- nabu/resources/dataset_analyzer.py +89 -26
- nabu/resources/nxflatfield.py +2 -2
- nabu/resources/tests/test_nxflatfield.py +1 -1
- nabu/resources/utils.py +9 -2
- nabu/stitching/alignment.py +184 -0
- nabu/stitching/config.py +241 -39
- nabu/stitching/definitions.py +6 -0
- nabu/stitching/frame_composition.py +4 -2
- nabu/stitching/overlap.py +99 -3
- nabu/stitching/sample_normalization.py +60 -0
- nabu/stitching/slurm_utils.py +10 -10
- nabu/stitching/tests/test_alignment.py +99 -0
- nabu/stitching/tests/test_config.py +16 -1
- nabu/stitching/tests/test_overlap.py +68 -2
- nabu/stitching/tests/test_sample_normalization.py +49 -0
- nabu/stitching/tests/test_slurm_utils.py +5 -5
- nabu/stitching/tests/test_utils.py +3 -33
- nabu/stitching/tests/test_z_stitching.py +391 -22
- nabu/stitching/utils.py +144 -202
- nabu/stitching/z_stitching.py +309 -126
- nabu/testutils.py +18 -0
- nabu/thirdparty/tomocupy_remove_stripe.py +586 -0
- nabu/utils.py +32 -6
- {nabu-2023.2.1.dist-info → nabu-2024.1.0rc3.dist-info}/LICENSE +1 -1
- {nabu-2023.2.1.dist-info → nabu-2024.1.0rc3.dist-info}/METADATA +5 -5
- nabu-2024.1.0rc3.dist-info/RECORD +296 -0
- {nabu-2023.2.1.dist-info → nabu-2024.1.0rc3.dist-info}/WHEEL +1 -1
- {nabu-2023.2.1.dist-info → nabu-2024.1.0rc3.dist-info}/entry_points.txt +5 -1
- nabu/conftest.py +0 -14
- nabu/opencl/fftshift.py +0 -92
- nabu/opencl/tests/test_fftshift.py +0 -55
- nabu/opencl/tests/test_padding.py +0 -84
- nabu-2023.2.1.dist-info/RECORD +0 -252
- /nabu/cuda/src/{fftshift.cu → dfi_fftshift.cu} +0 -0
- {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:
|
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-
|
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
|
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.
|
73
|
-
Requires-Dist:
|
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,,
|
@@ -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:
|
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"
|