nabu 2024.1.0rc4__py3-none-any.whl → 2024.1.1__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 (2092) hide show
  1. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/doc/conf.py +137 -0
  2. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/doc/create_conf_doc.py +38 -0
  3. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/doc/get_mathjax.py +34 -0
  4. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/__init__.py +17 -0
  5. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/bootstrap.py +88 -0
  6. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/bootstrap_stitching.py +69 -0
  7. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/cast_volume.py +272 -0
  8. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/cli_configs.py +626 -0
  9. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/compare_volumes.py +94 -0
  10. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/composite_cor.py +144 -0
  11. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/correct_rot.py +70 -0
  12. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/create_distortion_map_from_poly.py +153 -0
  13. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/diag_to_pix.py +358 -0
  14. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/diag_to_rot.py +449 -0
  15. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/double_flatfield.py +143 -0
  16. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/generate_header.py +261 -0
  17. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/histogram.py +197 -0
  18. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/multicor.py +90 -0
  19. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/nx_z_splitter.py +125 -0
  20. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/parse_reconstruction_log.py +151 -0
  21. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/prepare_weights_double.py +163 -0
  22. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/reconstruct.py +120 -0
  23. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/reconstruct_helical.py +116 -0
  24. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/reduce_dark_flat.py +181 -0
  25. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/rotate.py +162 -0
  26. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/shrink_dataset.py +98 -0
  27. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/stitching.py +85 -0
  28. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/tests/test_reduce_dark_flat.py +78 -0
  29. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/utils.py +33 -0
  30. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/validator.py +110 -0
  31. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/cuda/__init__.py +0 -0
  32. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/cuda/convolution.py +8 -0
  33. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/cuda/fft.py +4 -0
  34. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/cuda/kernel.py +97 -0
  35. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/cuda/medfilt.py +6 -0
  36. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/cuda/padding.py +6 -0
  37. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/cuda/processing.py +75 -0
  38. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/cuda/tests/__init__.py +1 -0
  39. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/cuda/utils.py +331 -0
  40. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/__init__.py +12 -0
  41. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/alignment.py +578 -0
  42. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/cor.py +1621 -0
  43. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/cor_sino.py +183 -0
  44. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/distortion.py +112 -0
  45. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/focus.py +362 -0
  46. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/tests/__init__.py +0 -0
  47. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/tests/test_alignment.py +70 -0
  48. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/tests/test_cor.py +472 -0
  49. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/tests/test_focus.py +105 -0
  50. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/tests/test_tilt.py +41 -0
  51. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/tests/test_translation.py +78 -0
  52. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/tilt.py +214 -0
  53. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/translation.py +193 -0
  54. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/utils.py +39 -0
  55. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/__init__.py +2 -0
  56. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/cast_volume.py +371 -0
  57. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/detector_distortion.py +305 -0
  58. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/reader.py +628 -0
  59. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/reader_helical.py +114 -0
  60. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/tests/__init__.py +0 -0
  61. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/tests/test_cast_volume.py +339 -0
  62. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/tests/test_detector_distortion.py +178 -0
  63. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/tests/test_writers.py +187 -0
  64. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/tiffwriter_zmm.py +99 -0
  65. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/utils.py +263 -0
  66. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/writer.py +892 -0
  67. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/__init__.py +0 -0
  68. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/binning.py +98 -0
  69. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/fftshift.py +6 -0
  70. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/filters.py +24 -0
  71. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/fourier_filters.py +152 -0
  72. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/histogram.py +6 -0
  73. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/histogram_cuda.py +8 -0
  74. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/kernel_base.py +4 -0
  75. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/padding.py +83 -0
  76. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/padding_base.py +6 -0
  77. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/processing_base.py +4 -0
  78. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/rotation.py +6 -0
  79. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/rotation_cuda.py +6 -0
  80. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/tests/__init__.py +1 -0
  81. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/tests/test_binning.py +48 -0
  82. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/tests/test_interpolation.py +70 -0
  83. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/transpose.py +6 -0
  84. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/unsharp.py +4 -0
  85. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/unsharp_cuda.py +6 -0
  86. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/unsharp_opencl.py +8 -0
  87. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/utils.py +117 -0
  88. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/opencl/__init__.py +0 -0
  89. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/opencl/fft.py +6 -0
  90. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/opencl/kernel.py +135 -0
  91. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/opencl/memcpy.py +35 -0
  92. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/opencl/padding.py +6 -0
  93. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/opencl/processing.py +62 -0
  94. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/opencl/tests/__init__.py +0 -0
  95. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/opencl/utils.py +292 -0
  96. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/__init__.py +0 -0
  97. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/config.py +265 -0
  98. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/config_validators.py +589 -0
  99. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/datadump.py +164 -0
  100. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/dataset_validator.py +211 -0
  101. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/detector_distortion_provider.py +20 -0
  102. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/estimators.py +1012 -0
  103. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/fallback_utils.py +149 -0
  104. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/fullfield/__init__.py +0 -0
  105. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/fullfield/chunked.py +849 -0
  106. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/fullfield/chunked_cuda.py +152 -0
  107. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/fullfield/computations.py +260 -0
  108. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/fullfield/dataset_validator.py +63 -0
  109. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/fullfield/nabu_config.py +590 -0
  110. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/fullfield/processconfig.py +825 -0
  111. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/fullfield/reconstruction.py +851 -0
  112. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/__init__.py +0 -0
  113. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/dataset_validator.py +19 -0
  114. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/fbp.py +147 -0
  115. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/filtering.py +246 -0
  116. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/gridded_accumulator.py +575 -0
  117. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/helical_chunked_regridded.py +1670 -0
  118. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/helical_chunked_regridded_cuda.py +119 -0
  119. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/helical_reconstruction.py +598 -0
  120. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/helical_utils.py +42 -0
  121. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/nabu_config.py +175 -0
  122. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/processconfig.py +62 -0
  123. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/span_strategy.py +483 -0
  124. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/tests/__init__.py +0 -0
  125. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/tests/test_accumulator.py +157 -0
  126. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/tests/test_pipeline_elements_full.py +355 -0
  127. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/tests/test_strategy.py +61 -0
  128. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/utils.py +51 -0
  129. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/weight_balancer.py +101 -0
  130. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/params.py +163 -0
  131. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/processconfig.py +210 -0
  132. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/tests/test_chunk_reader.py +78 -0
  133. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/tests/test_estimators.py +149 -0
  134. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/utils.py +116 -0
  135. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/writer.py +193 -0
  136. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/xrdct/__init__.py +0 -0
  137. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/__init__.py +7 -0
  138. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/alignment.py +11 -0
  139. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/ccd.py +161 -0
  140. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/ccd_cuda.py +169 -0
  141. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/ctf.py +361 -0
  142. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/ctf_cuda.py +142 -0
  143. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/distortion.py +92 -0
  144. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/double_flatfield.py +212 -0
  145. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/double_flatfield_cuda.py +174 -0
  146. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/double_flatfield_variable_region.py +68 -0
  147. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/flatfield.py +448 -0
  148. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/flatfield_cuda.py +144 -0
  149. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/flatfield_variable_region.py +79 -0
  150. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/phase.py +425 -0
  151. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/phase_cuda.py +143 -0
  152. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/shift.py +95 -0
  153. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/shift_cuda.py +102 -0
  154. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/tests/__init__.py +1 -0
  155. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/tests/test_ccd_corr.py +59 -0
  156. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/tests/test_ctf.py +250 -0
  157. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/tests/test_double_flatfield.py +86 -0
  158. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/tests/test_flatfield.py +626 -0
  159. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/tests/test_paganin.py +67 -0
  160. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/tests/test_vshift.py +73 -0
  161. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/__init__.py +0 -0
  162. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/convolution_cuda.py +375 -0
  163. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/fft_base.py +163 -0
  164. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/fft_cuda.py +256 -0
  165. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/fft_opencl.py +54 -0
  166. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/fftshift.py +134 -0
  167. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/histogram.py +286 -0
  168. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/histogram_cuda.py +103 -0
  169. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/kernel_base.py +126 -0
  170. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/medfilt_cuda.py +159 -0
  171. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/muladd.py +29 -0
  172. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/muladd_cuda.py +68 -0
  173. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/padding_base.py +71 -0
  174. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/padding_cuda.py +75 -0
  175. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/padding_opencl.py +77 -0
  176. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/processing_base.py +123 -0
  177. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/roll_opencl.py +64 -0
  178. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/rotation.py +63 -0
  179. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/rotation_cuda.py +66 -0
  180. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/__init__.py +0 -0
  181. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_fft.py +268 -0
  182. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_fftshift.py +71 -0
  183. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_histogram.py +55 -0
  184. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_medfilt.py +77 -0
  185. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_muladd.py +54 -0
  186. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_padding.py +247 -0
  187. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_roll.py +63 -0
  188. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_rotation.py +83 -0
  189. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_transpose.py +72 -0
  190. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_unsharp.py +106 -0
  191. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/transpose.py +126 -0
  192. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/unsharp.py +79 -0
  193. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/unsharp_cuda.py +53 -0
  194. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/unsharp_opencl.py +75 -0
  195. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/__init__.py +3 -0
  196. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/cone.py +241 -0
  197. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/fbp.py +124 -0
  198. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/fbp_base.py +391 -0
  199. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/fbp_opencl.py +78 -0
  200. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/filtering.py +220 -0
  201. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/filtering_cuda.py +103 -0
  202. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/filtering_opencl.py +111 -0
  203. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/projection.py +240 -0
  204. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/reconstructor.py +174 -0
  205. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/reconstructor_cuda.py +44 -0
  206. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/rings.py +248 -0
  207. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/rings_cuda.py +322 -0
  208. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/sinogram.py +467 -0
  209. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/sinogram_cuda.py +250 -0
  210. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/sinogram_opencl.py +40 -0
  211. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/tests/__init__.py +1 -0
  212. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_cone.py +308 -0
  213. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_deringer.py +220 -0
  214. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_fbp.py +252 -0
  215. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_filtering.py +133 -0
  216. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_halftomo.py +100 -0
  217. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_projector.py +164 -0
  218. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_reconstructor.py +93 -0
  219. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_sino_normalization.py +85 -0
  220. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/__init__.py +0 -0
  221. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/cli/__init__.py +0 -0
  222. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/cor.py +5 -0
  223. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/dataset_analyzer.py +469 -0
  224. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/gpu.py +169 -0
  225. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/logger.py +130 -0
  226. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/nxflatfield.py +217 -0
  227. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/templates/__init__.py +0 -0
  228. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/tests/__init__.py +0 -0
  229. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/tests/test_nxflatfield.py +104 -0
  230. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/tests/test_units.py +47 -0
  231. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/utils.py +174 -0
  232. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/__init__.py +0 -0
  233. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/alignment.py +184 -0
  234. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/config.py +1286 -0
  235. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/definitions.py +6 -0
  236. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/frame_composition.py +155 -0
  237. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/overlap.py +373 -0
  238. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/sample_normalization.py +60 -0
  239. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/slurm_utils.py +204 -0
  240. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/tests/__init__.py +0 -0
  241. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/tests/test_alignment.py +99 -0
  242. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/tests/test_config.py +226 -0
  243. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/tests/test_frame_composition.py +180 -0
  244. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/tests/test_overlap.py +98 -0
  245. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/tests/test_sample_normalization.py +49 -0
  246. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/tests/test_slurm_utils.py +146 -0
  247. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/tests/test_utils.py +21 -0
  248. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/tests/test_z_stitching.py +1183 -0
  249. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/utils.py +563 -0
  250. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/z_stitching.py +2279 -0
  251. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/tests.py +51 -0
  252. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/testutils.py +375 -0
  253. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/thirdparty/__init__.py +0 -0
  254. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/thirdparty/algotom_convert_sino.py +276 -0
  255. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/thirdparty/pore3d_deringer_munch.py +108 -0
  256. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/thirdparty/tomocupy_remove_stripe.py +586 -0
  257. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/thirdparty/tomopy_phase.py +239 -0
  258. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/thirdparty/tomwer_load_flats_darks.py +162 -0
  259. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/utils.py +836 -0
  260. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/doc/conf.py +137 -0
  261. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/doc/create_conf_doc.py +38 -0
  262. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/doc/get_mathjax.py +34 -0
  263. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/__init__.py +17 -0
  264. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/__init__.py +0 -0
  265. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/bootstrap.py +88 -0
  266. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/bootstrap_stitching.py +69 -0
  267. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/cast_volume.py +272 -0
  268. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/cli_configs.py +626 -0
  269. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/compare_volumes.py +94 -0
  270. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/composite_cor.py +144 -0
  271. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/correct_rot.py +70 -0
  272. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/create_distortion_map_from_poly.py +153 -0
  273. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/diag_to_pix.py +358 -0
  274. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/diag_to_rot.py +449 -0
  275. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/double_flatfield.py +143 -0
  276. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/generate_header.py +261 -0
  277. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/histogram.py +197 -0
  278. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/multicor.py +90 -0
  279. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/nx_z_splitter.py +125 -0
  280. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/parse_reconstruction_log.py +151 -0
  281. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/prepare_weights_double.py +163 -0
  282. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/reconstruct.py +120 -0
  283. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/reconstruct_helical.py +116 -0
  284. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/reduce_dark_flat.py +181 -0
  285. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/rotate.py +162 -0
  286. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/shrink_dataset.py +98 -0
  287. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/stitching.py +85 -0
  288. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/tests/test_reduce_dark_flat.py +78 -0
  289. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/utils.py +33 -0
  290. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/validator.py +110 -0
  291. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/cuda/__init__.py +0 -0
  292. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/cuda/convolution.py +8 -0
  293. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/cuda/fft.py +4 -0
  294. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/cuda/kernel.py +97 -0
  295. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/cuda/medfilt.py +6 -0
  296. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/cuda/padding.py +6 -0
  297. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/cuda/processing.py +75 -0
  298. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/cuda/tests/__init__.py +1 -0
  299. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/cuda/utils.py +331 -0
  300. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/__init__.py +12 -0
  301. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/alignment.py +578 -0
  302. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/cor.py +1621 -0
  303. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/cor_sino.py +183 -0
  304. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/distortion.py +112 -0
  305. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/focus.py +362 -0
  306. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/tests/__init__.py +0 -0
  307. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/tests/test_alignment.py +70 -0
  308. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/tests/test_cor.py +472 -0
  309. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/tests/test_focus.py +105 -0
  310. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/tests/test_tilt.py +41 -0
  311. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/tests/test_translation.py +78 -0
  312. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/tilt.py +214 -0
  313. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/translation.py +193 -0
  314. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/utils.py +39 -0
  315. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/__init__.py +2 -0
  316. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/cast_volume.py +371 -0
  317. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/detector_distortion.py +305 -0
  318. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/reader.py +628 -0
  319. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/reader_helical.py +114 -0
  320. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/tests/__init__.py +0 -0
  321. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/tests/test_cast_volume.py +339 -0
  322. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/tests/test_detector_distortion.py +178 -0
  323. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/tests/test_writers.py +187 -0
  324. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/tiffwriter_zmm.py +99 -0
  325. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/utils.py +263 -0
  326. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/writer.py +892 -0
  327. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/__init__.py +0 -0
  328. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/binning.py +98 -0
  329. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/fftshift.py +6 -0
  330. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/filters.py +24 -0
  331. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/fourier_filters.py +152 -0
  332. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/histogram.py +6 -0
  333. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/histogram_cuda.py +8 -0
  334. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/kernel_base.py +4 -0
  335. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/padding.py +83 -0
  336. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/padding_base.py +6 -0
  337. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/processing_base.py +4 -0
  338. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/rotation.py +6 -0
  339. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/rotation_cuda.py +6 -0
  340. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/tests/__init__.py +1 -0
  341. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/tests/test_binning.py +48 -0
  342. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/tests/test_interpolation.py +70 -0
  343. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/transpose.py +6 -0
  344. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/unsharp.py +4 -0
  345. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/unsharp_cuda.py +6 -0
  346. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/unsharp_opencl.py +8 -0
  347. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/utils.py +117 -0
  348. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/opencl/__init__.py +0 -0
  349. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/opencl/fft.py +6 -0
  350. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/opencl/kernel.py +135 -0
  351. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/opencl/memcpy.py +35 -0
  352. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/opencl/padding.py +6 -0
  353. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/opencl/processing.py +62 -0
  354. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/opencl/tests/__init__.py +0 -0
  355. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/opencl/utils.py +292 -0
  356. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/__init__.py +0 -0
  357. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/config.py +265 -0
  358. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/config_validators.py +589 -0
  359. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/datadump.py +164 -0
  360. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/dataset_validator.py +211 -0
  361. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/detector_distortion_provider.py +20 -0
  362. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/estimators.py +1012 -0
  363. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/fallback_utils.py +149 -0
  364. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/fullfield/__init__.py +0 -0
  365. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/fullfield/chunked.py +849 -0
  366. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/fullfield/chunked_cuda.py +152 -0
  367. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/fullfield/computations.py +260 -0
  368. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/fullfield/dataset_validator.py +63 -0
  369. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/fullfield/nabu_config.py +590 -0
  370. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/fullfield/processconfig.py +825 -0
  371. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/fullfield/reconstruction.py +851 -0
  372. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/__init__.py +0 -0
  373. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/dataset_validator.py +19 -0
  374. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/fbp.py +147 -0
  375. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/filtering.py +246 -0
  376. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/gridded_accumulator.py +575 -0
  377. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/helical_chunked_regridded.py +1670 -0
  378. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/helical_chunked_regridded_cuda.py +119 -0
  379. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/helical_reconstruction.py +598 -0
  380. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/helical_utils.py +42 -0
  381. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/nabu_config.py +175 -0
  382. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/processconfig.py +62 -0
  383. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/span_strategy.py +483 -0
  384. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/tests/__init__.py +0 -0
  385. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/tests/test_accumulator.py +157 -0
  386. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/tests/test_pipeline_elements_full.py +355 -0
  387. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/tests/test_strategy.py +61 -0
  388. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/utils.py +51 -0
  389. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/weight_balancer.py +101 -0
  390. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/params.py +163 -0
  391. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/processconfig.py +210 -0
  392. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/tests/test_chunk_reader.py +78 -0
  393. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/tests/test_estimators.py +149 -0
  394. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/utils.py +116 -0
  395. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/writer.py +193 -0
  396. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/xrdct/__init__.py +0 -0
  397. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/__init__.py +7 -0
  398. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/alignment.py +11 -0
  399. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/ccd.py +161 -0
  400. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/ccd_cuda.py +169 -0
  401. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/ctf.py +361 -0
  402. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/ctf_cuda.py +142 -0
  403. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/distortion.py +92 -0
  404. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/double_flatfield.py +212 -0
  405. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/double_flatfield_cuda.py +174 -0
  406. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/double_flatfield_variable_region.py +68 -0
  407. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/flatfield.py +448 -0
  408. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/flatfield_cuda.py +144 -0
  409. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/flatfield_variable_region.py +79 -0
  410. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/phase.py +425 -0
  411. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/phase_cuda.py +143 -0
  412. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/shift.py +95 -0
  413. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/shift_cuda.py +102 -0
  414. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/tests/__init__.py +1 -0
  415. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/tests/test_ccd_corr.py +59 -0
  416. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/tests/test_ctf.py +250 -0
  417. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/tests/test_double_flatfield.py +86 -0
  418. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/tests/test_flatfield.py +626 -0
  419. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/tests/test_paganin.py +67 -0
  420. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/tests/test_vshift.py +73 -0
  421. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/__init__.py +0 -0
  422. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/convolution_cuda.py +375 -0
  423. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/fft_base.py +163 -0
  424. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/fft_cuda.py +256 -0
  425. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/fft_opencl.py +54 -0
  426. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/fftshift.py +134 -0
  427. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/histogram.py +286 -0
  428. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/histogram_cuda.py +103 -0
  429. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/kernel_base.py +126 -0
  430. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/medfilt_cuda.py +159 -0
  431. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/muladd.py +29 -0
  432. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/muladd_cuda.py +68 -0
  433. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/padding_base.py +71 -0
  434. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/padding_cuda.py +75 -0
  435. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/padding_opencl.py +77 -0
  436. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/processing_base.py +123 -0
  437. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/roll_opencl.py +64 -0
  438. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/rotation.py +63 -0
  439. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/rotation_cuda.py +66 -0
  440. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/__init__.py +0 -0
  441. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_fft.py +268 -0
  442. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_fftshift.py +71 -0
  443. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_histogram.py +55 -0
  444. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_medfilt.py +77 -0
  445. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_muladd.py +54 -0
  446. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_padding.py +247 -0
  447. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_roll.py +63 -0
  448. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_rotation.py +83 -0
  449. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_transpose.py +72 -0
  450. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_unsharp.py +106 -0
  451. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/transpose.py +126 -0
  452. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/unsharp.py +79 -0
  453. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/unsharp_cuda.py +53 -0
  454. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/unsharp_opencl.py +75 -0
  455. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/__init__.py +3 -0
  456. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/cone.py +241 -0
  457. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/fbp.py +124 -0
  458. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/fbp_base.py +391 -0
  459. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/fbp_opencl.py +78 -0
  460. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/filtering.py +220 -0
  461. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/filtering_cuda.py +103 -0
  462. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/filtering_opencl.py +111 -0
  463. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/projection.py +240 -0
  464. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/reconstructor.py +174 -0
  465. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/reconstructor_cuda.py +44 -0
  466. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/rings.py +248 -0
  467. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/rings_cuda.py +322 -0
  468. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/sinogram.py +467 -0
  469. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/sinogram_cuda.py +250 -0
  470. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/sinogram_opencl.py +40 -0
  471. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/tests/__init__.py +1 -0
  472. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_cone.py +308 -0
  473. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_deringer.py +220 -0
  474. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_fbp.py +252 -0
  475. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_filtering.py +133 -0
  476. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_halftomo.py +100 -0
  477. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_projector.py +164 -0
  478. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_reconstructor.py +93 -0
  479. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_sino_normalization.py +85 -0
  480. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/__init__.py +0 -0
  481. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/cli/__init__.py +0 -0
  482. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/cor.py +5 -0
  483. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/dataset_analyzer.py +469 -0
  484. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/gpu.py +169 -0
  485. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/logger.py +130 -0
  486. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/nxflatfield.py +217 -0
  487. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/templates/__init__.py +0 -0
  488. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/tests/__init__.py +0 -0
  489. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/tests/test_nxflatfield.py +104 -0
  490. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/tests/test_units.py +47 -0
  491. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/utils.py +174 -0
  492. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/__init__.py +0 -0
  493. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/alignment.py +184 -0
  494. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/config.py +1286 -0
  495. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/definitions.py +6 -0
  496. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/frame_composition.py +155 -0
  497. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/overlap.py +373 -0
  498. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/sample_normalization.py +60 -0
  499. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/slurm_utils.py +204 -0
  500. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/tests/__init__.py +0 -0
  501. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/tests/test_alignment.py +99 -0
  502. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/tests/test_config.py +226 -0
  503. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/tests/test_frame_composition.py +180 -0
  504. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/tests/test_overlap.py +98 -0
  505. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/tests/test_sample_normalization.py +49 -0
  506. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/tests/test_slurm_utils.py +146 -0
  507. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/tests/test_utils.py +21 -0
  508. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/tests/test_z_stitching.py +1183 -0
  509. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/utils.py +563 -0
  510. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/z_stitching.py +2279 -0
  511. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/tests.py +51 -0
  512. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/testutils.py +375 -0
  513. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/thirdparty/__init__.py +0 -0
  514. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/thirdparty/algotom_convert_sino.py +276 -0
  515. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/thirdparty/pore3d_deringer_munch.py +108 -0
  516. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/thirdparty/tomocupy_remove_stripe.py +586 -0
  517. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/thirdparty/tomopy_phase.py +239 -0
  518. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/thirdparty/tomwer_load_flats_darks.py +162 -0
  519. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/utils.py +836 -0
  520. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/doc/conf.py +137 -0
  521. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/doc/create_conf_doc.py +38 -0
  522. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/doc/get_mathjax.py +34 -0
  523. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/__init__.py +17 -0
  524. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/__init__.py +0 -0
  525. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/bootstrap.py +88 -0
  526. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/bootstrap_stitching.py +69 -0
  527. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/cast_volume.py +272 -0
  528. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/cli_configs.py +626 -0
  529. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/compare_volumes.py +94 -0
  530. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/composite_cor.py +144 -0
  531. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/correct_rot.py +70 -0
  532. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/create_distortion_map_from_poly.py +153 -0
  533. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/diag_to_pix.py +358 -0
  534. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/diag_to_rot.py +449 -0
  535. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/double_flatfield.py +143 -0
  536. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/generate_header.py +261 -0
  537. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/histogram.py +197 -0
  538. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/multicor.py +90 -0
  539. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/nx_z_splitter.py +125 -0
  540. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/parse_reconstruction_log.py +151 -0
  541. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/prepare_weights_double.py +163 -0
  542. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/reconstruct.py +120 -0
  543. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/reconstruct_helical.py +116 -0
  544. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/reduce_dark_flat.py +181 -0
  545. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/rotate.py +162 -0
  546. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/shrink_dataset.py +98 -0
  547. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/stitching.py +85 -0
  548. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/tests/test_reduce_dark_flat.py +78 -0
  549. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/utils.py +33 -0
  550. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/validator.py +110 -0
  551. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/cuda/__init__.py +0 -0
  552. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/cuda/convolution.py +8 -0
  553. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/cuda/fft.py +4 -0
  554. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/cuda/kernel.py +97 -0
  555. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/cuda/medfilt.py +6 -0
  556. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/cuda/padding.py +6 -0
  557. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/cuda/processing.py +75 -0
  558. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/cuda/tests/__init__.py +1 -0
  559. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/cuda/utils.py +331 -0
  560. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/__init__.py +12 -0
  561. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/alignment.py +578 -0
  562. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/cor.py +1621 -0
  563. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/cor_sino.py +183 -0
  564. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/distortion.py +112 -0
  565. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/focus.py +362 -0
  566. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/tests/__init__.py +0 -0
  567. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/tests/test_alignment.py +70 -0
  568. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/tests/test_cor.py +472 -0
  569. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/tests/test_focus.py +105 -0
  570. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/tests/test_tilt.py +41 -0
  571. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/tests/test_translation.py +78 -0
  572. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/tilt.py +214 -0
  573. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/translation.py +193 -0
  574. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/utils.py +39 -0
  575. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/__init__.py +2 -0
  576. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/cast_volume.py +371 -0
  577. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/detector_distortion.py +305 -0
  578. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/reader.py +628 -0
  579. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/reader_helical.py +114 -0
  580. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/tests/__init__.py +0 -0
  581. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/tests/test_cast_volume.py +339 -0
  582. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/tests/test_detector_distortion.py +178 -0
  583. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/tests/test_writers.py +187 -0
  584. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/tiffwriter_zmm.py +99 -0
  585. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/utils.py +263 -0
  586. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/writer.py +892 -0
  587. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/__init__.py +0 -0
  588. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/binning.py +98 -0
  589. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/fftshift.py +6 -0
  590. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/filters.py +24 -0
  591. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/fourier_filters.py +152 -0
  592. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/histogram.py +6 -0
  593. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/histogram_cuda.py +8 -0
  594. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/kernel_base.py +4 -0
  595. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/padding.py +83 -0
  596. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/padding_base.py +6 -0
  597. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/processing_base.py +4 -0
  598. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/rotation.py +6 -0
  599. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/rotation_cuda.py +6 -0
  600. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/tests/__init__.py +1 -0
  601. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/tests/test_binning.py +48 -0
  602. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/tests/test_interpolation.py +70 -0
  603. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/transpose.py +6 -0
  604. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/unsharp.py +4 -0
  605. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/unsharp_cuda.py +6 -0
  606. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/unsharp_opencl.py +8 -0
  607. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/utils.py +117 -0
  608. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/opencl/__init__.py +0 -0
  609. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/opencl/fft.py +6 -0
  610. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/opencl/kernel.py +135 -0
  611. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/opencl/memcpy.py +35 -0
  612. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/opencl/padding.py +6 -0
  613. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/opencl/processing.py +62 -0
  614. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/opencl/tests/__init__.py +0 -0
  615. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/opencl/utils.py +292 -0
  616. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/__init__.py +0 -0
  617. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/config.py +265 -0
  618. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/config_validators.py +589 -0
  619. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/datadump.py +164 -0
  620. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/dataset_validator.py +211 -0
  621. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/detector_distortion_provider.py +20 -0
  622. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/estimators.py +1012 -0
  623. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/fallback_utils.py +149 -0
  624. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/fullfield/__init__.py +0 -0
  625. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/fullfield/chunked.py +849 -0
  626. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/fullfield/chunked_cuda.py +152 -0
  627. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/fullfield/computations.py +260 -0
  628. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/fullfield/dataset_validator.py +63 -0
  629. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/fullfield/nabu_config.py +590 -0
  630. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/fullfield/processconfig.py +825 -0
  631. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/fullfield/reconstruction.py +851 -0
  632. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/__init__.py +0 -0
  633. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/dataset_validator.py +19 -0
  634. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/fbp.py +147 -0
  635. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/filtering.py +246 -0
  636. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/gridded_accumulator.py +575 -0
  637. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/helical_chunked_regridded.py +1670 -0
  638. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/helical_chunked_regridded_cuda.py +119 -0
  639. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/helical_reconstruction.py +598 -0
  640. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/helical_utils.py +42 -0
  641. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/nabu_config.py +175 -0
  642. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/processconfig.py +62 -0
  643. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/span_strategy.py +483 -0
  644. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/tests/__init__.py +0 -0
  645. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/tests/test_accumulator.py +157 -0
  646. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/tests/test_pipeline_elements_full.py +355 -0
  647. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/tests/test_strategy.py +61 -0
  648. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/utils.py +51 -0
  649. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/weight_balancer.py +101 -0
  650. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/params.py +163 -0
  651. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/processconfig.py +210 -0
  652. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/tests/test_chunk_reader.py +78 -0
  653. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/tests/test_estimators.py +149 -0
  654. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/utils.py +116 -0
  655. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/writer.py +193 -0
  656. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/xrdct/__init__.py +0 -0
  657. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/__init__.py +7 -0
  658. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/alignment.py +11 -0
  659. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/ccd.py +161 -0
  660. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/ccd_cuda.py +169 -0
  661. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/ctf.py +361 -0
  662. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/ctf_cuda.py +142 -0
  663. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/distortion.py +92 -0
  664. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/double_flatfield.py +212 -0
  665. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/double_flatfield_cuda.py +174 -0
  666. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/double_flatfield_variable_region.py +68 -0
  667. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/flatfield.py +448 -0
  668. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/flatfield_cuda.py +144 -0
  669. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/flatfield_variable_region.py +79 -0
  670. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/phase.py +425 -0
  671. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/phase_cuda.py +143 -0
  672. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/shift.py +95 -0
  673. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/shift_cuda.py +102 -0
  674. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/tests/__init__.py +1 -0
  675. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/tests/test_ccd_corr.py +59 -0
  676. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/tests/test_ctf.py +250 -0
  677. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/tests/test_double_flatfield.py +86 -0
  678. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/tests/test_flatfield.py +626 -0
  679. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/tests/test_paganin.py +67 -0
  680. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/tests/test_vshift.py +73 -0
  681. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/__init__.py +0 -0
  682. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/convolution_cuda.py +375 -0
  683. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/fft_base.py +163 -0
  684. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/fft_cuda.py +256 -0
  685. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/fft_opencl.py +54 -0
  686. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/fftshift.py +134 -0
  687. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/histogram.py +286 -0
  688. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/histogram_cuda.py +103 -0
  689. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/kernel_base.py +126 -0
  690. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/medfilt_cuda.py +159 -0
  691. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/muladd.py +29 -0
  692. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/muladd_cuda.py +68 -0
  693. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/padding_base.py +71 -0
  694. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/padding_cuda.py +75 -0
  695. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/padding_opencl.py +77 -0
  696. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/processing_base.py +123 -0
  697. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/roll_opencl.py +64 -0
  698. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/rotation.py +63 -0
  699. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/rotation_cuda.py +66 -0
  700. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/__init__.py +0 -0
  701. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_fft.py +268 -0
  702. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_fftshift.py +71 -0
  703. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_histogram.py +55 -0
  704. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_medfilt.py +77 -0
  705. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_muladd.py +54 -0
  706. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_padding.py +247 -0
  707. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_roll.py +63 -0
  708. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_rotation.py +83 -0
  709. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_transpose.py +72 -0
  710. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_unsharp.py +106 -0
  711. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/transpose.py +126 -0
  712. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/unsharp.py +79 -0
  713. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/unsharp_cuda.py +53 -0
  714. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/unsharp_opencl.py +75 -0
  715. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/__init__.py +3 -0
  716. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/cone.py +241 -0
  717. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/fbp.py +124 -0
  718. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/fbp_base.py +391 -0
  719. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/fbp_opencl.py +78 -0
  720. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/filtering.py +220 -0
  721. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/filtering_cuda.py +103 -0
  722. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/filtering_opencl.py +111 -0
  723. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/projection.py +240 -0
  724. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/reconstructor.py +174 -0
  725. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/reconstructor_cuda.py +44 -0
  726. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/rings.py +248 -0
  727. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/rings_cuda.py +322 -0
  728. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/sinogram.py +467 -0
  729. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/sinogram_cuda.py +250 -0
  730. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/sinogram_opencl.py +40 -0
  731. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/tests/__init__.py +1 -0
  732. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_cone.py +308 -0
  733. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_deringer.py +220 -0
  734. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_fbp.py +252 -0
  735. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_filtering.py +133 -0
  736. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_halftomo.py +100 -0
  737. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_projector.py +164 -0
  738. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_reconstructor.py +93 -0
  739. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_sino_normalization.py +85 -0
  740. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/__init__.py +0 -0
  741. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/cli/__init__.py +0 -0
  742. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/cor.py +5 -0
  743. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/dataset_analyzer.py +469 -0
  744. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/gpu.py +169 -0
  745. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/logger.py +130 -0
  746. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/nxflatfield.py +217 -0
  747. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/templates/__init__.py +0 -0
  748. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/tests/__init__.py +0 -0
  749. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/tests/test_nxflatfield.py +104 -0
  750. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/tests/test_units.py +47 -0
  751. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/utils.py +174 -0
  752. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/__init__.py +0 -0
  753. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/alignment.py +184 -0
  754. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/config.py +1286 -0
  755. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/definitions.py +6 -0
  756. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/frame_composition.py +155 -0
  757. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/overlap.py +373 -0
  758. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/sample_normalization.py +60 -0
  759. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/slurm_utils.py +204 -0
  760. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/tests/__init__.py +0 -0
  761. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/tests/test_alignment.py +99 -0
  762. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/tests/test_config.py +226 -0
  763. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/tests/test_frame_composition.py +180 -0
  764. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/tests/test_overlap.py +98 -0
  765. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/tests/test_sample_normalization.py +49 -0
  766. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/tests/test_slurm_utils.py +146 -0
  767. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/tests/test_utils.py +21 -0
  768. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/tests/test_z_stitching.py +1183 -0
  769. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/utils.py +563 -0
  770. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/z_stitching.py +2279 -0
  771. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/tests.py +51 -0
  772. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/testutils.py +375 -0
  773. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/thirdparty/__init__.py +0 -0
  774. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/thirdparty/algotom_convert_sino.py +276 -0
  775. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/thirdparty/pore3d_deringer_munch.py +108 -0
  776. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/thirdparty/tomocupy_remove_stripe.py +586 -0
  777. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/thirdparty/tomopy_phase.py +239 -0
  778. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/thirdparty/tomwer_load_flats_darks.py +162 -0
  779. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/utils.py +836 -0
  780. build/lib/build/lib/build/lib/build/lib/build/lib/doc/conf.py +137 -0
  781. build/lib/build/lib/build/lib/build/lib/build/lib/doc/create_conf_doc.py +38 -0
  782. build/lib/build/lib/build/lib/build/lib/build/lib/doc/get_mathjax.py +34 -0
  783. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/__init__.py +17 -0
  784. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/__init__.py +0 -0
  785. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/bootstrap.py +88 -0
  786. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/bootstrap_stitching.py +69 -0
  787. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/cast_volume.py +272 -0
  788. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/cli_configs.py +626 -0
  789. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/compare_volumes.py +94 -0
  790. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/composite_cor.py +144 -0
  791. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/correct_rot.py +70 -0
  792. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/create_distortion_map_from_poly.py +153 -0
  793. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/diag_to_pix.py +358 -0
  794. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/diag_to_rot.py +449 -0
  795. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/double_flatfield.py +143 -0
  796. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/generate_header.py +261 -0
  797. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/histogram.py +197 -0
  798. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/multicor.py +90 -0
  799. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/nx_z_splitter.py +125 -0
  800. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/parse_reconstruction_log.py +151 -0
  801. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/prepare_weights_double.py +163 -0
  802. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/reconstruct.py +120 -0
  803. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/reconstruct_helical.py +116 -0
  804. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/reduce_dark_flat.py +181 -0
  805. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/rotate.py +162 -0
  806. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/shrink_dataset.py +98 -0
  807. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/stitching.py +85 -0
  808. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/tests/test_reduce_dark_flat.py +78 -0
  809. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/utils.py +33 -0
  810. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/validator.py +110 -0
  811. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/cuda/__init__.py +0 -0
  812. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/cuda/convolution.py +8 -0
  813. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/cuda/fft.py +4 -0
  814. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/cuda/kernel.py +97 -0
  815. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/cuda/medfilt.py +6 -0
  816. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/cuda/padding.py +6 -0
  817. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/cuda/processing.py +75 -0
  818. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/cuda/tests/__init__.py +1 -0
  819. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/cuda/utils.py +331 -0
  820. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/__init__.py +12 -0
  821. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/alignment.py +578 -0
  822. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/cor.py +1621 -0
  823. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/cor_sino.py +183 -0
  824. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/distortion.py +112 -0
  825. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/focus.py +362 -0
  826. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/tests/__init__.py +0 -0
  827. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/tests/test_alignment.py +70 -0
  828. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/tests/test_cor.py +472 -0
  829. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/tests/test_focus.py +105 -0
  830. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/tests/test_tilt.py +41 -0
  831. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/tests/test_translation.py +78 -0
  832. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/tilt.py +214 -0
  833. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/translation.py +193 -0
  834. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/utils.py +39 -0
  835. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/__init__.py +2 -0
  836. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/cast_volume.py +371 -0
  837. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/detector_distortion.py +305 -0
  838. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/reader.py +628 -0
  839. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/reader_helical.py +114 -0
  840. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/tests/__init__.py +0 -0
  841. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/tests/test_cast_volume.py +339 -0
  842. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/tests/test_detector_distortion.py +178 -0
  843. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/tests/test_writers.py +187 -0
  844. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/tiffwriter_zmm.py +99 -0
  845. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/utils.py +263 -0
  846. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/writer.py +892 -0
  847. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/__init__.py +0 -0
  848. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/binning.py +98 -0
  849. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/fftshift.py +6 -0
  850. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/filters.py +24 -0
  851. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/fourier_filters.py +152 -0
  852. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/histogram.py +6 -0
  853. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/histogram_cuda.py +8 -0
  854. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/kernel_base.py +4 -0
  855. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/padding.py +83 -0
  856. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/padding_base.py +6 -0
  857. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/processing_base.py +4 -0
  858. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/rotation.py +6 -0
  859. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/rotation_cuda.py +6 -0
  860. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/tests/__init__.py +1 -0
  861. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/tests/test_binning.py +48 -0
  862. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/tests/test_interpolation.py +70 -0
  863. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/transpose.py +6 -0
  864. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/unsharp.py +4 -0
  865. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/unsharp_cuda.py +6 -0
  866. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/unsharp_opencl.py +8 -0
  867. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/utils.py +117 -0
  868. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/opencl/__init__.py +0 -0
  869. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/opencl/fft.py +6 -0
  870. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/opencl/kernel.py +135 -0
  871. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/opencl/memcpy.py +35 -0
  872. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/opencl/padding.py +6 -0
  873. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/opencl/processing.py +62 -0
  874. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/opencl/tests/__init__.py +0 -0
  875. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/opencl/utils.py +292 -0
  876. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/__init__.py +0 -0
  877. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/config.py +265 -0
  878. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/config_validators.py +589 -0
  879. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/datadump.py +164 -0
  880. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/dataset_validator.py +211 -0
  881. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/detector_distortion_provider.py +20 -0
  882. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/estimators.py +1012 -0
  883. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/fallback_utils.py +149 -0
  884. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/fullfield/__init__.py +0 -0
  885. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/fullfield/chunked.py +849 -0
  886. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/fullfield/chunked_cuda.py +152 -0
  887. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/fullfield/computations.py +260 -0
  888. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/fullfield/dataset_validator.py +63 -0
  889. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/fullfield/nabu_config.py +590 -0
  890. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/fullfield/processconfig.py +825 -0
  891. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/fullfield/reconstruction.py +851 -0
  892. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/__init__.py +0 -0
  893. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/dataset_validator.py +19 -0
  894. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/fbp.py +147 -0
  895. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/filtering.py +246 -0
  896. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/gridded_accumulator.py +575 -0
  897. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/helical_chunked_regridded.py +1670 -0
  898. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/helical_chunked_regridded_cuda.py +119 -0
  899. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/helical_reconstruction.py +598 -0
  900. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/helical_utils.py +42 -0
  901. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/nabu_config.py +175 -0
  902. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/processconfig.py +62 -0
  903. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/span_strategy.py +483 -0
  904. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/tests/__init__.py +0 -0
  905. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/tests/test_accumulator.py +157 -0
  906. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/tests/test_pipeline_elements_full.py +355 -0
  907. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/tests/test_strategy.py +61 -0
  908. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/utils.py +51 -0
  909. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/weight_balancer.py +101 -0
  910. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/params.py +163 -0
  911. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/processconfig.py +210 -0
  912. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/tests/test_chunk_reader.py +78 -0
  913. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/tests/test_estimators.py +149 -0
  914. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/utils.py +116 -0
  915. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/writer.py +193 -0
  916. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/xrdct/__init__.py +0 -0
  917. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/__init__.py +7 -0
  918. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/alignment.py +11 -0
  919. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/ccd.py +161 -0
  920. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/ccd_cuda.py +169 -0
  921. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/ctf.py +361 -0
  922. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/ctf_cuda.py +142 -0
  923. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/distortion.py +92 -0
  924. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/double_flatfield.py +212 -0
  925. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/double_flatfield_cuda.py +174 -0
  926. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/double_flatfield_variable_region.py +68 -0
  927. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/flatfield.py +448 -0
  928. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/flatfield_cuda.py +144 -0
  929. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/flatfield_variable_region.py +79 -0
  930. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/phase.py +425 -0
  931. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/phase_cuda.py +143 -0
  932. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/shift.py +95 -0
  933. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/shift_cuda.py +102 -0
  934. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/tests/__init__.py +1 -0
  935. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/tests/test_ccd_corr.py +59 -0
  936. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/tests/test_ctf.py +250 -0
  937. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/tests/test_double_flatfield.py +86 -0
  938. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/tests/test_flatfield.py +626 -0
  939. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/tests/test_paganin.py +67 -0
  940. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/tests/test_vshift.py +73 -0
  941. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/__init__.py +0 -0
  942. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/convolution_cuda.py +375 -0
  943. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/fft_base.py +163 -0
  944. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/fft_cuda.py +256 -0
  945. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/fft_opencl.py +54 -0
  946. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/fftshift.py +134 -0
  947. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/histogram.py +286 -0
  948. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/histogram_cuda.py +103 -0
  949. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/kernel_base.py +126 -0
  950. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/medfilt_cuda.py +159 -0
  951. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/muladd.py +29 -0
  952. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/muladd_cuda.py +68 -0
  953. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/padding_base.py +71 -0
  954. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/padding_cuda.py +75 -0
  955. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/padding_opencl.py +77 -0
  956. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/processing_base.py +123 -0
  957. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/roll_opencl.py +64 -0
  958. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/rotation.py +63 -0
  959. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/rotation_cuda.py +66 -0
  960. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/__init__.py +0 -0
  961. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_fft.py +268 -0
  962. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_fftshift.py +71 -0
  963. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_histogram.py +55 -0
  964. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_medfilt.py +77 -0
  965. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_muladd.py +54 -0
  966. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_padding.py +247 -0
  967. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_roll.py +63 -0
  968. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_rotation.py +83 -0
  969. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_transpose.py +72 -0
  970. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_unsharp.py +106 -0
  971. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/transpose.py +126 -0
  972. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/unsharp.py +79 -0
  973. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/unsharp_cuda.py +53 -0
  974. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/unsharp_opencl.py +75 -0
  975. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/__init__.py +3 -0
  976. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/cone.py +241 -0
  977. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/fbp.py +124 -0
  978. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/fbp_base.py +391 -0
  979. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/fbp_opencl.py +78 -0
  980. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/filtering.py +220 -0
  981. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/filtering_cuda.py +103 -0
  982. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/filtering_opencl.py +111 -0
  983. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/projection.py +240 -0
  984. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/reconstructor.py +174 -0
  985. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/reconstructor_cuda.py +44 -0
  986. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/rings.py +248 -0
  987. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/rings_cuda.py +322 -0
  988. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/sinogram.py +467 -0
  989. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/sinogram_cuda.py +250 -0
  990. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/sinogram_opencl.py +40 -0
  991. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/tests/__init__.py +1 -0
  992. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_cone.py +308 -0
  993. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_deringer.py +220 -0
  994. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_fbp.py +252 -0
  995. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_filtering.py +133 -0
  996. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_halftomo.py +100 -0
  997. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_projector.py +164 -0
  998. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_reconstructor.py +93 -0
  999. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_sino_normalization.py +85 -0
  1000. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/__init__.py +0 -0
  1001. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/cli/__init__.py +0 -0
  1002. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/cor.py +5 -0
  1003. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/dataset_analyzer.py +469 -0
  1004. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/gpu.py +169 -0
  1005. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/logger.py +130 -0
  1006. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/nxflatfield.py +217 -0
  1007. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/templates/__init__.py +0 -0
  1008. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/tests/__init__.py +0 -0
  1009. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/tests/test_nxflatfield.py +104 -0
  1010. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/tests/test_units.py +47 -0
  1011. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/utils.py +174 -0
  1012. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/__init__.py +0 -0
  1013. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/alignment.py +184 -0
  1014. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/config.py +1286 -0
  1015. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/definitions.py +6 -0
  1016. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/frame_composition.py +155 -0
  1017. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/overlap.py +373 -0
  1018. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/sample_normalization.py +60 -0
  1019. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/slurm_utils.py +204 -0
  1020. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/tests/__init__.py +0 -0
  1021. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/tests/test_alignment.py +99 -0
  1022. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/tests/test_config.py +226 -0
  1023. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/tests/test_frame_composition.py +180 -0
  1024. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/tests/test_overlap.py +98 -0
  1025. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/tests/test_sample_normalization.py +49 -0
  1026. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/tests/test_slurm_utils.py +146 -0
  1027. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/tests/test_utils.py +21 -0
  1028. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/tests/test_z_stitching.py +1183 -0
  1029. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/utils.py +563 -0
  1030. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/z_stitching.py +2279 -0
  1031. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/tests.py +51 -0
  1032. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/testutils.py +375 -0
  1033. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/thirdparty/__init__.py +0 -0
  1034. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/thirdparty/algotom_convert_sino.py +276 -0
  1035. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/thirdparty/pore3d_deringer_munch.py +108 -0
  1036. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/thirdparty/tomocupy_remove_stripe.py +586 -0
  1037. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/thirdparty/tomopy_phase.py +239 -0
  1038. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/thirdparty/tomwer_load_flats_darks.py +162 -0
  1039. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/utils.py +836 -0
  1040. build/lib/build/lib/build/lib/build/lib/doc/conf.py +137 -0
  1041. build/lib/build/lib/build/lib/build/lib/doc/create_conf_doc.py +38 -0
  1042. build/lib/build/lib/build/lib/build/lib/doc/get_mathjax.py +34 -0
  1043. build/lib/build/lib/build/lib/build/lib/nabu/__init__.py +17 -0
  1044. build/lib/build/lib/build/lib/build/lib/nabu/app/__init__.py +0 -0
  1045. build/lib/build/lib/build/lib/build/lib/nabu/app/bootstrap.py +88 -0
  1046. build/lib/build/lib/build/lib/build/lib/nabu/app/bootstrap_stitching.py +69 -0
  1047. build/lib/build/lib/build/lib/build/lib/nabu/app/cast_volume.py +272 -0
  1048. build/lib/build/lib/build/lib/build/lib/nabu/app/cli_configs.py +626 -0
  1049. build/lib/build/lib/build/lib/build/lib/nabu/app/compare_volumes.py +94 -0
  1050. build/lib/build/lib/build/lib/build/lib/nabu/app/composite_cor.py +144 -0
  1051. build/lib/build/lib/build/lib/build/lib/nabu/app/correct_rot.py +70 -0
  1052. build/lib/build/lib/build/lib/build/lib/nabu/app/create_distortion_map_from_poly.py +153 -0
  1053. build/lib/build/lib/build/lib/build/lib/nabu/app/diag_to_pix.py +358 -0
  1054. build/lib/build/lib/build/lib/build/lib/nabu/app/diag_to_rot.py +449 -0
  1055. build/lib/build/lib/build/lib/build/lib/nabu/app/double_flatfield.py +143 -0
  1056. build/lib/build/lib/build/lib/build/lib/nabu/app/generate_header.py +261 -0
  1057. build/lib/build/lib/build/lib/build/lib/nabu/app/histogram.py +197 -0
  1058. build/lib/build/lib/build/lib/build/lib/nabu/app/multicor.py +90 -0
  1059. build/lib/build/lib/build/lib/build/lib/nabu/app/nx_z_splitter.py +125 -0
  1060. build/lib/build/lib/build/lib/build/lib/nabu/app/parse_reconstruction_log.py +151 -0
  1061. build/lib/build/lib/build/lib/build/lib/nabu/app/prepare_weights_double.py +163 -0
  1062. build/lib/build/lib/build/lib/build/lib/nabu/app/reconstruct.py +120 -0
  1063. build/lib/build/lib/build/lib/build/lib/nabu/app/reconstruct_helical.py +116 -0
  1064. build/lib/build/lib/build/lib/build/lib/nabu/app/reduce_dark_flat.py +181 -0
  1065. build/lib/build/lib/build/lib/build/lib/nabu/app/rotate.py +162 -0
  1066. build/lib/build/lib/build/lib/build/lib/nabu/app/shrink_dataset.py +98 -0
  1067. build/lib/build/lib/build/lib/build/lib/nabu/app/stitching.py +85 -0
  1068. build/lib/build/lib/build/lib/build/lib/nabu/app/tests/test_reduce_dark_flat.py +78 -0
  1069. build/lib/build/lib/build/lib/build/lib/nabu/app/utils.py +33 -0
  1070. build/lib/build/lib/build/lib/build/lib/nabu/app/validator.py +110 -0
  1071. build/lib/build/lib/build/lib/build/lib/nabu/cuda/__init__.py +0 -0
  1072. build/lib/build/lib/build/lib/build/lib/nabu/cuda/convolution.py +8 -0
  1073. build/lib/build/lib/build/lib/build/lib/nabu/cuda/fft.py +4 -0
  1074. build/lib/build/lib/build/lib/build/lib/nabu/cuda/kernel.py +97 -0
  1075. build/lib/build/lib/build/lib/build/lib/nabu/cuda/medfilt.py +6 -0
  1076. build/lib/build/lib/build/lib/build/lib/nabu/cuda/padding.py +6 -0
  1077. build/lib/build/lib/build/lib/build/lib/nabu/cuda/processing.py +75 -0
  1078. build/lib/build/lib/build/lib/build/lib/nabu/cuda/tests/__init__.py +1 -0
  1079. build/lib/build/lib/build/lib/build/lib/nabu/cuda/utils.py +331 -0
  1080. build/lib/build/lib/build/lib/build/lib/nabu/estimation/__init__.py +12 -0
  1081. build/lib/build/lib/build/lib/build/lib/nabu/estimation/alignment.py +578 -0
  1082. build/lib/build/lib/build/lib/build/lib/nabu/estimation/cor.py +1621 -0
  1083. build/lib/build/lib/build/lib/build/lib/nabu/estimation/cor_sino.py +183 -0
  1084. build/lib/build/lib/build/lib/build/lib/nabu/estimation/distortion.py +112 -0
  1085. build/lib/build/lib/build/lib/build/lib/nabu/estimation/focus.py +362 -0
  1086. build/lib/build/lib/build/lib/build/lib/nabu/estimation/tests/__init__.py +0 -0
  1087. build/lib/build/lib/build/lib/build/lib/nabu/estimation/tests/test_alignment.py +70 -0
  1088. build/lib/build/lib/build/lib/build/lib/nabu/estimation/tests/test_cor.py +472 -0
  1089. build/lib/build/lib/build/lib/build/lib/nabu/estimation/tests/test_focus.py +105 -0
  1090. build/lib/build/lib/build/lib/build/lib/nabu/estimation/tests/test_tilt.py +41 -0
  1091. build/lib/build/lib/build/lib/build/lib/nabu/estimation/tests/test_translation.py +78 -0
  1092. build/lib/build/lib/build/lib/build/lib/nabu/estimation/tilt.py +214 -0
  1093. build/lib/build/lib/build/lib/build/lib/nabu/estimation/translation.py +193 -0
  1094. build/lib/build/lib/build/lib/build/lib/nabu/estimation/utils.py +39 -0
  1095. build/lib/build/lib/build/lib/build/lib/nabu/io/__init__.py +2 -0
  1096. build/lib/build/lib/build/lib/build/lib/nabu/io/cast_volume.py +371 -0
  1097. build/lib/build/lib/build/lib/build/lib/nabu/io/detector_distortion.py +305 -0
  1098. build/lib/build/lib/build/lib/build/lib/nabu/io/reader.py +628 -0
  1099. build/lib/build/lib/build/lib/build/lib/nabu/io/reader_helical.py +114 -0
  1100. build/lib/build/lib/build/lib/build/lib/nabu/io/tests/__init__.py +0 -0
  1101. build/lib/build/lib/build/lib/build/lib/nabu/io/tests/test_cast_volume.py +339 -0
  1102. build/lib/build/lib/build/lib/build/lib/nabu/io/tests/test_detector_distortion.py +178 -0
  1103. build/lib/build/lib/build/lib/build/lib/nabu/io/tests/test_writers.py +187 -0
  1104. build/lib/build/lib/build/lib/build/lib/nabu/io/tiffwriter_zmm.py +99 -0
  1105. build/lib/build/lib/build/lib/build/lib/nabu/io/utils.py +263 -0
  1106. build/lib/build/lib/build/lib/build/lib/nabu/io/writer.py +892 -0
  1107. build/lib/build/lib/build/lib/build/lib/nabu/misc/__init__.py +0 -0
  1108. build/lib/build/lib/build/lib/build/lib/nabu/misc/binning.py +98 -0
  1109. build/lib/build/lib/build/lib/build/lib/nabu/misc/fftshift.py +6 -0
  1110. build/lib/build/lib/build/lib/build/lib/nabu/misc/filters.py +24 -0
  1111. build/lib/build/lib/build/lib/build/lib/nabu/misc/fourier_filters.py +152 -0
  1112. build/lib/build/lib/build/lib/build/lib/nabu/misc/histogram.py +6 -0
  1113. build/lib/build/lib/build/lib/build/lib/nabu/misc/histogram_cuda.py +8 -0
  1114. build/lib/build/lib/build/lib/build/lib/nabu/misc/kernel_base.py +4 -0
  1115. build/lib/build/lib/build/lib/build/lib/nabu/misc/padding.py +83 -0
  1116. build/lib/build/lib/build/lib/build/lib/nabu/misc/padding_base.py +6 -0
  1117. build/lib/build/lib/build/lib/build/lib/nabu/misc/processing_base.py +4 -0
  1118. build/lib/build/lib/build/lib/build/lib/nabu/misc/rotation.py +6 -0
  1119. build/lib/build/lib/build/lib/build/lib/nabu/misc/rotation_cuda.py +6 -0
  1120. build/lib/build/lib/build/lib/build/lib/nabu/misc/tests/__init__.py +1 -0
  1121. build/lib/build/lib/build/lib/build/lib/nabu/misc/tests/test_binning.py +48 -0
  1122. build/lib/build/lib/build/lib/build/lib/nabu/misc/tests/test_interpolation.py +70 -0
  1123. build/lib/build/lib/build/lib/build/lib/nabu/misc/transpose.py +6 -0
  1124. build/lib/build/lib/build/lib/build/lib/nabu/misc/unsharp.py +4 -0
  1125. build/lib/build/lib/build/lib/build/lib/nabu/misc/unsharp_cuda.py +6 -0
  1126. build/lib/build/lib/build/lib/build/lib/nabu/misc/unsharp_opencl.py +8 -0
  1127. build/lib/build/lib/build/lib/build/lib/nabu/misc/utils.py +117 -0
  1128. build/lib/build/lib/build/lib/build/lib/nabu/opencl/__init__.py +0 -0
  1129. build/lib/build/lib/build/lib/build/lib/nabu/opencl/fft.py +6 -0
  1130. build/lib/build/lib/build/lib/build/lib/nabu/opencl/kernel.py +135 -0
  1131. build/lib/build/lib/build/lib/build/lib/nabu/opencl/memcpy.py +35 -0
  1132. build/lib/build/lib/build/lib/build/lib/nabu/opencl/padding.py +6 -0
  1133. build/lib/build/lib/build/lib/build/lib/nabu/opencl/processing.py +62 -0
  1134. build/lib/build/lib/build/lib/build/lib/nabu/opencl/tests/__init__.py +0 -0
  1135. build/lib/build/lib/build/lib/build/lib/nabu/opencl/utils.py +292 -0
  1136. build/lib/build/lib/build/lib/build/lib/nabu/pipeline/__init__.py +0 -0
  1137. build/lib/build/lib/build/lib/build/lib/nabu/pipeline/config.py +265 -0
  1138. build/lib/build/lib/build/lib/build/lib/nabu/pipeline/config_validators.py +589 -0
  1139. build/lib/build/lib/build/lib/build/lib/nabu/pipeline/datadump.py +164 -0
  1140. build/lib/build/lib/build/lib/build/lib/nabu/pipeline/dataset_validator.py +211 -0
  1141. build/lib/build/lib/build/lib/build/lib/nabu/pipeline/detector_distortion_provider.py +20 -0
  1142. build/lib/build/lib/build/lib/build/lib/nabu/pipeline/estimators.py +1012 -0
  1143. build/lib/build/lib/build/lib/build/lib/nabu/pipeline/fallback_utils.py +149 -0
  1144. build/lib/build/lib/build/lib/build/lib/nabu/pipeline/fullfield/__init__.py +0 -0
  1145. build/lib/build/lib/build/lib/build/lib/nabu/pipeline/fullfield/chunked.py +849 -0
  1146. build/lib/build/lib/build/lib/build/lib/nabu/pipeline/fullfield/chunked_cuda.py +152 -0
  1147. build/lib/build/lib/build/lib/build/lib/nabu/pipeline/fullfield/computations.py +260 -0
  1148. build/lib/build/lib/build/lib/build/lib/nabu/pipeline/fullfield/dataset_validator.py +63 -0
  1149. build/lib/build/lib/build/lib/build/lib/nabu/pipeline/fullfield/nabu_config.py +590 -0
  1150. build/lib/build/lib/build/lib/build/lib/nabu/pipeline/fullfield/processconfig.py +825 -0
  1151. build/lib/build/lib/build/lib/build/lib/nabu/pipeline/fullfield/reconstruction.py +851 -0
  1152. build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/__init__.py +0 -0
  1153. build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/dataset_validator.py +19 -0
  1154. build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/fbp.py +147 -0
  1155. build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/filtering.py +246 -0
  1156. build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/gridded_accumulator.py +575 -0
  1157. build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/helical_chunked_regridded.py +1670 -0
  1158. build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/helical_chunked_regridded_cuda.py +119 -0
  1159. build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/helical_reconstruction.py +598 -0
  1160. build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/helical_utils.py +42 -0
  1161. build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/nabu_config.py +175 -0
  1162. build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/processconfig.py +62 -0
  1163. build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/span_strategy.py +483 -0
  1164. build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/tests/__init__.py +0 -0
  1165. build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/tests/test_accumulator.py +157 -0
  1166. build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/tests/test_pipeline_elements_full.py +355 -0
  1167. build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/tests/test_strategy.py +61 -0
  1168. build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/utils.py +51 -0
  1169. build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/weight_balancer.py +101 -0
  1170. build/lib/build/lib/build/lib/build/lib/nabu/pipeline/params.py +163 -0
  1171. build/lib/build/lib/build/lib/build/lib/nabu/pipeline/processconfig.py +210 -0
  1172. build/lib/build/lib/build/lib/build/lib/nabu/pipeline/tests/test_chunk_reader.py +78 -0
  1173. build/lib/build/lib/build/lib/build/lib/nabu/pipeline/tests/test_estimators.py +149 -0
  1174. build/lib/build/lib/build/lib/build/lib/nabu/pipeline/utils.py +116 -0
  1175. build/lib/build/lib/build/lib/build/lib/nabu/pipeline/writer.py +193 -0
  1176. build/lib/build/lib/build/lib/build/lib/nabu/pipeline/xrdct/__init__.py +0 -0
  1177. build/lib/build/lib/build/lib/build/lib/nabu/preproc/__init__.py +7 -0
  1178. build/lib/build/lib/build/lib/build/lib/nabu/preproc/alignment.py +11 -0
  1179. build/lib/build/lib/build/lib/build/lib/nabu/preproc/ccd.py +161 -0
  1180. build/lib/build/lib/build/lib/build/lib/nabu/preproc/ccd_cuda.py +169 -0
  1181. build/lib/build/lib/build/lib/build/lib/nabu/preproc/ctf.py +361 -0
  1182. build/lib/build/lib/build/lib/build/lib/nabu/preproc/ctf_cuda.py +142 -0
  1183. build/lib/build/lib/build/lib/build/lib/nabu/preproc/distortion.py +92 -0
  1184. build/lib/build/lib/build/lib/build/lib/nabu/preproc/double_flatfield.py +212 -0
  1185. build/lib/build/lib/build/lib/build/lib/nabu/preproc/double_flatfield_cuda.py +174 -0
  1186. build/lib/build/lib/build/lib/build/lib/nabu/preproc/double_flatfield_variable_region.py +68 -0
  1187. build/lib/build/lib/build/lib/build/lib/nabu/preproc/flatfield.py +448 -0
  1188. build/lib/build/lib/build/lib/build/lib/nabu/preproc/flatfield_cuda.py +144 -0
  1189. build/lib/build/lib/build/lib/build/lib/nabu/preproc/flatfield_variable_region.py +79 -0
  1190. build/lib/build/lib/build/lib/build/lib/nabu/preproc/phase.py +425 -0
  1191. build/lib/build/lib/build/lib/build/lib/nabu/preproc/phase_cuda.py +143 -0
  1192. build/lib/build/lib/build/lib/build/lib/nabu/preproc/shift.py +95 -0
  1193. build/lib/build/lib/build/lib/build/lib/nabu/preproc/shift_cuda.py +102 -0
  1194. build/lib/build/lib/build/lib/build/lib/nabu/preproc/tests/__init__.py +1 -0
  1195. build/lib/build/lib/build/lib/build/lib/nabu/preproc/tests/test_ccd_corr.py +59 -0
  1196. build/lib/build/lib/build/lib/build/lib/nabu/preproc/tests/test_ctf.py +250 -0
  1197. build/lib/build/lib/build/lib/build/lib/nabu/preproc/tests/test_double_flatfield.py +86 -0
  1198. build/lib/build/lib/build/lib/build/lib/nabu/preproc/tests/test_flatfield.py +626 -0
  1199. build/lib/build/lib/build/lib/build/lib/nabu/preproc/tests/test_paganin.py +67 -0
  1200. build/lib/build/lib/build/lib/build/lib/nabu/preproc/tests/test_vshift.py +73 -0
  1201. build/lib/build/lib/build/lib/build/lib/nabu/processing/__init__.py +0 -0
  1202. build/lib/build/lib/build/lib/build/lib/nabu/processing/convolution_cuda.py +375 -0
  1203. build/lib/build/lib/build/lib/build/lib/nabu/processing/fft_base.py +163 -0
  1204. build/lib/build/lib/build/lib/build/lib/nabu/processing/fft_cuda.py +256 -0
  1205. build/lib/build/lib/build/lib/build/lib/nabu/processing/fft_opencl.py +54 -0
  1206. build/lib/build/lib/build/lib/build/lib/nabu/processing/fftshift.py +134 -0
  1207. build/lib/build/lib/build/lib/build/lib/nabu/processing/histogram.py +286 -0
  1208. build/lib/build/lib/build/lib/build/lib/nabu/processing/histogram_cuda.py +103 -0
  1209. build/lib/build/lib/build/lib/build/lib/nabu/processing/kernel_base.py +126 -0
  1210. build/lib/build/lib/build/lib/build/lib/nabu/processing/medfilt_cuda.py +159 -0
  1211. build/lib/build/lib/build/lib/build/lib/nabu/processing/muladd.py +29 -0
  1212. build/lib/build/lib/build/lib/build/lib/nabu/processing/muladd_cuda.py +68 -0
  1213. build/lib/build/lib/build/lib/build/lib/nabu/processing/padding_base.py +71 -0
  1214. build/lib/build/lib/build/lib/build/lib/nabu/processing/padding_cuda.py +75 -0
  1215. build/lib/build/lib/build/lib/build/lib/nabu/processing/padding_opencl.py +77 -0
  1216. build/lib/build/lib/build/lib/build/lib/nabu/processing/processing_base.py +123 -0
  1217. build/lib/build/lib/build/lib/build/lib/nabu/processing/roll_opencl.py +64 -0
  1218. build/lib/build/lib/build/lib/build/lib/nabu/processing/rotation.py +63 -0
  1219. build/lib/build/lib/build/lib/build/lib/nabu/processing/rotation_cuda.py +66 -0
  1220. build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/__init__.py +0 -0
  1221. build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_fft.py +268 -0
  1222. build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_fftshift.py +71 -0
  1223. build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_histogram.py +55 -0
  1224. build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_medfilt.py +77 -0
  1225. build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_muladd.py +54 -0
  1226. build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_padding.py +247 -0
  1227. build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_roll.py +63 -0
  1228. build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_rotation.py +83 -0
  1229. build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_transpose.py +72 -0
  1230. build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_unsharp.py +106 -0
  1231. build/lib/build/lib/build/lib/build/lib/nabu/processing/transpose.py +126 -0
  1232. build/lib/build/lib/build/lib/build/lib/nabu/processing/unsharp.py +79 -0
  1233. build/lib/build/lib/build/lib/build/lib/nabu/processing/unsharp_cuda.py +53 -0
  1234. build/lib/build/lib/build/lib/build/lib/nabu/processing/unsharp_opencl.py +75 -0
  1235. build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/__init__.py +3 -0
  1236. build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/cone.py +241 -0
  1237. build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/fbp.py +124 -0
  1238. build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/fbp_base.py +391 -0
  1239. build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/fbp_opencl.py +78 -0
  1240. build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/filtering.py +220 -0
  1241. build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/filtering_cuda.py +103 -0
  1242. build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/filtering_opencl.py +111 -0
  1243. build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/projection.py +240 -0
  1244. build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/reconstructor.py +174 -0
  1245. build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/reconstructor_cuda.py +44 -0
  1246. build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/rings.py +248 -0
  1247. build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/rings_cuda.py +322 -0
  1248. build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/sinogram.py +467 -0
  1249. build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/sinogram_cuda.py +250 -0
  1250. build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/sinogram_opencl.py +40 -0
  1251. build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/tests/__init__.py +1 -0
  1252. build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_cone.py +308 -0
  1253. build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_deringer.py +220 -0
  1254. build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_fbp.py +252 -0
  1255. build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_filtering.py +133 -0
  1256. build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_halftomo.py +100 -0
  1257. build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_projector.py +164 -0
  1258. build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_reconstructor.py +93 -0
  1259. build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_sino_normalization.py +85 -0
  1260. build/lib/build/lib/build/lib/build/lib/nabu/resources/__init__.py +0 -0
  1261. build/lib/build/lib/build/lib/build/lib/nabu/resources/cli/__init__.py +0 -0
  1262. build/lib/build/lib/build/lib/build/lib/nabu/resources/cor.py +5 -0
  1263. build/lib/build/lib/build/lib/build/lib/nabu/resources/dataset_analyzer.py +469 -0
  1264. build/lib/build/lib/build/lib/build/lib/nabu/resources/gpu.py +169 -0
  1265. build/lib/build/lib/build/lib/build/lib/nabu/resources/logger.py +130 -0
  1266. build/lib/build/lib/build/lib/build/lib/nabu/resources/nxflatfield.py +217 -0
  1267. build/lib/build/lib/build/lib/build/lib/nabu/resources/templates/__init__.py +0 -0
  1268. build/lib/build/lib/build/lib/build/lib/nabu/resources/tests/__init__.py +0 -0
  1269. build/lib/build/lib/build/lib/build/lib/nabu/resources/tests/test_nxflatfield.py +104 -0
  1270. build/lib/build/lib/build/lib/build/lib/nabu/resources/tests/test_units.py +47 -0
  1271. build/lib/build/lib/build/lib/build/lib/nabu/resources/utils.py +174 -0
  1272. build/lib/build/lib/build/lib/build/lib/nabu/stitching/__init__.py +0 -0
  1273. build/lib/build/lib/build/lib/build/lib/nabu/stitching/alignment.py +184 -0
  1274. build/lib/build/lib/build/lib/build/lib/nabu/stitching/config.py +1286 -0
  1275. build/lib/build/lib/build/lib/build/lib/nabu/stitching/definitions.py +6 -0
  1276. build/lib/build/lib/build/lib/build/lib/nabu/stitching/frame_composition.py +155 -0
  1277. build/lib/build/lib/build/lib/build/lib/nabu/stitching/overlap.py +373 -0
  1278. build/lib/build/lib/build/lib/build/lib/nabu/stitching/sample_normalization.py +60 -0
  1279. build/lib/build/lib/build/lib/build/lib/nabu/stitching/slurm_utils.py +204 -0
  1280. build/lib/build/lib/build/lib/build/lib/nabu/stitching/tests/__init__.py +0 -0
  1281. build/lib/build/lib/build/lib/build/lib/nabu/stitching/tests/test_alignment.py +99 -0
  1282. build/lib/build/lib/build/lib/build/lib/nabu/stitching/tests/test_config.py +226 -0
  1283. build/lib/build/lib/build/lib/build/lib/nabu/stitching/tests/test_frame_composition.py +180 -0
  1284. build/lib/build/lib/build/lib/build/lib/nabu/stitching/tests/test_overlap.py +98 -0
  1285. build/lib/build/lib/build/lib/build/lib/nabu/stitching/tests/test_sample_normalization.py +49 -0
  1286. build/lib/build/lib/build/lib/build/lib/nabu/stitching/tests/test_slurm_utils.py +146 -0
  1287. build/lib/build/lib/build/lib/build/lib/nabu/stitching/tests/test_utils.py +21 -0
  1288. build/lib/build/lib/build/lib/build/lib/nabu/stitching/tests/test_z_stitching.py +1183 -0
  1289. build/lib/build/lib/build/lib/build/lib/nabu/stitching/utils.py +563 -0
  1290. build/lib/build/lib/build/lib/build/lib/nabu/stitching/z_stitching.py +2279 -0
  1291. build/lib/build/lib/build/lib/build/lib/nabu/tests.py +51 -0
  1292. build/lib/build/lib/build/lib/build/lib/nabu/testutils.py +375 -0
  1293. build/lib/build/lib/build/lib/build/lib/nabu/thirdparty/__init__.py +0 -0
  1294. build/lib/build/lib/build/lib/build/lib/nabu/thirdparty/algotom_convert_sino.py +276 -0
  1295. build/lib/build/lib/build/lib/build/lib/nabu/thirdparty/pore3d_deringer_munch.py +108 -0
  1296. build/lib/build/lib/build/lib/build/lib/nabu/thirdparty/tomocupy_remove_stripe.py +586 -0
  1297. build/lib/build/lib/build/lib/build/lib/nabu/thirdparty/tomopy_phase.py +239 -0
  1298. build/lib/build/lib/build/lib/build/lib/nabu/thirdparty/tomwer_load_flats_darks.py +162 -0
  1299. build/lib/build/lib/build/lib/build/lib/nabu/utils.py +836 -0
  1300. build/lib/build/lib/build/lib/doc/conf.py +137 -0
  1301. build/lib/build/lib/build/lib/doc/create_conf_doc.py +38 -0
  1302. build/lib/build/lib/build/lib/doc/get_mathjax.py +34 -0
  1303. build/lib/build/lib/build/lib/nabu/__init__.py +17 -0
  1304. build/lib/build/lib/build/lib/nabu/app/__init__.py +0 -0
  1305. build/lib/build/lib/build/lib/nabu/app/bootstrap.py +88 -0
  1306. build/lib/build/lib/build/lib/nabu/app/bootstrap_stitching.py +69 -0
  1307. build/lib/build/lib/build/lib/nabu/app/cast_volume.py +272 -0
  1308. build/lib/build/lib/build/lib/nabu/app/cli_configs.py +626 -0
  1309. build/lib/build/lib/build/lib/nabu/app/compare_volumes.py +94 -0
  1310. build/lib/build/lib/build/lib/nabu/app/composite_cor.py +144 -0
  1311. build/lib/build/lib/build/lib/nabu/app/correct_rot.py +70 -0
  1312. build/lib/build/lib/build/lib/nabu/app/create_distortion_map_from_poly.py +153 -0
  1313. build/lib/build/lib/build/lib/nabu/app/diag_to_pix.py +358 -0
  1314. build/lib/build/lib/build/lib/nabu/app/diag_to_rot.py +449 -0
  1315. build/lib/build/lib/build/lib/nabu/app/double_flatfield.py +143 -0
  1316. build/lib/build/lib/build/lib/nabu/app/generate_header.py +261 -0
  1317. build/lib/build/lib/build/lib/nabu/app/histogram.py +197 -0
  1318. build/lib/build/lib/build/lib/nabu/app/multicor.py +90 -0
  1319. build/lib/build/lib/build/lib/nabu/app/nx_z_splitter.py +125 -0
  1320. build/lib/build/lib/build/lib/nabu/app/parse_reconstruction_log.py +151 -0
  1321. build/lib/build/lib/build/lib/nabu/app/prepare_weights_double.py +163 -0
  1322. build/lib/build/lib/build/lib/nabu/app/reconstruct.py +120 -0
  1323. build/lib/build/lib/build/lib/nabu/app/reconstruct_helical.py +116 -0
  1324. build/lib/build/lib/build/lib/nabu/app/reduce_dark_flat.py +181 -0
  1325. build/lib/build/lib/build/lib/nabu/app/rotate.py +162 -0
  1326. build/lib/build/lib/build/lib/nabu/app/shrink_dataset.py +98 -0
  1327. build/lib/build/lib/build/lib/nabu/app/stitching.py +85 -0
  1328. build/lib/build/lib/build/lib/nabu/app/tests/test_reduce_dark_flat.py +78 -0
  1329. build/lib/build/lib/build/lib/nabu/app/utils.py +33 -0
  1330. build/lib/build/lib/build/lib/nabu/app/validator.py +110 -0
  1331. build/lib/build/lib/build/lib/nabu/cuda/__init__.py +0 -0
  1332. build/lib/build/lib/build/lib/nabu/cuda/convolution.py +8 -0
  1333. build/lib/build/lib/build/lib/nabu/cuda/fft.py +4 -0
  1334. build/lib/build/lib/build/lib/nabu/cuda/kernel.py +97 -0
  1335. build/lib/build/lib/build/lib/nabu/cuda/medfilt.py +6 -0
  1336. build/lib/build/lib/build/lib/nabu/cuda/padding.py +6 -0
  1337. build/lib/build/lib/build/lib/nabu/cuda/processing.py +75 -0
  1338. build/lib/build/lib/build/lib/nabu/cuda/tests/__init__.py +1 -0
  1339. build/lib/build/lib/build/lib/nabu/cuda/utils.py +331 -0
  1340. build/lib/build/lib/build/lib/nabu/estimation/__init__.py +12 -0
  1341. build/lib/build/lib/build/lib/nabu/estimation/alignment.py +578 -0
  1342. build/lib/build/lib/build/lib/nabu/estimation/cor.py +1621 -0
  1343. build/lib/build/lib/build/lib/nabu/estimation/cor_sino.py +183 -0
  1344. build/lib/build/lib/build/lib/nabu/estimation/distortion.py +112 -0
  1345. build/lib/build/lib/build/lib/nabu/estimation/focus.py +362 -0
  1346. build/lib/build/lib/build/lib/nabu/estimation/tests/__init__.py +0 -0
  1347. build/lib/build/lib/build/lib/nabu/estimation/tests/test_alignment.py +70 -0
  1348. build/lib/build/lib/build/lib/nabu/estimation/tests/test_cor.py +472 -0
  1349. build/lib/build/lib/build/lib/nabu/estimation/tests/test_focus.py +105 -0
  1350. build/lib/build/lib/build/lib/nabu/estimation/tests/test_tilt.py +41 -0
  1351. build/lib/build/lib/build/lib/nabu/estimation/tests/test_translation.py +78 -0
  1352. build/lib/build/lib/build/lib/nabu/estimation/tilt.py +214 -0
  1353. build/lib/build/lib/build/lib/nabu/estimation/translation.py +193 -0
  1354. build/lib/build/lib/build/lib/nabu/estimation/utils.py +39 -0
  1355. build/lib/build/lib/build/lib/nabu/io/__init__.py +2 -0
  1356. build/lib/build/lib/build/lib/nabu/io/cast_volume.py +371 -0
  1357. build/lib/build/lib/build/lib/nabu/io/detector_distortion.py +305 -0
  1358. build/lib/build/lib/build/lib/nabu/io/reader.py +628 -0
  1359. build/lib/build/lib/build/lib/nabu/io/reader_helical.py +114 -0
  1360. build/lib/build/lib/build/lib/nabu/io/tests/__init__.py +0 -0
  1361. build/lib/build/lib/build/lib/nabu/io/tests/test_cast_volume.py +339 -0
  1362. build/lib/build/lib/build/lib/nabu/io/tests/test_detector_distortion.py +178 -0
  1363. build/lib/build/lib/build/lib/nabu/io/tests/test_writers.py +187 -0
  1364. build/lib/build/lib/build/lib/nabu/io/tiffwriter_zmm.py +99 -0
  1365. build/lib/build/lib/build/lib/nabu/io/utils.py +263 -0
  1366. build/lib/build/lib/build/lib/nabu/io/writer.py +892 -0
  1367. build/lib/build/lib/build/lib/nabu/misc/__init__.py +0 -0
  1368. build/lib/build/lib/build/lib/nabu/misc/binning.py +98 -0
  1369. build/lib/build/lib/build/lib/nabu/misc/fftshift.py +6 -0
  1370. build/lib/build/lib/build/lib/nabu/misc/filters.py +24 -0
  1371. build/lib/build/lib/build/lib/nabu/misc/fourier_filters.py +152 -0
  1372. build/lib/build/lib/build/lib/nabu/misc/histogram.py +6 -0
  1373. build/lib/build/lib/build/lib/nabu/misc/histogram_cuda.py +8 -0
  1374. build/lib/build/lib/build/lib/nabu/misc/kernel_base.py +4 -0
  1375. build/lib/build/lib/build/lib/nabu/misc/padding.py +83 -0
  1376. build/lib/build/lib/build/lib/nabu/misc/padding_base.py +6 -0
  1377. build/lib/build/lib/build/lib/nabu/misc/processing_base.py +4 -0
  1378. build/lib/build/lib/build/lib/nabu/misc/rotation.py +6 -0
  1379. build/lib/build/lib/build/lib/nabu/misc/rotation_cuda.py +6 -0
  1380. build/lib/build/lib/build/lib/nabu/misc/tests/__init__.py +1 -0
  1381. build/lib/build/lib/build/lib/nabu/misc/tests/test_binning.py +48 -0
  1382. build/lib/build/lib/build/lib/nabu/misc/tests/test_interpolation.py +70 -0
  1383. build/lib/build/lib/build/lib/nabu/misc/transpose.py +6 -0
  1384. build/lib/build/lib/build/lib/nabu/misc/unsharp.py +4 -0
  1385. build/lib/build/lib/build/lib/nabu/misc/unsharp_cuda.py +6 -0
  1386. build/lib/build/lib/build/lib/nabu/misc/unsharp_opencl.py +8 -0
  1387. build/lib/build/lib/build/lib/nabu/misc/utils.py +117 -0
  1388. build/lib/build/lib/build/lib/nabu/opencl/__init__.py +0 -0
  1389. build/lib/build/lib/build/lib/nabu/opencl/fft.py +6 -0
  1390. build/lib/build/lib/build/lib/nabu/opencl/kernel.py +135 -0
  1391. build/lib/build/lib/build/lib/nabu/opencl/memcpy.py +35 -0
  1392. build/lib/build/lib/build/lib/nabu/opencl/padding.py +6 -0
  1393. build/lib/build/lib/build/lib/nabu/opencl/processing.py +62 -0
  1394. build/lib/build/lib/build/lib/nabu/opencl/tests/__init__.py +0 -0
  1395. build/lib/build/lib/build/lib/nabu/opencl/utils.py +292 -0
  1396. build/lib/build/lib/build/lib/nabu/pipeline/__init__.py +0 -0
  1397. build/lib/build/lib/build/lib/nabu/pipeline/config.py +265 -0
  1398. build/lib/build/lib/build/lib/nabu/pipeline/config_validators.py +589 -0
  1399. build/lib/build/lib/build/lib/nabu/pipeline/datadump.py +164 -0
  1400. build/lib/build/lib/build/lib/nabu/pipeline/dataset_validator.py +211 -0
  1401. build/lib/build/lib/build/lib/nabu/pipeline/detector_distortion_provider.py +20 -0
  1402. build/lib/build/lib/build/lib/nabu/pipeline/estimators.py +1012 -0
  1403. build/lib/build/lib/build/lib/nabu/pipeline/fallback_utils.py +149 -0
  1404. build/lib/build/lib/build/lib/nabu/pipeline/fullfield/__init__.py +0 -0
  1405. build/lib/build/lib/build/lib/nabu/pipeline/fullfield/chunked.py +849 -0
  1406. build/lib/build/lib/build/lib/nabu/pipeline/fullfield/chunked_cuda.py +152 -0
  1407. build/lib/build/lib/build/lib/nabu/pipeline/fullfield/computations.py +260 -0
  1408. build/lib/build/lib/build/lib/nabu/pipeline/fullfield/dataset_validator.py +63 -0
  1409. build/lib/build/lib/build/lib/nabu/pipeline/fullfield/nabu_config.py +590 -0
  1410. build/lib/build/lib/build/lib/nabu/pipeline/fullfield/processconfig.py +825 -0
  1411. build/lib/build/lib/build/lib/nabu/pipeline/fullfield/reconstruction.py +851 -0
  1412. build/lib/build/lib/build/lib/nabu/pipeline/helical/__init__.py +0 -0
  1413. build/lib/build/lib/build/lib/nabu/pipeline/helical/dataset_validator.py +19 -0
  1414. build/lib/build/lib/build/lib/nabu/pipeline/helical/fbp.py +147 -0
  1415. build/lib/build/lib/build/lib/nabu/pipeline/helical/filtering.py +246 -0
  1416. build/lib/build/lib/build/lib/nabu/pipeline/helical/gridded_accumulator.py +575 -0
  1417. build/lib/build/lib/build/lib/nabu/pipeline/helical/helical_chunked_regridded.py +1670 -0
  1418. build/lib/build/lib/build/lib/nabu/pipeline/helical/helical_chunked_regridded_cuda.py +119 -0
  1419. build/lib/build/lib/build/lib/nabu/pipeline/helical/helical_reconstruction.py +598 -0
  1420. build/lib/build/lib/build/lib/nabu/pipeline/helical/helical_utils.py +42 -0
  1421. build/lib/build/lib/build/lib/nabu/pipeline/helical/nabu_config.py +175 -0
  1422. build/lib/build/lib/build/lib/nabu/pipeline/helical/processconfig.py +62 -0
  1423. build/lib/build/lib/build/lib/nabu/pipeline/helical/span_strategy.py +483 -0
  1424. build/lib/build/lib/build/lib/nabu/pipeline/helical/tests/__init__.py +0 -0
  1425. build/lib/build/lib/build/lib/nabu/pipeline/helical/tests/test_accumulator.py +157 -0
  1426. build/lib/build/lib/build/lib/nabu/pipeline/helical/tests/test_pipeline_elements_full.py +355 -0
  1427. build/lib/build/lib/build/lib/nabu/pipeline/helical/tests/test_strategy.py +61 -0
  1428. build/lib/build/lib/build/lib/nabu/pipeline/helical/utils.py +51 -0
  1429. build/lib/build/lib/build/lib/nabu/pipeline/helical/weight_balancer.py +101 -0
  1430. build/lib/build/lib/build/lib/nabu/pipeline/params.py +163 -0
  1431. build/lib/build/lib/build/lib/nabu/pipeline/processconfig.py +210 -0
  1432. build/lib/build/lib/build/lib/nabu/pipeline/tests/test_chunk_reader.py +78 -0
  1433. build/lib/build/lib/build/lib/nabu/pipeline/tests/test_estimators.py +149 -0
  1434. build/lib/build/lib/build/lib/nabu/pipeline/utils.py +116 -0
  1435. build/lib/build/lib/build/lib/nabu/pipeline/writer.py +193 -0
  1436. build/lib/build/lib/build/lib/nabu/pipeline/xrdct/__init__.py +0 -0
  1437. build/lib/build/lib/build/lib/nabu/preproc/__init__.py +7 -0
  1438. build/lib/build/lib/build/lib/nabu/preproc/alignment.py +11 -0
  1439. build/lib/build/lib/build/lib/nabu/preproc/ccd.py +161 -0
  1440. build/lib/build/lib/build/lib/nabu/preproc/ccd_cuda.py +169 -0
  1441. build/lib/build/lib/build/lib/nabu/preproc/ctf.py +361 -0
  1442. build/lib/build/lib/build/lib/nabu/preproc/ctf_cuda.py +142 -0
  1443. build/lib/build/lib/build/lib/nabu/preproc/distortion.py +92 -0
  1444. build/lib/build/lib/build/lib/nabu/preproc/double_flatfield.py +212 -0
  1445. build/lib/build/lib/build/lib/nabu/preproc/double_flatfield_cuda.py +174 -0
  1446. build/lib/build/lib/build/lib/nabu/preproc/double_flatfield_variable_region.py +68 -0
  1447. build/lib/build/lib/build/lib/nabu/preproc/flatfield.py +448 -0
  1448. build/lib/build/lib/build/lib/nabu/preproc/flatfield_cuda.py +144 -0
  1449. build/lib/build/lib/build/lib/nabu/preproc/flatfield_variable_region.py +79 -0
  1450. build/lib/build/lib/build/lib/nabu/preproc/phase.py +425 -0
  1451. build/lib/build/lib/build/lib/nabu/preproc/phase_cuda.py +143 -0
  1452. build/lib/build/lib/build/lib/nabu/preproc/shift.py +95 -0
  1453. build/lib/build/lib/build/lib/nabu/preproc/shift_cuda.py +102 -0
  1454. build/lib/build/lib/build/lib/nabu/preproc/tests/__init__.py +1 -0
  1455. build/lib/build/lib/build/lib/nabu/preproc/tests/test_ccd_corr.py +59 -0
  1456. build/lib/build/lib/build/lib/nabu/preproc/tests/test_ctf.py +250 -0
  1457. build/lib/build/lib/build/lib/nabu/preproc/tests/test_double_flatfield.py +86 -0
  1458. build/lib/build/lib/build/lib/nabu/preproc/tests/test_flatfield.py +626 -0
  1459. build/lib/build/lib/build/lib/nabu/preproc/tests/test_paganin.py +67 -0
  1460. build/lib/build/lib/build/lib/nabu/preproc/tests/test_vshift.py +73 -0
  1461. build/lib/build/lib/build/lib/nabu/processing/__init__.py +0 -0
  1462. build/lib/build/lib/build/lib/nabu/processing/convolution_cuda.py +375 -0
  1463. build/lib/build/lib/build/lib/nabu/processing/fft_base.py +163 -0
  1464. build/lib/build/lib/build/lib/nabu/processing/fft_cuda.py +256 -0
  1465. build/lib/build/lib/build/lib/nabu/processing/fft_opencl.py +54 -0
  1466. build/lib/build/lib/build/lib/nabu/processing/fftshift.py +134 -0
  1467. build/lib/build/lib/build/lib/nabu/processing/histogram.py +286 -0
  1468. build/lib/build/lib/build/lib/nabu/processing/histogram_cuda.py +103 -0
  1469. build/lib/build/lib/build/lib/nabu/processing/kernel_base.py +126 -0
  1470. build/lib/build/lib/build/lib/nabu/processing/medfilt_cuda.py +159 -0
  1471. build/lib/build/lib/build/lib/nabu/processing/muladd.py +29 -0
  1472. build/lib/build/lib/build/lib/nabu/processing/muladd_cuda.py +68 -0
  1473. build/lib/build/lib/build/lib/nabu/processing/padding_base.py +71 -0
  1474. build/lib/build/lib/build/lib/nabu/processing/padding_cuda.py +75 -0
  1475. build/lib/build/lib/build/lib/nabu/processing/padding_opencl.py +77 -0
  1476. build/lib/build/lib/build/lib/nabu/processing/processing_base.py +123 -0
  1477. build/lib/build/lib/build/lib/nabu/processing/roll_opencl.py +64 -0
  1478. build/lib/build/lib/build/lib/nabu/processing/rotation.py +63 -0
  1479. build/lib/build/lib/build/lib/nabu/processing/rotation_cuda.py +66 -0
  1480. build/lib/build/lib/build/lib/nabu/processing/tests/__init__.py +0 -0
  1481. build/lib/build/lib/build/lib/nabu/processing/tests/test_fft.py +268 -0
  1482. build/lib/build/lib/build/lib/nabu/processing/tests/test_fftshift.py +71 -0
  1483. build/lib/build/lib/build/lib/nabu/processing/tests/test_histogram.py +55 -0
  1484. build/lib/build/lib/build/lib/nabu/processing/tests/test_medfilt.py +77 -0
  1485. build/lib/build/lib/build/lib/nabu/processing/tests/test_muladd.py +54 -0
  1486. build/lib/build/lib/build/lib/nabu/processing/tests/test_padding.py +247 -0
  1487. build/lib/build/lib/build/lib/nabu/processing/tests/test_roll.py +63 -0
  1488. build/lib/build/lib/build/lib/nabu/processing/tests/test_rotation.py +83 -0
  1489. build/lib/build/lib/build/lib/nabu/processing/tests/test_transpose.py +72 -0
  1490. build/lib/build/lib/build/lib/nabu/processing/tests/test_unsharp.py +106 -0
  1491. build/lib/build/lib/build/lib/nabu/processing/transpose.py +126 -0
  1492. build/lib/build/lib/build/lib/nabu/processing/unsharp.py +79 -0
  1493. build/lib/build/lib/build/lib/nabu/processing/unsharp_cuda.py +53 -0
  1494. build/lib/build/lib/build/lib/nabu/processing/unsharp_opencl.py +75 -0
  1495. build/lib/build/lib/build/lib/nabu/reconstruction/__init__.py +3 -0
  1496. build/lib/build/lib/build/lib/nabu/reconstruction/cone.py +241 -0
  1497. build/lib/build/lib/build/lib/nabu/reconstruction/fbp.py +124 -0
  1498. build/lib/build/lib/build/lib/nabu/reconstruction/fbp_base.py +391 -0
  1499. build/lib/build/lib/build/lib/nabu/reconstruction/fbp_opencl.py +78 -0
  1500. build/lib/build/lib/build/lib/nabu/reconstruction/filtering.py +220 -0
  1501. build/lib/build/lib/build/lib/nabu/reconstruction/filtering_cuda.py +103 -0
  1502. build/lib/build/lib/build/lib/nabu/reconstruction/filtering_opencl.py +111 -0
  1503. build/lib/build/lib/build/lib/nabu/reconstruction/projection.py +240 -0
  1504. build/lib/build/lib/build/lib/nabu/reconstruction/reconstructor.py +174 -0
  1505. build/lib/build/lib/build/lib/nabu/reconstruction/reconstructor_cuda.py +44 -0
  1506. build/lib/build/lib/build/lib/nabu/reconstruction/rings.py +248 -0
  1507. build/lib/build/lib/build/lib/nabu/reconstruction/rings_cuda.py +322 -0
  1508. build/lib/build/lib/build/lib/nabu/reconstruction/sinogram.py +467 -0
  1509. build/lib/build/lib/build/lib/nabu/reconstruction/sinogram_cuda.py +250 -0
  1510. build/lib/build/lib/build/lib/nabu/reconstruction/sinogram_opencl.py +40 -0
  1511. build/lib/build/lib/build/lib/nabu/reconstruction/tests/__init__.py +1 -0
  1512. build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_cone.py +308 -0
  1513. build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_deringer.py +220 -0
  1514. build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_fbp.py +252 -0
  1515. build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_filtering.py +133 -0
  1516. build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_halftomo.py +100 -0
  1517. build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_projector.py +164 -0
  1518. build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_reconstructor.py +93 -0
  1519. build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_sino_normalization.py +85 -0
  1520. build/lib/build/lib/build/lib/nabu/resources/__init__.py +0 -0
  1521. build/lib/build/lib/build/lib/nabu/resources/cli/__init__.py +0 -0
  1522. build/lib/build/lib/build/lib/nabu/resources/cor.py +5 -0
  1523. build/lib/build/lib/build/lib/nabu/resources/dataset_analyzer.py +469 -0
  1524. build/lib/build/lib/build/lib/nabu/resources/gpu.py +169 -0
  1525. build/lib/build/lib/build/lib/nabu/resources/logger.py +130 -0
  1526. build/lib/build/lib/build/lib/nabu/resources/nxflatfield.py +217 -0
  1527. build/lib/build/lib/build/lib/nabu/resources/templates/__init__.py +0 -0
  1528. build/lib/build/lib/build/lib/nabu/resources/tests/__init__.py +0 -0
  1529. build/lib/build/lib/build/lib/nabu/resources/tests/test_nxflatfield.py +104 -0
  1530. build/lib/build/lib/build/lib/nabu/resources/tests/test_units.py +47 -0
  1531. build/lib/build/lib/build/lib/nabu/resources/utils.py +174 -0
  1532. build/lib/build/lib/build/lib/nabu/stitching/__init__.py +0 -0
  1533. build/lib/build/lib/build/lib/nabu/stitching/alignment.py +184 -0
  1534. build/lib/build/lib/build/lib/nabu/stitching/config.py +1286 -0
  1535. build/lib/build/lib/build/lib/nabu/stitching/definitions.py +6 -0
  1536. build/lib/build/lib/build/lib/nabu/stitching/frame_composition.py +155 -0
  1537. build/lib/build/lib/build/lib/nabu/stitching/overlap.py +373 -0
  1538. build/lib/build/lib/build/lib/nabu/stitching/sample_normalization.py +60 -0
  1539. build/lib/build/lib/build/lib/nabu/stitching/slurm_utils.py +204 -0
  1540. build/lib/build/lib/build/lib/nabu/stitching/tests/__init__.py +0 -0
  1541. build/lib/build/lib/build/lib/nabu/stitching/tests/test_alignment.py +99 -0
  1542. build/lib/build/lib/build/lib/nabu/stitching/tests/test_config.py +226 -0
  1543. build/lib/build/lib/build/lib/nabu/stitching/tests/test_frame_composition.py +180 -0
  1544. build/lib/build/lib/build/lib/nabu/stitching/tests/test_overlap.py +98 -0
  1545. build/lib/build/lib/build/lib/nabu/stitching/tests/test_sample_normalization.py +49 -0
  1546. build/lib/build/lib/build/lib/nabu/stitching/tests/test_slurm_utils.py +146 -0
  1547. build/lib/build/lib/build/lib/nabu/stitching/tests/test_utils.py +21 -0
  1548. build/lib/build/lib/build/lib/nabu/stitching/tests/test_z_stitching.py +1183 -0
  1549. build/lib/build/lib/build/lib/nabu/stitching/utils.py +563 -0
  1550. build/lib/build/lib/build/lib/nabu/stitching/z_stitching.py +2279 -0
  1551. build/lib/build/lib/build/lib/nabu/tests.py +51 -0
  1552. build/lib/build/lib/build/lib/nabu/testutils.py +375 -0
  1553. build/lib/build/lib/build/lib/nabu/thirdparty/__init__.py +0 -0
  1554. build/lib/build/lib/build/lib/nabu/thirdparty/algotom_convert_sino.py +276 -0
  1555. build/lib/build/lib/build/lib/nabu/thirdparty/pore3d_deringer_munch.py +108 -0
  1556. build/lib/build/lib/build/lib/nabu/thirdparty/tomocupy_remove_stripe.py +586 -0
  1557. build/lib/build/lib/build/lib/nabu/thirdparty/tomopy_phase.py +239 -0
  1558. build/lib/build/lib/build/lib/nabu/thirdparty/tomwer_load_flats_darks.py +162 -0
  1559. build/lib/build/lib/build/lib/nabu/utils.py +836 -0
  1560. build/lib/build/lib/doc/conf.py +137 -0
  1561. build/lib/build/lib/doc/create_conf_doc.py +38 -0
  1562. build/lib/build/lib/doc/get_mathjax.py +34 -0
  1563. build/lib/build/lib/nabu/__init__.py +17 -0
  1564. build/lib/build/lib/nabu/app/__init__.py +0 -0
  1565. build/lib/build/lib/nabu/app/bootstrap.py +88 -0
  1566. build/lib/build/lib/nabu/app/bootstrap_stitching.py +69 -0
  1567. build/lib/build/lib/nabu/app/cast_volume.py +272 -0
  1568. build/lib/build/lib/nabu/app/cli_configs.py +626 -0
  1569. build/lib/build/lib/nabu/app/compare_volumes.py +94 -0
  1570. build/lib/build/lib/nabu/app/composite_cor.py +144 -0
  1571. build/lib/build/lib/nabu/app/correct_rot.py +70 -0
  1572. build/lib/build/lib/nabu/app/create_distortion_map_from_poly.py +153 -0
  1573. build/lib/build/lib/nabu/app/diag_to_pix.py +358 -0
  1574. build/lib/build/lib/nabu/app/diag_to_rot.py +449 -0
  1575. build/lib/build/lib/nabu/app/double_flatfield.py +143 -0
  1576. build/lib/build/lib/nabu/app/generate_header.py +261 -0
  1577. build/lib/build/lib/nabu/app/histogram.py +197 -0
  1578. build/lib/build/lib/nabu/app/multicor.py +90 -0
  1579. build/lib/build/lib/nabu/app/nx_z_splitter.py +125 -0
  1580. build/lib/build/lib/nabu/app/parse_reconstruction_log.py +151 -0
  1581. build/lib/build/lib/nabu/app/prepare_weights_double.py +163 -0
  1582. build/lib/build/lib/nabu/app/reconstruct.py +120 -0
  1583. build/lib/build/lib/nabu/app/reconstruct_helical.py +116 -0
  1584. build/lib/build/lib/nabu/app/reduce_dark_flat.py +181 -0
  1585. build/lib/build/lib/nabu/app/rotate.py +162 -0
  1586. build/lib/build/lib/nabu/app/shrink_dataset.py +98 -0
  1587. build/lib/build/lib/nabu/app/stitching.py +85 -0
  1588. build/lib/build/lib/nabu/app/tests/test_reduce_dark_flat.py +78 -0
  1589. build/lib/build/lib/nabu/app/utils.py +33 -0
  1590. build/lib/build/lib/nabu/app/validator.py +110 -0
  1591. build/lib/build/lib/nabu/cuda/__init__.py +0 -0
  1592. build/lib/build/lib/nabu/cuda/convolution.py +8 -0
  1593. build/lib/build/lib/nabu/cuda/fft.py +4 -0
  1594. build/lib/build/lib/nabu/cuda/kernel.py +97 -0
  1595. build/lib/build/lib/nabu/cuda/medfilt.py +6 -0
  1596. build/lib/build/lib/nabu/cuda/padding.py +6 -0
  1597. build/lib/build/lib/nabu/cuda/processing.py +75 -0
  1598. build/lib/build/lib/nabu/cuda/tests/__init__.py +1 -0
  1599. build/lib/build/lib/nabu/cuda/utils.py +331 -0
  1600. build/lib/build/lib/nabu/estimation/__init__.py +12 -0
  1601. build/lib/build/lib/nabu/estimation/alignment.py +578 -0
  1602. build/lib/build/lib/nabu/estimation/cor.py +1621 -0
  1603. build/lib/build/lib/nabu/estimation/cor_sino.py +183 -0
  1604. build/lib/build/lib/nabu/estimation/distortion.py +112 -0
  1605. build/lib/build/lib/nabu/estimation/focus.py +362 -0
  1606. build/lib/build/lib/nabu/estimation/tests/__init__.py +0 -0
  1607. build/lib/build/lib/nabu/estimation/tests/test_alignment.py +70 -0
  1608. build/lib/build/lib/nabu/estimation/tests/test_cor.py +472 -0
  1609. build/lib/build/lib/nabu/estimation/tests/test_focus.py +105 -0
  1610. build/lib/build/lib/nabu/estimation/tests/test_tilt.py +41 -0
  1611. build/lib/build/lib/nabu/estimation/tests/test_translation.py +78 -0
  1612. build/lib/build/lib/nabu/estimation/tilt.py +214 -0
  1613. build/lib/build/lib/nabu/estimation/translation.py +193 -0
  1614. build/lib/build/lib/nabu/estimation/utils.py +39 -0
  1615. build/lib/build/lib/nabu/io/__init__.py +2 -0
  1616. build/lib/build/lib/nabu/io/cast_volume.py +371 -0
  1617. build/lib/build/lib/nabu/io/detector_distortion.py +305 -0
  1618. build/lib/build/lib/nabu/io/reader.py +628 -0
  1619. build/lib/build/lib/nabu/io/reader_helical.py +114 -0
  1620. build/lib/build/lib/nabu/io/tests/__init__.py +0 -0
  1621. build/lib/build/lib/nabu/io/tests/test_cast_volume.py +339 -0
  1622. build/lib/build/lib/nabu/io/tests/test_detector_distortion.py +178 -0
  1623. build/lib/build/lib/nabu/io/tests/test_writers.py +187 -0
  1624. build/lib/build/lib/nabu/io/tiffwriter_zmm.py +99 -0
  1625. build/lib/build/lib/nabu/io/utils.py +263 -0
  1626. build/lib/build/lib/nabu/io/writer.py +892 -0
  1627. build/lib/build/lib/nabu/misc/__init__.py +0 -0
  1628. build/lib/build/lib/nabu/misc/binning.py +98 -0
  1629. build/lib/build/lib/nabu/misc/fftshift.py +6 -0
  1630. build/lib/build/lib/nabu/misc/filters.py +24 -0
  1631. build/lib/build/lib/nabu/misc/fourier_filters.py +152 -0
  1632. build/lib/build/lib/nabu/misc/histogram.py +6 -0
  1633. build/lib/build/lib/nabu/misc/histogram_cuda.py +8 -0
  1634. build/lib/build/lib/nabu/misc/kernel_base.py +4 -0
  1635. build/lib/build/lib/nabu/misc/padding.py +83 -0
  1636. build/lib/build/lib/nabu/misc/padding_base.py +6 -0
  1637. build/lib/build/lib/nabu/misc/processing_base.py +4 -0
  1638. build/lib/build/lib/nabu/misc/rotation.py +6 -0
  1639. build/lib/build/lib/nabu/misc/rotation_cuda.py +6 -0
  1640. build/lib/build/lib/nabu/misc/tests/__init__.py +1 -0
  1641. build/lib/build/lib/nabu/misc/tests/test_binning.py +48 -0
  1642. build/lib/build/lib/nabu/misc/tests/test_interpolation.py +70 -0
  1643. build/lib/build/lib/nabu/misc/transpose.py +6 -0
  1644. build/lib/build/lib/nabu/misc/unsharp.py +4 -0
  1645. build/lib/build/lib/nabu/misc/unsharp_cuda.py +6 -0
  1646. build/lib/build/lib/nabu/misc/unsharp_opencl.py +8 -0
  1647. build/lib/build/lib/nabu/misc/utils.py +117 -0
  1648. build/lib/build/lib/nabu/opencl/__init__.py +0 -0
  1649. build/lib/build/lib/nabu/opencl/fft.py +6 -0
  1650. build/lib/build/lib/nabu/opencl/kernel.py +135 -0
  1651. build/lib/build/lib/nabu/opencl/memcpy.py +35 -0
  1652. build/lib/build/lib/nabu/opencl/padding.py +6 -0
  1653. build/lib/build/lib/nabu/opencl/processing.py +62 -0
  1654. build/lib/build/lib/nabu/opencl/tests/__init__.py +0 -0
  1655. build/lib/build/lib/nabu/opencl/utils.py +292 -0
  1656. build/lib/build/lib/nabu/pipeline/__init__.py +0 -0
  1657. build/lib/build/lib/nabu/pipeline/config.py +265 -0
  1658. build/lib/build/lib/nabu/pipeline/config_validators.py +589 -0
  1659. build/lib/build/lib/nabu/pipeline/datadump.py +164 -0
  1660. build/lib/build/lib/nabu/pipeline/dataset_validator.py +211 -0
  1661. build/lib/build/lib/nabu/pipeline/detector_distortion_provider.py +20 -0
  1662. build/lib/build/lib/nabu/pipeline/estimators.py +1012 -0
  1663. build/lib/build/lib/nabu/pipeline/fallback_utils.py +149 -0
  1664. build/lib/build/lib/nabu/pipeline/fullfield/__init__.py +0 -0
  1665. build/lib/build/lib/nabu/pipeline/fullfield/chunked.py +849 -0
  1666. build/lib/build/lib/nabu/pipeline/fullfield/chunked_cuda.py +152 -0
  1667. build/lib/build/lib/nabu/pipeline/fullfield/computations.py +260 -0
  1668. build/lib/build/lib/nabu/pipeline/fullfield/dataset_validator.py +63 -0
  1669. build/lib/build/lib/nabu/pipeline/fullfield/nabu_config.py +590 -0
  1670. build/lib/build/lib/nabu/pipeline/fullfield/processconfig.py +825 -0
  1671. build/lib/build/lib/nabu/pipeline/fullfield/reconstruction.py +851 -0
  1672. build/lib/build/lib/nabu/pipeline/helical/__init__.py +0 -0
  1673. build/lib/build/lib/nabu/pipeline/helical/dataset_validator.py +19 -0
  1674. build/lib/build/lib/nabu/pipeline/helical/fbp.py +147 -0
  1675. build/lib/build/lib/nabu/pipeline/helical/filtering.py +246 -0
  1676. build/lib/build/lib/nabu/pipeline/helical/gridded_accumulator.py +575 -0
  1677. build/lib/build/lib/nabu/pipeline/helical/helical_chunked_regridded.py +1670 -0
  1678. build/lib/build/lib/nabu/pipeline/helical/helical_chunked_regridded_cuda.py +119 -0
  1679. build/lib/build/lib/nabu/pipeline/helical/helical_reconstruction.py +598 -0
  1680. build/lib/build/lib/nabu/pipeline/helical/helical_utils.py +42 -0
  1681. build/lib/build/lib/nabu/pipeline/helical/nabu_config.py +175 -0
  1682. build/lib/build/lib/nabu/pipeline/helical/processconfig.py +62 -0
  1683. build/lib/build/lib/nabu/pipeline/helical/span_strategy.py +483 -0
  1684. build/lib/build/lib/nabu/pipeline/helical/tests/__init__.py +0 -0
  1685. build/lib/build/lib/nabu/pipeline/helical/tests/test_accumulator.py +157 -0
  1686. build/lib/build/lib/nabu/pipeline/helical/tests/test_pipeline_elements_full.py +355 -0
  1687. build/lib/build/lib/nabu/pipeline/helical/tests/test_strategy.py +61 -0
  1688. build/lib/build/lib/nabu/pipeline/helical/utils.py +51 -0
  1689. build/lib/build/lib/nabu/pipeline/helical/weight_balancer.py +101 -0
  1690. build/lib/build/lib/nabu/pipeline/params.py +163 -0
  1691. build/lib/build/lib/nabu/pipeline/processconfig.py +210 -0
  1692. build/lib/build/lib/nabu/pipeline/tests/test_chunk_reader.py +78 -0
  1693. build/lib/build/lib/nabu/pipeline/tests/test_estimators.py +149 -0
  1694. build/lib/build/lib/nabu/pipeline/utils.py +116 -0
  1695. build/lib/build/lib/nabu/pipeline/writer.py +193 -0
  1696. build/lib/build/lib/nabu/pipeline/xrdct/__init__.py +0 -0
  1697. build/lib/build/lib/nabu/preproc/__init__.py +7 -0
  1698. build/lib/build/lib/nabu/preproc/alignment.py +11 -0
  1699. build/lib/build/lib/nabu/preproc/ccd.py +161 -0
  1700. build/lib/build/lib/nabu/preproc/ccd_cuda.py +169 -0
  1701. build/lib/build/lib/nabu/preproc/ctf.py +361 -0
  1702. build/lib/build/lib/nabu/preproc/ctf_cuda.py +142 -0
  1703. build/lib/build/lib/nabu/preproc/distortion.py +92 -0
  1704. build/lib/build/lib/nabu/preproc/double_flatfield.py +212 -0
  1705. build/lib/build/lib/nabu/preproc/double_flatfield_cuda.py +174 -0
  1706. build/lib/build/lib/nabu/preproc/double_flatfield_variable_region.py +68 -0
  1707. build/lib/build/lib/nabu/preproc/flatfield.py +448 -0
  1708. build/lib/build/lib/nabu/preproc/flatfield_cuda.py +144 -0
  1709. build/lib/build/lib/nabu/preproc/flatfield_variable_region.py +79 -0
  1710. build/lib/build/lib/nabu/preproc/phase.py +425 -0
  1711. build/lib/build/lib/nabu/preproc/phase_cuda.py +143 -0
  1712. build/lib/build/lib/nabu/preproc/shift.py +95 -0
  1713. build/lib/build/lib/nabu/preproc/shift_cuda.py +102 -0
  1714. build/lib/build/lib/nabu/preproc/tests/__init__.py +1 -0
  1715. build/lib/build/lib/nabu/preproc/tests/test_ccd_corr.py +59 -0
  1716. build/lib/build/lib/nabu/preproc/tests/test_ctf.py +250 -0
  1717. build/lib/build/lib/nabu/preproc/tests/test_double_flatfield.py +86 -0
  1718. build/lib/build/lib/nabu/preproc/tests/test_flatfield.py +626 -0
  1719. build/lib/build/lib/nabu/preproc/tests/test_paganin.py +67 -0
  1720. build/lib/build/lib/nabu/preproc/tests/test_vshift.py +73 -0
  1721. build/lib/build/lib/nabu/processing/__init__.py +0 -0
  1722. build/lib/build/lib/nabu/processing/convolution_cuda.py +375 -0
  1723. build/lib/build/lib/nabu/processing/fft_base.py +163 -0
  1724. build/lib/build/lib/nabu/processing/fft_cuda.py +256 -0
  1725. build/lib/build/lib/nabu/processing/fft_opencl.py +54 -0
  1726. build/lib/build/lib/nabu/processing/fftshift.py +134 -0
  1727. build/lib/build/lib/nabu/processing/histogram.py +286 -0
  1728. build/lib/build/lib/nabu/processing/histogram_cuda.py +103 -0
  1729. build/lib/build/lib/nabu/processing/kernel_base.py +126 -0
  1730. build/lib/build/lib/nabu/processing/medfilt_cuda.py +159 -0
  1731. build/lib/build/lib/nabu/processing/muladd.py +29 -0
  1732. build/lib/build/lib/nabu/processing/muladd_cuda.py +68 -0
  1733. build/lib/build/lib/nabu/processing/padding_base.py +71 -0
  1734. build/lib/build/lib/nabu/processing/padding_cuda.py +75 -0
  1735. build/lib/build/lib/nabu/processing/padding_opencl.py +77 -0
  1736. build/lib/build/lib/nabu/processing/processing_base.py +123 -0
  1737. build/lib/build/lib/nabu/processing/roll_opencl.py +64 -0
  1738. build/lib/build/lib/nabu/processing/rotation.py +63 -0
  1739. build/lib/build/lib/nabu/processing/rotation_cuda.py +66 -0
  1740. build/lib/build/lib/nabu/processing/tests/__init__.py +0 -0
  1741. build/lib/build/lib/nabu/processing/tests/test_fft.py +268 -0
  1742. build/lib/build/lib/nabu/processing/tests/test_fftshift.py +71 -0
  1743. build/lib/build/lib/nabu/processing/tests/test_histogram.py +55 -0
  1744. build/lib/build/lib/nabu/processing/tests/test_medfilt.py +77 -0
  1745. build/lib/build/lib/nabu/processing/tests/test_muladd.py +54 -0
  1746. build/lib/build/lib/nabu/processing/tests/test_padding.py +247 -0
  1747. build/lib/build/lib/nabu/processing/tests/test_roll.py +63 -0
  1748. build/lib/build/lib/nabu/processing/tests/test_rotation.py +83 -0
  1749. build/lib/build/lib/nabu/processing/tests/test_transpose.py +72 -0
  1750. build/lib/build/lib/nabu/processing/tests/test_unsharp.py +106 -0
  1751. build/lib/build/lib/nabu/processing/transpose.py +126 -0
  1752. build/lib/build/lib/nabu/processing/unsharp.py +79 -0
  1753. build/lib/build/lib/nabu/processing/unsharp_cuda.py +53 -0
  1754. build/lib/build/lib/nabu/processing/unsharp_opencl.py +75 -0
  1755. build/lib/build/lib/nabu/reconstruction/__init__.py +3 -0
  1756. build/lib/build/lib/nabu/reconstruction/cone.py +241 -0
  1757. build/lib/build/lib/nabu/reconstruction/fbp.py +124 -0
  1758. build/lib/build/lib/nabu/reconstruction/fbp_base.py +391 -0
  1759. build/lib/build/lib/nabu/reconstruction/fbp_opencl.py +78 -0
  1760. build/lib/build/lib/nabu/reconstruction/filtering.py +220 -0
  1761. build/lib/build/lib/nabu/reconstruction/filtering_cuda.py +103 -0
  1762. build/lib/build/lib/nabu/reconstruction/filtering_opencl.py +111 -0
  1763. build/lib/build/lib/nabu/reconstruction/projection.py +240 -0
  1764. build/lib/build/lib/nabu/reconstruction/reconstructor.py +174 -0
  1765. build/lib/build/lib/nabu/reconstruction/reconstructor_cuda.py +44 -0
  1766. build/lib/build/lib/nabu/reconstruction/rings.py +248 -0
  1767. build/lib/build/lib/nabu/reconstruction/rings_cuda.py +322 -0
  1768. build/lib/build/lib/nabu/reconstruction/sinogram.py +467 -0
  1769. build/lib/build/lib/nabu/reconstruction/sinogram_cuda.py +250 -0
  1770. build/lib/build/lib/nabu/reconstruction/sinogram_opencl.py +40 -0
  1771. build/lib/build/lib/nabu/reconstruction/tests/__init__.py +1 -0
  1772. build/lib/build/lib/nabu/reconstruction/tests/test_cone.py +308 -0
  1773. build/lib/build/lib/nabu/reconstruction/tests/test_deringer.py +220 -0
  1774. build/lib/build/lib/nabu/reconstruction/tests/test_fbp.py +252 -0
  1775. build/lib/build/lib/nabu/reconstruction/tests/test_filtering.py +133 -0
  1776. build/lib/build/lib/nabu/reconstruction/tests/test_halftomo.py +100 -0
  1777. build/lib/build/lib/nabu/reconstruction/tests/test_projector.py +164 -0
  1778. build/lib/build/lib/nabu/reconstruction/tests/test_reconstructor.py +93 -0
  1779. build/lib/build/lib/nabu/reconstruction/tests/test_sino_normalization.py +85 -0
  1780. build/lib/build/lib/nabu/resources/__init__.py +0 -0
  1781. build/lib/build/lib/nabu/resources/cli/__init__.py +0 -0
  1782. build/lib/build/lib/nabu/resources/cor.py +5 -0
  1783. build/lib/build/lib/nabu/resources/dataset_analyzer.py +469 -0
  1784. build/lib/build/lib/nabu/resources/gpu.py +169 -0
  1785. build/lib/build/lib/nabu/resources/logger.py +130 -0
  1786. build/lib/build/lib/nabu/resources/nxflatfield.py +217 -0
  1787. build/lib/build/lib/nabu/resources/templates/__init__.py +0 -0
  1788. build/lib/build/lib/nabu/resources/tests/__init__.py +0 -0
  1789. build/lib/build/lib/nabu/resources/tests/test_nxflatfield.py +104 -0
  1790. build/lib/build/lib/nabu/resources/tests/test_units.py +47 -0
  1791. build/lib/build/lib/nabu/resources/utils.py +174 -0
  1792. build/lib/build/lib/nabu/stitching/__init__.py +0 -0
  1793. build/lib/build/lib/nabu/stitching/alignment.py +184 -0
  1794. build/lib/build/lib/nabu/stitching/config.py +1286 -0
  1795. build/lib/build/lib/nabu/stitching/definitions.py +6 -0
  1796. build/lib/build/lib/nabu/stitching/frame_composition.py +155 -0
  1797. build/lib/build/lib/nabu/stitching/overlap.py +373 -0
  1798. build/lib/build/lib/nabu/stitching/sample_normalization.py +60 -0
  1799. build/lib/build/lib/nabu/stitching/slurm_utils.py +204 -0
  1800. build/lib/build/lib/nabu/stitching/tests/__init__.py +0 -0
  1801. build/lib/build/lib/nabu/stitching/tests/test_alignment.py +99 -0
  1802. build/lib/build/lib/nabu/stitching/tests/test_config.py +226 -0
  1803. build/lib/build/lib/nabu/stitching/tests/test_frame_composition.py +180 -0
  1804. build/lib/build/lib/nabu/stitching/tests/test_overlap.py +98 -0
  1805. build/lib/build/lib/nabu/stitching/tests/test_sample_normalization.py +49 -0
  1806. build/lib/build/lib/nabu/stitching/tests/test_slurm_utils.py +146 -0
  1807. build/lib/build/lib/nabu/stitching/tests/test_utils.py +21 -0
  1808. build/lib/build/lib/nabu/stitching/tests/test_z_stitching.py +1183 -0
  1809. build/lib/build/lib/nabu/stitching/utils.py +563 -0
  1810. build/lib/build/lib/nabu/stitching/z_stitching.py +2279 -0
  1811. build/lib/build/lib/nabu/tests.py +51 -0
  1812. build/lib/build/lib/nabu/testutils.py +375 -0
  1813. build/lib/build/lib/nabu/thirdparty/__init__.py +0 -0
  1814. build/lib/build/lib/nabu/thirdparty/algotom_convert_sino.py +276 -0
  1815. build/lib/build/lib/nabu/thirdparty/pore3d_deringer_munch.py +108 -0
  1816. build/lib/build/lib/nabu/thirdparty/tomocupy_remove_stripe.py +586 -0
  1817. build/lib/build/lib/nabu/thirdparty/tomopy_phase.py +239 -0
  1818. build/lib/build/lib/nabu/thirdparty/tomwer_load_flats_darks.py +162 -0
  1819. build/lib/build/lib/nabu/utils.py +836 -0
  1820. build/lib/doc/conf.py +137 -0
  1821. build/lib/doc/create_conf_doc.py +38 -0
  1822. build/lib/doc/get_mathjax.py +34 -0
  1823. build/lib/nabu/__init__.py +17 -0
  1824. build/lib/nabu/app/__init__.py +0 -0
  1825. build/lib/nabu/app/bootstrap.py +88 -0
  1826. build/lib/nabu/app/bootstrap_stitching.py +69 -0
  1827. build/lib/nabu/app/cast_volume.py +272 -0
  1828. build/lib/nabu/app/cli_configs.py +626 -0
  1829. build/lib/nabu/app/compare_volumes.py +94 -0
  1830. build/lib/nabu/app/composite_cor.py +144 -0
  1831. build/lib/nabu/app/correct_rot.py +70 -0
  1832. build/lib/nabu/app/create_distortion_map_from_poly.py +153 -0
  1833. build/lib/nabu/app/diag_to_pix.py +358 -0
  1834. build/lib/nabu/app/diag_to_rot.py +449 -0
  1835. build/lib/nabu/app/double_flatfield.py +143 -0
  1836. build/lib/nabu/app/generate_header.py +261 -0
  1837. build/lib/nabu/app/histogram.py +197 -0
  1838. build/lib/nabu/app/multicor.py +90 -0
  1839. build/lib/nabu/app/nx_z_splitter.py +125 -0
  1840. build/lib/nabu/app/parse_reconstruction_log.py +151 -0
  1841. build/lib/nabu/app/prepare_weights_double.py +163 -0
  1842. build/lib/nabu/app/reconstruct.py +120 -0
  1843. build/lib/nabu/app/reconstruct_helical.py +116 -0
  1844. build/lib/nabu/app/reduce_dark_flat.py +181 -0
  1845. build/lib/nabu/app/rotate.py +162 -0
  1846. build/lib/nabu/app/shrink_dataset.py +98 -0
  1847. build/lib/nabu/app/stitching.py +85 -0
  1848. build/lib/nabu/app/tests/test_reduce_dark_flat.py +78 -0
  1849. build/lib/nabu/app/utils.py +33 -0
  1850. build/lib/nabu/app/validator.py +110 -0
  1851. build/lib/nabu/cuda/__init__.py +0 -0
  1852. build/lib/nabu/cuda/convolution.py +8 -0
  1853. build/lib/nabu/cuda/fft.py +4 -0
  1854. build/lib/nabu/cuda/kernel.py +97 -0
  1855. build/lib/nabu/cuda/medfilt.py +6 -0
  1856. build/lib/nabu/cuda/padding.py +6 -0
  1857. build/lib/nabu/cuda/processing.py +75 -0
  1858. build/lib/nabu/cuda/tests/__init__.py +1 -0
  1859. build/lib/nabu/cuda/utils.py +331 -0
  1860. build/lib/nabu/estimation/__init__.py +12 -0
  1861. build/lib/nabu/estimation/alignment.py +578 -0
  1862. build/lib/nabu/estimation/cor.py +1621 -0
  1863. build/lib/nabu/estimation/cor_sino.py +183 -0
  1864. build/lib/nabu/estimation/distortion.py +112 -0
  1865. build/lib/nabu/estimation/focus.py +362 -0
  1866. build/lib/nabu/estimation/tests/__init__.py +0 -0
  1867. build/lib/nabu/estimation/tests/test_alignment.py +70 -0
  1868. build/lib/nabu/estimation/tests/test_cor.py +472 -0
  1869. build/lib/nabu/estimation/tests/test_focus.py +105 -0
  1870. build/lib/nabu/estimation/tests/test_tilt.py +41 -0
  1871. build/lib/nabu/estimation/tests/test_translation.py +78 -0
  1872. build/lib/nabu/estimation/tilt.py +214 -0
  1873. build/lib/nabu/estimation/translation.py +193 -0
  1874. build/lib/nabu/estimation/utils.py +39 -0
  1875. build/lib/nabu/io/__init__.py +2 -0
  1876. build/lib/nabu/io/cast_volume.py +371 -0
  1877. build/lib/nabu/io/detector_distortion.py +305 -0
  1878. build/lib/nabu/io/reader.py +628 -0
  1879. build/lib/nabu/io/reader_helical.py +114 -0
  1880. build/lib/nabu/io/tests/__init__.py +0 -0
  1881. build/lib/nabu/io/tests/test_cast_volume.py +339 -0
  1882. build/lib/nabu/io/tests/test_detector_distortion.py +178 -0
  1883. build/lib/nabu/io/tests/test_writers.py +187 -0
  1884. build/lib/nabu/io/tiffwriter_zmm.py +99 -0
  1885. build/lib/nabu/io/utils.py +263 -0
  1886. build/lib/nabu/io/writer.py +892 -0
  1887. build/lib/nabu/misc/__init__.py +0 -0
  1888. build/lib/nabu/misc/binning.py +98 -0
  1889. build/lib/nabu/misc/fftshift.py +6 -0
  1890. build/lib/nabu/misc/filters.py +24 -0
  1891. build/lib/nabu/misc/fourier_filters.py +152 -0
  1892. build/lib/nabu/misc/histogram.py +6 -0
  1893. build/lib/nabu/misc/histogram_cuda.py +8 -0
  1894. build/lib/nabu/misc/kernel_base.py +4 -0
  1895. build/lib/nabu/misc/padding.py +83 -0
  1896. build/lib/nabu/misc/padding_base.py +6 -0
  1897. build/lib/nabu/misc/processing_base.py +4 -0
  1898. build/lib/nabu/misc/rotation.py +6 -0
  1899. build/lib/nabu/misc/rotation_cuda.py +6 -0
  1900. build/lib/nabu/misc/tests/__init__.py +1 -0
  1901. build/lib/nabu/misc/tests/test_binning.py +48 -0
  1902. build/lib/nabu/misc/tests/test_interpolation.py +70 -0
  1903. build/lib/nabu/misc/transpose.py +6 -0
  1904. build/lib/nabu/misc/unsharp.py +4 -0
  1905. build/lib/nabu/misc/unsharp_cuda.py +6 -0
  1906. build/lib/nabu/misc/unsharp_opencl.py +8 -0
  1907. build/lib/nabu/misc/utils.py +117 -0
  1908. build/lib/nabu/opencl/__init__.py +0 -0
  1909. build/lib/nabu/opencl/fft.py +6 -0
  1910. build/lib/nabu/opencl/kernel.py +135 -0
  1911. build/lib/nabu/opencl/memcpy.py +35 -0
  1912. build/lib/nabu/opencl/padding.py +6 -0
  1913. build/lib/nabu/opencl/processing.py +62 -0
  1914. build/lib/nabu/opencl/tests/__init__.py +0 -0
  1915. build/lib/nabu/opencl/utils.py +292 -0
  1916. build/lib/nabu/pipeline/__init__.py +0 -0
  1917. build/lib/nabu/pipeline/config.py +265 -0
  1918. build/lib/nabu/pipeline/config_validators.py +589 -0
  1919. build/lib/nabu/pipeline/datadump.py +164 -0
  1920. build/lib/nabu/pipeline/dataset_validator.py +211 -0
  1921. build/lib/nabu/pipeline/detector_distortion_provider.py +20 -0
  1922. build/lib/nabu/pipeline/estimators.py +1012 -0
  1923. build/lib/nabu/pipeline/fallback_utils.py +149 -0
  1924. build/lib/nabu/pipeline/fullfield/__init__.py +0 -0
  1925. build/lib/nabu/pipeline/fullfield/chunked.py +849 -0
  1926. build/lib/nabu/pipeline/fullfield/chunked_cuda.py +152 -0
  1927. build/lib/nabu/pipeline/fullfield/computations.py +260 -0
  1928. build/lib/nabu/pipeline/fullfield/dataset_validator.py +63 -0
  1929. build/lib/nabu/pipeline/fullfield/nabu_config.py +590 -0
  1930. build/lib/nabu/pipeline/fullfield/processconfig.py +825 -0
  1931. build/lib/nabu/pipeline/fullfield/reconstruction.py +851 -0
  1932. build/lib/nabu/pipeline/helical/__init__.py +0 -0
  1933. build/lib/nabu/pipeline/helical/dataset_validator.py +19 -0
  1934. build/lib/nabu/pipeline/helical/fbp.py +147 -0
  1935. build/lib/nabu/pipeline/helical/filtering.py +246 -0
  1936. build/lib/nabu/pipeline/helical/gridded_accumulator.py +575 -0
  1937. build/lib/nabu/pipeline/helical/helical_chunked_regridded.py +1670 -0
  1938. build/lib/nabu/pipeline/helical/helical_chunked_regridded_cuda.py +119 -0
  1939. build/lib/nabu/pipeline/helical/helical_reconstruction.py +598 -0
  1940. build/lib/nabu/pipeline/helical/helical_utils.py +42 -0
  1941. build/lib/nabu/pipeline/helical/nabu_config.py +175 -0
  1942. build/lib/nabu/pipeline/helical/processconfig.py +62 -0
  1943. build/lib/nabu/pipeline/helical/span_strategy.py +483 -0
  1944. build/lib/nabu/pipeline/helical/tests/__init__.py +0 -0
  1945. build/lib/nabu/pipeline/helical/tests/test_accumulator.py +157 -0
  1946. build/lib/nabu/pipeline/helical/tests/test_pipeline_elements_full.py +355 -0
  1947. build/lib/nabu/pipeline/helical/tests/test_strategy.py +61 -0
  1948. build/lib/nabu/pipeline/helical/utils.py +51 -0
  1949. build/lib/nabu/pipeline/helical/weight_balancer.py +101 -0
  1950. build/lib/nabu/pipeline/params.py +163 -0
  1951. build/lib/nabu/pipeline/processconfig.py +210 -0
  1952. build/lib/nabu/pipeline/tests/test_chunk_reader.py +78 -0
  1953. build/lib/nabu/pipeline/tests/test_estimators.py +149 -0
  1954. build/lib/nabu/pipeline/utils.py +116 -0
  1955. build/lib/nabu/pipeline/writer.py +193 -0
  1956. build/lib/nabu/pipeline/xrdct/__init__.py +0 -0
  1957. build/lib/nabu/preproc/__init__.py +7 -0
  1958. build/lib/nabu/preproc/alignment.py +11 -0
  1959. build/lib/nabu/preproc/ccd.py +161 -0
  1960. build/lib/nabu/preproc/ccd_cuda.py +169 -0
  1961. build/lib/nabu/preproc/ctf.py +361 -0
  1962. build/lib/nabu/preproc/ctf_cuda.py +142 -0
  1963. build/lib/nabu/preproc/distortion.py +92 -0
  1964. build/lib/nabu/preproc/double_flatfield.py +212 -0
  1965. build/lib/nabu/preproc/double_flatfield_cuda.py +174 -0
  1966. build/lib/nabu/preproc/double_flatfield_variable_region.py +68 -0
  1967. build/lib/nabu/preproc/flatfield.py +448 -0
  1968. build/lib/nabu/preproc/flatfield_cuda.py +144 -0
  1969. build/lib/nabu/preproc/flatfield_variable_region.py +79 -0
  1970. build/lib/nabu/preproc/phase.py +425 -0
  1971. build/lib/nabu/preproc/phase_cuda.py +143 -0
  1972. build/lib/nabu/preproc/shift.py +95 -0
  1973. build/lib/nabu/preproc/shift_cuda.py +102 -0
  1974. build/lib/nabu/preproc/tests/__init__.py +1 -0
  1975. build/lib/nabu/preproc/tests/test_ccd_corr.py +59 -0
  1976. build/lib/nabu/preproc/tests/test_ctf.py +250 -0
  1977. build/lib/nabu/preproc/tests/test_double_flatfield.py +86 -0
  1978. build/lib/nabu/preproc/tests/test_flatfield.py +626 -0
  1979. build/lib/nabu/preproc/tests/test_paganin.py +67 -0
  1980. build/lib/nabu/preproc/tests/test_vshift.py +73 -0
  1981. build/lib/nabu/processing/__init__.py +0 -0
  1982. build/lib/nabu/processing/convolution_cuda.py +375 -0
  1983. build/lib/nabu/processing/fft_base.py +163 -0
  1984. build/lib/nabu/processing/fft_cuda.py +256 -0
  1985. build/lib/nabu/processing/fft_opencl.py +54 -0
  1986. build/lib/nabu/processing/fftshift.py +134 -0
  1987. build/lib/nabu/processing/histogram.py +286 -0
  1988. build/lib/nabu/processing/histogram_cuda.py +103 -0
  1989. build/lib/nabu/processing/kernel_base.py +126 -0
  1990. build/lib/nabu/processing/medfilt_cuda.py +159 -0
  1991. build/lib/nabu/processing/muladd.py +29 -0
  1992. build/lib/nabu/processing/muladd_cuda.py +68 -0
  1993. build/lib/nabu/processing/padding_base.py +71 -0
  1994. build/lib/nabu/processing/padding_cuda.py +75 -0
  1995. build/lib/nabu/processing/padding_opencl.py +77 -0
  1996. build/lib/nabu/processing/processing_base.py +123 -0
  1997. build/lib/nabu/processing/roll_opencl.py +64 -0
  1998. build/lib/nabu/processing/rotation.py +63 -0
  1999. build/lib/nabu/processing/rotation_cuda.py +66 -0
  2000. build/lib/nabu/processing/tests/__init__.py +0 -0
  2001. build/lib/nabu/processing/tests/test_fft.py +268 -0
  2002. build/lib/nabu/processing/tests/test_fftshift.py +71 -0
  2003. build/lib/nabu/processing/tests/test_histogram.py +55 -0
  2004. build/lib/nabu/processing/tests/test_medfilt.py +77 -0
  2005. build/lib/nabu/processing/tests/test_muladd.py +54 -0
  2006. build/lib/nabu/processing/tests/test_padding.py +247 -0
  2007. build/lib/nabu/processing/tests/test_roll.py +63 -0
  2008. build/lib/nabu/processing/tests/test_rotation.py +83 -0
  2009. build/lib/nabu/processing/tests/test_transpose.py +72 -0
  2010. build/lib/nabu/processing/tests/test_unsharp.py +106 -0
  2011. build/lib/nabu/processing/transpose.py +126 -0
  2012. build/lib/nabu/processing/unsharp.py +79 -0
  2013. build/lib/nabu/processing/unsharp_cuda.py +53 -0
  2014. build/lib/nabu/processing/unsharp_opencl.py +75 -0
  2015. build/lib/nabu/reconstruction/__init__.py +3 -0
  2016. build/lib/nabu/reconstruction/cone.py +241 -0
  2017. build/lib/nabu/reconstruction/fbp.py +124 -0
  2018. build/lib/nabu/reconstruction/fbp_base.py +391 -0
  2019. build/lib/nabu/reconstruction/fbp_opencl.py +78 -0
  2020. build/lib/nabu/reconstruction/filtering.py +220 -0
  2021. build/lib/nabu/reconstruction/filtering_cuda.py +103 -0
  2022. build/lib/nabu/reconstruction/filtering_opencl.py +111 -0
  2023. build/lib/nabu/reconstruction/projection.py +240 -0
  2024. build/lib/nabu/reconstruction/reconstructor.py +174 -0
  2025. build/lib/nabu/reconstruction/reconstructor_cuda.py +44 -0
  2026. build/lib/nabu/reconstruction/rings.py +248 -0
  2027. build/lib/nabu/reconstruction/rings_cuda.py +322 -0
  2028. build/lib/nabu/reconstruction/sinogram.py +467 -0
  2029. build/lib/nabu/reconstruction/sinogram_cuda.py +250 -0
  2030. build/lib/nabu/reconstruction/sinogram_opencl.py +40 -0
  2031. build/lib/nabu/reconstruction/tests/__init__.py +1 -0
  2032. build/lib/nabu/reconstruction/tests/test_cone.py +308 -0
  2033. build/lib/nabu/reconstruction/tests/test_deringer.py +220 -0
  2034. build/lib/nabu/reconstruction/tests/test_fbp.py +252 -0
  2035. build/lib/nabu/reconstruction/tests/test_filtering.py +133 -0
  2036. build/lib/nabu/reconstruction/tests/test_halftomo.py +100 -0
  2037. build/lib/nabu/reconstruction/tests/test_projector.py +164 -0
  2038. build/lib/nabu/reconstruction/tests/test_reconstructor.py +93 -0
  2039. build/lib/nabu/reconstruction/tests/test_sino_normalization.py +85 -0
  2040. build/lib/nabu/resources/__init__.py +0 -0
  2041. build/lib/nabu/resources/cli/__init__.py +0 -0
  2042. build/lib/nabu/resources/cor.py +5 -0
  2043. build/lib/nabu/resources/dataset_analyzer.py +469 -0
  2044. build/lib/nabu/resources/gpu.py +169 -0
  2045. build/lib/nabu/resources/logger.py +130 -0
  2046. build/lib/nabu/resources/nxflatfield.py +217 -0
  2047. build/lib/nabu/resources/templates/__init__.py +0 -0
  2048. build/lib/nabu/resources/tests/__init__.py +0 -0
  2049. build/lib/nabu/resources/tests/test_nxflatfield.py +104 -0
  2050. build/lib/nabu/resources/tests/test_units.py +47 -0
  2051. build/lib/nabu/resources/utils.py +174 -0
  2052. build/lib/nabu/stitching/__init__.py +0 -0
  2053. build/lib/nabu/stitching/alignment.py +184 -0
  2054. build/lib/nabu/stitching/config.py +1286 -0
  2055. build/lib/nabu/stitching/definitions.py +6 -0
  2056. build/lib/nabu/stitching/frame_composition.py +155 -0
  2057. build/lib/nabu/stitching/overlap.py +373 -0
  2058. build/lib/nabu/stitching/sample_normalization.py +60 -0
  2059. build/lib/nabu/stitching/slurm_utils.py +204 -0
  2060. build/lib/nabu/stitching/tests/__init__.py +0 -0
  2061. build/lib/nabu/stitching/tests/test_alignment.py +99 -0
  2062. build/lib/nabu/stitching/tests/test_config.py +226 -0
  2063. build/lib/nabu/stitching/tests/test_frame_composition.py +180 -0
  2064. build/lib/nabu/stitching/tests/test_overlap.py +98 -0
  2065. build/lib/nabu/stitching/tests/test_sample_normalization.py +49 -0
  2066. build/lib/nabu/stitching/tests/test_slurm_utils.py +146 -0
  2067. build/lib/nabu/stitching/tests/test_utils.py +21 -0
  2068. build/lib/nabu/stitching/tests/test_z_stitching.py +1183 -0
  2069. build/lib/nabu/stitching/utils.py +563 -0
  2070. build/lib/nabu/stitching/z_stitching.py +2279 -0
  2071. build/lib/nabu/tests.py +51 -0
  2072. build/lib/nabu/testutils.py +375 -0
  2073. build/lib/nabu/thirdparty/__init__.py +0 -0
  2074. build/lib/nabu/thirdparty/algotom_convert_sino.py +276 -0
  2075. build/lib/nabu/thirdparty/pore3d_deringer_munch.py +108 -0
  2076. build/lib/nabu/thirdparty/tomocupy_remove_stripe.py +586 -0
  2077. build/lib/nabu/thirdparty/tomopy_phase.py +239 -0
  2078. build/lib/nabu/thirdparty/tomwer_load_flats_darks.py +162 -0
  2079. build/lib/nabu/utils.py +836 -0
  2080. nabu/__init__.py +1 -1
  2081. nabu/io/cast_volume.py +10 -2
  2082. nabu/stitching/config.py +2 -2
  2083. nabu/stitching/z_stitching.py +3 -1
  2084. {nabu-2024.1.0rc4.dist-info → nabu-2024.1.1.dist-info}/METADATA +1 -1
  2085. nabu-2024.1.1.dist-info/RECORD +2375 -0
  2086. {nabu-2024.1.0rc4.dist-info → nabu-2024.1.1.dist-info}/WHEEL +1 -1
  2087. nabu-2024.1.1.dist-info/top_level.txt +4 -0
  2088. nabu-2024.1.0rc4.dist-info/RECORD +0 -296
  2089. nabu-2024.1.0rc4.dist-info/top_level.txt +0 -2
  2090. {nabu/app/tests → build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app}/__init__.py +0 -0
  2091. {nabu-2024.1.0rc4.dist-info → nabu-2024.1.1.dist-info}/LICENSE +0 -0
  2092. {nabu-2024.1.0rc4.dist-info → nabu-2024.1.1.dist-info}/entry_points.txt +0 -0
@@ -0,0 +1,1670 @@
1
+ # pylint: skip-file
2
+
3
+ from os import path
4
+ import numpy as np
5
+ import math
6
+ from silx.image.tomography import get_next_power
7
+ from scipy import ndimage as nd
8
+ import h5py
9
+ import silx.io
10
+ import copy
11
+ from silx.io.url import DataUrl
12
+ from ...resources.logger import LoggerOrPrint
13
+ from ...resources.utils import is_hdf5_extension
14
+ from ...io.reader_helical import ChunkReaderHelical, get_hdf5_dataset_shape
15
+ from ...preproc.flatfield_variable_region import FlatFieldDataVariableRegionUrls as FlatFieldDataHelicalUrls
16
+ from ...preproc.distortion import DistortionCorrection
17
+ from ...preproc.shift import VerticalShift
18
+ from ...preproc.double_flatfield_variable_region import DoubleFlatFieldVariableRegion as DoubleFlatFieldHelical
19
+ from ...preproc.phase import PaganinPhaseRetrieval
20
+ from ...reconstruction.sinogram import SinoBuilder
21
+ from ...processing.unsharp import UnsharpMask
22
+ from ...processing.histogram import PartialHistogram, hist_as_2Darray
23
+ from ..utils import use_options, pipeline_step
24
+
25
+ from ..detector_distortion_provider import DetectorDistortionProvider
26
+
27
+ from .utils import (
28
+ WriterConfiguratorHelical as WriterConfigurator,
29
+ ) # .utils is the same as ..utils but internally we retouch the key associated to "tiffwriter" of Writers to
30
+
31
+ # point to our class which can write tiff with names indexed by the z height above the sample stage in millimiters
32
+
33
+ from numpy.lib.stride_tricks import sliding_window_view
34
+ from ...misc.binning import get_binning_function
35
+ from .helical_utils import find_mirror_indexes
36
+
37
+
38
+ try:
39
+ import nabuxx
40
+
41
+ GriddedAccumulator = nabuxx.gridded_accumulator.GriddedAccumulator
42
+ CCDFilter = nabuxx.ccd.CCDFilter
43
+ Log = nabuxx.ccd.LogFilter
44
+ cxx_paganin = nabuxx.paganin
45
+ except:
46
+ logger_tmp = LoggerOrPrint(None)
47
+ logger_tmp.info(
48
+ "Nabuxx not available. Loading python implementation for gridded_accumulator, Log, CCDFilter, paganin"
49
+ )
50
+ from . import gridded_accumulator
51
+
52
+ GriddedAccumulator = gridded_accumulator.GriddedAccumulator
53
+ from ...preproc.ccd import Log, CCDFilter
54
+
55
+ cxx_paganin = None
56
+
57
+
58
+ # For now we don't have a plain python/numpy backend for reconstruction
59
+ Backprojector = None
60
+
61
+
62
+ class HelicalChunkedRegriddedPipeline:
63
+ """
64
+ Pipeline for "helical" full or half field tomography.
65
+ Data is processed by chunks. A chunk consists in K+-1 contiguous lines of all the radios
66
+ which are read at variable height following the translations
67
+ """
68
+
69
+ extra_marge_granularity = 4
70
+ """ This offers extra reading space to be able to read the redundant part
71
+ which might be sligtly larger and or require extra border for interpolation
72
+ """
73
+
74
+ FlatFieldClass = FlatFieldDataHelicalUrls
75
+ DoubleFlatFieldClass = DoubleFlatFieldHelical
76
+
77
+ CCDFilterClass = CCDFilter
78
+ MLogClass = Log
79
+
80
+ PaganinPhaseRetrievalClass = PaganinPhaseRetrieval
81
+ UnsharpMaskClass = UnsharpMask
82
+ VerticalShiftClass = VerticalShift
83
+ SinoBuilderClass = SinoBuilder
84
+
85
+ FBPClass = Backprojector
86
+ HBPClass = None
87
+ HistogramClass = PartialHistogram
88
+ regular_accumulator = None
89
+
90
+ def __init__(
91
+ self,
92
+ process_config,
93
+ sub_region,
94
+ logger=None,
95
+ extra_options=None,
96
+ phase_margin=None,
97
+ reading_granularity=10,
98
+ span_info=None,
99
+ diag_zpro_run=0,
100
+ ):
101
+ """
102
+ Initialize a "HelicalChunked" pipeline.
103
+
104
+ Parameters
105
+ ----------
106
+ process_config: `nabu.resources.processcinfig.ProcessConfig`
107
+ Process configuration.
108
+ sub_region: tuple
109
+ Sub-region to process in the volume for this worker, in the format
110
+ `(start_x, end_x, start_z, end_z)`.
111
+ logger: `nabu.app.logger.Logger`, optional
112
+ Logger class
113
+ extra_options: dict, optional
114
+ Advanced extra options.
115
+ phase_margin: tuple, optional
116
+ Margin to use when performing phase retrieval, in the form ((up, down), (left, right)).
117
+ See also the documentation of PaganinPhaseRetrieval.
118
+ If not provided, no margin is applied.
119
+ reading_granularity: int
120
+ The data angular span which needs to be read for a reconstruction is read step by step,
121
+ reading each time a maximum of reading_granularity radios, and doing the preprocessing
122
+ till phase retrieval for each of these angular groups
123
+
124
+ Notes
125
+ ------
126
+ Using a `phase_margin` results in a lesser number of reconstructed slices.
127
+ More specifically, if `phase_margin = (V, H)`, then there will be `chunk_size - 2*V`
128
+ reconstructed slices (if the sub-region is in the middle of the volume)
129
+ or `chunk_size - V` reconstructed slices (if the sub-region is on top or bottom
130
+ of the volume).
131
+ """
132
+
133
+ self.span_info = span_info
134
+ self.reading_granularity = reading_granularity
135
+
136
+ self.logger = LoggerOrPrint(logger)
137
+
138
+ self._set_params(process_config, sub_region, extra_options, phase_margin, diag_zpro_run)
139
+
140
+ self._init_pipeline()
141
+
142
+ def _set_params(self, process_config, sub_region, extra_options, phase_margin, diag_zpro_run):
143
+ self.diag_zpro_run = diag_zpro_run
144
+ self.process_config = process_config
145
+ self.dataset_info = self.process_config.dataset_info
146
+
147
+ self.processing_steps = self.process_config.processing_steps.copy()
148
+ self.processing_options = self.process_config.processing_options
149
+
150
+ sub_region = self._check_subregion(sub_region)
151
+
152
+ self.chunk_size = sub_region[-1] - sub_region[-2]
153
+ self.radios_buffer = None
154
+
155
+ self._set_detector_distortion_correction()
156
+
157
+ self.set_subregion(sub_region)
158
+
159
+ self._set_phase_margin(phase_margin)
160
+ self._set_extra_options(extra_options)
161
+ self._callbacks = {}
162
+ self._steps_name2component = {}
163
+ self._steps_component2name = {}
164
+ self._data_dump = {}
165
+ self._resume_from_step = None
166
+
167
+ @staticmethod
168
+ def _check_subregion(sub_region):
169
+ if len(sub_region) < 4:
170
+ assert len(sub_region) == 2, " at least start_z and end_z are required in subregion"
171
+ sub_region = (None, None) + sub_region
172
+ if None in sub_region[-2:]:
173
+ raise ValueError("Cannot set z_min or z_max to None")
174
+ return sub_region
175
+
176
+ def _set_extra_options(self, extra_options):
177
+ if extra_options is None:
178
+ extra_options = {}
179
+ advanced_options = {}
180
+ advanced_options.update(extra_options)
181
+ self.extra_options = advanced_options
182
+
183
+ def _set_phase_margin(self, phase_margin):
184
+ if phase_margin is None:
185
+ phase_margin = ((0, 0), (0, 0))
186
+ self._phase_margin_up = phase_margin[0][0]
187
+ self._phase_margin_down = phase_margin[0][1]
188
+ self._phase_margin_left = phase_margin[1][0]
189
+ self._phase_margin_right = phase_margin[1][1]
190
+
191
+ def set_subregion(self, sub_region):
192
+ """
193
+ Set a sub-region to process.
194
+
195
+ Parameters
196
+ ----------
197
+ sub_region: tuple
198
+ Sub-region to process in the volume, in the format
199
+ `(start_x, end_x, start_z, end_z)` or `(start_z, end_z)`.
200
+ """
201
+ sub_region = self._check_subregion(sub_region)
202
+ dz = sub_region[-1] - sub_region[-2]
203
+ if dz != self.chunk_size:
204
+ raise ValueError(
205
+ "Class was initialized for chunk_size = %d but provided sub_region has chunk_size = %d"
206
+ % (self.chunk_size, dz)
207
+ )
208
+ self.sub_region = sub_region
209
+ self.z_min = sub_region[-2]
210
+ self.z_max = sub_region[-1]
211
+
212
+ def _compute_phase_kernel_margin(self):
213
+ """
214
+ Get the "margin" to pass to classes like PaganinPhaseRetrieval.
215
+ In order to have a good accuracy for filter-based phase retrieval methods,
216
+ we need to load extra data around the edges of each image. Otherwise,
217
+ a default padding type is applied.
218
+ """
219
+ if not (self.use_radio_processing_margin):
220
+ self._phase_margin = None
221
+ return
222
+ up_margin = self._phase_margin_up
223
+ down_margin = self._phase_margin_down
224
+ # Horizontal margin is not implemented
225
+ left_margin, right_margin = (0, 0)
226
+ self._phase_margin = ((up_margin, down_margin), (left_margin, right_margin))
227
+
228
+ @property
229
+ def use_radio_processing_margin(self):
230
+ return ("phase" in self.processing_steps) or ("unsharp_mask" in self.processing_steps)
231
+
232
+ def _get_phase_margin(self):
233
+ if not (self.use_radio_processing_margin):
234
+ return ((0, 0), (0, 0))
235
+ return self._phase_margin
236
+
237
+ @property
238
+ def phase_margin(self):
239
+ """
240
+ Return the margin for phase retrieval in the form ((up, down), (left, right))
241
+ """
242
+ return self._get_phase_margin()
243
+
244
+ def _get_process_name(self, kind="reconstruction"):
245
+ # In the future, might be something like "reconstruction-<ID>"
246
+ if kind == "reconstruction":
247
+ return "reconstruction"
248
+ elif kind == "histogram":
249
+ return "histogram"
250
+ return kind
251
+
252
+ def _configure_dump(self, step_name):
253
+ if step_name not in self.processing_steps:
254
+ if step_name == "sinogram" and self.process_config._dump_sinogram:
255
+ fname_full = self.process_config._dump_sinogram_file
256
+ else:
257
+ return
258
+ else:
259
+ if not self.processing_options[step_name].get("save", False):
260
+ return
261
+ fname_full = self.processing_options[step_name]["save_steps_file"]
262
+
263
+ fname, ext = path.splitext(fname_full)
264
+ dirname, file_prefix = path.split(fname)
265
+ output_dir = path.join(dirname, file_prefix)
266
+ file_prefix += str("_%06d" % self._get_image_start_index())
267
+
268
+ self.logger.info("omitting config in data_dump because of too slow nexus writer ")
269
+
270
+ self._data_dump[step_name] = WriterConfigurator(
271
+ output_dir,
272
+ file_prefix,
273
+ file_format="hdf5",
274
+ overwrite=True,
275
+ logger=self.logger,
276
+ nx_info={
277
+ "process_name": step_name,
278
+ "processing_index": 0, # TODO
279
+ # "config": {"processing_options": self.processing_options, "nabu_config": self.process_config.nabu_config},
280
+ "config": None,
281
+ "entry": getattr(self.dataset_info.dataset_scanner, "entry", None),
282
+ },
283
+ )
284
+
285
+ def _configure_data_dumps(self):
286
+ self.process_config._configure_save_steps()
287
+ for step_name in self.processing_steps:
288
+ self._configure_dump(step_name)
289
+ # sinogram is a special keyword: not in processing_steps, but guaranteed to be before sinogram generation
290
+
291
+ if self.process_config._dump_sinogram:
292
+ self._configure_dump("sinogram")
293
+
294
+ #
295
+ # Callbacks
296
+ #
297
+
298
+ def register_callback(self, step_name, callback):
299
+ """
300
+ Register a callback for a pipeline processing step.
301
+
302
+ Parameters
303
+ ----------
304
+ step_name: str
305
+ processing step name
306
+ callback: callable
307
+ A function. It will be executed once the processing step `step_name`
308
+ is finished. The function takes only one argument: the class instance.
309
+ """
310
+ if step_name not in self.processing_steps:
311
+ raise ValueError("'%s' is not in processing steps %s" % (step_name, self.processing_steps))
312
+ if step_name in self._callbacks:
313
+ self._callbacks[step_name].append(callback)
314
+ else:
315
+ self._callbacks[step_name] = [callback]
316
+
317
+ #
318
+ # Overwritten in inheriting classes
319
+ #
320
+
321
+ def _get_shape(self, step_name):
322
+ """
323
+ Get the shape to provide to the class corresponding to step_name.
324
+ """
325
+ if step_name == "flatfield":
326
+ shape = self.radios_subset.shape
327
+ elif step_name == "double_flatfield":
328
+ shape = self.radios_subset.shape
329
+ elif step_name == "phase":
330
+ shape = self.radios_subset.shape[1:]
331
+ elif step_name == "ccd_correction":
332
+ shape = self.gridded_radios.shape[1:]
333
+ elif step_name == "unsharp_mask":
334
+ shape = self.radios_subset.shape[1:]
335
+ elif step_name == "take_log":
336
+ shape = self.radios.shape
337
+ elif step_name == "radios_movements":
338
+ shape = self.radios.shape
339
+ elif step_name == "sino_normalization":
340
+ shape = self.radios.shape
341
+ elif step_name == "sino_normalization_slim":
342
+ shape = self.radios.shape[:1] + (1,) + self.radios.shape[2:]
343
+ elif step_name == "one_sino_slim":
344
+ shape = self.radios.shape[:1] + self.radios.shape[2:]
345
+ elif step_name == "build_sino":
346
+ shape = self.radios.shape[:1] + (1,) + self.radios.shape[2:]
347
+ elif step_name == "reconstruction":
348
+ shape = self.sino_builder.output_shape[1:]
349
+ else:
350
+ raise ValueError("Unknown processing step %s" % step_name)
351
+ self.logger.debug("Data shape for %s is %s" % (step_name, str(shape)))
352
+ return shape
353
+
354
+ def _allocate_array(self, shape, dtype, name=None):
355
+ """this function can be redefined in the derived class which is dedicated to gpu
356
+ and will return gpu garrays
357
+ """
358
+ return _cpu_allocate_array(shape, dtype, name=name)
359
+
360
+ def _cpu_allocate_array(self, shape, dtype, name=None):
361
+ """For objects used in the pre-gpu part. They will be always on CPU even in the derived class"""
362
+ result = np.zeros(shape, dtype=dtype)
363
+ return result
364
+
365
+ def _allocate_sinobuilder_output(self):
366
+ return self._cpu_allocate_array(self.sino_builder.output_shape, "f", name="sinos")
367
+
368
+ def _allocate_recs(self, ny, nx):
369
+ self.n_slices = self.gridded_radios.shape[1]
370
+ if self.use_radio_processing_margin:
371
+ self.n_slices -= sum(self.phase_margin[0])
372
+ self.recs = self._allocate_array((1, ny, nx), "f", name="recs")
373
+ self.recs_stack = self._cpu_allocate_array((self.n_slices, ny, nx), "f", name="recs_stack")
374
+
375
+ def _reset_memory(self):
376
+ pass
377
+
378
+ def _get_read_dump_subregion(self):
379
+ read_opts = self.processing_options["read_chunk"]
380
+ if read_opts.get("process_file", None) is None:
381
+ return None
382
+ dump_start_z, dump_end_z = read_opts["dump_start_z"], read_opts["dump_end_z"]
383
+ relative_start_z = self.z_min - dump_start_z
384
+ relative_end_z = relative_start_z + self.chunk_size
385
+ # (n_angles, n_z, n_x)
386
+ subregion = (None, None, relative_start_z, relative_end_z, None, None)
387
+ return subregion
388
+
389
+ def _check_resume_from_step(self):
390
+ if self._resume_from_step is None:
391
+ return
392
+ read_opts = self.processing_options["read_chunk"]
393
+ expected_radios_shape = get_hdf5_dataset_shape(
394
+ read_opts["process_file"],
395
+ read_opts["process_h5_path"],
396
+ sub_region=self._get_read_dump_subregion(),
397
+ )
398
+ # TODO check
399
+
400
+ def _init_reader_finalize(self):
401
+ """
402
+ Method called after _init_reader
403
+ """
404
+ self._check_resume_from_step()
405
+
406
+ self._compute_phase_kernel_margin()
407
+
408
+ self._allocate_reduced_gridded_and_subset_radios()
409
+
410
+ def _allocate_reduced_gridded_and_subset_radios(self):
411
+ shp_h = self.chunk_reader.data.shape[-1]
412
+
413
+ sliding_window_size = self.chunk_size
414
+ if sliding_window_size % 2 == 0:
415
+ sliding_window_size += 1
416
+ sliding_window_radius = (sliding_window_size - 1) // 2
417
+
418
+ if sliding_window_radius == 0:
419
+ n_projs_max = (self.span_info.sunshine_ends - self.span_info.sunshine_starts).max()
420
+ else:
421
+ padded_starts = self.span_info.sunshine_starts
422
+ padded_ends = self.span_info.sunshine_ends
423
+
424
+ padded_starts = np.concatenate(
425
+ [[padded_starts[0]] * sliding_window_radius, padded_starts, [padded_starts[-1]] * sliding_window_radius]
426
+ )
427
+ starts = sliding_window_view(padded_starts, sliding_window_size).min(axis=-1)
428
+
429
+ padded_ends = np.concatenate(
430
+ [[padded_ends[0]] * sliding_window_radius, padded_ends, [padded_ends[-1]] * sliding_window_radius]
431
+ )
432
+
433
+ ends = sliding_window_view(padded_ends, sliding_window_size).max(axis=-1)
434
+
435
+ n_projs_max = (ends - starts).max()
436
+
437
+ ((up_margin, down_margin), (left_margin, right_margin)) = self.phase_margin
438
+
439
+ (start_x, end_x, start_z, end_z) = self.sub_region
440
+
441
+ ## and now the gridded ones
442
+
443
+ my_angle_step = abs(np.diff(self.span_info.projection_angles_deg).mean())
444
+ self.n_gridded_angles = int(round(360.0 / my_angle_step))
445
+
446
+ self.my_angles_rad = np.arange(self.n_gridded_angles) * 2 * np.pi / self.n_gridded_angles
447
+
448
+ my_angles_deg = np.rad2deg(self.my_angles_rad)
449
+
450
+ self.mirror_angle_relative_indexes = find_mirror_indexes(my_angles_deg)
451
+
452
+ if "read_chunk" not in self.processing_steps:
453
+ raise ValueError("Cannot proceed without reading data")
454
+
455
+ r_shp_v, r_shp_h = self.whole_radio_shape
456
+
457
+ (subr_start_x, subr_end_x, subr_start_z, subr_end_z) = self.sub_region
458
+
459
+ subradio_shape = subr_end_z - subr_start_z, r_shp_h
460
+
461
+ ### these radios are for diagnostic of the translations ( they will be optionally written, for being further used
462
+ ## by correlation techniques ). Two radios for the first two pass over the first gridded angles
463
+ if self.diag_zpro_run:
464
+ # 2 for the redundancy, 2 for +180 mirror
465
+ ndiag = 2 * 2 * self.diag_zpro_run
466
+ else:
467
+ ndiag = 2 * 2
468
+
469
+ self.diagnostic_searched_angles_rad_clipped = (
470
+ (0.5 + np.arange(ndiag // 2)) * (2 * np.pi / (ndiag // 2))
471
+ ).astype("f")
472
+
473
+ self.diagnostic_radios = np.zeros((ndiag,) + subradio_shape, np.float32)
474
+ self.diagnostic_weights = np.zeros((ndiag,) + subradio_shape, np.float32)
475
+ self.diagnostic_proj_angle = np.zeros([ndiag], "f")
476
+ self.diagnostic_zpix_transl = np.zeros([ndiag], "f")
477
+ self.diagnostic_zmm_transl = np.zeros([ndiag], "f")
478
+
479
+ self.diagnostic = {
480
+ "radios": self.diagnostic_radios,
481
+ "weights": self.diagnostic_weights,
482
+ "angles": self.diagnostic_proj_angle,
483
+ "zpix_transl": self.diagnostic_zpix_transl,
484
+ "zmm_trans": self.diagnostic_zmm_transl,
485
+ "pixel_size_mm": self.span_info.pix_size_mm,
486
+ "searched_rad": self.diagnostic_searched_angles_rad_clipped,
487
+ }
488
+ ## -------
489
+ if self.diag_zpro_run == 0:
490
+ self.gridded_radios = np.zeros((self.n_gridded_angles,) + subradio_shape, np.float32)
491
+ self.gridded_cumulated_weights = np.zeros((self.n_gridded_angles,) + subradio_shape, np.float32)
492
+ else:
493
+ # only diagnostic will be cumulated. No need to keep the full size for diagnostic runs.
494
+ # The gridder is initialised passing also the two buffer below,
495
+ # and the two first dimensions are used to allocate auxiliaries,
496
+ # so we shorten only the last dimension, but this is already a good cut
497
+ self.gridded_radios = np.zeros((self.n_gridded_angles,) + (subradio_shape[0], 2), np.float32)
498
+ self.gridded_cumulated_weights = np.zeros((self.n_gridded_angles,) + (subradio_shape[0], 2), np.float32)
499
+
500
+ self.radios_subset = np.zeros((self.reading_granularity,) + subradio_shape, np.float32)
501
+ self.radios_weights_subset = np.zeros((self.reading_granularity,) + subradio_shape, np.float32)
502
+
503
+ if not self.diag_zpro_run:
504
+ self.radios = np.zeros(
505
+ (self.n_gridded_angles,) + ((end_z - down_margin) - (start_z + up_margin), shp_h), np.float32
506
+ )
507
+ else:
508
+ # place holder
509
+ self.radios = np.zeros((self.n_gridded_angles,) + (1, 1), np.float32)
510
+
511
+ self.radios_weights = np.zeros_like(self.radios)
512
+
513
+ self.radios_slim = self._allocate_array(self._get_shape("one_sino_slim"), "f", name="radios_slim")
514
+
515
+ def _process_finalize(self):
516
+ """
517
+ Method called once the pipeline has been executed
518
+ """
519
+ pass
520
+
521
+ def _get_slice_start_index(self):
522
+ return self.z_min + self._phase_margin_up
523
+
524
+ _get_image_start_index = _get_slice_start_index
525
+
526
+ #
527
+ # Pipeline initialization
528
+ #
529
+
530
+ def _reset_diagnostics(self):
531
+ self.diagnostic_radios[:] = 0
532
+ self.diagnostic_weights[:] = 0
533
+ self.diagnostic_zpix_transl[:] = 0
534
+ self.diagnostic_zmm_transl[:] = 0
535
+ self.diagnostic_proj_angle[:] = np.nan
536
+
537
+ def _init_pipeline(self):
538
+ self._get_size_of_a_raw_radio()
539
+
540
+ self._init_reader()
541
+
542
+ self._init_flatfield()
543
+
544
+ self._init_double_flatfield()
545
+ self._init_weights_field()
546
+
547
+ self._init_ccd_corrections()
548
+ self._init_phase()
549
+ self._init_unsharp()
550
+ self._init_mlog()
551
+ self._init_sino_normalization()
552
+ self._init_sino_builder()
553
+ self._prepare_reconstruction()
554
+ self._init_reconstruction()
555
+ self._init_histogram()
556
+ self._init_writer()
557
+ self._configure_data_dumps()
558
+
559
+ self._configure_regular_accumulator()
560
+
561
+ def _set_detector_distortion_correction(self):
562
+ if self.process_config.nabu_config["preproc"]["detector_distortion_correction"] is None:
563
+ self.detector_corrector = None
564
+ else:
565
+ self.detector_corrector = DetectorDistortionProvider(
566
+ detector_full_shape_vh=self.process_config.dataset_info.radio_dims[::-1],
567
+ correction_type=self.process_config.nabu_config["preproc"]["detector_distortion_correction"],
568
+ options=self.process_config.nabu_config["preproc"]["detector_distortion_correction_options"],
569
+ )
570
+
571
+ def _configure_regular_accumulator(self):
572
+ ##
573
+ # keeping these freshly numpyed objects referenced by self
574
+ # ensures that their buffer info, conserved by c++ implementation of GriddedAccumulator
575
+ # will always point to existing data, which could otherwise be garbage collected by python
576
+ #
577
+
578
+ if self.process_config.nabu_config["preproc"]["normalize_srcurrent"]:
579
+ self.radios_srcurrent = np.array(self.dataset_info.projections_srcurrent, "f")
580
+ self.flats_srcurrent = np.array(self.dataset_info.flats_srcurrent, "f")
581
+ else:
582
+ self.radios_srcurrent = None
583
+ self.flats_srcurrent = None
584
+
585
+ self.regular_accumulator = GriddedAccumulator(
586
+ gridded_radios=self.gridded_radios,
587
+ gridded_weights=self.gridded_cumulated_weights,
588
+ diagnostic_radios=self.diagnostic_radios,
589
+ diagnostic_weights=self.diagnostic_weights,
590
+ diagnostic_angles=self.diagnostic_proj_angle,
591
+ diagnostic_zpix_transl=self.diagnostic_zpix_transl,
592
+ diagnostic_searched_angles_rad_clipped=self.diagnostic_searched_angles_rad_clipped,
593
+ dark=self.flatfield.get_dark(),
594
+ flat_indexes=self.flatfield._sorted_flat_indices,
595
+ flats=self.flatfield.flats_stack,
596
+ weights=self.weights_field.data,
597
+ double_flat=self.double_flatfield.data,
598
+ diag_zpro_run=self.diag_zpro_run,
599
+ radios_srcurrent=self.radios_srcurrent,
600
+ flats_srcurrent=self.flats_srcurrent,
601
+ )
602
+
603
+ return
604
+
605
+ def _get_size_of_a_raw_radio(self):
606
+ """Once for all we find the shape of a radio.
607
+ This information will be used in other parts of the code when allocating
608
+ bunch of data holders
609
+ """
610
+ if "read_chunk" not in self.processing_steps:
611
+ raise ValueError("Cannot proceed without reading data")
612
+
613
+ options = self.processing_options["read_chunk"]
614
+
615
+ here_a_file = next(iter(options["files"].values()))
616
+ here_a_radio = silx.io.get_data(here_a_file)
617
+
618
+ binning_x, binning_z = self._get_binning()
619
+ if (binning_z, binning_x) != (1, 1):
620
+ binning_function = get_binning_function((binning_z, binning_x))
621
+ here_a_radio = binning_function(here_a_radio)
622
+
623
+ self.whole_radio_shape = here_a_radio.shape
624
+ return self.whole_radio_shape
625
+
626
+ @use_options("read_chunk", "chunk_reader")
627
+ def _init_reader(self):
628
+ if "read_chunk" not in self.processing_steps:
629
+ raise ValueError("Cannot proceed without reading data")
630
+ options = self.processing_options["read_chunk"]
631
+
632
+ assert options.get("process_file", None) is None, "Resume not yet implemented in helical pipeline"
633
+
634
+ # dummy initialisation, it will be _set_subregion'ed and set_data_buffer'ed in the loops
635
+ self.chunk_reader = ChunkReaderHelical(
636
+ options["files"],
637
+ sub_region=None, # setting of subregion will be already done by calls to set_subregion
638
+ detector_corrector=self.detector_corrector,
639
+ convert_float=True,
640
+ binning=options["binning"],
641
+ dataset_subsampling=options["dataset_subsampling"],
642
+ data_buffer=None,
643
+ pre_allocate=True,
644
+ )
645
+
646
+ self._init_reader_finalize()
647
+
648
+ @use_options("flatfield", "flatfield")
649
+ def _init_flatfield(self, shape=None):
650
+ if shape is None:
651
+ shape = self._get_shape("flatfield")
652
+ options = self.processing_options["flatfield"]
653
+
654
+ distortion_correction = None
655
+ if options["do_flat_distortion"]:
656
+ self.logger.info("Flats distortion correction will be applied")
657
+ estimation_kwargs = {}
658
+ estimation_kwargs.update(options["flat_distortion_params"])
659
+ estimation_kwargs["logger"] = self.logger
660
+ distortion_correction = DistortionCorrection(
661
+ estimation_method="fft-correlation", estimation_kwargs=estimation_kwargs, correction_method="interpn"
662
+ )
663
+
664
+ self.flatfield = self.FlatFieldClass(
665
+ shape,
666
+ flats=self.dataset_info.flats,
667
+ darks=self.dataset_info.darks,
668
+ radios_indices=options["projs_indices"],
669
+ interpolation="linear",
670
+ distortion_correction=distortion_correction,
671
+ radios_srcurrent=options["radios_srcurrent"],
672
+ flats_srcurrent=options["flats_srcurrent"],
673
+ detector_corrector=self.detector_corrector,
674
+ ## every flat will be read at a different heigth
675
+ ### sub_region=self.sub_region,
676
+ binning=options["binning"],
677
+ convert_float=True,
678
+ )
679
+
680
+ def _get_binning(self):
681
+ options = self.processing_options["read_chunk"]
682
+ binning = options["binning"]
683
+ if binning is None:
684
+ return 1, 1
685
+ else:
686
+ return binning
687
+
688
+ def _init_double_flatfield(self):
689
+ options = self.processing_options["double_flatfield"]
690
+
691
+ binning_x, binning_z = self._get_binning()
692
+
693
+ result_url = None
694
+
695
+ self.double_flatfield = None
696
+
697
+ if options["processes_file"] not in (None, ""):
698
+ file_path = options["processes_file"]
699
+ data_path = (self.dataset_info.hdf5_entry or "entry") + "/double_flatfield/results/data"
700
+
701
+ if path.exists(file_path) and (data_path in h5py.File(file_path, "r")):
702
+ result_url = DataUrl(file_path=file_path, data_path=data_path)
703
+ self.logger.info("Loading double flatfield from %s" % result_url.file_path())
704
+
705
+ self.double_flatfield = self.DoubleFlatFieldClass(
706
+ self._get_shape("double_flatfield"),
707
+ result_url=result_url,
708
+ binning_x=binning_x,
709
+ binning_z=binning_z,
710
+ detector_corrector=self.detector_corrector,
711
+ )
712
+
713
+ def _init_weights_field(self):
714
+ options = self.processing_options["double_flatfield"]
715
+ result_url = None
716
+
717
+ binning_x, binning_z = self.chunk_reader.get_binning()
718
+
719
+ self.weights_field = None
720
+
721
+ if options["processes_file"] not in (None, ""):
722
+ file_path = options["processes_file"]
723
+ data_path = (self.dataset_info.hdf5_entry or "entry") + "/weights_field/results/data"
724
+
725
+ if path.exists(file_path) and (data_path in h5py.File(file_path, "r")):
726
+ result_url = DataUrl(file_path=file_path, data_path=data_path)
727
+ self.logger.info("Loading weights_field from %s" % result_url.file_path())
728
+
729
+ self.weights_field = self.DoubleFlatFieldClass(
730
+ self._get_shape("double_flatfield"), result_url=result_url, binning_x=binning_x, binning_z=binning_z
731
+ )
732
+
733
+ def _init_ccd_corrections(self):
734
+ if "ccd_correction" not in self.processing_steps:
735
+ return
736
+
737
+ options = self.processing_options["ccd_correction"]
738
+
739
+ median_clip_thresh = options["median_clip_thresh"]
740
+
741
+ self.ccd_correction = self.CCDFilterClass(
742
+ self._get_shape("ccd_correction"), median_clip_thresh=median_clip_thresh
743
+ )
744
+
745
+ @use_options("phase", "phase_retrieval")
746
+ def _init_phase(self):
747
+ options = self.processing_options["phase"]
748
+ # If unsharp mask follows phase retrieval, then it should be done
749
+ # before cropping to the "inner part".
750
+ # Otherwise, crop the data just after phase retrieval.
751
+ if "unsharp_mask" in self.processing_steps:
752
+ margin = None
753
+ else:
754
+ margin = self._phase_margin
755
+ self.phase_retrieval = self.PaganinPhaseRetrievalClass(
756
+ self._get_shape("phase"),
757
+ distance=options["distance_m"],
758
+ energy=options["energy_kev"],
759
+ delta_beta=options["delta_beta"],
760
+ pixel_size=options["pixel_size_m"],
761
+ padding=options["padding_type"],
762
+ margin=margin,
763
+ fft_num_threads=True, # TODO tune in advanced params of nabu config file
764
+ )
765
+ if self.phase_retrieval.use_fftw:
766
+ self.logger.debug(
767
+ "PaganinPhaseRetrieval using FFTW with %d threads" % self.phase_retrieval.fftw.num_threads
768
+ )
769
+
770
+ ##@use_options("unsharp_mask", "unsharp_mask")
771
+
772
+ def _init_unsharp(self):
773
+ if "unsharp_mask" not in self.processing_steps:
774
+ self.unsharp_mask = None
775
+ self.unsharp_sigma = 0.0
776
+ self.unsharp_coeff = 0.0
777
+ self.unsharp_method = "log"
778
+ else:
779
+ options = self.processing_options["unsharp_mask"]
780
+ self.unsharp_sigma = options["unsharp_sigma"]
781
+ self.unsharp_coeff = options["unsharp_coeff"]
782
+ self.unsharp_method = options["unsharp_method"]
783
+
784
+ self.unsharp_mask = self.UnsharpMaskClass(
785
+ self._get_shape("unsharp_mask"),
786
+ options["unsharp_sigma"],
787
+ options["unsharp_coeff"],
788
+ mode="reflect",
789
+ method=options["unsharp_method"],
790
+ )
791
+
792
+ def _init_mlog(self):
793
+ options = self.processing_options["take_log"]
794
+
795
+ self.mlog = self.MLogClass(
796
+ self._get_shape("take_log"), clip_min=options["log_min_clip"], clip_max=options["log_max_clip"]
797
+ )
798
+
799
+ @use_options("sino_normalization", "sino_normalization")
800
+ def _init_sino_normalization(self):
801
+ options = self.processing_options["sino_normalization"]
802
+ self.sino_normalization = self.SinoNormalizationClass(
803
+ kind=options["method"],
804
+ radios_shape=self._get_shape("sino_normalization_slim"),
805
+ )
806
+
807
+ def _init_sino_builder(self):
808
+ options = self.processing_options["reconstruction"] ## build_sino class disappeared disappeared
809
+
810
+ self.sino_builder = self.SinoBuilderClass(
811
+ radios_shape=self._get_shape("build_sino"),
812
+ rot_center=options["rotation_axis_position"],
813
+ halftomo=False,
814
+ )
815
+ self._sinobuilder_copy = False
816
+ self._sinobuilder_output = None
817
+ self.sinos = None
818
+
819
+ # this should be renamed, as it could be confused with _init_reconstruction. What about _get_reconstruction_array ?
820
+ @use_options("reconstruction", "reconstruction")
821
+ def _prepare_reconstruction(self):
822
+ options = self.processing_options["reconstruction"]
823
+ x_s, x_e = options["start_x"], options["end_x"]
824
+ y_s, y_e = options["start_y"], options["end_y"]
825
+
826
+ if not self.diag_zpro_run:
827
+ self._rec_roi = (x_s, x_e + 1, y_s, y_e + 1)
828
+ self._allocate_recs(y_e - y_s + 1, x_e - x_s + 1)
829
+ else:
830
+ ## Dummy 1x1 place holder
831
+ self._rec_roi = (x_s, x_s + 1, y_s, y_s + 1)
832
+ self._allocate_recs(y_s - y_s + 1, x_s - x_s + 1)
833
+
834
+ @use_options("reconstruction", "reconstruction")
835
+ def _init_reconstruction(self):
836
+ options = self.processing_options["reconstruction"]
837
+
838
+ if self.sino_builder is None:
839
+ raise ValueError("Reconstruction cannot be done without build_sino")
840
+
841
+ if self.FBPClass is None:
842
+ raise ValueError("No usable FBP module was found")
843
+
844
+ rot_center = options["rotation_axis_position"]
845
+
846
+ start_y, end_y, start_x, end_x = self._rec_roi
847
+
848
+ if self.HBPClass is not None and self.process_config.nabu_config["reconstruction"]["use_hbp"]:
849
+ fan_source_distance_meters = self.process_config.nabu_config["reconstruction"]["fan_source_distance_meters"]
850
+
851
+ self.reconstruction_hbp = self.HBPClass(
852
+ self._get_shape("one_sino_slim"),
853
+ slice_shape=(end_y - start_y, end_x - start_x),
854
+ angles=self.my_angles_rad,
855
+ rot_center=rot_center,
856
+ extra_options={"axis_correction": np.zeros(self.radios.shape[0], "f")},
857
+ axis_source_meters=fan_source_distance_meters,
858
+ voxel_size_microns=options["voxel_size_cm"][0] * 1.0e4,
859
+ scale_factor=2.0 / options["voxel_size_cm"][0],
860
+ clip_outer_circle=options["clip_outer_circle"],
861
+ )
862
+
863
+ else:
864
+ self.reconstruction_hbp = None
865
+
866
+ self.reconstruction = self.FBPClass(
867
+ self._get_shape("reconstruction"),
868
+ angles=np.zeros(self.radios.shape[0], "f"),
869
+ rot_center=rot_center,
870
+ filter_name=options["fbp_filter_type"],
871
+ slice_roi=self._rec_roi,
872
+ # slice_shape = ( end_y-start_y, end_x- start_x ),
873
+ scale_factor=2.0 / options["voxel_size_cm"][0],
874
+ padding_mode=options["padding_type"],
875
+ extra_options={
876
+ "scale_factor": 2.0 / options["voxel_size_cm"][0],
877
+ "axis_correction": np.zeros(self.radios.shape[0], "f"),
878
+ "clip_outer_circle": options["clip_outer_circle"],
879
+ }, # "padding_mode": options["padding_type"], },
880
+ )
881
+
882
+ my_options = self.process_config.nabu_config["reconstruction"]
883
+ if my_options["axis_to_the_center"]:
884
+ x_s, x_ep1, y_s, y_ep1 = self._rec_roi
885
+ off_x = -int(round((x_s + x_ep1 - 1) / 2.0 - rot_center))
886
+ off_y = -int(round((y_s + y_ep1 - 1) / 2.0 - rot_center))
887
+ self.reconstruction.offsets = {"x": off_x, "y": off_y}
888
+
889
+ if options["fbp_filter_type"] is None:
890
+ self.reconstruction.fbp = self.reconstruction.backproj
891
+
892
+ @use_options("histogram", "histogram")
893
+ def _init_histogram(self):
894
+ options = self.processing_options["histogram"]
895
+ self.histogram = self.HistogramClass(method="fixed_bins_number", num_bins=options["histogram_bins"])
896
+ self.histo_stack = []
897
+
898
+ @use_options("save", "writer")
899
+ def _init_writer(self, chunk_info=None):
900
+ options = self.processing_options["save"]
901
+ file_prefix = options["file_prefix"]
902
+ output_dir = path.join(options["location"], file_prefix)
903
+ nx_info = None
904
+ self._hdf5_output = is_hdf5_extension(options["file_format"])
905
+
906
+ if chunk_info is not None:
907
+ d_v, d_h = self.process_config.dataset_info.radio_dims[::-1]
908
+ h_rels = self._get_slice_start_index() + np.arange(chunk_info.span_v[1] - chunk_info.span_v[0])
909
+ fact_mm = self.process_config.dataset_info.pixel_size * 1.0e-3
910
+ heights_mm = (
911
+ fact_mm * (-self.span_info.z_pix_per_proj[0] + (d_v - 1) / 2 - h_rels) - self.span_info.z_offset_mm
912
+ )
913
+ else:
914
+ heights_mm = None
915
+
916
+ if self._hdf5_output:
917
+ fname_start_index = None
918
+ file_prefix += str("_%06d" % self._get_slice_start_index())
919
+ entry = getattr(self.dataset_info.dataset_scanner, "entry", None)
920
+ nx_info = {
921
+ "process_name": self._get_process_name(),
922
+ "processing_index": 0,
923
+ "config": {
924
+ "processing_options": self.processing_options,
925
+ "nabu_config": self.process_config.nabu_config,
926
+ },
927
+ "entry": entry,
928
+ }
929
+ self._histogram_processing_index = nx_info["processing_index"] + 1
930
+ elif options["file_format"] in ["tif", "tiff", "edf"]:
931
+ fname_start_index = self._get_slice_start_index()
932
+ self._histogram_processing_index = 1
933
+
934
+ self._writer_configurator = WriterConfigurator(
935
+ output_dir,
936
+ file_prefix,
937
+ file_format=options["file_format"],
938
+ overwrite=options["overwrite"],
939
+ start_index=fname_start_index,
940
+ heights_above_stage_mm=heights_mm,
941
+ logger=self.logger,
942
+ nx_info=nx_info,
943
+ write_histogram=("histogram" in self.processing_steps),
944
+ histogram_entry=getattr(self.dataset_info.dataset_scanner, "entry", "entry"),
945
+ )
946
+ self.writer = self._writer_configurator.writer
947
+ self._writer_exec_args = self._writer_configurator._writer_exec_args
948
+ self._writer_exec_kwargs = self._writer_configurator._writer_exec_kwargs
949
+ self.histogram_writer = self._writer_configurator.get_histogram_writer()
950
+
951
+ def _apply_expand_fact(self, t):
952
+ if t is not None:
953
+ t = t * self.chunk_reader.dataset_subsampling
954
+ return t
955
+
956
+ def _expand_slice(self, subchunk_slice):
957
+ start, stop, step = subchunk_slice.start, subchunk_slice.stop, subchunk_slice.step
958
+ if step is None:
959
+ step = 1
960
+
961
+ start, stop, step = list(map(self._apply_expand_fact, [start, stop, step]))
962
+ result_slice = slice(start, stop, step)
963
+ return result_slice
964
+
965
+ def _read_data_and_apply_flats(self, sub_total_prange_slice, subchunk_slice, chunk_info):
966
+ my_integer_shifts_v = chunk_info.integer_shift_v[subchunk_slice]
967
+ fract_complement_shifts_v = chunk_info.fract_complement_to_integer_shift_v[subchunk_slice]
968
+ x_shifts_list = chunk_info.x_pix_per_proj[subchunk_slice]
969
+ (subr_start_x, subr_end_x, subr_start_z, subr_end_z) = self.sub_region
970
+ subr_start_z_list = subr_start_z - my_integer_shifts_v
971
+ subr_end_z_list = subr_end_z - my_integer_shifts_v + 1
972
+
973
+ self._reset_reader_subregion((None, None, subr_start_z_list.min(), subr_end_z_list.max()))
974
+
975
+ dtasrc_start_x, dtasrc_end_x, dtasrc_start_z, dtasrc_end_z = self.trimmed_floating_subregion
976
+
977
+ if self.diag_zpro_run:
978
+ searched_angles = self.diagnostic_searched_angles_rad_clipped
979
+
980
+ these_angles = chunk_info.angles_rad[subchunk_slice]
981
+ if len(these_angles) > 1:
982
+ # these_angles are the projection angles
983
+ # if no diagnostic angle falls close to them we skip to the next angular subchunk
984
+ # (here slice refers to angular slicing)
985
+ # We like hdf5 but we that is not a reason to read them all the time, so we spare time
986
+
987
+ a_step = abs(these_angles[1:] - these_angles[:-1]).mean()
988
+ distance = abs(np.mod(these_angles, np.pi * 2) - searched_angles[:, None]).min()
989
+ distance_l = abs(np.mod(these_angles, np.pi * 2) - searched_angles[:, None] - a_step).min()
990
+ distance_h = abs(np.mod(these_angles, np.pi * 2) - searched_angles[:, None] + a_step).min()
991
+ distance = np.array([distance, distance_h, distance_l]).min()
992
+
993
+ if distance > 2 * a_step:
994
+ return
995
+
996
+ self.chunk_reader.load_data(overwrite=True, sub_total_prange_slice=sub_total_prange_slice)
997
+ if self.chunk_reader.dataset_subsampling > 1:
998
+ radios_angular_range_slicing = self._expand_slice(sub_total_prange_slice)
999
+ else:
1000
+ radios_angular_range_slicing = sub_total_prange_slice
1001
+ my_subsampled_indexes = self.chunk_reader._sorted_files_indices[radios_angular_range_slicing]
1002
+ data_raw = self.chunk_reader.data[: len(my_subsampled_indexes)]
1003
+
1004
+ self.regular_accumulator.extract_preprocess_with_flats(
1005
+ subchunk_slice,
1006
+ my_subsampled_indexes, # these are indexes pointing within the global domain sequence which is composed of darks flats radios
1007
+ chunk_info,
1008
+ np.array((subr_start_z, subr_end_z), "i"),
1009
+ np.array((dtasrc_start_z, dtasrc_end_z), "i"),
1010
+ data_raw,
1011
+ radios_angular_range_slicing # my_subsampled_indexes is important in order to compare the
1012
+ # radios positions with respect to the flat position, and these position
1013
+ # are given as the sequential acquisition number which counts everything ( flats, darks, radios )
1014
+ # Insteqd, in order to access array which spans only the radios, we need to have an idea of where we are.
1015
+ # this is provided by radios_angular_range_slicing which addresses the radios domain
1016
+ )
1017
+
1018
+ def binning_expanded(self, region):
1019
+ binning_x, binning_z = self.chunk_reader.get_binning()
1020
+ binnings = [binning_x] * 2 + [binning_z] * 2
1021
+ res = [None if tok is None else tok * fact for tok, fact in zip(region, binnings)]
1022
+ return res
1023
+
1024
+ def _reset_reader_subregion(self, floating_subregion):
1025
+ if self._resume_from_step is None:
1026
+ binning_x, binning_z = self.chunk_reader.get_binning()
1027
+
1028
+ start_x, end_x, start_z, end_z = floating_subregion
1029
+ trimmed_start_z = max(0, start_z)
1030
+ trimmed_end_z = min(self.whole_radio_shape[0], end_z)
1031
+
1032
+ my_buffer_height = trimmed_end_z - trimmed_start_z
1033
+
1034
+ if self.radios_buffer is None or my_buffer_height > self.safe_buffer_height:
1035
+ self.safe_buffer_height = end_z - start_z
1036
+ assert (
1037
+ self.safe_buffer_height >= my_buffer_height
1038
+ ), "This should always be true, if not contact the developer"
1039
+ self.radios_buffer = None
1040
+ self.radios_buffer = np.zeros(
1041
+ (self.reading_granularity + self.extra_marge_granularity,)
1042
+ + (self.safe_buffer_height, self.whole_radio_shape[1]),
1043
+ np.float32,
1044
+ )
1045
+
1046
+ self.trimmed_floating_subregion = start_x, end_x, trimmed_start_z, trimmed_end_z
1047
+
1048
+ self.chunk_reader._set_subregion(self.binning_expanded(self.trimmed_floating_subregion))
1049
+ self.chunk_reader._init_reader()
1050
+ self.chunk_reader._loaded = False
1051
+
1052
+ self.chunk_reader.set_data_buffer(self.radios_buffer[:, :my_buffer_height, :], pre_allocate=False)
1053
+
1054
+ else:
1055
+ message = "Resume not yet implemented in helical pipeline"
1056
+ raise RuntimeError(message)
1057
+
1058
+ def _ccd_corrections(self, radios=None):
1059
+ if radios is None:
1060
+ radios = self.gridded_radios
1061
+ if hasattr(self.ccd_correction, "median_clip_correction_multiple_images"):
1062
+ self.ccd_correction.median_clip_correction_multiple_images(radios)
1063
+ else:
1064
+ _tmp_radio = self._cpu_allocate_array(radios.shape[1:], "f", name="tmp_ccdcorr_radio")
1065
+ for i in range(radios.shape[0]):
1066
+ self.ccd_correction.median_clip_correction(radios[i], output=_tmp_radio)
1067
+ radios[i][:] = _tmp_radio[:]
1068
+
1069
+ def _retrieve_phase(self):
1070
+ if "unsharp_mask" in self.processing_steps:
1071
+ for i in range(self.gridded_radios.shape[0]):
1072
+ self.gridded_radios[i] = self.phase_retrieval.apply_filter(self.gridded_radios[i])
1073
+ else:
1074
+ for i in range(self.gridded_radios.shape[0]):
1075
+ self.radios[i] = self.phase_retrieval.apply_filter(self.gridded_radios[i])
1076
+
1077
+ def _nophase_put_to_radios(self, target, source):
1078
+ ((up_margin, down_margin), (left_margin, right_margin)) = self.phase_margin
1079
+
1080
+ zslice = slice(up_margin or None, -down_margin or None)
1081
+ xslice = slice(left_margin or None, -right_margin or None)
1082
+
1083
+ for i in range(target.shape[0]):
1084
+ target[i] = source[i][zslice, xslice]
1085
+
1086
+ def _apply_unsharp():
1087
+ ((up_margin, down_margin), (left_margin, right_margin)) = self._phase_margin
1088
+
1089
+ zslice = slice(up_margin or None, -down_margin or None)
1090
+ xslice = slice(left_margin or None, -right_margin or None)
1091
+
1092
+ for i in range(self.radios.shape[0]):
1093
+ self.radios[i] = self.unsharp_mask.unsharp(self.gridded_radios[i])[zslice, xslice]
1094
+
1095
+ def _take_log(self):
1096
+ self.mlog.take_logarithm(self.radios)
1097
+
1098
+ @pipeline_step("sino_normalization", "Normalizing sinograms")
1099
+ def _normalize_sinos(self, radios=None):
1100
+ if radios is None:
1101
+ radios = self.radios
1102
+ sinos = radios.transpose((1, 0, 2))
1103
+ self.sino_normalization.normalize(sinos)
1104
+
1105
+ def _dump_sinogram(self, radios=None):
1106
+ if radios is None:
1107
+ radios = self.radios
1108
+ self._dump_data_to_file("sinogram", data=radios)
1109
+
1110
+ @pipeline_step("sino_builder", "Building sinograms")
1111
+ def _build_sino(self):
1112
+ self.sinos = self.radios_slim
1113
+
1114
+ def _filter(self):
1115
+ rot_center = self.processing_options["reconstruction"]["rotation_axis_position"]
1116
+ self.reconstruction.sino_filter.filter_sino(
1117
+ self.radios_slim,
1118
+ mirror_indexes=self.mirror_angle_relative_indexes,
1119
+ rot_center=rot_center,
1120
+ output=self.radios_slim,
1121
+ )
1122
+
1123
+ def _build_sino(self):
1124
+ self.sinos = self.radios_slim
1125
+
1126
+ def _reconstruct(self, sinos=None, chunk_info=None, i_slice=0):
1127
+ if sinos is None:
1128
+ sinos = self.sinos
1129
+
1130
+ use_hbp = self.process_config.nabu_config["reconstruction"]["use_hbp"]
1131
+
1132
+ if not use_hbp:
1133
+ if i_slice == 0:
1134
+ self.reconstruction.set_custom_angles_and_axis_corrections(
1135
+ self.my_angles_rad, np.zeros_like(self.my_angles_rad)
1136
+ )
1137
+
1138
+ self.reconstruction.backprojection(sinos, output=self.recs[0])
1139
+
1140
+ self.recs[0].get(self.recs_stack[i_slice])
1141
+ else:
1142
+ if self.reconstruction_hbp is None:
1143
+ raise ValueError("You requested the hierchical backprojector but the module could not be imported")
1144
+ self.reconstruction_hbp.backprojection(sinos, output=self.recs_stack[i_slice])
1145
+
1146
+ def _compute_histogram(self, data=None, i_slice=None, num_slices=None):
1147
+ if self.histogram is None:
1148
+ return
1149
+
1150
+ if data is None:
1151
+ data = self.recs
1152
+
1153
+ my_histo = self.histogram.compute_histogram(data.ravel())
1154
+ self.histo_stack.append(my_histo)
1155
+
1156
+ if i_slice == num_slices - 1:
1157
+ self.recs_histogram = self.histogram.merge_histograms(self.histo_stack)
1158
+ self.histo_stack.clear()
1159
+
1160
+ def _write_data(self, data=None):
1161
+ if data is None:
1162
+ data = self.recs_stack
1163
+ my_kw_args = copy.copy(self._writer_exec_kwargs)
1164
+ if "config" in my_kw_args:
1165
+ self.logger.info(
1166
+ "omitting config in writer because of too slow nexus writer. Just writing the diagnostics, if any "
1167
+ )
1168
+
1169
+ # diagnostic are saved here, with the Nabu mechanism for config
1170
+ self.diagnostic_zpix_transl[:] = np.interp(
1171
+ self.diagnostic_proj_angle,
1172
+ np.deg2rad(self.span_info.projection_angles_deg_internally),
1173
+ self.span_info.z_pix_per_proj,
1174
+ )
1175
+ self.diagnostic_zmm_transl[:] = self.diagnostic_zpix_transl * self.span_info.pix_size_mm
1176
+
1177
+ my_kw_args["config"] = self.diagnostic
1178
+
1179
+ self.writer.write(data, *self._writer_exec_args, **my_kw_args)
1180
+ self.logger.info("Wrote %s" % self.writer.get_filename())
1181
+ self._write_histogram()
1182
+
1183
+ def _write_histogram(self):
1184
+ if "histogram" not in self.processing_steps:
1185
+ return
1186
+ self.logger.info("Saving histogram")
1187
+ self.histogram_writer.write(
1188
+ hist_as_2Darray(self.recs_histogram),
1189
+ self._get_process_name(kind="histogram"),
1190
+ processing_index=self._histogram_processing_index,
1191
+ config={
1192
+ "file": path.basename(self.writer.get_filename()),
1193
+ "bins": self.processing_options["histogram"]["histogram_bins"],
1194
+ },
1195
+ )
1196
+
1197
+ def _dump_data_to_file(self, step_name, data=None):
1198
+ if step_name not in self._data_dump:
1199
+ return
1200
+ self.logger.info(f"DUMP step_name={step_name}")
1201
+ if data is None:
1202
+ data = self.radios
1203
+ writer = self._data_dump[step_name]
1204
+ self.logger.info("Dumping data to %s" % writer.fname)
1205
+ writer.write_data(data)
1206
+
1207
+ def balance_weights(self):
1208
+ options = self.processing_options["reconstruction"]
1209
+
1210
+ rot_center = options["rotation_axis_position"]
1211
+
1212
+ self.radios_weights[:] = rebalance(self.radios_weights, self.my_angles_rad, rot_center)
1213
+
1214
+ # When standard scans are incomplete, due to motors errors, some angular range
1215
+ # is missing short of 360 degrees.
1216
+ # The weight accounting correctly deal with it, but still the padding
1217
+ # procedure with theta+180 data may fall on empty data
1218
+ # and this may cause problems, coming from the ramp filter,
1219
+ # in half tomo.
1220
+ # To correct this we complete with what we have at hand from the nearest
1221
+ # non empty data
1222
+ #
1223
+ to_be_filled = []
1224
+ for i in range(len(self.radios_weights) - 1, 0, -1):
1225
+ if self.radios_weights[i].sum():
1226
+ break
1227
+ to_be_filled.append(i)
1228
+ for i in to_be_filled:
1229
+ self.radios[i] = self.radios[to_be_filled[-1] - 1]
1230
+
1231
+ def _post_primary_data_reduction(self, i_slice):
1232
+ """This will be used in the derived class to transfer data to gpu"""
1233
+ self.radios_slim[:] = self.radios[:, i_slice, :]
1234
+
1235
+ def process_chunk(self, sub_region=None):
1236
+ self._private_process_chunk(sub_region=sub_region)
1237
+ self._process_finalize()
1238
+
1239
+ def _private_process_chunk(self, sub_region=None):
1240
+ assert sub_region is not None, "sub_region argument is mandatory in helical pipeline"
1241
+
1242
+ # Every chunk has its diagnostic, that is good to follow the trends in helical scans
1243
+ # or zstages
1244
+ self._reset_diagnostics()
1245
+
1246
+ self.set_subregion(sub_region)
1247
+
1248
+ (subr_start_x, subr_end_x, subr_start_z, subr_end_z) = self.sub_region
1249
+
1250
+ span_v = subr_start_z + self._phase_margin_up, subr_end_z - self._phase_margin_down
1251
+
1252
+ chunk_info = self.span_info.get_chunk_info(span_v)
1253
+
1254
+ self._reset_memory()
1255
+ self._init_writer(chunk_info)
1256
+
1257
+ self._configure_data_dumps()
1258
+ proj_num_start, proj_num_end = chunk_info.angle_index_span
1259
+
1260
+ n_granularity = self.reading_granularity
1261
+ pnum_start_list = list(np.arange(proj_num_start, proj_num_end, n_granularity))
1262
+ pnum_end_list = pnum_start_list[1:] + [proj_num_end]
1263
+
1264
+ my_first_pnum = proj_num_start
1265
+
1266
+ if self.diag_zpro_run == 0:
1267
+ # It may seem anodine, but setting a huge vector to zero
1268
+ # takes time.
1269
+ # In diagnostic collection mode we can spare it. On the other hand nothing has would be allocated for the data
1270
+ # in such case
1271
+ self.gridded_cumulated_weights[:] = 0
1272
+ self.gridded_radios[:] = 0
1273
+
1274
+ for pnum_start, pnum_end in zip(pnum_start_list, pnum_end_list):
1275
+ start_in_chunk = pnum_start - my_first_pnum
1276
+ end_in_chunk = pnum_end - my_first_pnum
1277
+
1278
+ self._read_data_and_apply_flats(
1279
+ slice(pnum_start, pnum_end), slice(start_in_chunk, end_in_chunk), chunk_info
1280
+ )
1281
+
1282
+ if not self.diag_zpro_run:
1283
+ # when we collect diagnostics we dont collect all the data
1284
+ # so there would be nothing to process here
1285
+
1286
+ self.gridded_radios[:] /= self.gridded_cumulated_weights
1287
+
1288
+ self.correct_for_missing_angles()
1289
+
1290
+ linea = self.gridded_cumulated_weights.sum(axis=(1, 2))
1291
+ i_zero_list = np.where(linea == 0)[0]
1292
+ for i_zero in i_zero_list:
1293
+ if i_zero > linea.shape[0] // 2:
1294
+ direction = -1
1295
+ else:
1296
+ direction = 1
1297
+ i = i_zero
1298
+ while ((i >= 0 and direction == -1) or ((i < linea.shape[0] - 1) and direction == 1)) and linea[i] == 0:
1299
+ i += direction
1300
+ if linea[i]:
1301
+ self.gridded_radios[i_zero] = self.gridded_radios[i]
1302
+ self.gridded_cumulated_weights[i_zero] = self.gridded_cumulated_weights[i]
1303
+
1304
+ if "flatfield" in self._data_dump:
1305
+ paganin_margin = self._phase_margin_up
1306
+ if paganin_margin:
1307
+ data_to_dump = self.gridded_radios[:, paganin_margin:-paganin_margin, :]
1308
+ else:
1309
+ data_to_dump = self.gridded_radios
1310
+ self._dump_data_to_file("flatfield", data_to_dump)
1311
+ if self.process_config.nabu_config["pipeline"]["skip_after_flatfield_dump"]:
1312
+ return
1313
+
1314
+ if "ccd_correction" in self.processing_steps:
1315
+ self._ccd_corrections()
1316
+
1317
+ if cxx_paganin is None:
1318
+ if ("phase" in self.processing_steps) or ("unsharp_mask" in self.processing_steps):
1319
+ self._retrieve_phase()
1320
+ if "unsharp_mask" in self.processing_steps:
1321
+ self._apply_unsharp()
1322
+ else:
1323
+ self._nophase_put_to_radios(self.radios, self.gridded_radios)
1324
+ else:
1325
+ if "phase" in self.processing_steps:
1326
+ pr = self.phase_retrieval
1327
+ paganin_l_micron = math.sqrt(pr.wavelength_micron * pr.distance_micron * pr.delta_beta * math.pi)
1328
+ cxx_paganin.paganin_pyhst(
1329
+ data_raw=self.gridded_radios,
1330
+ output=self.radios,
1331
+ num_of_threads=-1,
1332
+ paganin_marge=self._phase_margin_up,
1333
+ paganin_l_micron=paganin_l_micron / pr.pixel_size_micron,
1334
+ image_pixel_size_y=1.0,
1335
+ image_pixel_size_x=1.0,
1336
+ unsharp_sigma=self.unsharp_sigma,
1337
+ unsharp_coeff=self.unsharp_coeff,
1338
+ unsharp_LoG=int((self.unsharp_method == "log")),
1339
+ )
1340
+ else:
1341
+ self._nophase_put_to_radios(self.radios, self.gridded_radios)
1342
+
1343
+ self.logger.info(" LOG ")
1344
+ self._nophase_put_to_radios(self.radios_weights, self.gridded_cumulated_weights)
1345
+
1346
+ # print( " processing steps ", self.processing_steps )
1347
+ # ['read_chunk', 'flatfield', 'double_flatfield', 'take_log', 'reconstruction', 'save']
1348
+
1349
+ if "take_log" in self.processing_steps:
1350
+ self._take_log()
1351
+
1352
+ self.logger.info(" BALANCE ")
1353
+
1354
+ self.balance_weights()
1355
+
1356
+ num_slices = self.radios.shape[1]
1357
+
1358
+ self.logger.info(" NORMALIZE")
1359
+ self._normalize_sinos()
1360
+ self._dump_sinogram()
1361
+
1362
+ if "reconstruction" in self.processing_steps:
1363
+ if not self.diag_zpro_run:
1364
+ # otherwise, when collecting diagnostic, we are not interested in the remaining steps
1365
+ # on the other hand there would be nothing to process because only diagnostics have been collected
1366
+ for i_slice in range(num_slices):
1367
+ self._post_primary_data_reduction(i_slice) # charge on self.radios_slim
1368
+
1369
+ self._filter()
1370
+
1371
+ self.apply_weights(i_slice)
1372
+
1373
+ self._build_sino()
1374
+
1375
+ self._reconstruct(chunk_info=chunk_info, i_slice=i_slice)
1376
+
1377
+ self._compute_histogram(i_slice=i_slice, num_slices=num_slices)
1378
+
1379
+ self._write_data()
1380
+
1381
+ def apply_weights(self, i_slice):
1382
+ """radios_slim is on gpu"""
1383
+ n_provided_angles = self.radios_slim.shape[0]
1384
+
1385
+ for first_angle_index in range(0, n_provided_angles, self.num_weight_radios_per_app):
1386
+ end_angle_index = min(n_provided_angles, first_angle_index + self.num_weight_radios_per_app)
1387
+ self._d_radios_weights[: end_angle_index - first_angle_index].set(
1388
+ self.radios_weights[first_angle_index:end_angle_index, i_slice]
1389
+ )
1390
+ self.radios_slim[first_angle_index:end_angle_index] *= self._d_radios_weights[
1391
+ : end_angle_index - first_angle_index
1392
+ ]
1393
+
1394
+ def correct_for_missing_angles(self):
1395
+ """For non helical scan, the rotation is often incomplete ( < 360)
1396
+ here we complement the missing angles
1397
+ """
1398
+ linea = self.gridded_cumulated_weights.sum(axis=(1, 2))
1399
+ i_zero_list = np.where(linea == 0)[0]
1400
+ for i_zero in i_zero_list:
1401
+ if i_zero > linea.shape[0] // 2:
1402
+ direction = -1
1403
+ else:
1404
+ direction = 1
1405
+ i = i_zero
1406
+ while ((i >= 0 and direction == -1) or ((i < linea.shape[0] - 1) and direction == 1)) and linea[i] == 0:
1407
+ i += direction
1408
+ if linea[i]:
1409
+ self.gridded_radios[i_zero] = self.gridded_radios[i]
1410
+ self.gridded_cumulated_weights[i_zero] = self.gridded_cumulated_weights[i]
1411
+
1412
+ @classmethod
1413
+ def estimate_required_memory(
1414
+ cls, process_config, reading_granularity=None, chunk_size=None, margin_v=0, span_info=None, diag_zpro_run=0
1415
+ ):
1416
+ """
1417
+ Estimate the memory (RAM) needed for a reconstruction.
1418
+
1419
+ Parameters
1420
+ -----------
1421
+ process_config: `ProcessConfig` object
1422
+ Data structure with the processing configuration
1423
+ chunk_size: int, optional
1424
+ Size of a "radios chunk", i.e "delta z". A radios chunk is a 3D array of shape (n_angles, chunk_size, n_x)
1425
+ If set to None, then chunk_size = n_z
1426
+
1427
+ Notes
1428
+ -----
1429
+ It seems that Cuda does not allow allocating and/or transferring more than 16384 MiB (17.18 GB).
1430
+ If warn_from_GB is not None, then the result is in the form (estimated_memory_GB, warning)
1431
+ where warning is a boolean indicating wheher memory allocation/transfer might be problematic.
1432
+ """
1433
+ dataset = process_config.dataset_info
1434
+ nabu_config = process_config.nabu_config
1435
+ processing_steps = process_config.processing_steps
1436
+ Nx, Ny = dataset.radio_dims
1437
+
1438
+ total_memory_needed = 0
1439
+
1440
+ # Read data
1441
+ # ----------
1442
+
1443
+ # gridded part
1444
+ tmp_angles_deg = np.rad2deg(process_config.processing_options["reconstruction"]["angles"])
1445
+ tmp_my_angle_step = abs(np.diff(tmp_angles_deg).mean())
1446
+
1447
+ my_angle_step = abs(np.diff(span_info.projection_angles_deg).mean())
1448
+ n_gridded_angles = int(round(360.0 / my_angle_step))
1449
+
1450
+ binning_z = nabu_config["dataset"]["binning_z"]
1451
+ projections_subsampling = nabu_config["dataset"]["projections_subsampling"]
1452
+
1453
+ if not diag_zpro_run:
1454
+ # the gridded target
1455
+ total_memory_needed += Nx * (2 * margin_v + chunk_size) * n_gridded_angles * 4
1456
+
1457
+ # the gridded weights
1458
+ total_memory_needed += Nx * (2 * margin_v + chunk_size) * n_gridded_angles * 4
1459
+
1460
+ # the read grain
1461
+ total_memory_needed += (
1462
+ (reading_granularity + cls.extra_marge_granularity) * (2 * margin_v + chunk_size + 2) * Nx * 4
1463
+ )
1464
+
1465
+ total_memory_needed += (
1466
+ (reading_granularity + cls.extra_marge_granularity) * (2 * margin_v + chunk_size + 2) * Nx * 4
1467
+ )
1468
+
1469
+ # the preprocessed radios, their weigth and the buffer used for balancing ( total of three buffer of the same size plus mask plus temporary)
1470
+ total_memory_needed += 5 * (Nx * (chunk_size) * n_gridded_angles) * 4
1471
+
1472
+ if "flatfield" in processing_steps:
1473
+ # Flat-field is done in-place, but still need to load darks/flats
1474
+ n_darks = len(dataset.darks)
1475
+ n_flats = len(dataset.flats)
1476
+ darks_size = n_darks * Nx * (2 * margin_v + chunk_size) * 2 # uint16
1477
+ flats_size = n_flats * Nx * (2 * margin_v + chunk_size) * 4 # f32
1478
+ total_memory_needed += darks_size + flats_size
1479
+
1480
+ if "ccd_correction" in processing_steps:
1481
+ total_memory_needed += Nx * (2 * margin_v + chunk_size) * 4
1482
+
1483
+ # Phase retrieval
1484
+ # ---------------
1485
+ if "phase" in processing_steps:
1486
+ # Phase retrieval is done image-wise, so near in-place, but needs to
1487
+ # allocate some images, fft plans, and so on
1488
+ Nx_p = get_next_power(2 * Nx)
1489
+ Ny_p = get_next_power(2 * (2 * margin_v + chunk_size))
1490
+ img_size_real = 2 * 4 * Nx_p * Ny_p
1491
+ img_size_cplx = 2 * 8 * ((Nx_p * Ny_p) // 2 + 1)
1492
+ total_memory_needed += 2 * img_size_real + 3 * img_size_cplx
1493
+
1494
+ # Reconstruction
1495
+ # ---------------
1496
+ reconstructed_volume_size = 0
1497
+ if "reconstruction" in processing_steps and not diag_zpro_run:
1498
+ ## radios_slim is used to process one slice at once, It will be on the gpu
1499
+ ## and cannot be reduced further, therefore no need to estimate it.
1500
+ ## Either it passes or it does not.
1501
+ #### if radios_and_sinos:
1502
+ #### togtal_memory_needed += data_volume_size # radios + sinos
1503
+
1504
+ rec_config = process_config.processing_options["reconstruction"]
1505
+
1506
+ Nx_rec = rec_config["end_x"] - rec_config["start_x"] + 1
1507
+ Ny_rec = rec_config["end_y"] - rec_config["start_y"] + 1
1508
+
1509
+ Nz_rec = chunk_size // binning_z
1510
+
1511
+ ## the volume is used to reconstruct for each chunk
1512
+ reconstructed_volume_size = Nx_rec * Ny_rec * Nz_rec * 4 # float32
1513
+ total_memory_needed += reconstructed_volume_size
1514
+
1515
+ return total_memory_needed
1516
+
1517
+
1518
+ # target_central_slicer, source_central_slicer = overlap_logic( subr_start_z, subr_end_z, dtasrc_start_z, dtasrcs_end_z )
1519
+ def overlap_logic(subr_start_z, subr_end_z, dtasrc_start_z, dtasrc_end_z):
1520
+ """determines the useful lines which can be transferred from the dtasrc_start_z:dtasrc_end_z
1521
+ range targeting the range subr_start_z: subr_end_z ..................
1522
+
1523
+ """
1524
+
1525
+ t_h = subr_end_z - subr_start_z
1526
+ s_h = dtasrc_end_z - dtasrc_start_z
1527
+
1528
+ my_start = max(0, dtasrc_start_z - subr_start_z)
1529
+ my_end = min(t_h, dtasrc_end_z - subr_start_z)
1530
+
1531
+ if my_start >= my_end:
1532
+ return None, None
1533
+
1534
+ target_central_slicer = slice(my_start, my_end)
1535
+
1536
+ my_start = max(0, subr_start_z - dtasrc_start_z)
1537
+ my_end = min(s_h, subr_end_z - dtasrc_start_z)
1538
+
1539
+ assert my_start < my_end, "Overlap_logic logic error"
1540
+
1541
+ dtasrc_central_slicer = slice(my_start, my_end)
1542
+
1543
+ return target_central_slicer, dtasrc_central_slicer
1544
+
1545
+
1546
+ def padding_logic(subr_start_z, subr_end_z, dtasrc_start_z, dtasrc_end_z):
1547
+ """.......... and the missing ranges which possibly could be obtained by extension padding"""
1548
+ t_h = subr_end_z - subr_start_z
1549
+ s_h = dtasrc_end_z - dtasrc_start_z
1550
+
1551
+ if dtasrc_start_z <= subr_start_z:
1552
+ target_lower_padding = None
1553
+ else:
1554
+ target_lower_padding = slice(0, dtasrc_start_z - subr_start_z)
1555
+
1556
+ if dtasrc_end_z >= subr_end_z:
1557
+ target_upper_padding = None
1558
+ else:
1559
+ target_upper_padding = slice(dtasrc_end_z - subr_end_z, None)
1560
+
1561
+ return target_lower_padding, target_upper_padding
1562
+
1563
+
1564
+ def _fill_in_chunk_by_shift_crop_data(
1565
+ data_target,
1566
+ data_read,
1567
+ fract_shit,
1568
+ my_subr_start_z,
1569
+ my_subr_end_z,
1570
+ dtasrc_start_z,
1571
+ dtasrc_end_z,
1572
+ x_shift=0.0,
1573
+ extension_padding=True,
1574
+ ):
1575
+ """given a freshly read cube of data, it dispatches every slice to its proper vertical position and proper radio by shifting, cropping, and extending if necessary"""
1576
+ data_read_precisely_shifted = nd.interpolation.shift(data_read, (-fract_shit, x_shift), order=1, mode="nearest")[
1577
+ :-1
1578
+ ]
1579
+
1580
+ target_central_slicer, dtasrc_central_slicer = overlap_logic(
1581
+ my_subr_start_z, my_subr_end_z - 1, dtasrc_start_z, dtasrc_end_z - 1
1582
+ )
1583
+
1584
+ if None not in [target_central_slicer, dtasrc_central_slicer]:
1585
+ data_target[target_central_slicer] = data_read_precisely_shifted[dtasrc_central_slicer]
1586
+
1587
+ target_lower_slicer, target_upper_slicer = padding_logic(
1588
+ my_subr_start_z, my_subr_end_z - 1, dtasrc_start_z, dtasrc_end_z - 1
1589
+ )
1590
+
1591
+ if extension_padding:
1592
+ if target_lower_slicer is not None:
1593
+ data_target[target_lower_slicer] = data_read_precisely_shifted[0]
1594
+ if target_upper_slicer is not None:
1595
+ data_target[target_upper_slicer] = data_read_precisely_shifted[-1]
1596
+ else:
1597
+ if target_lower_slicer is not None:
1598
+ data_target[target_lower_slicer] = 1.0e-6
1599
+ if target_upper_slicer is not None:
1600
+ data_target[target_upper_slicer] = 1.0e-6
1601
+
1602
+
1603
+ def shift(arr, shift, fill_value=0.0):
1604
+ """trivial horizontal shift.
1605
+ Contrarily to scipy.ndimage.interpolation.shift, this shift does not cut the tails abruptly, but by interpolation
1606
+ """
1607
+ result = np.zeros_like(arr)
1608
+
1609
+ num1 = int(math.floor(shift))
1610
+ num2 = num1 + 1
1611
+ partition = shift - num1
1612
+
1613
+ for num, factor in zip([num1, num2], [(1 - partition), partition]):
1614
+ if num > 0:
1615
+ result[:, :num] += fill_value * factor
1616
+ result[:, num:] += arr[:, :-num] * factor
1617
+ elif num < 0:
1618
+ result[:, num:] += fill_value * factor
1619
+ result[:, :num] += arr[:, -num:] * factor
1620
+ else:
1621
+ result[:] += arr * factor
1622
+
1623
+ return result
1624
+
1625
+
1626
+ def rebalance(radios_weights, angles, ax_pos):
1627
+ """rebalance the weights, within groups of equivalent (up to multiple of 180), data pixels"""
1628
+ balanced = np.zeros_like(radios_weights)
1629
+ n_span = int(math.ceil(angles[-1] - angles[0]) / np.pi)
1630
+ center = (radios_weights.shape[-1] - 1) / 2
1631
+ nloop = balanced.shape[0]
1632
+
1633
+ for i in range(nloop):
1634
+ w_res = balanced[i]
1635
+ angle = angles[i]
1636
+
1637
+ for i_half_turn in range(-n_span - 1, n_span + 2):
1638
+ if i_half_turn == 0:
1639
+ w_res[:] += radios_weights[i]
1640
+ continue
1641
+
1642
+ shifted_angle = angle + i_half_turn * np.pi
1643
+
1644
+ insertion_index = np.searchsorted(angles, shifted_angle)
1645
+
1646
+ if insertion_index in [0, angles.shape[0]]:
1647
+ if insertion_index == 0:
1648
+ continue
1649
+ else:
1650
+ if shifted_angle > 2 * np.pi:
1651
+ continue
1652
+ myimage = radios_weights[-1]
1653
+ else:
1654
+ partition = (shifted_angle - angles[insertion_index - 1]) / (
1655
+ angles[insertion_index] - angles[insertion_index - 1]
1656
+ )
1657
+ myimage = (1.0 - partition) * radios_weights[insertion_index - 1] + partition * radios_weights[
1658
+ insertion_index
1659
+ ]
1660
+
1661
+ if i_half_turn % 2 == 0:
1662
+ w_res[:] += myimage
1663
+ else:
1664
+ myimage = np.fliplr(myimage)
1665
+ w_res[:] += shift(myimage, (2 * ax_pos - 2 * center))
1666
+
1667
+ mask = np.equal(0, radios_weights)
1668
+ balanced[:] = radios_weights / balanced
1669
+ balanced[mask] = 0
1670
+ return balanced