nabu 2024.1.0rc3__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 (2096) 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/__init__.py +0 -0
  6. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/bootstrap.py +88 -0
  7. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/bootstrap_stitching.py +69 -0
  8. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/cast_volume.py +272 -0
  9. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/cli_configs.py +626 -0
  10. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/compare_volumes.py +94 -0
  11. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/composite_cor.py +144 -0
  12. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/correct_rot.py +70 -0
  13. 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
  14. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/diag_to_pix.py +358 -0
  15. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/diag_to_rot.py +449 -0
  16. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/double_flatfield.py +143 -0
  17. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/generate_header.py +261 -0
  18. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/histogram.py +197 -0
  19. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/multicor.py +90 -0
  20. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/nx_z_splitter.py +125 -0
  21. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/parse_reconstruction_log.py +151 -0
  22. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/prepare_weights_double.py +163 -0
  23. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/reconstruct.py +120 -0
  24. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/reconstruct_helical.py +116 -0
  25. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/reduce_dark_flat.py +181 -0
  26. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/rotate.py +162 -0
  27. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/shrink_dataset.py +98 -0
  28. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/stitching.py +85 -0
  29. 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
  30. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/utils.py +33 -0
  31. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/validator.py +110 -0
  32. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/cuda/__init__.py +0 -0
  33. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/cuda/convolution.py +8 -0
  34. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/cuda/fft.py +4 -0
  35. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/cuda/kernel.py +97 -0
  36. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/cuda/medfilt.py +6 -0
  37. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/cuda/padding.py +6 -0
  38. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/cuda/processing.py +75 -0
  39. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/cuda/tests/__init__.py +1 -0
  40. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/cuda/utils.py +331 -0
  41. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/__init__.py +12 -0
  42. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/alignment.py +578 -0
  43. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/cor.py +1621 -0
  44. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/cor_sino.py +183 -0
  45. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/distortion.py +112 -0
  46. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/focus.py +362 -0
  47. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/tests/__init__.py +0 -0
  48. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/tests/test_alignment.py +70 -0
  49. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/tests/test_cor.py +472 -0
  50. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/tests/test_focus.py +105 -0
  51. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/tests/test_tilt.py +41 -0
  52. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/tests/test_translation.py +78 -0
  53. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/tilt.py +214 -0
  54. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/translation.py +193 -0
  55. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/utils.py +39 -0
  56. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/__init__.py +2 -0
  57. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/cast_volume.py +371 -0
  58. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/detector_distortion.py +305 -0
  59. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/reader.py +628 -0
  60. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/reader_helical.py +114 -0
  61. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/tests/__init__.py +0 -0
  62. 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
  63. 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
  64. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/tests/test_writers.py +187 -0
  65. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/tiffwriter_zmm.py +99 -0
  66. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/utils.py +263 -0
  67. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/writer.py +892 -0
  68. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/__init__.py +0 -0
  69. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/binning.py +98 -0
  70. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/fftshift.py +6 -0
  71. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/filters.py +24 -0
  72. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/fourier_filters.py +152 -0
  73. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/histogram.py +6 -0
  74. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/histogram_cuda.py +8 -0
  75. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/kernel_base.py +4 -0
  76. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/padding.py +83 -0
  77. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/padding_base.py +6 -0
  78. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/processing_base.py +4 -0
  79. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/rotation.py +6 -0
  80. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/rotation_cuda.py +6 -0
  81. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/tests/__init__.py +1 -0
  82. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/tests/test_binning.py +48 -0
  83. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/tests/test_interpolation.py +70 -0
  84. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/transpose.py +6 -0
  85. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/unsharp.py +4 -0
  86. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/unsharp_cuda.py +6 -0
  87. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/unsharp_opencl.py +8 -0
  88. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/utils.py +117 -0
  89. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/opencl/__init__.py +0 -0
  90. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/opencl/fft.py +6 -0
  91. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/opencl/kernel.py +135 -0
  92. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/opencl/memcpy.py +35 -0
  93. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/opencl/padding.py +6 -0
  94. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/opencl/processing.py +62 -0
  95. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/opencl/tests/__init__.py +0 -0
  96. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/opencl/utils.py +292 -0
  97. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/__init__.py +0 -0
  98. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/config.py +265 -0
  99. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/config_validators.py +589 -0
  100. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/datadump.py +164 -0
  101. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/dataset_validator.py +211 -0
  102. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/detector_distortion_provider.py +20 -0
  103. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/estimators.py +1012 -0
  104. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/fallback_utils.py +149 -0
  105. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/fullfield/__init__.py +0 -0
  106. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/fullfield/chunked.py +849 -0
  107. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/fullfield/chunked_cuda.py +152 -0
  108. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/fullfield/computations.py +260 -0
  109. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/fullfield/dataset_validator.py +63 -0
  110. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/fullfield/nabu_config.py +590 -0
  111. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/fullfield/processconfig.py +825 -0
  112. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/fullfield/reconstruction.py +851 -0
  113. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/__init__.py +0 -0
  114. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/dataset_validator.py +19 -0
  115. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/fbp.py +147 -0
  116. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/filtering.py +246 -0
  117. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/gridded_accumulator.py +575 -0
  118. 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
  119. 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
  120. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/helical_reconstruction.py +598 -0
  121. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/helical_utils.py +42 -0
  122. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/nabu_config.py +175 -0
  123. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/processconfig.py +62 -0
  124. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/span_strategy.py +483 -0
  125. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/tests/__init__.py +0 -0
  126. 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
  127. 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
  128. 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
  129. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/utils.py +51 -0
  130. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/weight_balancer.py +101 -0
  131. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/params.py +163 -0
  132. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/processconfig.py +210 -0
  133. 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
  134. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/tests/test_estimators.py +149 -0
  135. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/utils.py +116 -0
  136. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/writer.py +193 -0
  137. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/xrdct/__init__.py +0 -0
  138. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/__init__.py +7 -0
  139. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/alignment.py +11 -0
  140. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/ccd.py +161 -0
  141. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/ccd_cuda.py +169 -0
  142. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/ctf.py +361 -0
  143. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/ctf_cuda.py +142 -0
  144. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/distortion.py +92 -0
  145. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/double_flatfield.py +212 -0
  146. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/double_flatfield_cuda.py +174 -0
  147. 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
  148. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/flatfield.py +448 -0
  149. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/flatfield_cuda.py +144 -0
  150. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/flatfield_variable_region.py +79 -0
  151. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/phase.py +425 -0
  152. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/phase_cuda.py +143 -0
  153. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/shift.py +95 -0
  154. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/shift_cuda.py +102 -0
  155. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/tests/__init__.py +1 -0
  156. 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
  157. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/tests/test_ctf.py +250 -0
  158. 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
  159. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/tests/test_flatfield.py +626 -0
  160. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/tests/test_paganin.py +67 -0
  161. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/tests/test_vshift.py +73 -0
  162. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/__init__.py +0 -0
  163. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/convolution_cuda.py +375 -0
  164. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/fft_base.py +163 -0
  165. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/fft_cuda.py +256 -0
  166. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/fft_opencl.py +54 -0
  167. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/fftshift.py +134 -0
  168. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/histogram.py +286 -0
  169. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/histogram_cuda.py +103 -0
  170. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/kernel_base.py +126 -0
  171. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/medfilt_cuda.py +159 -0
  172. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/muladd.py +29 -0
  173. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/muladd_cuda.py +68 -0
  174. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/padding_base.py +71 -0
  175. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/padding_cuda.py +75 -0
  176. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/padding_opencl.py +77 -0
  177. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/processing_base.py +123 -0
  178. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/roll_opencl.py +64 -0
  179. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/rotation.py +63 -0
  180. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/rotation_cuda.py +66 -0
  181. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/__init__.py +0 -0
  182. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_fft.py +268 -0
  183. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_fftshift.py +71 -0
  184. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_histogram.py +55 -0
  185. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_medfilt.py +77 -0
  186. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_muladd.py +54 -0
  187. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_padding.py +247 -0
  188. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_roll.py +63 -0
  189. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_rotation.py +83 -0
  190. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_transpose.py +72 -0
  191. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_unsharp.py +106 -0
  192. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/transpose.py +126 -0
  193. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/unsharp.py +79 -0
  194. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/unsharp_cuda.py +53 -0
  195. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/unsharp_opencl.py +75 -0
  196. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/__init__.py +3 -0
  197. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/cone.py +241 -0
  198. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/fbp.py +124 -0
  199. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/fbp_base.py +391 -0
  200. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/fbp_opencl.py +78 -0
  201. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/filtering.py +220 -0
  202. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/filtering_cuda.py +103 -0
  203. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/filtering_opencl.py +111 -0
  204. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/projection.py +240 -0
  205. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/reconstructor.py +174 -0
  206. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/reconstructor_cuda.py +44 -0
  207. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/rings.py +248 -0
  208. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/rings_cuda.py +322 -0
  209. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/sinogram.py +467 -0
  210. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/sinogram_cuda.py +250 -0
  211. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/sinogram_opencl.py +40 -0
  212. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/tests/__init__.py +1 -0
  213. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_cone.py +308 -0
  214. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_deringer.py +220 -0
  215. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_fbp.py +252 -0
  216. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_filtering.py +133 -0
  217. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_halftomo.py +100 -0
  218. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_projector.py +164 -0
  219. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_reconstructor.py +93 -0
  220. 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
  221. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/__init__.py +0 -0
  222. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/cli/__init__.py +0 -0
  223. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/cor.py +5 -0
  224. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/dataset_analyzer.py +469 -0
  225. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/gpu.py +169 -0
  226. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/logger.py +130 -0
  227. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/nxflatfield.py +217 -0
  228. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/templates/__init__.py +0 -0
  229. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/tests/__init__.py +0 -0
  230. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/tests/test_nxflatfield.py +104 -0
  231. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/tests/test_units.py +47 -0
  232. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/utils.py +174 -0
  233. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/__init__.py +0 -0
  234. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/alignment.py +184 -0
  235. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/config.py +1286 -0
  236. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/definitions.py +6 -0
  237. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/frame_composition.py +155 -0
  238. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/overlap.py +373 -0
  239. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/sample_normalization.py +60 -0
  240. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/slurm_utils.py +204 -0
  241. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/tests/__init__.py +0 -0
  242. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/tests/test_alignment.py +99 -0
  243. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/tests/test_config.py +226 -0
  244. 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
  245. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/tests/test_overlap.py +98 -0
  246. 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
  247. 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
  248. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/tests/test_utils.py +21 -0
  249. 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
  250. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/utils.py +563 -0
  251. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/z_stitching.py +2279 -0
  252. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/tests.py +51 -0
  253. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/testutils.py +375 -0
  254. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/thirdparty/__init__.py +0 -0
  255. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/thirdparty/algotom_convert_sino.py +276 -0
  256. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/thirdparty/pore3d_deringer_munch.py +108 -0
  257. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/thirdparty/tomocupy_remove_stripe.py +586 -0
  258. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/thirdparty/tomopy_phase.py +239 -0
  259. 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
  260. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/utils.py +836 -0
  261. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/doc/conf.py +137 -0
  262. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/doc/create_conf_doc.py +38 -0
  263. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/doc/get_mathjax.py +34 -0
  264. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/__init__.py +17 -0
  265. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/__init__.py +0 -0
  266. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/bootstrap.py +88 -0
  267. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/bootstrap_stitching.py +69 -0
  268. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/cast_volume.py +272 -0
  269. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/cli_configs.py +626 -0
  270. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/compare_volumes.py +94 -0
  271. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/composite_cor.py +144 -0
  272. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/correct_rot.py +70 -0
  273. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/create_distortion_map_from_poly.py +153 -0
  274. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/diag_to_pix.py +358 -0
  275. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/diag_to_rot.py +449 -0
  276. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/double_flatfield.py +143 -0
  277. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/generate_header.py +261 -0
  278. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/histogram.py +197 -0
  279. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/multicor.py +90 -0
  280. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/nx_z_splitter.py +125 -0
  281. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/parse_reconstruction_log.py +151 -0
  282. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/prepare_weights_double.py +163 -0
  283. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/reconstruct.py +120 -0
  284. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/reconstruct_helical.py +116 -0
  285. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/reduce_dark_flat.py +181 -0
  286. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/rotate.py +162 -0
  287. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/shrink_dataset.py +98 -0
  288. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/stitching.py +85 -0
  289. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/tests/test_reduce_dark_flat.py +78 -0
  290. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/utils.py +33 -0
  291. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/validator.py +110 -0
  292. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/cuda/__init__.py +0 -0
  293. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/cuda/convolution.py +8 -0
  294. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/cuda/fft.py +4 -0
  295. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/cuda/kernel.py +97 -0
  296. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/cuda/medfilt.py +6 -0
  297. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/cuda/padding.py +6 -0
  298. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/cuda/processing.py +75 -0
  299. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/cuda/tests/__init__.py +1 -0
  300. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/cuda/utils.py +331 -0
  301. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/__init__.py +12 -0
  302. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/alignment.py +578 -0
  303. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/cor.py +1621 -0
  304. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/cor_sino.py +183 -0
  305. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/distortion.py +112 -0
  306. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/focus.py +362 -0
  307. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/tests/__init__.py +0 -0
  308. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/tests/test_alignment.py +70 -0
  309. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/tests/test_cor.py +472 -0
  310. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/tests/test_focus.py +105 -0
  311. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/tests/test_tilt.py +41 -0
  312. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/tests/test_translation.py +78 -0
  313. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/tilt.py +214 -0
  314. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/translation.py +193 -0
  315. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/utils.py +39 -0
  316. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/__init__.py +2 -0
  317. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/cast_volume.py +371 -0
  318. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/detector_distortion.py +305 -0
  319. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/reader.py +628 -0
  320. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/reader_helical.py +114 -0
  321. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/tests/__init__.py +0 -0
  322. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/tests/test_cast_volume.py +339 -0
  323. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/tests/test_detector_distortion.py +178 -0
  324. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/tests/test_writers.py +187 -0
  325. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/tiffwriter_zmm.py +99 -0
  326. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/utils.py +263 -0
  327. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/writer.py +892 -0
  328. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/__init__.py +0 -0
  329. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/binning.py +98 -0
  330. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/fftshift.py +6 -0
  331. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/filters.py +24 -0
  332. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/fourier_filters.py +152 -0
  333. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/histogram.py +6 -0
  334. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/histogram_cuda.py +8 -0
  335. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/kernel_base.py +4 -0
  336. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/padding.py +83 -0
  337. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/padding_base.py +6 -0
  338. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/processing_base.py +4 -0
  339. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/rotation.py +6 -0
  340. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/rotation_cuda.py +6 -0
  341. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/tests/__init__.py +1 -0
  342. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/tests/test_binning.py +48 -0
  343. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/tests/test_interpolation.py +70 -0
  344. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/transpose.py +6 -0
  345. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/unsharp.py +4 -0
  346. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/unsharp_cuda.py +6 -0
  347. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/unsharp_opencl.py +8 -0
  348. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/utils.py +117 -0
  349. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/opencl/__init__.py +0 -0
  350. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/opencl/fft.py +6 -0
  351. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/opencl/kernel.py +135 -0
  352. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/opencl/memcpy.py +35 -0
  353. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/opencl/padding.py +6 -0
  354. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/opencl/processing.py +62 -0
  355. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/opencl/tests/__init__.py +0 -0
  356. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/opencl/utils.py +292 -0
  357. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/__init__.py +0 -0
  358. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/config.py +265 -0
  359. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/config_validators.py +589 -0
  360. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/datadump.py +164 -0
  361. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/dataset_validator.py +211 -0
  362. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/detector_distortion_provider.py +20 -0
  363. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/estimators.py +1012 -0
  364. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/fallback_utils.py +149 -0
  365. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/fullfield/__init__.py +0 -0
  366. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/fullfield/chunked.py +849 -0
  367. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/fullfield/chunked_cuda.py +152 -0
  368. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/fullfield/computations.py +260 -0
  369. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/fullfield/dataset_validator.py +63 -0
  370. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/fullfield/nabu_config.py +590 -0
  371. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/fullfield/processconfig.py +825 -0
  372. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/fullfield/reconstruction.py +851 -0
  373. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/__init__.py +0 -0
  374. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/dataset_validator.py +19 -0
  375. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/fbp.py +147 -0
  376. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/filtering.py +246 -0
  377. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/gridded_accumulator.py +575 -0
  378. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/helical_chunked_regridded.py +1670 -0
  379. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/helical_chunked_regridded_cuda.py +119 -0
  380. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/helical_reconstruction.py +598 -0
  381. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/helical_utils.py +42 -0
  382. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/nabu_config.py +175 -0
  383. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/processconfig.py +62 -0
  384. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/span_strategy.py +483 -0
  385. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/tests/__init__.py +0 -0
  386. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/tests/test_accumulator.py +157 -0
  387. 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
  388. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/tests/test_strategy.py +61 -0
  389. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/utils.py +51 -0
  390. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/weight_balancer.py +101 -0
  391. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/params.py +163 -0
  392. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/processconfig.py +210 -0
  393. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/tests/test_chunk_reader.py +78 -0
  394. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/tests/test_estimators.py +149 -0
  395. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/utils.py +116 -0
  396. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/writer.py +193 -0
  397. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/xrdct/__init__.py +0 -0
  398. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/__init__.py +7 -0
  399. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/alignment.py +11 -0
  400. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/ccd.py +161 -0
  401. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/ccd_cuda.py +169 -0
  402. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/ctf.py +361 -0
  403. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/ctf_cuda.py +142 -0
  404. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/distortion.py +92 -0
  405. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/double_flatfield.py +212 -0
  406. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/double_flatfield_cuda.py +174 -0
  407. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/double_flatfield_variable_region.py +68 -0
  408. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/flatfield.py +448 -0
  409. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/flatfield_cuda.py +144 -0
  410. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/flatfield_variable_region.py +79 -0
  411. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/phase.py +425 -0
  412. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/phase_cuda.py +143 -0
  413. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/shift.py +95 -0
  414. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/shift_cuda.py +102 -0
  415. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/tests/__init__.py +1 -0
  416. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/tests/test_ccd_corr.py +59 -0
  417. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/tests/test_ctf.py +250 -0
  418. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/tests/test_double_flatfield.py +86 -0
  419. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/tests/test_flatfield.py +626 -0
  420. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/tests/test_paganin.py +67 -0
  421. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/tests/test_vshift.py +73 -0
  422. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/__init__.py +0 -0
  423. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/convolution_cuda.py +375 -0
  424. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/fft_base.py +163 -0
  425. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/fft_cuda.py +256 -0
  426. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/fft_opencl.py +54 -0
  427. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/fftshift.py +134 -0
  428. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/histogram.py +286 -0
  429. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/histogram_cuda.py +103 -0
  430. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/kernel_base.py +126 -0
  431. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/medfilt_cuda.py +159 -0
  432. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/muladd.py +29 -0
  433. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/muladd_cuda.py +68 -0
  434. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/padding_base.py +71 -0
  435. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/padding_cuda.py +75 -0
  436. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/padding_opencl.py +77 -0
  437. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/processing_base.py +123 -0
  438. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/roll_opencl.py +64 -0
  439. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/rotation.py +63 -0
  440. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/rotation_cuda.py +66 -0
  441. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/__init__.py +0 -0
  442. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_fft.py +268 -0
  443. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_fftshift.py +71 -0
  444. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_histogram.py +55 -0
  445. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_medfilt.py +77 -0
  446. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_muladd.py +54 -0
  447. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_padding.py +247 -0
  448. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_roll.py +63 -0
  449. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_rotation.py +83 -0
  450. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_transpose.py +72 -0
  451. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_unsharp.py +106 -0
  452. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/transpose.py +126 -0
  453. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/unsharp.py +79 -0
  454. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/unsharp_cuda.py +53 -0
  455. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/unsharp_opencl.py +75 -0
  456. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/__init__.py +3 -0
  457. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/cone.py +241 -0
  458. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/fbp.py +124 -0
  459. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/fbp_base.py +391 -0
  460. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/fbp_opencl.py +78 -0
  461. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/filtering.py +220 -0
  462. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/filtering_cuda.py +103 -0
  463. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/filtering_opencl.py +111 -0
  464. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/projection.py +240 -0
  465. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/reconstructor.py +174 -0
  466. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/reconstructor_cuda.py +44 -0
  467. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/rings.py +248 -0
  468. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/rings_cuda.py +322 -0
  469. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/sinogram.py +467 -0
  470. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/sinogram_cuda.py +250 -0
  471. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/sinogram_opencl.py +40 -0
  472. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/tests/__init__.py +1 -0
  473. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_cone.py +308 -0
  474. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_deringer.py +220 -0
  475. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_fbp.py +252 -0
  476. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_filtering.py +133 -0
  477. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_halftomo.py +100 -0
  478. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_projector.py +164 -0
  479. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_reconstructor.py +93 -0
  480. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_sino_normalization.py +85 -0
  481. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/__init__.py +0 -0
  482. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/cli/__init__.py +0 -0
  483. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/cor.py +5 -0
  484. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/dataset_analyzer.py +469 -0
  485. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/gpu.py +169 -0
  486. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/logger.py +130 -0
  487. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/nxflatfield.py +217 -0
  488. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/templates/__init__.py +0 -0
  489. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/tests/__init__.py +0 -0
  490. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/tests/test_nxflatfield.py +104 -0
  491. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/tests/test_units.py +47 -0
  492. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/utils.py +174 -0
  493. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/__init__.py +0 -0
  494. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/alignment.py +184 -0
  495. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/config.py +1286 -0
  496. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/definitions.py +6 -0
  497. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/frame_composition.py +155 -0
  498. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/overlap.py +373 -0
  499. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/sample_normalization.py +60 -0
  500. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/slurm_utils.py +204 -0
  501. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/tests/__init__.py +0 -0
  502. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/tests/test_alignment.py +99 -0
  503. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/tests/test_config.py +226 -0
  504. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/tests/test_frame_composition.py +180 -0
  505. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/tests/test_overlap.py +98 -0
  506. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/tests/test_sample_normalization.py +49 -0
  507. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/tests/test_slurm_utils.py +146 -0
  508. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/tests/test_utils.py +21 -0
  509. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/tests/test_z_stitching.py +1183 -0
  510. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/utils.py +563 -0
  511. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/z_stitching.py +2279 -0
  512. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/tests.py +51 -0
  513. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/testutils.py +375 -0
  514. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/thirdparty/__init__.py +0 -0
  515. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/thirdparty/algotom_convert_sino.py +276 -0
  516. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/thirdparty/pore3d_deringer_munch.py +108 -0
  517. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/thirdparty/tomocupy_remove_stripe.py +586 -0
  518. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/thirdparty/tomopy_phase.py +239 -0
  519. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/thirdparty/tomwer_load_flats_darks.py +162 -0
  520. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/utils.py +836 -0
  521. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/doc/conf.py +137 -0
  522. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/doc/create_conf_doc.py +38 -0
  523. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/doc/get_mathjax.py +34 -0
  524. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/__init__.py +17 -0
  525. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/__init__.py +0 -0
  526. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/bootstrap.py +88 -0
  527. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/bootstrap_stitching.py +69 -0
  528. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/cast_volume.py +272 -0
  529. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/cli_configs.py +626 -0
  530. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/compare_volumes.py +94 -0
  531. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/composite_cor.py +144 -0
  532. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/correct_rot.py +70 -0
  533. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/create_distortion_map_from_poly.py +153 -0
  534. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/diag_to_pix.py +358 -0
  535. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/diag_to_rot.py +449 -0
  536. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/double_flatfield.py +143 -0
  537. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/generate_header.py +261 -0
  538. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/histogram.py +197 -0
  539. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/multicor.py +90 -0
  540. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/nx_z_splitter.py +125 -0
  541. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/parse_reconstruction_log.py +151 -0
  542. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/prepare_weights_double.py +163 -0
  543. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/reconstruct.py +120 -0
  544. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/reconstruct_helical.py +116 -0
  545. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/reduce_dark_flat.py +181 -0
  546. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/rotate.py +162 -0
  547. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/shrink_dataset.py +98 -0
  548. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/stitching.py +85 -0
  549. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/tests/test_reduce_dark_flat.py +78 -0
  550. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/utils.py +33 -0
  551. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/validator.py +110 -0
  552. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/cuda/__init__.py +0 -0
  553. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/cuda/convolution.py +8 -0
  554. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/cuda/fft.py +4 -0
  555. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/cuda/kernel.py +97 -0
  556. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/cuda/medfilt.py +6 -0
  557. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/cuda/padding.py +6 -0
  558. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/cuda/processing.py +75 -0
  559. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/cuda/tests/__init__.py +1 -0
  560. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/cuda/utils.py +331 -0
  561. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/__init__.py +12 -0
  562. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/alignment.py +578 -0
  563. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/cor.py +1621 -0
  564. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/cor_sino.py +183 -0
  565. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/distortion.py +112 -0
  566. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/focus.py +362 -0
  567. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/tests/__init__.py +0 -0
  568. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/tests/test_alignment.py +70 -0
  569. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/tests/test_cor.py +472 -0
  570. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/tests/test_focus.py +105 -0
  571. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/tests/test_tilt.py +41 -0
  572. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/tests/test_translation.py +78 -0
  573. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/tilt.py +214 -0
  574. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/translation.py +193 -0
  575. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/utils.py +39 -0
  576. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/__init__.py +2 -0
  577. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/cast_volume.py +371 -0
  578. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/detector_distortion.py +305 -0
  579. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/reader.py +628 -0
  580. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/reader_helical.py +114 -0
  581. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/tests/__init__.py +0 -0
  582. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/tests/test_cast_volume.py +339 -0
  583. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/tests/test_detector_distortion.py +178 -0
  584. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/tests/test_writers.py +187 -0
  585. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/tiffwriter_zmm.py +99 -0
  586. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/utils.py +263 -0
  587. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/writer.py +892 -0
  588. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/__init__.py +0 -0
  589. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/binning.py +98 -0
  590. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/fftshift.py +6 -0
  591. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/filters.py +24 -0
  592. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/fourier_filters.py +152 -0
  593. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/histogram.py +6 -0
  594. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/histogram_cuda.py +8 -0
  595. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/kernel_base.py +4 -0
  596. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/padding.py +83 -0
  597. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/padding_base.py +6 -0
  598. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/processing_base.py +4 -0
  599. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/rotation.py +6 -0
  600. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/rotation_cuda.py +6 -0
  601. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/tests/__init__.py +1 -0
  602. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/tests/test_binning.py +48 -0
  603. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/tests/test_interpolation.py +70 -0
  604. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/transpose.py +6 -0
  605. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/unsharp.py +4 -0
  606. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/unsharp_cuda.py +6 -0
  607. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/unsharp_opencl.py +8 -0
  608. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/utils.py +117 -0
  609. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/opencl/__init__.py +0 -0
  610. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/opencl/fft.py +6 -0
  611. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/opencl/kernel.py +135 -0
  612. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/opencl/memcpy.py +35 -0
  613. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/opencl/padding.py +6 -0
  614. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/opencl/processing.py +62 -0
  615. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/opencl/tests/__init__.py +0 -0
  616. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/opencl/utils.py +292 -0
  617. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/__init__.py +0 -0
  618. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/config.py +265 -0
  619. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/config_validators.py +589 -0
  620. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/datadump.py +164 -0
  621. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/dataset_validator.py +211 -0
  622. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/detector_distortion_provider.py +20 -0
  623. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/estimators.py +1012 -0
  624. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/fallback_utils.py +149 -0
  625. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/fullfield/__init__.py +0 -0
  626. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/fullfield/chunked.py +849 -0
  627. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/fullfield/chunked_cuda.py +152 -0
  628. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/fullfield/computations.py +260 -0
  629. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/fullfield/dataset_validator.py +63 -0
  630. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/fullfield/nabu_config.py +590 -0
  631. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/fullfield/processconfig.py +825 -0
  632. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/fullfield/reconstruction.py +851 -0
  633. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/__init__.py +0 -0
  634. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/dataset_validator.py +19 -0
  635. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/fbp.py +147 -0
  636. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/filtering.py +246 -0
  637. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/gridded_accumulator.py +575 -0
  638. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/helical_chunked_regridded.py +1670 -0
  639. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/helical_chunked_regridded_cuda.py +119 -0
  640. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/helical_reconstruction.py +598 -0
  641. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/helical_utils.py +42 -0
  642. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/nabu_config.py +175 -0
  643. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/processconfig.py +62 -0
  644. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/span_strategy.py +483 -0
  645. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/tests/__init__.py +0 -0
  646. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/tests/test_accumulator.py +157 -0
  647. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/tests/test_pipeline_elements_full.py +355 -0
  648. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/tests/test_strategy.py +61 -0
  649. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/utils.py +51 -0
  650. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/weight_balancer.py +101 -0
  651. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/params.py +163 -0
  652. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/processconfig.py +210 -0
  653. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/tests/test_chunk_reader.py +78 -0
  654. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/tests/test_estimators.py +149 -0
  655. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/utils.py +116 -0
  656. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/writer.py +193 -0
  657. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/xrdct/__init__.py +0 -0
  658. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/__init__.py +7 -0
  659. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/alignment.py +11 -0
  660. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/ccd.py +161 -0
  661. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/ccd_cuda.py +169 -0
  662. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/ctf.py +361 -0
  663. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/ctf_cuda.py +142 -0
  664. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/distortion.py +92 -0
  665. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/double_flatfield.py +212 -0
  666. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/double_flatfield_cuda.py +174 -0
  667. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/double_flatfield_variable_region.py +68 -0
  668. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/flatfield.py +448 -0
  669. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/flatfield_cuda.py +144 -0
  670. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/flatfield_variable_region.py +79 -0
  671. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/phase.py +425 -0
  672. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/phase_cuda.py +143 -0
  673. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/shift.py +95 -0
  674. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/shift_cuda.py +102 -0
  675. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/tests/__init__.py +1 -0
  676. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/tests/test_ccd_corr.py +59 -0
  677. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/tests/test_ctf.py +250 -0
  678. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/tests/test_double_flatfield.py +86 -0
  679. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/tests/test_flatfield.py +626 -0
  680. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/tests/test_paganin.py +67 -0
  681. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/tests/test_vshift.py +73 -0
  682. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/__init__.py +0 -0
  683. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/convolution_cuda.py +375 -0
  684. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/fft_base.py +163 -0
  685. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/fft_cuda.py +256 -0
  686. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/fft_opencl.py +54 -0
  687. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/fftshift.py +134 -0
  688. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/histogram.py +286 -0
  689. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/histogram_cuda.py +103 -0
  690. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/kernel_base.py +126 -0
  691. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/medfilt_cuda.py +159 -0
  692. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/muladd.py +29 -0
  693. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/muladd_cuda.py +68 -0
  694. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/padding_base.py +71 -0
  695. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/padding_cuda.py +75 -0
  696. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/padding_opencl.py +77 -0
  697. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/processing_base.py +123 -0
  698. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/roll_opencl.py +64 -0
  699. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/rotation.py +63 -0
  700. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/rotation_cuda.py +66 -0
  701. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/__init__.py +0 -0
  702. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_fft.py +268 -0
  703. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_fftshift.py +71 -0
  704. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_histogram.py +55 -0
  705. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_medfilt.py +77 -0
  706. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_muladd.py +54 -0
  707. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_padding.py +247 -0
  708. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_roll.py +63 -0
  709. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_rotation.py +83 -0
  710. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_transpose.py +72 -0
  711. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_unsharp.py +106 -0
  712. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/transpose.py +126 -0
  713. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/unsharp.py +79 -0
  714. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/unsharp_cuda.py +53 -0
  715. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/unsharp_opencl.py +75 -0
  716. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/__init__.py +3 -0
  717. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/cone.py +241 -0
  718. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/fbp.py +124 -0
  719. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/fbp_base.py +391 -0
  720. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/fbp_opencl.py +78 -0
  721. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/filtering.py +220 -0
  722. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/filtering_cuda.py +103 -0
  723. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/filtering_opencl.py +111 -0
  724. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/projection.py +240 -0
  725. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/reconstructor.py +174 -0
  726. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/reconstructor_cuda.py +44 -0
  727. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/rings.py +248 -0
  728. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/rings_cuda.py +322 -0
  729. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/sinogram.py +467 -0
  730. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/sinogram_cuda.py +250 -0
  731. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/sinogram_opencl.py +40 -0
  732. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/tests/__init__.py +1 -0
  733. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_cone.py +308 -0
  734. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_deringer.py +220 -0
  735. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_fbp.py +252 -0
  736. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_filtering.py +133 -0
  737. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_halftomo.py +100 -0
  738. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_projector.py +164 -0
  739. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_reconstructor.py +93 -0
  740. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_sino_normalization.py +85 -0
  741. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/__init__.py +0 -0
  742. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/cli/__init__.py +0 -0
  743. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/cor.py +5 -0
  744. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/dataset_analyzer.py +469 -0
  745. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/gpu.py +169 -0
  746. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/logger.py +130 -0
  747. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/nxflatfield.py +217 -0
  748. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/templates/__init__.py +0 -0
  749. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/tests/__init__.py +0 -0
  750. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/tests/test_nxflatfield.py +104 -0
  751. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/tests/test_units.py +47 -0
  752. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/utils.py +174 -0
  753. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/__init__.py +0 -0
  754. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/alignment.py +184 -0
  755. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/config.py +1286 -0
  756. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/definitions.py +6 -0
  757. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/frame_composition.py +155 -0
  758. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/overlap.py +373 -0
  759. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/sample_normalization.py +60 -0
  760. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/slurm_utils.py +204 -0
  761. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/tests/__init__.py +0 -0
  762. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/tests/test_alignment.py +99 -0
  763. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/tests/test_config.py +226 -0
  764. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/tests/test_frame_composition.py +180 -0
  765. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/tests/test_overlap.py +98 -0
  766. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/tests/test_sample_normalization.py +49 -0
  767. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/tests/test_slurm_utils.py +146 -0
  768. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/tests/test_utils.py +21 -0
  769. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/tests/test_z_stitching.py +1183 -0
  770. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/utils.py +563 -0
  771. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/z_stitching.py +2279 -0
  772. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/tests.py +51 -0
  773. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/testutils.py +375 -0
  774. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/thirdparty/__init__.py +0 -0
  775. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/thirdparty/algotom_convert_sino.py +276 -0
  776. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/thirdparty/pore3d_deringer_munch.py +108 -0
  777. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/thirdparty/tomocupy_remove_stripe.py +586 -0
  778. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/thirdparty/tomopy_phase.py +239 -0
  779. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/thirdparty/tomwer_load_flats_darks.py +162 -0
  780. build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/utils.py +836 -0
  781. build/lib/build/lib/build/lib/build/lib/build/lib/doc/conf.py +137 -0
  782. build/lib/build/lib/build/lib/build/lib/build/lib/doc/create_conf_doc.py +38 -0
  783. build/lib/build/lib/build/lib/build/lib/build/lib/doc/get_mathjax.py +34 -0
  784. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/__init__.py +17 -0
  785. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/__init__.py +0 -0
  786. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/bootstrap.py +88 -0
  787. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/bootstrap_stitching.py +69 -0
  788. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/cast_volume.py +272 -0
  789. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/cli_configs.py +626 -0
  790. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/compare_volumes.py +94 -0
  791. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/composite_cor.py +144 -0
  792. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/correct_rot.py +70 -0
  793. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/create_distortion_map_from_poly.py +153 -0
  794. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/diag_to_pix.py +358 -0
  795. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/diag_to_rot.py +449 -0
  796. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/double_flatfield.py +143 -0
  797. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/generate_header.py +261 -0
  798. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/histogram.py +197 -0
  799. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/multicor.py +90 -0
  800. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/nx_z_splitter.py +125 -0
  801. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/parse_reconstruction_log.py +151 -0
  802. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/prepare_weights_double.py +163 -0
  803. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/reconstruct.py +120 -0
  804. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/reconstruct_helical.py +116 -0
  805. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/reduce_dark_flat.py +181 -0
  806. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/rotate.py +162 -0
  807. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/shrink_dataset.py +98 -0
  808. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/stitching.py +85 -0
  809. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/tests/test_reduce_dark_flat.py +78 -0
  810. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/utils.py +33 -0
  811. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/validator.py +110 -0
  812. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/cuda/__init__.py +0 -0
  813. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/cuda/convolution.py +8 -0
  814. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/cuda/fft.py +4 -0
  815. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/cuda/kernel.py +97 -0
  816. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/cuda/medfilt.py +6 -0
  817. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/cuda/padding.py +6 -0
  818. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/cuda/processing.py +75 -0
  819. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/cuda/tests/__init__.py +1 -0
  820. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/cuda/utils.py +331 -0
  821. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/__init__.py +12 -0
  822. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/alignment.py +578 -0
  823. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/cor.py +1621 -0
  824. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/cor_sino.py +183 -0
  825. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/distortion.py +112 -0
  826. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/focus.py +362 -0
  827. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/tests/__init__.py +0 -0
  828. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/tests/test_alignment.py +70 -0
  829. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/tests/test_cor.py +472 -0
  830. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/tests/test_focus.py +105 -0
  831. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/tests/test_tilt.py +41 -0
  832. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/tests/test_translation.py +78 -0
  833. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/tilt.py +214 -0
  834. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/translation.py +193 -0
  835. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/utils.py +39 -0
  836. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/__init__.py +2 -0
  837. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/cast_volume.py +371 -0
  838. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/detector_distortion.py +305 -0
  839. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/reader.py +628 -0
  840. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/reader_helical.py +114 -0
  841. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/tests/__init__.py +0 -0
  842. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/tests/test_cast_volume.py +339 -0
  843. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/tests/test_detector_distortion.py +178 -0
  844. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/tests/test_writers.py +187 -0
  845. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/tiffwriter_zmm.py +99 -0
  846. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/utils.py +263 -0
  847. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/writer.py +892 -0
  848. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/__init__.py +0 -0
  849. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/binning.py +98 -0
  850. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/fftshift.py +6 -0
  851. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/filters.py +24 -0
  852. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/fourier_filters.py +152 -0
  853. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/histogram.py +6 -0
  854. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/histogram_cuda.py +8 -0
  855. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/kernel_base.py +4 -0
  856. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/padding.py +83 -0
  857. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/padding_base.py +6 -0
  858. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/processing_base.py +4 -0
  859. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/rotation.py +6 -0
  860. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/rotation_cuda.py +6 -0
  861. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/tests/__init__.py +1 -0
  862. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/tests/test_binning.py +48 -0
  863. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/tests/test_interpolation.py +70 -0
  864. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/transpose.py +6 -0
  865. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/unsharp.py +4 -0
  866. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/unsharp_cuda.py +6 -0
  867. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/unsharp_opencl.py +8 -0
  868. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/utils.py +117 -0
  869. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/opencl/__init__.py +0 -0
  870. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/opencl/fft.py +6 -0
  871. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/opencl/kernel.py +135 -0
  872. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/opencl/memcpy.py +35 -0
  873. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/opencl/padding.py +6 -0
  874. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/opencl/processing.py +62 -0
  875. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/opencl/tests/__init__.py +0 -0
  876. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/opencl/utils.py +292 -0
  877. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/__init__.py +0 -0
  878. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/config.py +265 -0
  879. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/config_validators.py +589 -0
  880. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/datadump.py +164 -0
  881. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/dataset_validator.py +211 -0
  882. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/detector_distortion_provider.py +20 -0
  883. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/estimators.py +1012 -0
  884. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/fallback_utils.py +149 -0
  885. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/fullfield/__init__.py +0 -0
  886. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/fullfield/chunked.py +849 -0
  887. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/fullfield/chunked_cuda.py +152 -0
  888. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/fullfield/computations.py +260 -0
  889. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/fullfield/dataset_validator.py +63 -0
  890. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/fullfield/nabu_config.py +590 -0
  891. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/fullfield/processconfig.py +825 -0
  892. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/fullfield/reconstruction.py +851 -0
  893. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/__init__.py +0 -0
  894. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/dataset_validator.py +19 -0
  895. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/fbp.py +147 -0
  896. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/filtering.py +246 -0
  897. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/gridded_accumulator.py +575 -0
  898. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/helical_chunked_regridded.py +1670 -0
  899. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/helical_chunked_regridded_cuda.py +119 -0
  900. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/helical_reconstruction.py +598 -0
  901. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/helical_utils.py +42 -0
  902. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/nabu_config.py +175 -0
  903. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/processconfig.py +62 -0
  904. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/span_strategy.py +483 -0
  905. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/tests/__init__.py +0 -0
  906. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/tests/test_accumulator.py +157 -0
  907. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/tests/test_pipeline_elements_full.py +355 -0
  908. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/tests/test_strategy.py +61 -0
  909. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/utils.py +51 -0
  910. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/weight_balancer.py +101 -0
  911. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/params.py +163 -0
  912. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/processconfig.py +210 -0
  913. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/tests/test_chunk_reader.py +78 -0
  914. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/tests/test_estimators.py +149 -0
  915. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/utils.py +116 -0
  916. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/writer.py +193 -0
  917. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/xrdct/__init__.py +0 -0
  918. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/__init__.py +7 -0
  919. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/alignment.py +11 -0
  920. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/ccd.py +161 -0
  921. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/ccd_cuda.py +169 -0
  922. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/ctf.py +361 -0
  923. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/ctf_cuda.py +142 -0
  924. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/distortion.py +92 -0
  925. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/double_flatfield.py +212 -0
  926. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/double_flatfield_cuda.py +174 -0
  927. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/double_flatfield_variable_region.py +68 -0
  928. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/flatfield.py +448 -0
  929. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/flatfield_cuda.py +144 -0
  930. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/flatfield_variable_region.py +79 -0
  931. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/phase.py +425 -0
  932. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/phase_cuda.py +143 -0
  933. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/shift.py +95 -0
  934. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/shift_cuda.py +102 -0
  935. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/tests/__init__.py +1 -0
  936. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/tests/test_ccd_corr.py +59 -0
  937. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/tests/test_ctf.py +250 -0
  938. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/tests/test_double_flatfield.py +86 -0
  939. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/tests/test_flatfield.py +626 -0
  940. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/tests/test_paganin.py +67 -0
  941. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/tests/test_vshift.py +73 -0
  942. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/__init__.py +0 -0
  943. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/convolution_cuda.py +375 -0
  944. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/fft_base.py +163 -0
  945. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/fft_cuda.py +256 -0
  946. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/fft_opencl.py +54 -0
  947. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/fftshift.py +134 -0
  948. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/histogram.py +286 -0
  949. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/histogram_cuda.py +103 -0
  950. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/kernel_base.py +126 -0
  951. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/medfilt_cuda.py +159 -0
  952. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/muladd.py +29 -0
  953. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/muladd_cuda.py +68 -0
  954. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/padding_base.py +71 -0
  955. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/padding_cuda.py +75 -0
  956. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/padding_opencl.py +77 -0
  957. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/processing_base.py +123 -0
  958. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/roll_opencl.py +64 -0
  959. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/rotation.py +63 -0
  960. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/rotation_cuda.py +66 -0
  961. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/__init__.py +0 -0
  962. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_fft.py +268 -0
  963. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_fftshift.py +71 -0
  964. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_histogram.py +55 -0
  965. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_medfilt.py +77 -0
  966. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_muladd.py +54 -0
  967. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_padding.py +247 -0
  968. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_roll.py +63 -0
  969. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_rotation.py +83 -0
  970. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_transpose.py +72 -0
  971. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_unsharp.py +106 -0
  972. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/transpose.py +126 -0
  973. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/unsharp.py +79 -0
  974. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/unsharp_cuda.py +53 -0
  975. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/unsharp_opencl.py +75 -0
  976. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/__init__.py +3 -0
  977. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/cone.py +241 -0
  978. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/fbp.py +124 -0
  979. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/fbp_base.py +391 -0
  980. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/fbp_opencl.py +78 -0
  981. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/filtering.py +220 -0
  982. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/filtering_cuda.py +103 -0
  983. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/filtering_opencl.py +111 -0
  984. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/projection.py +240 -0
  985. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/reconstructor.py +174 -0
  986. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/reconstructor_cuda.py +44 -0
  987. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/rings.py +248 -0
  988. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/rings_cuda.py +322 -0
  989. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/sinogram.py +467 -0
  990. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/sinogram_cuda.py +250 -0
  991. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/sinogram_opencl.py +40 -0
  992. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/tests/__init__.py +1 -0
  993. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_cone.py +308 -0
  994. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_deringer.py +220 -0
  995. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_fbp.py +252 -0
  996. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_filtering.py +133 -0
  997. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_halftomo.py +100 -0
  998. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_projector.py +164 -0
  999. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_reconstructor.py +93 -0
  1000. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_sino_normalization.py +85 -0
  1001. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/__init__.py +0 -0
  1002. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/cli/__init__.py +0 -0
  1003. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/cor.py +5 -0
  1004. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/dataset_analyzer.py +469 -0
  1005. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/gpu.py +169 -0
  1006. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/logger.py +130 -0
  1007. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/nxflatfield.py +217 -0
  1008. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/templates/__init__.py +0 -0
  1009. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/tests/__init__.py +0 -0
  1010. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/tests/test_nxflatfield.py +104 -0
  1011. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/tests/test_units.py +47 -0
  1012. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/utils.py +174 -0
  1013. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/__init__.py +0 -0
  1014. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/alignment.py +184 -0
  1015. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/config.py +1286 -0
  1016. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/definitions.py +6 -0
  1017. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/frame_composition.py +155 -0
  1018. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/overlap.py +373 -0
  1019. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/sample_normalization.py +60 -0
  1020. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/slurm_utils.py +204 -0
  1021. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/tests/__init__.py +0 -0
  1022. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/tests/test_alignment.py +99 -0
  1023. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/tests/test_config.py +226 -0
  1024. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/tests/test_frame_composition.py +180 -0
  1025. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/tests/test_overlap.py +98 -0
  1026. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/tests/test_sample_normalization.py +49 -0
  1027. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/tests/test_slurm_utils.py +146 -0
  1028. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/tests/test_utils.py +21 -0
  1029. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/tests/test_z_stitching.py +1183 -0
  1030. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/utils.py +563 -0
  1031. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/z_stitching.py +2279 -0
  1032. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/tests.py +51 -0
  1033. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/testutils.py +375 -0
  1034. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/thirdparty/__init__.py +0 -0
  1035. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/thirdparty/algotom_convert_sino.py +276 -0
  1036. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/thirdparty/pore3d_deringer_munch.py +108 -0
  1037. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/thirdparty/tomocupy_remove_stripe.py +586 -0
  1038. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/thirdparty/tomopy_phase.py +239 -0
  1039. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/thirdparty/tomwer_load_flats_darks.py +162 -0
  1040. build/lib/build/lib/build/lib/build/lib/build/lib/nabu/utils.py +836 -0
  1041. build/lib/build/lib/build/lib/build/lib/doc/conf.py +137 -0
  1042. build/lib/build/lib/build/lib/build/lib/doc/create_conf_doc.py +38 -0
  1043. build/lib/build/lib/build/lib/build/lib/doc/get_mathjax.py +34 -0
  1044. build/lib/build/lib/build/lib/build/lib/nabu/__init__.py +17 -0
  1045. build/lib/build/lib/build/lib/build/lib/nabu/app/__init__.py +0 -0
  1046. build/lib/build/lib/build/lib/build/lib/nabu/app/bootstrap.py +88 -0
  1047. build/lib/build/lib/build/lib/build/lib/nabu/app/bootstrap_stitching.py +69 -0
  1048. build/lib/build/lib/build/lib/build/lib/nabu/app/cast_volume.py +272 -0
  1049. build/lib/build/lib/build/lib/build/lib/nabu/app/cli_configs.py +626 -0
  1050. build/lib/build/lib/build/lib/build/lib/nabu/app/compare_volumes.py +94 -0
  1051. build/lib/build/lib/build/lib/build/lib/nabu/app/composite_cor.py +144 -0
  1052. build/lib/build/lib/build/lib/build/lib/nabu/app/correct_rot.py +70 -0
  1053. build/lib/build/lib/build/lib/build/lib/nabu/app/create_distortion_map_from_poly.py +153 -0
  1054. build/lib/build/lib/build/lib/build/lib/nabu/app/diag_to_pix.py +358 -0
  1055. build/lib/build/lib/build/lib/build/lib/nabu/app/diag_to_rot.py +449 -0
  1056. build/lib/build/lib/build/lib/build/lib/nabu/app/double_flatfield.py +143 -0
  1057. build/lib/build/lib/build/lib/build/lib/nabu/app/generate_header.py +261 -0
  1058. build/lib/build/lib/build/lib/build/lib/nabu/app/histogram.py +197 -0
  1059. build/lib/build/lib/build/lib/build/lib/nabu/app/multicor.py +90 -0
  1060. build/lib/build/lib/build/lib/build/lib/nabu/app/nx_z_splitter.py +125 -0
  1061. build/lib/build/lib/build/lib/build/lib/nabu/app/parse_reconstruction_log.py +151 -0
  1062. build/lib/build/lib/build/lib/build/lib/nabu/app/prepare_weights_double.py +163 -0
  1063. build/lib/build/lib/build/lib/build/lib/nabu/app/reconstruct.py +120 -0
  1064. build/lib/build/lib/build/lib/build/lib/nabu/app/reconstruct_helical.py +116 -0
  1065. build/lib/build/lib/build/lib/build/lib/nabu/app/reduce_dark_flat.py +181 -0
  1066. build/lib/build/lib/build/lib/build/lib/nabu/app/rotate.py +162 -0
  1067. build/lib/build/lib/build/lib/build/lib/nabu/app/shrink_dataset.py +98 -0
  1068. build/lib/build/lib/build/lib/build/lib/nabu/app/stitching.py +85 -0
  1069. build/lib/build/lib/build/lib/build/lib/nabu/app/tests/test_reduce_dark_flat.py +78 -0
  1070. build/lib/build/lib/build/lib/build/lib/nabu/app/utils.py +33 -0
  1071. build/lib/build/lib/build/lib/build/lib/nabu/app/validator.py +110 -0
  1072. build/lib/build/lib/build/lib/build/lib/nabu/cuda/__init__.py +0 -0
  1073. build/lib/build/lib/build/lib/build/lib/nabu/cuda/convolution.py +8 -0
  1074. build/lib/build/lib/build/lib/build/lib/nabu/cuda/fft.py +4 -0
  1075. build/lib/build/lib/build/lib/build/lib/nabu/cuda/kernel.py +97 -0
  1076. build/lib/build/lib/build/lib/build/lib/nabu/cuda/medfilt.py +6 -0
  1077. build/lib/build/lib/build/lib/build/lib/nabu/cuda/padding.py +6 -0
  1078. build/lib/build/lib/build/lib/build/lib/nabu/cuda/processing.py +75 -0
  1079. build/lib/build/lib/build/lib/build/lib/nabu/cuda/tests/__init__.py +1 -0
  1080. build/lib/build/lib/build/lib/build/lib/nabu/cuda/utils.py +331 -0
  1081. build/lib/build/lib/build/lib/build/lib/nabu/estimation/__init__.py +12 -0
  1082. build/lib/build/lib/build/lib/build/lib/nabu/estimation/alignment.py +578 -0
  1083. build/lib/build/lib/build/lib/build/lib/nabu/estimation/cor.py +1621 -0
  1084. build/lib/build/lib/build/lib/build/lib/nabu/estimation/cor_sino.py +183 -0
  1085. build/lib/build/lib/build/lib/build/lib/nabu/estimation/distortion.py +112 -0
  1086. build/lib/build/lib/build/lib/build/lib/nabu/estimation/focus.py +362 -0
  1087. build/lib/build/lib/build/lib/build/lib/nabu/estimation/tests/__init__.py +0 -0
  1088. build/lib/build/lib/build/lib/build/lib/nabu/estimation/tests/test_alignment.py +70 -0
  1089. build/lib/build/lib/build/lib/build/lib/nabu/estimation/tests/test_cor.py +472 -0
  1090. build/lib/build/lib/build/lib/build/lib/nabu/estimation/tests/test_focus.py +105 -0
  1091. build/lib/build/lib/build/lib/build/lib/nabu/estimation/tests/test_tilt.py +41 -0
  1092. build/lib/build/lib/build/lib/build/lib/nabu/estimation/tests/test_translation.py +78 -0
  1093. build/lib/build/lib/build/lib/build/lib/nabu/estimation/tilt.py +214 -0
  1094. build/lib/build/lib/build/lib/build/lib/nabu/estimation/translation.py +193 -0
  1095. build/lib/build/lib/build/lib/build/lib/nabu/estimation/utils.py +39 -0
  1096. build/lib/build/lib/build/lib/build/lib/nabu/io/__init__.py +2 -0
  1097. build/lib/build/lib/build/lib/build/lib/nabu/io/cast_volume.py +371 -0
  1098. build/lib/build/lib/build/lib/build/lib/nabu/io/detector_distortion.py +305 -0
  1099. build/lib/build/lib/build/lib/build/lib/nabu/io/reader.py +628 -0
  1100. build/lib/build/lib/build/lib/build/lib/nabu/io/reader_helical.py +114 -0
  1101. build/lib/build/lib/build/lib/build/lib/nabu/io/tests/__init__.py +0 -0
  1102. build/lib/build/lib/build/lib/build/lib/nabu/io/tests/test_cast_volume.py +339 -0
  1103. build/lib/build/lib/build/lib/build/lib/nabu/io/tests/test_detector_distortion.py +178 -0
  1104. build/lib/build/lib/build/lib/build/lib/nabu/io/tests/test_writers.py +187 -0
  1105. build/lib/build/lib/build/lib/build/lib/nabu/io/tiffwriter_zmm.py +99 -0
  1106. build/lib/build/lib/build/lib/build/lib/nabu/io/utils.py +263 -0
  1107. build/lib/build/lib/build/lib/build/lib/nabu/io/writer.py +892 -0
  1108. build/lib/build/lib/build/lib/build/lib/nabu/misc/__init__.py +0 -0
  1109. build/lib/build/lib/build/lib/build/lib/nabu/misc/binning.py +98 -0
  1110. build/lib/build/lib/build/lib/build/lib/nabu/misc/fftshift.py +6 -0
  1111. build/lib/build/lib/build/lib/build/lib/nabu/misc/filters.py +24 -0
  1112. build/lib/build/lib/build/lib/build/lib/nabu/misc/fourier_filters.py +152 -0
  1113. build/lib/build/lib/build/lib/build/lib/nabu/misc/histogram.py +6 -0
  1114. build/lib/build/lib/build/lib/build/lib/nabu/misc/histogram_cuda.py +8 -0
  1115. build/lib/build/lib/build/lib/build/lib/nabu/misc/kernel_base.py +4 -0
  1116. build/lib/build/lib/build/lib/build/lib/nabu/misc/padding.py +83 -0
  1117. build/lib/build/lib/build/lib/build/lib/nabu/misc/padding_base.py +6 -0
  1118. build/lib/build/lib/build/lib/build/lib/nabu/misc/processing_base.py +4 -0
  1119. build/lib/build/lib/build/lib/build/lib/nabu/misc/rotation.py +6 -0
  1120. build/lib/build/lib/build/lib/build/lib/nabu/misc/rotation_cuda.py +6 -0
  1121. build/lib/build/lib/build/lib/build/lib/nabu/misc/tests/__init__.py +1 -0
  1122. build/lib/build/lib/build/lib/build/lib/nabu/misc/tests/test_binning.py +48 -0
  1123. build/lib/build/lib/build/lib/build/lib/nabu/misc/tests/test_interpolation.py +70 -0
  1124. build/lib/build/lib/build/lib/build/lib/nabu/misc/transpose.py +6 -0
  1125. build/lib/build/lib/build/lib/build/lib/nabu/misc/unsharp.py +4 -0
  1126. build/lib/build/lib/build/lib/build/lib/nabu/misc/unsharp_cuda.py +6 -0
  1127. build/lib/build/lib/build/lib/build/lib/nabu/misc/unsharp_opencl.py +8 -0
  1128. build/lib/build/lib/build/lib/build/lib/nabu/misc/utils.py +117 -0
  1129. build/lib/build/lib/build/lib/build/lib/nabu/opencl/__init__.py +0 -0
  1130. build/lib/build/lib/build/lib/build/lib/nabu/opencl/fft.py +6 -0
  1131. build/lib/build/lib/build/lib/build/lib/nabu/opencl/kernel.py +135 -0
  1132. build/lib/build/lib/build/lib/build/lib/nabu/opencl/memcpy.py +35 -0
  1133. build/lib/build/lib/build/lib/build/lib/nabu/opencl/padding.py +6 -0
  1134. build/lib/build/lib/build/lib/build/lib/nabu/opencl/processing.py +62 -0
  1135. build/lib/build/lib/build/lib/build/lib/nabu/opencl/tests/__init__.py +0 -0
  1136. build/lib/build/lib/build/lib/build/lib/nabu/opencl/utils.py +292 -0
  1137. build/lib/build/lib/build/lib/build/lib/nabu/pipeline/__init__.py +0 -0
  1138. build/lib/build/lib/build/lib/build/lib/nabu/pipeline/config.py +265 -0
  1139. build/lib/build/lib/build/lib/build/lib/nabu/pipeline/config_validators.py +589 -0
  1140. build/lib/build/lib/build/lib/build/lib/nabu/pipeline/datadump.py +164 -0
  1141. build/lib/build/lib/build/lib/build/lib/nabu/pipeline/dataset_validator.py +211 -0
  1142. build/lib/build/lib/build/lib/build/lib/nabu/pipeline/detector_distortion_provider.py +20 -0
  1143. build/lib/build/lib/build/lib/build/lib/nabu/pipeline/estimators.py +1012 -0
  1144. build/lib/build/lib/build/lib/build/lib/nabu/pipeline/fallback_utils.py +149 -0
  1145. build/lib/build/lib/build/lib/build/lib/nabu/pipeline/fullfield/__init__.py +0 -0
  1146. build/lib/build/lib/build/lib/build/lib/nabu/pipeline/fullfield/chunked.py +849 -0
  1147. build/lib/build/lib/build/lib/build/lib/nabu/pipeline/fullfield/chunked_cuda.py +152 -0
  1148. build/lib/build/lib/build/lib/build/lib/nabu/pipeline/fullfield/computations.py +260 -0
  1149. build/lib/build/lib/build/lib/build/lib/nabu/pipeline/fullfield/dataset_validator.py +63 -0
  1150. build/lib/build/lib/build/lib/build/lib/nabu/pipeline/fullfield/nabu_config.py +590 -0
  1151. build/lib/build/lib/build/lib/build/lib/nabu/pipeline/fullfield/processconfig.py +825 -0
  1152. build/lib/build/lib/build/lib/build/lib/nabu/pipeline/fullfield/reconstruction.py +851 -0
  1153. build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/__init__.py +0 -0
  1154. build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/dataset_validator.py +19 -0
  1155. build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/fbp.py +147 -0
  1156. build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/filtering.py +246 -0
  1157. build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/gridded_accumulator.py +575 -0
  1158. build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/helical_chunked_regridded.py +1670 -0
  1159. build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/helical_chunked_regridded_cuda.py +119 -0
  1160. build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/helical_reconstruction.py +598 -0
  1161. build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/helical_utils.py +42 -0
  1162. build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/nabu_config.py +175 -0
  1163. build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/processconfig.py +62 -0
  1164. build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/span_strategy.py +483 -0
  1165. build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/tests/__init__.py +0 -0
  1166. build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/tests/test_accumulator.py +157 -0
  1167. build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/tests/test_pipeline_elements_full.py +355 -0
  1168. build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/tests/test_strategy.py +61 -0
  1169. build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/utils.py +51 -0
  1170. build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/weight_balancer.py +101 -0
  1171. build/lib/build/lib/build/lib/build/lib/nabu/pipeline/params.py +163 -0
  1172. build/lib/build/lib/build/lib/build/lib/nabu/pipeline/processconfig.py +210 -0
  1173. build/lib/build/lib/build/lib/build/lib/nabu/pipeline/tests/test_chunk_reader.py +78 -0
  1174. build/lib/build/lib/build/lib/build/lib/nabu/pipeline/tests/test_estimators.py +149 -0
  1175. build/lib/build/lib/build/lib/build/lib/nabu/pipeline/utils.py +116 -0
  1176. build/lib/build/lib/build/lib/build/lib/nabu/pipeline/writer.py +193 -0
  1177. build/lib/build/lib/build/lib/build/lib/nabu/pipeline/xrdct/__init__.py +0 -0
  1178. build/lib/build/lib/build/lib/build/lib/nabu/preproc/__init__.py +7 -0
  1179. build/lib/build/lib/build/lib/build/lib/nabu/preproc/alignment.py +11 -0
  1180. build/lib/build/lib/build/lib/build/lib/nabu/preproc/ccd.py +161 -0
  1181. build/lib/build/lib/build/lib/build/lib/nabu/preproc/ccd_cuda.py +169 -0
  1182. build/lib/build/lib/build/lib/build/lib/nabu/preproc/ctf.py +361 -0
  1183. build/lib/build/lib/build/lib/build/lib/nabu/preproc/ctf_cuda.py +142 -0
  1184. build/lib/build/lib/build/lib/build/lib/nabu/preproc/distortion.py +92 -0
  1185. build/lib/build/lib/build/lib/build/lib/nabu/preproc/double_flatfield.py +212 -0
  1186. build/lib/build/lib/build/lib/build/lib/nabu/preproc/double_flatfield_cuda.py +174 -0
  1187. build/lib/build/lib/build/lib/build/lib/nabu/preproc/double_flatfield_variable_region.py +68 -0
  1188. build/lib/build/lib/build/lib/build/lib/nabu/preproc/flatfield.py +448 -0
  1189. build/lib/build/lib/build/lib/build/lib/nabu/preproc/flatfield_cuda.py +144 -0
  1190. build/lib/build/lib/build/lib/build/lib/nabu/preproc/flatfield_variable_region.py +79 -0
  1191. build/lib/build/lib/build/lib/build/lib/nabu/preproc/phase.py +425 -0
  1192. build/lib/build/lib/build/lib/build/lib/nabu/preproc/phase_cuda.py +143 -0
  1193. build/lib/build/lib/build/lib/build/lib/nabu/preproc/shift.py +95 -0
  1194. build/lib/build/lib/build/lib/build/lib/nabu/preproc/shift_cuda.py +102 -0
  1195. build/lib/build/lib/build/lib/build/lib/nabu/preproc/tests/__init__.py +1 -0
  1196. build/lib/build/lib/build/lib/build/lib/nabu/preproc/tests/test_ccd_corr.py +59 -0
  1197. build/lib/build/lib/build/lib/build/lib/nabu/preproc/tests/test_ctf.py +250 -0
  1198. build/lib/build/lib/build/lib/build/lib/nabu/preproc/tests/test_double_flatfield.py +86 -0
  1199. build/lib/build/lib/build/lib/build/lib/nabu/preproc/tests/test_flatfield.py +626 -0
  1200. build/lib/build/lib/build/lib/build/lib/nabu/preproc/tests/test_paganin.py +67 -0
  1201. build/lib/build/lib/build/lib/build/lib/nabu/preproc/tests/test_vshift.py +73 -0
  1202. build/lib/build/lib/build/lib/build/lib/nabu/processing/__init__.py +0 -0
  1203. build/lib/build/lib/build/lib/build/lib/nabu/processing/convolution_cuda.py +375 -0
  1204. build/lib/build/lib/build/lib/build/lib/nabu/processing/fft_base.py +163 -0
  1205. build/lib/build/lib/build/lib/build/lib/nabu/processing/fft_cuda.py +256 -0
  1206. build/lib/build/lib/build/lib/build/lib/nabu/processing/fft_opencl.py +54 -0
  1207. build/lib/build/lib/build/lib/build/lib/nabu/processing/fftshift.py +134 -0
  1208. build/lib/build/lib/build/lib/build/lib/nabu/processing/histogram.py +286 -0
  1209. build/lib/build/lib/build/lib/build/lib/nabu/processing/histogram_cuda.py +103 -0
  1210. build/lib/build/lib/build/lib/build/lib/nabu/processing/kernel_base.py +126 -0
  1211. build/lib/build/lib/build/lib/build/lib/nabu/processing/medfilt_cuda.py +159 -0
  1212. build/lib/build/lib/build/lib/build/lib/nabu/processing/muladd.py +29 -0
  1213. build/lib/build/lib/build/lib/build/lib/nabu/processing/muladd_cuda.py +68 -0
  1214. build/lib/build/lib/build/lib/build/lib/nabu/processing/padding_base.py +71 -0
  1215. build/lib/build/lib/build/lib/build/lib/nabu/processing/padding_cuda.py +75 -0
  1216. build/lib/build/lib/build/lib/build/lib/nabu/processing/padding_opencl.py +77 -0
  1217. build/lib/build/lib/build/lib/build/lib/nabu/processing/processing_base.py +123 -0
  1218. build/lib/build/lib/build/lib/build/lib/nabu/processing/roll_opencl.py +64 -0
  1219. build/lib/build/lib/build/lib/build/lib/nabu/processing/rotation.py +63 -0
  1220. build/lib/build/lib/build/lib/build/lib/nabu/processing/rotation_cuda.py +66 -0
  1221. build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/__init__.py +0 -0
  1222. build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_fft.py +268 -0
  1223. build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_fftshift.py +71 -0
  1224. build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_histogram.py +55 -0
  1225. build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_medfilt.py +77 -0
  1226. build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_muladd.py +54 -0
  1227. build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_padding.py +247 -0
  1228. build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_roll.py +63 -0
  1229. build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_rotation.py +83 -0
  1230. build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_transpose.py +72 -0
  1231. build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_unsharp.py +106 -0
  1232. build/lib/build/lib/build/lib/build/lib/nabu/processing/transpose.py +126 -0
  1233. build/lib/build/lib/build/lib/build/lib/nabu/processing/unsharp.py +79 -0
  1234. build/lib/build/lib/build/lib/build/lib/nabu/processing/unsharp_cuda.py +53 -0
  1235. build/lib/build/lib/build/lib/build/lib/nabu/processing/unsharp_opencl.py +75 -0
  1236. build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/__init__.py +3 -0
  1237. build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/cone.py +241 -0
  1238. build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/fbp.py +124 -0
  1239. build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/fbp_base.py +391 -0
  1240. build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/fbp_opencl.py +78 -0
  1241. build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/filtering.py +220 -0
  1242. build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/filtering_cuda.py +103 -0
  1243. build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/filtering_opencl.py +111 -0
  1244. build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/projection.py +240 -0
  1245. build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/reconstructor.py +174 -0
  1246. build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/reconstructor_cuda.py +44 -0
  1247. build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/rings.py +248 -0
  1248. build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/rings_cuda.py +322 -0
  1249. build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/sinogram.py +467 -0
  1250. build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/sinogram_cuda.py +250 -0
  1251. build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/sinogram_opencl.py +40 -0
  1252. build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/tests/__init__.py +1 -0
  1253. build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_cone.py +308 -0
  1254. build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_deringer.py +220 -0
  1255. build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_fbp.py +252 -0
  1256. build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_filtering.py +133 -0
  1257. build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_halftomo.py +100 -0
  1258. build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_projector.py +164 -0
  1259. build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_reconstructor.py +93 -0
  1260. build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_sino_normalization.py +85 -0
  1261. build/lib/build/lib/build/lib/build/lib/nabu/resources/__init__.py +0 -0
  1262. build/lib/build/lib/build/lib/build/lib/nabu/resources/cli/__init__.py +0 -0
  1263. build/lib/build/lib/build/lib/build/lib/nabu/resources/cor.py +5 -0
  1264. build/lib/build/lib/build/lib/build/lib/nabu/resources/dataset_analyzer.py +469 -0
  1265. build/lib/build/lib/build/lib/build/lib/nabu/resources/gpu.py +169 -0
  1266. build/lib/build/lib/build/lib/build/lib/nabu/resources/logger.py +130 -0
  1267. build/lib/build/lib/build/lib/build/lib/nabu/resources/nxflatfield.py +217 -0
  1268. build/lib/build/lib/build/lib/build/lib/nabu/resources/templates/__init__.py +0 -0
  1269. build/lib/build/lib/build/lib/build/lib/nabu/resources/tests/__init__.py +0 -0
  1270. build/lib/build/lib/build/lib/build/lib/nabu/resources/tests/test_nxflatfield.py +104 -0
  1271. build/lib/build/lib/build/lib/build/lib/nabu/resources/tests/test_units.py +47 -0
  1272. build/lib/build/lib/build/lib/build/lib/nabu/resources/utils.py +174 -0
  1273. build/lib/build/lib/build/lib/build/lib/nabu/stitching/__init__.py +0 -0
  1274. build/lib/build/lib/build/lib/build/lib/nabu/stitching/alignment.py +184 -0
  1275. build/lib/build/lib/build/lib/build/lib/nabu/stitching/config.py +1286 -0
  1276. build/lib/build/lib/build/lib/build/lib/nabu/stitching/definitions.py +6 -0
  1277. build/lib/build/lib/build/lib/build/lib/nabu/stitching/frame_composition.py +155 -0
  1278. build/lib/build/lib/build/lib/build/lib/nabu/stitching/overlap.py +373 -0
  1279. build/lib/build/lib/build/lib/build/lib/nabu/stitching/sample_normalization.py +60 -0
  1280. build/lib/build/lib/build/lib/build/lib/nabu/stitching/slurm_utils.py +204 -0
  1281. build/lib/build/lib/build/lib/build/lib/nabu/stitching/tests/__init__.py +0 -0
  1282. build/lib/build/lib/build/lib/build/lib/nabu/stitching/tests/test_alignment.py +99 -0
  1283. build/lib/build/lib/build/lib/build/lib/nabu/stitching/tests/test_config.py +226 -0
  1284. build/lib/build/lib/build/lib/build/lib/nabu/stitching/tests/test_frame_composition.py +180 -0
  1285. build/lib/build/lib/build/lib/build/lib/nabu/stitching/tests/test_overlap.py +98 -0
  1286. build/lib/build/lib/build/lib/build/lib/nabu/stitching/tests/test_sample_normalization.py +49 -0
  1287. build/lib/build/lib/build/lib/build/lib/nabu/stitching/tests/test_slurm_utils.py +146 -0
  1288. build/lib/build/lib/build/lib/build/lib/nabu/stitching/tests/test_utils.py +21 -0
  1289. build/lib/build/lib/build/lib/build/lib/nabu/stitching/tests/test_z_stitching.py +1183 -0
  1290. build/lib/build/lib/build/lib/build/lib/nabu/stitching/utils.py +563 -0
  1291. build/lib/build/lib/build/lib/build/lib/nabu/stitching/z_stitching.py +2279 -0
  1292. build/lib/build/lib/build/lib/build/lib/nabu/tests.py +51 -0
  1293. build/lib/build/lib/build/lib/build/lib/nabu/testutils.py +375 -0
  1294. build/lib/build/lib/build/lib/build/lib/nabu/thirdparty/__init__.py +0 -0
  1295. build/lib/build/lib/build/lib/build/lib/nabu/thirdparty/algotom_convert_sino.py +276 -0
  1296. build/lib/build/lib/build/lib/build/lib/nabu/thirdparty/pore3d_deringer_munch.py +108 -0
  1297. build/lib/build/lib/build/lib/build/lib/nabu/thirdparty/tomocupy_remove_stripe.py +586 -0
  1298. build/lib/build/lib/build/lib/build/lib/nabu/thirdparty/tomopy_phase.py +239 -0
  1299. build/lib/build/lib/build/lib/build/lib/nabu/thirdparty/tomwer_load_flats_darks.py +162 -0
  1300. build/lib/build/lib/build/lib/build/lib/nabu/utils.py +836 -0
  1301. build/lib/build/lib/build/lib/doc/conf.py +137 -0
  1302. build/lib/build/lib/build/lib/doc/create_conf_doc.py +38 -0
  1303. build/lib/build/lib/build/lib/doc/get_mathjax.py +34 -0
  1304. build/lib/build/lib/build/lib/nabu/__init__.py +17 -0
  1305. build/lib/build/lib/build/lib/nabu/app/__init__.py +0 -0
  1306. build/lib/build/lib/build/lib/nabu/app/bootstrap.py +88 -0
  1307. build/lib/build/lib/build/lib/nabu/app/bootstrap_stitching.py +69 -0
  1308. build/lib/build/lib/build/lib/nabu/app/cast_volume.py +272 -0
  1309. build/lib/build/lib/build/lib/nabu/app/cli_configs.py +626 -0
  1310. build/lib/build/lib/build/lib/nabu/app/compare_volumes.py +94 -0
  1311. build/lib/build/lib/build/lib/nabu/app/composite_cor.py +144 -0
  1312. build/lib/build/lib/build/lib/nabu/app/correct_rot.py +70 -0
  1313. build/lib/build/lib/build/lib/nabu/app/create_distortion_map_from_poly.py +153 -0
  1314. build/lib/build/lib/build/lib/nabu/app/diag_to_pix.py +358 -0
  1315. build/lib/build/lib/build/lib/nabu/app/diag_to_rot.py +449 -0
  1316. build/lib/build/lib/build/lib/nabu/app/double_flatfield.py +143 -0
  1317. build/lib/build/lib/build/lib/nabu/app/generate_header.py +261 -0
  1318. build/lib/build/lib/build/lib/nabu/app/histogram.py +197 -0
  1319. build/lib/build/lib/build/lib/nabu/app/multicor.py +90 -0
  1320. build/lib/build/lib/build/lib/nabu/app/nx_z_splitter.py +125 -0
  1321. build/lib/build/lib/build/lib/nabu/app/parse_reconstruction_log.py +151 -0
  1322. build/lib/build/lib/build/lib/nabu/app/prepare_weights_double.py +163 -0
  1323. build/lib/build/lib/build/lib/nabu/app/reconstruct.py +120 -0
  1324. build/lib/build/lib/build/lib/nabu/app/reconstruct_helical.py +116 -0
  1325. build/lib/build/lib/build/lib/nabu/app/reduce_dark_flat.py +181 -0
  1326. build/lib/build/lib/build/lib/nabu/app/rotate.py +162 -0
  1327. build/lib/build/lib/build/lib/nabu/app/shrink_dataset.py +98 -0
  1328. build/lib/build/lib/build/lib/nabu/app/stitching.py +85 -0
  1329. build/lib/build/lib/build/lib/nabu/app/tests/test_reduce_dark_flat.py +78 -0
  1330. build/lib/build/lib/build/lib/nabu/app/utils.py +33 -0
  1331. build/lib/build/lib/build/lib/nabu/app/validator.py +110 -0
  1332. build/lib/build/lib/build/lib/nabu/cuda/__init__.py +0 -0
  1333. build/lib/build/lib/build/lib/nabu/cuda/convolution.py +8 -0
  1334. build/lib/build/lib/build/lib/nabu/cuda/fft.py +4 -0
  1335. build/lib/build/lib/build/lib/nabu/cuda/kernel.py +97 -0
  1336. build/lib/build/lib/build/lib/nabu/cuda/medfilt.py +6 -0
  1337. build/lib/build/lib/build/lib/nabu/cuda/padding.py +6 -0
  1338. build/lib/build/lib/build/lib/nabu/cuda/processing.py +75 -0
  1339. build/lib/build/lib/build/lib/nabu/cuda/tests/__init__.py +1 -0
  1340. build/lib/build/lib/build/lib/nabu/cuda/utils.py +331 -0
  1341. build/lib/build/lib/build/lib/nabu/estimation/__init__.py +12 -0
  1342. build/lib/build/lib/build/lib/nabu/estimation/alignment.py +578 -0
  1343. build/lib/build/lib/build/lib/nabu/estimation/cor.py +1621 -0
  1344. build/lib/build/lib/build/lib/nabu/estimation/cor_sino.py +183 -0
  1345. build/lib/build/lib/build/lib/nabu/estimation/distortion.py +112 -0
  1346. build/lib/build/lib/build/lib/nabu/estimation/focus.py +362 -0
  1347. build/lib/build/lib/build/lib/nabu/estimation/tests/__init__.py +0 -0
  1348. build/lib/build/lib/build/lib/nabu/estimation/tests/test_alignment.py +70 -0
  1349. build/lib/build/lib/build/lib/nabu/estimation/tests/test_cor.py +472 -0
  1350. build/lib/build/lib/build/lib/nabu/estimation/tests/test_focus.py +105 -0
  1351. build/lib/build/lib/build/lib/nabu/estimation/tests/test_tilt.py +41 -0
  1352. build/lib/build/lib/build/lib/nabu/estimation/tests/test_translation.py +78 -0
  1353. build/lib/build/lib/build/lib/nabu/estimation/tilt.py +214 -0
  1354. build/lib/build/lib/build/lib/nabu/estimation/translation.py +193 -0
  1355. build/lib/build/lib/build/lib/nabu/estimation/utils.py +39 -0
  1356. build/lib/build/lib/build/lib/nabu/io/__init__.py +2 -0
  1357. build/lib/build/lib/build/lib/nabu/io/cast_volume.py +371 -0
  1358. build/lib/build/lib/build/lib/nabu/io/detector_distortion.py +305 -0
  1359. build/lib/build/lib/build/lib/nabu/io/reader.py +628 -0
  1360. build/lib/build/lib/build/lib/nabu/io/reader_helical.py +114 -0
  1361. build/lib/build/lib/build/lib/nabu/io/tests/__init__.py +0 -0
  1362. build/lib/build/lib/build/lib/nabu/io/tests/test_cast_volume.py +339 -0
  1363. build/lib/build/lib/build/lib/nabu/io/tests/test_detector_distortion.py +178 -0
  1364. build/lib/build/lib/build/lib/nabu/io/tests/test_writers.py +187 -0
  1365. build/lib/build/lib/build/lib/nabu/io/tiffwriter_zmm.py +99 -0
  1366. build/lib/build/lib/build/lib/nabu/io/utils.py +263 -0
  1367. build/lib/build/lib/build/lib/nabu/io/writer.py +892 -0
  1368. build/lib/build/lib/build/lib/nabu/misc/__init__.py +0 -0
  1369. build/lib/build/lib/build/lib/nabu/misc/binning.py +98 -0
  1370. build/lib/build/lib/build/lib/nabu/misc/fftshift.py +6 -0
  1371. build/lib/build/lib/build/lib/nabu/misc/filters.py +24 -0
  1372. build/lib/build/lib/build/lib/nabu/misc/fourier_filters.py +152 -0
  1373. build/lib/build/lib/build/lib/nabu/misc/histogram.py +6 -0
  1374. build/lib/build/lib/build/lib/nabu/misc/histogram_cuda.py +8 -0
  1375. build/lib/build/lib/build/lib/nabu/misc/kernel_base.py +4 -0
  1376. build/lib/build/lib/build/lib/nabu/misc/padding.py +83 -0
  1377. build/lib/build/lib/build/lib/nabu/misc/padding_base.py +6 -0
  1378. build/lib/build/lib/build/lib/nabu/misc/processing_base.py +4 -0
  1379. build/lib/build/lib/build/lib/nabu/misc/rotation.py +6 -0
  1380. build/lib/build/lib/build/lib/nabu/misc/rotation_cuda.py +6 -0
  1381. build/lib/build/lib/build/lib/nabu/misc/tests/__init__.py +1 -0
  1382. build/lib/build/lib/build/lib/nabu/misc/tests/test_binning.py +48 -0
  1383. build/lib/build/lib/build/lib/nabu/misc/tests/test_interpolation.py +70 -0
  1384. build/lib/build/lib/build/lib/nabu/misc/transpose.py +6 -0
  1385. build/lib/build/lib/build/lib/nabu/misc/unsharp.py +4 -0
  1386. build/lib/build/lib/build/lib/nabu/misc/unsharp_cuda.py +6 -0
  1387. build/lib/build/lib/build/lib/nabu/misc/unsharp_opencl.py +8 -0
  1388. build/lib/build/lib/build/lib/nabu/misc/utils.py +117 -0
  1389. build/lib/build/lib/build/lib/nabu/opencl/__init__.py +0 -0
  1390. build/lib/build/lib/build/lib/nabu/opencl/fft.py +6 -0
  1391. build/lib/build/lib/build/lib/nabu/opencl/kernel.py +135 -0
  1392. build/lib/build/lib/build/lib/nabu/opencl/memcpy.py +35 -0
  1393. build/lib/build/lib/build/lib/nabu/opencl/padding.py +6 -0
  1394. build/lib/build/lib/build/lib/nabu/opencl/processing.py +62 -0
  1395. build/lib/build/lib/build/lib/nabu/opencl/tests/__init__.py +0 -0
  1396. build/lib/build/lib/build/lib/nabu/opencl/utils.py +292 -0
  1397. build/lib/build/lib/build/lib/nabu/pipeline/__init__.py +0 -0
  1398. build/lib/build/lib/build/lib/nabu/pipeline/config.py +265 -0
  1399. build/lib/build/lib/build/lib/nabu/pipeline/config_validators.py +589 -0
  1400. build/lib/build/lib/build/lib/nabu/pipeline/datadump.py +164 -0
  1401. build/lib/build/lib/build/lib/nabu/pipeline/dataset_validator.py +211 -0
  1402. build/lib/build/lib/build/lib/nabu/pipeline/detector_distortion_provider.py +20 -0
  1403. build/lib/build/lib/build/lib/nabu/pipeline/estimators.py +1012 -0
  1404. build/lib/build/lib/build/lib/nabu/pipeline/fallback_utils.py +149 -0
  1405. build/lib/build/lib/build/lib/nabu/pipeline/fullfield/__init__.py +0 -0
  1406. build/lib/build/lib/build/lib/nabu/pipeline/fullfield/chunked.py +849 -0
  1407. build/lib/build/lib/build/lib/nabu/pipeline/fullfield/chunked_cuda.py +152 -0
  1408. build/lib/build/lib/build/lib/nabu/pipeline/fullfield/computations.py +260 -0
  1409. build/lib/build/lib/build/lib/nabu/pipeline/fullfield/dataset_validator.py +63 -0
  1410. build/lib/build/lib/build/lib/nabu/pipeline/fullfield/nabu_config.py +590 -0
  1411. build/lib/build/lib/build/lib/nabu/pipeline/fullfield/processconfig.py +825 -0
  1412. build/lib/build/lib/build/lib/nabu/pipeline/fullfield/reconstruction.py +851 -0
  1413. build/lib/build/lib/build/lib/nabu/pipeline/helical/__init__.py +0 -0
  1414. build/lib/build/lib/build/lib/nabu/pipeline/helical/dataset_validator.py +19 -0
  1415. build/lib/build/lib/build/lib/nabu/pipeline/helical/fbp.py +147 -0
  1416. build/lib/build/lib/build/lib/nabu/pipeline/helical/filtering.py +246 -0
  1417. build/lib/build/lib/build/lib/nabu/pipeline/helical/gridded_accumulator.py +575 -0
  1418. build/lib/build/lib/build/lib/nabu/pipeline/helical/helical_chunked_regridded.py +1670 -0
  1419. build/lib/build/lib/build/lib/nabu/pipeline/helical/helical_chunked_regridded_cuda.py +119 -0
  1420. build/lib/build/lib/build/lib/nabu/pipeline/helical/helical_reconstruction.py +598 -0
  1421. build/lib/build/lib/build/lib/nabu/pipeline/helical/helical_utils.py +42 -0
  1422. build/lib/build/lib/build/lib/nabu/pipeline/helical/nabu_config.py +175 -0
  1423. build/lib/build/lib/build/lib/nabu/pipeline/helical/processconfig.py +62 -0
  1424. build/lib/build/lib/build/lib/nabu/pipeline/helical/span_strategy.py +483 -0
  1425. build/lib/build/lib/build/lib/nabu/pipeline/helical/tests/__init__.py +0 -0
  1426. build/lib/build/lib/build/lib/nabu/pipeline/helical/tests/test_accumulator.py +157 -0
  1427. build/lib/build/lib/build/lib/nabu/pipeline/helical/tests/test_pipeline_elements_full.py +355 -0
  1428. build/lib/build/lib/build/lib/nabu/pipeline/helical/tests/test_strategy.py +61 -0
  1429. build/lib/build/lib/build/lib/nabu/pipeline/helical/utils.py +51 -0
  1430. build/lib/build/lib/build/lib/nabu/pipeline/helical/weight_balancer.py +101 -0
  1431. build/lib/build/lib/build/lib/nabu/pipeline/params.py +163 -0
  1432. build/lib/build/lib/build/lib/nabu/pipeline/processconfig.py +210 -0
  1433. build/lib/build/lib/build/lib/nabu/pipeline/tests/test_chunk_reader.py +78 -0
  1434. build/lib/build/lib/build/lib/nabu/pipeline/tests/test_estimators.py +149 -0
  1435. build/lib/build/lib/build/lib/nabu/pipeline/utils.py +116 -0
  1436. build/lib/build/lib/build/lib/nabu/pipeline/writer.py +193 -0
  1437. build/lib/build/lib/build/lib/nabu/pipeline/xrdct/__init__.py +0 -0
  1438. build/lib/build/lib/build/lib/nabu/preproc/__init__.py +7 -0
  1439. build/lib/build/lib/build/lib/nabu/preproc/alignment.py +11 -0
  1440. build/lib/build/lib/build/lib/nabu/preproc/ccd.py +161 -0
  1441. build/lib/build/lib/build/lib/nabu/preproc/ccd_cuda.py +169 -0
  1442. build/lib/build/lib/build/lib/nabu/preproc/ctf.py +361 -0
  1443. build/lib/build/lib/build/lib/nabu/preproc/ctf_cuda.py +142 -0
  1444. build/lib/build/lib/build/lib/nabu/preproc/distortion.py +92 -0
  1445. build/lib/build/lib/build/lib/nabu/preproc/double_flatfield.py +212 -0
  1446. build/lib/build/lib/build/lib/nabu/preproc/double_flatfield_cuda.py +174 -0
  1447. build/lib/build/lib/build/lib/nabu/preproc/double_flatfield_variable_region.py +68 -0
  1448. build/lib/build/lib/build/lib/nabu/preproc/flatfield.py +448 -0
  1449. build/lib/build/lib/build/lib/nabu/preproc/flatfield_cuda.py +144 -0
  1450. build/lib/build/lib/build/lib/nabu/preproc/flatfield_variable_region.py +79 -0
  1451. build/lib/build/lib/build/lib/nabu/preproc/phase.py +425 -0
  1452. build/lib/build/lib/build/lib/nabu/preproc/phase_cuda.py +143 -0
  1453. build/lib/build/lib/build/lib/nabu/preproc/shift.py +95 -0
  1454. build/lib/build/lib/build/lib/nabu/preproc/shift_cuda.py +102 -0
  1455. build/lib/build/lib/build/lib/nabu/preproc/tests/__init__.py +1 -0
  1456. build/lib/build/lib/build/lib/nabu/preproc/tests/test_ccd_corr.py +59 -0
  1457. build/lib/build/lib/build/lib/nabu/preproc/tests/test_ctf.py +250 -0
  1458. build/lib/build/lib/build/lib/nabu/preproc/tests/test_double_flatfield.py +86 -0
  1459. build/lib/build/lib/build/lib/nabu/preproc/tests/test_flatfield.py +626 -0
  1460. build/lib/build/lib/build/lib/nabu/preproc/tests/test_paganin.py +67 -0
  1461. build/lib/build/lib/build/lib/nabu/preproc/tests/test_vshift.py +73 -0
  1462. build/lib/build/lib/build/lib/nabu/processing/__init__.py +0 -0
  1463. build/lib/build/lib/build/lib/nabu/processing/convolution_cuda.py +375 -0
  1464. build/lib/build/lib/build/lib/nabu/processing/fft_base.py +163 -0
  1465. build/lib/build/lib/build/lib/nabu/processing/fft_cuda.py +256 -0
  1466. build/lib/build/lib/build/lib/nabu/processing/fft_opencl.py +54 -0
  1467. build/lib/build/lib/build/lib/nabu/processing/fftshift.py +134 -0
  1468. build/lib/build/lib/build/lib/nabu/processing/histogram.py +286 -0
  1469. build/lib/build/lib/build/lib/nabu/processing/histogram_cuda.py +103 -0
  1470. build/lib/build/lib/build/lib/nabu/processing/kernel_base.py +126 -0
  1471. build/lib/build/lib/build/lib/nabu/processing/medfilt_cuda.py +159 -0
  1472. build/lib/build/lib/build/lib/nabu/processing/muladd.py +29 -0
  1473. build/lib/build/lib/build/lib/nabu/processing/muladd_cuda.py +68 -0
  1474. build/lib/build/lib/build/lib/nabu/processing/padding_base.py +71 -0
  1475. build/lib/build/lib/build/lib/nabu/processing/padding_cuda.py +75 -0
  1476. build/lib/build/lib/build/lib/nabu/processing/padding_opencl.py +77 -0
  1477. build/lib/build/lib/build/lib/nabu/processing/processing_base.py +123 -0
  1478. build/lib/build/lib/build/lib/nabu/processing/roll_opencl.py +64 -0
  1479. build/lib/build/lib/build/lib/nabu/processing/rotation.py +63 -0
  1480. build/lib/build/lib/build/lib/nabu/processing/rotation_cuda.py +66 -0
  1481. build/lib/build/lib/build/lib/nabu/processing/tests/__init__.py +0 -0
  1482. build/lib/build/lib/build/lib/nabu/processing/tests/test_fft.py +268 -0
  1483. build/lib/build/lib/build/lib/nabu/processing/tests/test_fftshift.py +71 -0
  1484. build/lib/build/lib/build/lib/nabu/processing/tests/test_histogram.py +55 -0
  1485. build/lib/build/lib/build/lib/nabu/processing/tests/test_medfilt.py +77 -0
  1486. build/lib/build/lib/build/lib/nabu/processing/tests/test_muladd.py +54 -0
  1487. build/lib/build/lib/build/lib/nabu/processing/tests/test_padding.py +247 -0
  1488. build/lib/build/lib/build/lib/nabu/processing/tests/test_roll.py +63 -0
  1489. build/lib/build/lib/build/lib/nabu/processing/tests/test_rotation.py +83 -0
  1490. build/lib/build/lib/build/lib/nabu/processing/tests/test_transpose.py +72 -0
  1491. build/lib/build/lib/build/lib/nabu/processing/tests/test_unsharp.py +106 -0
  1492. build/lib/build/lib/build/lib/nabu/processing/transpose.py +126 -0
  1493. build/lib/build/lib/build/lib/nabu/processing/unsharp.py +79 -0
  1494. build/lib/build/lib/build/lib/nabu/processing/unsharp_cuda.py +53 -0
  1495. build/lib/build/lib/build/lib/nabu/processing/unsharp_opencl.py +75 -0
  1496. build/lib/build/lib/build/lib/nabu/reconstruction/__init__.py +3 -0
  1497. build/lib/build/lib/build/lib/nabu/reconstruction/cone.py +241 -0
  1498. build/lib/build/lib/build/lib/nabu/reconstruction/fbp.py +124 -0
  1499. build/lib/build/lib/build/lib/nabu/reconstruction/fbp_base.py +391 -0
  1500. build/lib/build/lib/build/lib/nabu/reconstruction/fbp_opencl.py +78 -0
  1501. build/lib/build/lib/build/lib/nabu/reconstruction/filtering.py +220 -0
  1502. build/lib/build/lib/build/lib/nabu/reconstruction/filtering_cuda.py +103 -0
  1503. build/lib/build/lib/build/lib/nabu/reconstruction/filtering_opencl.py +111 -0
  1504. build/lib/build/lib/build/lib/nabu/reconstruction/projection.py +240 -0
  1505. build/lib/build/lib/build/lib/nabu/reconstruction/reconstructor.py +174 -0
  1506. build/lib/build/lib/build/lib/nabu/reconstruction/reconstructor_cuda.py +44 -0
  1507. build/lib/build/lib/build/lib/nabu/reconstruction/rings.py +248 -0
  1508. build/lib/build/lib/build/lib/nabu/reconstruction/rings_cuda.py +322 -0
  1509. build/lib/build/lib/build/lib/nabu/reconstruction/sinogram.py +467 -0
  1510. build/lib/build/lib/build/lib/nabu/reconstruction/sinogram_cuda.py +250 -0
  1511. build/lib/build/lib/build/lib/nabu/reconstruction/sinogram_opencl.py +40 -0
  1512. build/lib/build/lib/build/lib/nabu/reconstruction/tests/__init__.py +1 -0
  1513. build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_cone.py +308 -0
  1514. build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_deringer.py +220 -0
  1515. build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_fbp.py +252 -0
  1516. build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_filtering.py +133 -0
  1517. build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_halftomo.py +100 -0
  1518. build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_projector.py +164 -0
  1519. build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_reconstructor.py +93 -0
  1520. build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_sino_normalization.py +85 -0
  1521. build/lib/build/lib/build/lib/nabu/resources/__init__.py +0 -0
  1522. build/lib/build/lib/build/lib/nabu/resources/cli/__init__.py +0 -0
  1523. build/lib/build/lib/build/lib/nabu/resources/cor.py +5 -0
  1524. build/lib/build/lib/build/lib/nabu/resources/dataset_analyzer.py +469 -0
  1525. build/lib/build/lib/build/lib/nabu/resources/gpu.py +169 -0
  1526. build/lib/build/lib/build/lib/nabu/resources/logger.py +130 -0
  1527. build/lib/build/lib/build/lib/nabu/resources/nxflatfield.py +217 -0
  1528. build/lib/build/lib/build/lib/nabu/resources/templates/__init__.py +0 -0
  1529. build/lib/build/lib/build/lib/nabu/resources/tests/__init__.py +0 -0
  1530. build/lib/build/lib/build/lib/nabu/resources/tests/test_nxflatfield.py +104 -0
  1531. build/lib/build/lib/build/lib/nabu/resources/tests/test_units.py +47 -0
  1532. build/lib/build/lib/build/lib/nabu/resources/utils.py +174 -0
  1533. build/lib/build/lib/build/lib/nabu/stitching/__init__.py +0 -0
  1534. build/lib/build/lib/build/lib/nabu/stitching/alignment.py +184 -0
  1535. build/lib/build/lib/build/lib/nabu/stitching/config.py +1286 -0
  1536. build/lib/build/lib/build/lib/nabu/stitching/definitions.py +6 -0
  1537. build/lib/build/lib/build/lib/nabu/stitching/frame_composition.py +155 -0
  1538. build/lib/build/lib/build/lib/nabu/stitching/overlap.py +373 -0
  1539. build/lib/build/lib/build/lib/nabu/stitching/sample_normalization.py +60 -0
  1540. build/lib/build/lib/build/lib/nabu/stitching/slurm_utils.py +204 -0
  1541. build/lib/build/lib/build/lib/nabu/stitching/tests/__init__.py +0 -0
  1542. build/lib/build/lib/build/lib/nabu/stitching/tests/test_alignment.py +99 -0
  1543. build/lib/build/lib/build/lib/nabu/stitching/tests/test_config.py +226 -0
  1544. build/lib/build/lib/build/lib/nabu/stitching/tests/test_frame_composition.py +180 -0
  1545. build/lib/build/lib/build/lib/nabu/stitching/tests/test_overlap.py +98 -0
  1546. build/lib/build/lib/build/lib/nabu/stitching/tests/test_sample_normalization.py +49 -0
  1547. build/lib/build/lib/build/lib/nabu/stitching/tests/test_slurm_utils.py +146 -0
  1548. build/lib/build/lib/build/lib/nabu/stitching/tests/test_utils.py +21 -0
  1549. build/lib/build/lib/build/lib/nabu/stitching/tests/test_z_stitching.py +1183 -0
  1550. build/lib/build/lib/build/lib/nabu/stitching/utils.py +563 -0
  1551. build/lib/build/lib/build/lib/nabu/stitching/z_stitching.py +2279 -0
  1552. build/lib/build/lib/build/lib/nabu/tests.py +51 -0
  1553. build/lib/build/lib/build/lib/nabu/testutils.py +375 -0
  1554. build/lib/build/lib/build/lib/nabu/thirdparty/__init__.py +0 -0
  1555. build/lib/build/lib/build/lib/nabu/thirdparty/algotom_convert_sino.py +276 -0
  1556. build/lib/build/lib/build/lib/nabu/thirdparty/pore3d_deringer_munch.py +108 -0
  1557. build/lib/build/lib/build/lib/nabu/thirdparty/tomocupy_remove_stripe.py +586 -0
  1558. build/lib/build/lib/build/lib/nabu/thirdparty/tomopy_phase.py +239 -0
  1559. build/lib/build/lib/build/lib/nabu/thirdparty/tomwer_load_flats_darks.py +162 -0
  1560. build/lib/build/lib/build/lib/nabu/utils.py +836 -0
  1561. build/lib/build/lib/doc/conf.py +137 -0
  1562. build/lib/build/lib/doc/create_conf_doc.py +38 -0
  1563. build/lib/build/lib/doc/get_mathjax.py +34 -0
  1564. build/lib/build/lib/nabu/__init__.py +17 -0
  1565. build/lib/build/lib/nabu/app/__init__.py +0 -0
  1566. build/lib/build/lib/nabu/app/bootstrap.py +88 -0
  1567. build/lib/build/lib/nabu/app/bootstrap_stitching.py +69 -0
  1568. build/lib/build/lib/nabu/app/cast_volume.py +272 -0
  1569. build/lib/build/lib/nabu/app/cli_configs.py +626 -0
  1570. build/lib/build/lib/nabu/app/compare_volumes.py +94 -0
  1571. build/lib/build/lib/nabu/app/composite_cor.py +144 -0
  1572. build/lib/build/lib/nabu/app/correct_rot.py +70 -0
  1573. build/lib/build/lib/nabu/app/create_distortion_map_from_poly.py +153 -0
  1574. build/lib/build/lib/nabu/app/diag_to_pix.py +358 -0
  1575. build/lib/build/lib/nabu/app/diag_to_rot.py +449 -0
  1576. build/lib/build/lib/nabu/app/double_flatfield.py +143 -0
  1577. build/lib/build/lib/nabu/app/generate_header.py +261 -0
  1578. build/lib/build/lib/nabu/app/histogram.py +197 -0
  1579. build/lib/build/lib/nabu/app/multicor.py +90 -0
  1580. build/lib/build/lib/nabu/app/nx_z_splitter.py +125 -0
  1581. build/lib/build/lib/nabu/app/parse_reconstruction_log.py +151 -0
  1582. build/lib/build/lib/nabu/app/prepare_weights_double.py +163 -0
  1583. build/lib/build/lib/nabu/app/reconstruct.py +120 -0
  1584. build/lib/build/lib/nabu/app/reconstruct_helical.py +116 -0
  1585. build/lib/build/lib/nabu/app/reduce_dark_flat.py +181 -0
  1586. build/lib/build/lib/nabu/app/rotate.py +162 -0
  1587. build/lib/build/lib/nabu/app/shrink_dataset.py +98 -0
  1588. build/lib/build/lib/nabu/app/stitching.py +85 -0
  1589. build/lib/build/lib/nabu/app/tests/test_reduce_dark_flat.py +78 -0
  1590. build/lib/build/lib/nabu/app/utils.py +33 -0
  1591. build/lib/build/lib/nabu/app/validator.py +110 -0
  1592. build/lib/build/lib/nabu/cuda/__init__.py +0 -0
  1593. build/lib/build/lib/nabu/cuda/convolution.py +8 -0
  1594. build/lib/build/lib/nabu/cuda/fft.py +4 -0
  1595. build/lib/build/lib/nabu/cuda/kernel.py +97 -0
  1596. build/lib/build/lib/nabu/cuda/medfilt.py +6 -0
  1597. build/lib/build/lib/nabu/cuda/padding.py +6 -0
  1598. build/lib/build/lib/nabu/cuda/processing.py +75 -0
  1599. build/lib/build/lib/nabu/cuda/tests/__init__.py +1 -0
  1600. build/lib/build/lib/nabu/cuda/utils.py +331 -0
  1601. build/lib/build/lib/nabu/estimation/__init__.py +12 -0
  1602. build/lib/build/lib/nabu/estimation/alignment.py +578 -0
  1603. build/lib/build/lib/nabu/estimation/cor.py +1621 -0
  1604. build/lib/build/lib/nabu/estimation/cor_sino.py +183 -0
  1605. build/lib/build/lib/nabu/estimation/distortion.py +112 -0
  1606. build/lib/build/lib/nabu/estimation/focus.py +362 -0
  1607. build/lib/build/lib/nabu/estimation/tests/__init__.py +0 -0
  1608. build/lib/build/lib/nabu/estimation/tests/test_alignment.py +70 -0
  1609. build/lib/build/lib/nabu/estimation/tests/test_cor.py +472 -0
  1610. build/lib/build/lib/nabu/estimation/tests/test_focus.py +105 -0
  1611. build/lib/build/lib/nabu/estimation/tests/test_tilt.py +41 -0
  1612. build/lib/build/lib/nabu/estimation/tests/test_translation.py +78 -0
  1613. build/lib/build/lib/nabu/estimation/tilt.py +214 -0
  1614. build/lib/build/lib/nabu/estimation/translation.py +193 -0
  1615. build/lib/build/lib/nabu/estimation/utils.py +39 -0
  1616. build/lib/build/lib/nabu/io/__init__.py +2 -0
  1617. build/lib/build/lib/nabu/io/cast_volume.py +371 -0
  1618. build/lib/build/lib/nabu/io/detector_distortion.py +305 -0
  1619. build/lib/build/lib/nabu/io/reader.py +628 -0
  1620. build/lib/build/lib/nabu/io/reader_helical.py +114 -0
  1621. build/lib/build/lib/nabu/io/tests/__init__.py +0 -0
  1622. build/lib/build/lib/nabu/io/tests/test_cast_volume.py +339 -0
  1623. build/lib/build/lib/nabu/io/tests/test_detector_distortion.py +178 -0
  1624. build/lib/build/lib/nabu/io/tests/test_writers.py +187 -0
  1625. build/lib/build/lib/nabu/io/tiffwriter_zmm.py +99 -0
  1626. build/lib/build/lib/nabu/io/utils.py +263 -0
  1627. build/lib/build/lib/nabu/io/writer.py +892 -0
  1628. build/lib/build/lib/nabu/misc/__init__.py +0 -0
  1629. build/lib/build/lib/nabu/misc/binning.py +98 -0
  1630. build/lib/build/lib/nabu/misc/fftshift.py +6 -0
  1631. build/lib/build/lib/nabu/misc/filters.py +24 -0
  1632. build/lib/build/lib/nabu/misc/fourier_filters.py +152 -0
  1633. build/lib/build/lib/nabu/misc/histogram.py +6 -0
  1634. build/lib/build/lib/nabu/misc/histogram_cuda.py +8 -0
  1635. build/lib/build/lib/nabu/misc/kernel_base.py +4 -0
  1636. build/lib/build/lib/nabu/misc/padding.py +83 -0
  1637. build/lib/build/lib/nabu/misc/padding_base.py +6 -0
  1638. build/lib/build/lib/nabu/misc/processing_base.py +4 -0
  1639. build/lib/build/lib/nabu/misc/rotation.py +6 -0
  1640. build/lib/build/lib/nabu/misc/rotation_cuda.py +6 -0
  1641. build/lib/build/lib/nabu/misc/tests/__init__.py +1 -0
  1642. build/lib/build/lib/nabu/misc/tests/test_binning.py +48 -0
  1643. build/lib/build/lib/nabu/misc/tests/test_interpolation.py +70 -0
  1644. build/lib/build/lib/nabu/misc/transpose.py +6 -0
  1645. build/lib/build/lib/nabu/misc/unsharp.py +4 -0
  1646. build/lib/build/lib/nabu/misc/unsharp_cuda.py +6 -0
  1647. build/lib/build/lib/nabu/misc/unsharp_opencl.py +8 -0
  1648. build/lib/build/lib/nabu/misc/utils.py +117 -0
  1649. build/lib/build/lib/nabu/opencl/__init__.py +0 -0
  1650. build/lib/build/lib/nabu/opencl/fft.py +6 -0
  1651. build/lib/build/lib/nabu/opencl/kernel.py +135 -0
  1652. build/lib/build/lib/nabu/opencl/memcpy.py +35 -0
  1653. build/lib/build/lib/nabu/opencl/padding.py +6 -0
  1654. build/lib/build/lib/nabu/opencl/processing.py +62 -0
  1655. build/lib/build/lib/nabu/opencl/tests/__init__.py +0 -0
  1656. build/lib/build/lib/nabu/opencl/utils.py +292 -0
  1657. build/lib/build/lib/nabu/pipeline/__init__.py +0 -0
  1658. build/lib/build/lib/nabu/pipeline/config.py +265 -0
  1659. build/lib/build/lib/nabu/pipeline/config_validators.py +589 -0
  1660. build/lib/build/lib/nabu/pipeline/datadump.py +164 -0
  1661. build/lib/build/lib/nabu/pipeline/dataset_validator.py +211 -0
  1662. build/lib/build/lib/nabu/pipeline/detector_distortion_provider.py +20 -0
  1663. build/lib/build/lib/nabu/pipeline/estimators.py +1012 -0
  1664. build/lib/build/lib/nabu/pipeline/fallback_utils.py +149 -0
  1665. build/lib/build/lib/nabu/pipeline/fullfield/__init__.py +0 -0
  1666. build/lib/build/lib/nabu/pipeline/fullfield/chunked.py +849 -0
  1667. build/lib/build/lib/nabu/pipeline/fullfield/chunked_cuda.py +152 -0
  1668. build/lib/build/lib/nabu/pipeline/fullfield/computations.py +260 -0
  1669. build/lib/build/lib/nabu/pipeline/fullfield/dataset_validator.py +63 -0
  1670. build/lib/build/lib/nabu/pipeline/fullfield/nabu_config.py +590 -0
  1671. build/lib/build/lib/nabu/pipeline/fullfield/processconfig.py +825 -0
  1672. build/lib/build/lib/nabu/pipeline/fullfield/reconstruction.py +851 -0
  1673. build/lib/build/lib/nabu/pipeline/helical/__init__.py +0 -0
  1674. build/lib/build/lib/nabu/pipeline/helical/dataset_validator.py +19 -0
  1675. build/lib/build/lib/nabu/pipeline/helical/fbp.py +147 -0
  1676. build/lib/build/lib/nabu/pipeline/helical/filtering.py +246 -0
  1677. build/lib/build/lib/nabu/pipeline/helical/gridded_accumulator.py +575 -0
  1678. build/lib/build/lib/nabu/pipeline/helical/helical_chunked_regridded.py +1670 -0
  1679. build/lib/build/lib/nabu/pipeline/helical/helical_chunked_regridded_cuda.py +119 -0
  1680. build/lib/build/lib/nabu/pipeline/helical/helical_reconstruction.py +598 -0
  1681. build/lib/build/lib/nabu/pipeline/helical/helical_utils.py +42 -0
  1682. build/lib/build/lib/nabu/pipeline/helical/nabu_config.py +175 -0
  1683. build/lib/build/lib/nabu/pipeline/helical/processconfig.py +62 -0
  1684. build/lib/build/lib/nabu/pipeline/helical/span_strategy.py +483 -0
  1685. build/lib/build/lib/nabu/pipeline/helical/tests/__init__.py +0 -0
  1686. build/lib/build/lib/nabu/pipeline/helical/tests/test_accumulator.py +157 -0
  1687. build/lib/build/lib/nabu/pipeline/helical/tests/test_pipeline_elements_full.py +355 -0
  1688. build/lib/build/lib/nabu/pipeline/helical/tests/test_strategy.py +61 -0
  1689. build/lib/build/lib/nabu/pipeline/helical/utils.py +51 -0
  1690. build/lib/build/lib/nabu/pipeline/helical/weight_balancer.py +101 -0
  1691. build/lib/build/lib/nabu/pipeline/params.py +163 -0
  1692. build/lib/build/lib/nabu/pipeline/processconfig.py +210 -0
  1693. build/lib/build/lib/nabu/pipeline/tests/test_chunk_reader.py +78 -0
  1694. build/lib/build/lib/nabu/pipeline/tests/test_estimators.py +149 -0
  1695. build/lib/build/lib/nabu/pipeline/utils.py +116 -0
  1696. build/lib/build/lib/nabu/pipeline/writer.py +193 -0
  1697. build/lib/build/lib/nabu/pipeline/xrdct/__init__.py +0 -0
  1698. build/lib/build/lib/nabu/preproc/__init__.py +7 -0
  1699. build/lib/build/lib/nabu/preproc/alignment.py +11 -0
  1700. build/lib/build/lib/nabu/preproc/ccd.py +161 -0
  1701. build/lib/build/lib/nabu/preproc/ccd_cuda.py +169 -0
  1702. build/lib/build/lib/nabu/preproc/ctf.py +361 -0
  1703. build/lib/build/lib/nabu/preproc/ctf_cuda.py +142 -0
  1704. build/lib/build/lib/nabu/preproc/distortion.py +92 -0
  1705. build/lib/build/lib/nabu/preproc/double_flatfield.py +212 -0
  1706. build/lib/build/lib/nabu/preproc/double_flatfield_cuda.py +174 -0
  1707. build/lib/build/lib/nabu/preproc/double_flatfield_variable_region.py +68 -0
  1708. build/lib/build/lib/nabu/preproc/flatfield.py +448 -0
  1709. build/lib/build/lib/nabu/preproc/flatfield_cuda.py +144 -0
  1710. build/lib/build/lib/nabu/preproc/flatfield_variable_region.py +79 -0
  1711. build/lib/build/lib/nabu/preproc/phase.py +425 -0
  1712. build/lib/build/lib/nabu/preproc/phase_cuda.py +143 -0
  1713. build/lib/build/lib/nabu/preproc/shift.py +95 -0
  1714. build/lib/build/lib/nabu/preproc/shift_cuda.py +102 -0
  1715. build/lib/build/lib/nabu/preproc/tests/__init__.py +1 -0
  1716. build/lib/build/lib/nabu/preproc/tests/test_ccd_corr.py +59 -0
  1717. build/lib/build/lib/nabu/preproc/tests/test_ctf.py +250 -0
  1718. build/lib/build/lib/nabu/preproc/tests/test_double_flatfield.py +86 -0
  1719. build/lib/build/lib/nabu/preproc/tests/test_flatfield.py +626 -0
  1720. build/lib/build/lib/nabu/preproc/tests/test_paganin.py +67 -0
  1721. build/lib/build/lib/nabu/preproc/tests/test_vshift.py +73 -0
  1722. build/lib/build/lib/nabu/processing/__init__.py +0 -0
  1723. build/lib/build/lib/nabu/processing/convolution_cuda.py +375 -0
  1724. build/lib/build/lib/nabu/processing/fft_base.py +163 -0
  1725. build/lib/build/lib/nabu/processing/fft_cuda.py +256 -0
  1726. build/lib/build/lib/nabu/processing/fft_opencl.py +54 -0
  1727. build/lib/build/lib/nabu/processing/fftshift.py +134 -0
  1728. build/lib/build/lib/nabu/processing/histogram.py +286 -0
  1729. build/lib/build/lib/nabu/processing/histogram_cuda.py +103 -0
  1730. build/lib/build/lib/nabu/processing/kernel_base.py +126 -0
  1731. build/lib/build/lib/nabu/processing/medfilt_cuda.py +159 -0
  1732. build/lib/build/lib/nabu/processing/muladd.py +29 -0
  1733. build/lib/build/lib/nabu/processing/muladd_cuda.py +68 -0
  1734. build/lib/build/lib/nabu/processing/padding_base.py +71 -0
  1735. build/lib/build/lib/nabu/processing/padding_cuda.py +75 -0
  1736. build/lib/build/lib/nabu/processing/padding_opencl.py +77 -0
  1737. build/lib/build/lib/nabu/processing/processing_base.py +123 -0
  1738. build/lib/build/lib/nabu/processing/roll_opencl.py +64 -0
  1739. build/lib/build/lib/nabu/processing/rotation.py +63 -0
  1740. build/lib/build/lib/nabu/processing/rotation_cuda.py +66 -0
  1741. build/lib/build/lib/nabu/processing/tests/__init__.py +0 -0
  1742. build/lib/build/lib/nabu/processing/tests/test_fft.py +268 -0
  1743. build/lib/build/lib/nabu/processing/tests/test_fftshift.py +71 -0
  1744. build/lib/build/lib/nabu/processing/tests/test_histogram.py +55 -0
  1745. build/lib/build/lib/nabu/processing/tests/test_medfilt.py +77 -0
  1746. build/lib/build/lib/nabu/processing/tests/test_muladd.py +54 -0
  1747. build/lib/build/lib/nabu/processing/tests/test_padding.py +247 -0
  1748. build/lib/build/lib/nabu/processing/tests/test_roll.py +63 -0
  1749. build/lib/build/lib/nabu/processing/tests/test_rotation.py +83 -0
  1750. build/lib/build/lib/nabu/processing/tests/test_transpose.py +72 -0
  1751. build/lib/build/lib/nabu/processing/tests/test_unsharp.py +106 -0
  1752. build/lib/build/lib/nabu/processing/transpose.py +126 -0
  1753. build/lib/build/lib/nabu/processing/unsharp.py +79 -0
  1754. build/lib/build/lib/nabu/processing/unsharp_cuda.py +53 -0
  1755. build/lib/build/lib/nabu/processing/unsharp_opencl.py +75 -0
  1756. build/lib/build/lib/nabu/reconstruction/__init__.py +3 -0
  1757. build/lib/build/lib/nabu/reconstruction/cone.py +241 -0
  1758. build/lib/build/lib/nabu/reconstruction/fbp.py +124 -0
  1759. build/lib/build/lib/nabu/reconstruction/fbp_base.py +391 -0
  1760. build/lib/build/lib/nabu/reconstruction/fbp_opencl.py +78 -0
  1761. build/lib/build/lib/nabu/reconstruction/filtering.py +220 -0
  1762. build/lib/build/lib/nabu/reconstruction/filtering_cuda.py +103 -0
  1763. build/lib/build/lib/nabu/reconstruction/filtering_opencl.py +111 -0
  1764. build/lib/build/lib/nabu/reconstruction/projection.py +240 -0
  1765. build/lib/build/lib/nabu/reconstruction/reconstructor.py +174 -0
  1766. build/lib/build/lib/nabu/reconstruction/reconstructor_cuda.py +44 -0
  1767. build/lib/build/lib/nabu/reconstruction/rings.py +248 -0
  1768. build/lib/build/lib/nabu/reconstruction/rings_cuda.py +322 -0
  1769. build/lib/build/lib/nabu/reconstruction/sinogram.py +467 -0
  1770. build/lib/build/lib/nabu/reconstruction/sinogram_cuda.py +250 -0
  1771. build/lib/build/lib/nabu/reconstruction/sinogram_opencl.py +40 -0
  1772. build/lib/build/lib/nabu/reconstruction/tests/__init__.py +1 -0
  1773. build/lib/build/lib/nabu/reconstruction/tests/test_cone.py +308 -0
  1774. build/lib/build/lib/nabu/reconstruction/tests/test_deringer.py +220 -0
  1775. build/lib/build/lib/nabu/reconstruction/tests/test_fbp.py +252 -0
  1776. build/lib/build/lib/nabu/reconstruction/tests/test_filtering.py +133 -0
  1777. build/lib/build/lib/nabu/reconstruction/tests/test_halftomo.py +100 -0
  1778. build/lib/build/lib/nabu/reconstruction/tests/test_projector.py +164 -0
  1779. build/lib/build/lib/nabu/reconstruction/tests/test_reconstructor.py +93 -0
  1780. build/lib/build/lib/nabu/reconstruction/tests/test_sino_normalization.py +85 -0
  1781. build/lib/build/lib/nabu/resources/__init__.py +0 -0
  1782. build/lib/build/lib/nabu/resources/cli/__init__.py +0 -0
  1783. build/lib/build/lib/nabu/resources/cor.py +5 -0
  1784. build/lib/build/lib/nabu/resources/dataset_analyzer.py +469 -0
  1785. build/lib/build/lib/nabu/resources/gpu.py +169 -0
  1786. build/lib/build/lib/nabu/resources/logger.py +130 -0
  1787. build/lib/build/lib/nabu/resources/nxflatfield.py +217 -0
  1788. build/lib/build/lib/nabu/resources/templates/__init__.py +0 -0
  1789. build/lib/build/lib/nabu/resources/tests/__init__.py +0 -0
  1790. build/lib/build/lib/nabu/resources/tests/test_nxflatfield.py +104 -0
  1791. build/lib/build/lib/nabu/resources/tests/test_units.py +47 -0
  1792. build/lib/build/lib/nabu/resources/utils.py +174 -0
  1793. build/lib/build/lib/nabu/stitching/__init__.py +0 -0
  1794. build/lib/build/lib/nabu/stitching/alignment.py +184 -0
  1795. build/lib/build/lib/nabu/stitching/config.py +1286 -0
  1796. build/lib/build/lib/nabu/stitching/definitions.py +6 -0
  1797. build/lib/build/lib/nabu/stitching/frame_composition.py +155 -0
  1798. build/lib/build/lib/nabu/stitching/overlap.py +373 -0
  1799. build/lib/build/lib/nabu/stitching/sample_normalization.py +60 -0
  1800. build/lib/build/lib/nabu/stitching/slurm_utils.py +204 -0
  1801. build/lib/build/lib/nabu/stitching/tests/__init__.py +0 -0
  1802. build/lib/build/lib/nabu/stitching/tests/test_alignment.py +99 -0
  1803. build/lib/build/lib/nabu/stitching/tests/test_config.py +226 -0
  1804. build/lib/build/lib/nabu/stitching/tests/test_frame_composition.py +180 -0
  1805. build/lib/build/lib/nabu/stitching/tests/test_overlap.py +98 -0
  1806. build/lib/build/lib/nabu/stitching/tests/test_sample_normalization.py +49 -0
  1807. build/lib/build/lib/nabu/stitching/tests/test_slurm_utils.py +146 -0
  1808. build/lib/build/lib/nabu/stitching/tests/test_utils.py +21 -0
  1809. build/lib/build/lib/nabu/stitching/tests/test_z_stitching.py +1183 -0
  1810. build/lib/build/lib/nabu/stitching/utils.py +563 -0
  1811. build/lib/build/lib/nabu/stitching/z_stitching.py +2279 -0
  1812. build/lib/build/lib/nabu/tests.py +51 -0
  1813. build/lib/build/lib/nabu/testutils.py +375 -0
  1814. build/lib/build/lib/nabu/thirdparty/__init__.py +0 -0
  1815. build/lib/build/lib/nabu/thirdparty/algotom_convert_sino.py +276 -0
  1816. build/lib/build/lib/nabu/thirdparty/pore3d_deringer_munch.py +108 -0
  1817. build/lib/build/lib/nabu/thirdparty/tomocupy_remove_stripe.py +586 -0
  1818. build/lib/build/lib/nabu/thirdparty/tomopy_phase.py +239 -0
  1819. build/lib/build/lib/nabu/thirdparty/tomwer_load_flats_darks.py +162 -0
  1820. build/lib/build/lib/nabu/utils.py +836 -0
  1821. build/lib/doc/conf.py +137 -0
  1822. build/lib/doc/create_conf_doc.py +38 -0
  1823. build/lib/doc/get_mathjax.py +34 -0
  1824. build/lib/nabu/__init__.py +17 -0
  1825. build/lib/nabu/app/__init__.py +0 -0
  1826. build/lib/nabu/app/bootstrap.py +88 -0
  1827. build/lib/nabu/app/bootstrap_stitching.py +69 -0
  1828. build/lib/nabu/app/cast_volume.py +272 -0
  1829. build/lib/nabu/app/cli_configs.py +626 -0
  1830. build/lib/nabu/app/compare_volumes.py +94 -0
  1831. build/lib/nabu/app/composite_cor.py +144 -0
  1832. build/lib/nabu/app/correct_rot.py +70 -0
  1833. build/lib/nabu/app/create_distortion_map_from_poly.py +153 -0
  1834. build/lib/nabu/app/diag_to_pix.py +358 -0
  1835. build/lib/nabu/app/diag_to_rot.py +449 -0
  1836. build/lib/nabu/app/double_flatfield.py +143 -0
  1837. build/lib/nabu/app/generate_header.py +261 -0
  1838. build/lib/nabu/app/histogram.py +197 -0
  1839. build/lib/nabu/app/multicor.py +90 -0
  1840. build/lib/nabu/app/nx_z_splitter.py +125 -0
  1841. build/lib/nabu/app/parse_reconstruction_log.py +151 -0
  1842. build/lib/nabu/app/prepare_weights_double.py +163 -0
  1843. build/lib/nabu/app/reconstruct.py +120 -0
  1844. build/lib/nabu/app/reconstruct_helical.py +116 -0
  1845. build/lib/nabu/app/reduce_dark_flat.py +181 -0
  1846. build/lib/nabu/app/rotate.py +162 -0
  1847. build/lib/nabu/app/shrink_dataset.py +98 -0
  1848. build/lib/nabu/app/stitching.py +85 -0
  1849. build/lib/nabu/app/tests/test_reduce_dark_flat.py +78 -0
  1850. build/lib/nabu/app/utils.py +33 -0
  1851. build/lib/nabu/app/validator.py +110 -0
  1852. build/lib/nabu/cuda/__init__.py +0 -0
  1853. build/lib/nabu/cuda/convolution.py +8 -0
  1854. build/lib/nabu/cuda/fft.py +4 -0
  1855. build/lib/nabu/cuda/kernel.py +97 -0
  1856. build/lib/nabu/cuda/medfilt.py +6 -0
  1857. build/lib/nabu/cuda/padding.py +6 -0
  1858. build/lib/nabu/cuda/processing.py +75 -0
  1859. build/lib/nabu/cuda/tests/__init__.py +1 -0
  1860. build/lib/nabu/cuda/utils.py +331 -0
  1861. build/lib/nabu/estimation/__init__.py +12 -0
  1862. build/lib/nabu/estimation/alignment.py +578 -0
  1863. build/lib/nabu/estimation/cor.py +1621 -0
  1864. build/lib/nabu/estimation/cor_sino.py +183 -0
  1865. build/lib/nabu/estimation/distortion.py +112 -0
  1866. build/lib/nabu/estimation/focus.py +362 -0
  1867. build/lib/nabu/estimation/tests/__init__.py +0 -0
  1868. build/lib/nabu/estimation/tests/test_alignment.py +70 -0
  1869. build/lib/nabu/estimation/tests/test_cor.py +472 -0
  1870. build/lib/nabu/estimation/tests/test_focus.py +105 -0
  1871. build/lib/nabu/estimation/tests/test_tilt.py +41 -0
  1872. build/lib/nabu/estimation/tests/test_translation.py +78 -0
  1873. build/lib/nabu/estimation/tilt.py +214 -0
  1874. build/lib/nabu/estimation/translation.py +193 -0
  1875. build/lib/nabu/estimation/utils.py +39 -0
  1876. build/lib/nabu/io/__init__.py +2 -0
  1877. build/lib/nabu/io/cast_volume.py +371 -0
  1878. build/lib/nabu/io/detector_distortion.py +305 -0
  1879. build/lib/nabu/io/reader.py +628 -0
  1880. build/lib/nabu/io/reader_helical.py +114 -0
  1881. build/lib/nabu/io/tests/__init__.py +0 -0
  1882. build/lib/nabu/io/tests/test_cast_volume.py +339 -0
  1883. build/lib/nabu/io/tests/test_detector_distortion.py +178 -0
  1884. build/lib/nabu/io/tests/test_writers.py +187 -0
  1885. build/lib/nabu/io/tiffwriter_zmm.py +99 -0
  1886. build/lib/nabu/io/utils.py +263 -0
  1887. build/lib/nabu/io/writer.py +892 -0
  1888. build/lib/nabu/misc/__init__.py +0 -0
  1889. build/lib/nabu/misc/binning.py +98 -0
  1890. build/lib/nabu/misc/fftshift.py +6 -0
  1891. build/lib/nabu/misc/filters.py +24 -0
  1892. build/lib/nabu/misc/fourier_filters.py +152 -0
  1893. build/lib/nabu/misc/histogram.py +6 -0
  1894. build/lib/nabu/misc/histogram_cuda.py +8 -0
  1895. build/lib/nabu/misc/kernel_base.py +4 -0
  1896. build/lib/nabu/misc/padding.py +83 -0
  1897. build/lib/nabu/misc/padding_base.py +6 -0
  1898. build/lib/nabu/misc/processing_base.py +4 -0
  1899. build/lib/nabu/misc/rotation.py +6 -0
  1900. build/lib/nabu/misc/rotation_cuda.py +6 -0
  1901. build/lib/nabu/misc/tests/__init__.py +1 -0
  1902. build/lib/nabu/misc/tests/test_binning.py +48 -0
  1903. build/lib/nabu/misc/tests/test_interpolation.py +70 -0
  1904. build/lib/nabu/misc/transpose.py +6 -0
  1905. build/lib/nabu/misc/unsharp.py +4 -0
  1906. build/lib/nabu/misc/unsharp_cuda.py +6 -0
  1907. build/lib/nabu/misc/unsharp_opencl.py +8 -0
  1908. build/lib/nabu/misc/utils.py +117 -0
  1909. build/lib/nabu/opencl/__init__.py +0 -0
  1910. build/lib/nabu/opencl/fft.py +6 -0
  1911. build/lib/nabu/opencl/kernel.py +135 -0
  1912. build/lib/nabu/opencl/memcpy.py +35 -0
  1913. build/lib/nabu/opencl/padding.py +6 -0
  1914. build/lib/nabu/opencl/processing.py +62 -0
  1915. build/lib/nabu/opencl/tests/__init__.py +0 -0
  1916. build/lib/nabu/opencl/utils.py +292 -0
  1917. build/lib/nabu/pipeline/__init__.py +0 -0
  1918. build/lib/nabu/pipeline/config.py +265 -0
  1919. build/lib/nabu/pipeline/config_validators.py +589 -0
  1920. build/lib/nabu/pipeline/datadump.py +164 -0
  1921. build/lib/nabu/pipeline/dataset_validator.py +211 -0
  1922. build/lib/nabu/pipeline/detector_distortion_provider.py +20 -0
  1923. build/lib/nabu/pipeline/estimators.py +1012 -0
  1924. build/lib/nabu/pipeline/fallback_utils.py +149 -0
  1925. build/lib/nabu/pipeline/fullfield/__init__.py +0 -0
  1926. build/lib/nabu/pipeline/fullfield/chunked.py +849 -0
  1927. build/lib/nabu/pipeline/fullfield/chunked_cuda.py +152 -0
  1928. build/lib/nabu/pipeline/fullfield/computations.py +260 -0
  1929. build/lib/nabu/pipeline/fullfield/dataset_validator.py +63 -0
  1930. build/lib/nabu/pipeline/fullfield/nabu_config.py +590 -0
  1931. build/lib/nabu/pipeline/fullfield/processconfig.py +825 -0
  1932. build/lib/nabu/pipeline/fullfield/reconstruction.py +851 -0
  1933. build/lib/nabu/pipeline/helical/__init__.py +0 -0
  1934. build/lib/nabu/pipeline/helical/dataset_validator.py +19 -0
  1935. build/lib/nabu/pipeline/helical/fbp.py +147 -0
  1936. build/lib/nabu/pipeline/helical/filtering.py +246 -0
  1937. build/lib/nabu/pipeline/helical/gridded_accumulator.py +575 -0
  1938. build/lib/nabu/pipeline/helical/helical_chunked_regridded.py +1670 -0
  1939. build/lib/nabu/pipeline/helical/helical_chunked_regridded_cuda.py +119 -0
  1940. build/lib/nabu/pipeline/helical/helical_reconstruction.py +598 -0
  1941. build/lib/nabu/pipeline/helical/helical_utils.py +42 -0
  1942. build/lib/nabu/pipeline/helical/nabu_config.py +175 -0
  1943. build/lib/nabu/pipeline/helical/processconfig.py +62 -0
  1944. build/lib/nabu/pipeline/helical/span_strategy.py +483 -0
  1945. build/lib/nabu/pipeline/helical/tests/__init__.py +0 -0
  1946. build/lib/nabu/pipeline/helical/tests/test_accumulator.py +157 -0
  1947. build/lib/nabu/pipeline/helical/tests/test_pipeline_elements_full.py +355 -0
  1948. build/lib/nabu/pipeline/helical/tests/test_strategy.py +61 -0
  1949. build/lib/nabu/pipeline/helical/utils.py +51 -0
  1950. build/lib/nabu/pipeline/helical/weight_balancer.py +101 -0
  1951. build/lib/nabu/pipeline/params.py +163 -0
  1952. build/lib/nabu/pipeline/processconfig.py +210 -0
  1953. build/lib/nabu/pipeline/tests/test_chunk_reader.py +78 -0
  1954. build/lib/nabu/pipeline/tests/test_estimators.py +149 -0
  1955. build/lib/nabu/pipeline/utils.py +116 -0
  1956. build/lib/nabu/pipeline/writer.py +193 -0
  1957. build/lib/nabu/pipeline/xrdct/__init__.py +0 -0
  1958. build/lib/nabu/preproc/__init__.py +7 -0
  1959. build/lib/nabu/preproc/alignment.py +11 -0
  1960. build/lib/nabu/preproc/ccd.py +161 -0
  1961. build/lib/nabu/preproc/ccd_cuda.py +169 -0
  1962. build/lib/nabu/preproc/ctf.py +361 -0
  1963. build/lib/nabu/preproc/ctf_cuda.py +142 -0
  1964. build/lib/nabu/preproc/distortion.py +92 -0
  1965. build/lib/nabu/preproc/double_flatfield.py +212 -0
  1966. build/lib/nabu/preproc/double_flatfield_cuda.py +174 -0
  1967. build/lib/nabu/preproc/double_flatfield_variable_region.py +68 -0
  1968. build/lib/nabu/preproc/flatfield.py +448 -0
  1969. build/lib/nabu/preproc/flatfield_cuda.py +144 -0
  1970. build/lib/nabu/preproc/flatfield_variable_region.py +79 -0
  1971. build/lib/nabu/preproc/phase.py +425 -0
  1972. build/lib/nabu/preproc/phase_cuda.py +143 -0
  1973. build/lib/nabu/preproc/shift.py +95 -0
  1974. build/lib/nabu/preproc/shift_cuda.py +102 -0
  1975. build/lib/nabu/preproc/tests/__init__.py +1 -0
  1976. build/lib/nabu/preproc/tests/test_ccd_corr.py +59 -0
  1977. build/lib/nabu/preproc/tests/test_ctf.py +250 -0
  1978. build/lib/nabu/preproc/tests/test_double_flatfield.py +86 -0
  1979. build/lib/nabu/preproc/tests/test_flatfield.py +626 -0
  1980. build/lib/nabu/preproc/tests/test_paganin.py +67 -0
  1981. build/lib/nabu/preproc/tests/test_vshift.py +73 -0
  1982. build/lib/nabu/processing/__init__.py +0 -0
  1983. build/lib/nabu/processing/convolution_cuda.py +375 -0
  1984. build/lib/nabu/processing/fft_base.py +163 -0
  1985. build/lib/nabu/processing/fft_cuda.py +256 -0
  1986. build/lib/nabu/processing/fft_opencl.py +54 -0
  1987. build/lib/nabu/processing/fftshift.py +134 -0
  1988. build/lib/nabu/processing/histogram.py +286 -0
  1989. build/lib/nabu/processing/histogram_cuda.py +103 -0
  1990. build/lib/nabu/processing/kernel_base.py +126 -0
  1991. build/lib/nabu/processing/medfilt_cuda.py +159 -0
  1992. build/lib/nabu/processing/muladd.py +29 -0
  1993. build/lib/nabu/processing/muladd_cuda.py +68 -0
  1994. build/lib/nabu/processing/padding_base.py +71 -0
  1995. build/lib/nabu/processing/padding_cuda.py +75 -0
  1996. build/lib/nabu/processing/padding_opencl.py +77 -0
  1997. build/lib/nabu/processing/processing_base.py +123 -0
  1998. build/lib/nabu/processing/roll_opencl.py +64 -0
  1999. build/lib/nabu/processing/rotation.py +63 -0
  2000. build/lib/nabu/processing/rotation_cuda.py +66 -0
  2001. build/lib/nabu/processing/tests/__init__.py +0 -0
  2002. build/lib/nabu/processing/tests/test_fft.py +268 -0
  2003. build/lib/nabu/processing/tests/test_fftshift.py +71 -0
  2004. build/lib/nabu/processing/tests/test_histogram.py +55 -0
  2005. build/lib/nabu/processing/tests/test_medfilt.py +77 -0
  2006. build/lib/nabu/processing/tests/test_muladd.py +54 -0
  2007. build/lib/nabu/processing/tests/test_padding.py +247 -0
  2008. build/lib/nabu/processing/tests/test_roll.py +63 -0
  2009. build/lib/nabu/processing/tests/test_rotation.py +83 -0
  2010. build/lib/nabu/processing/tests/test_transpose.py +72 -0
  2011. build/lib/nabu/processing/tests/test_unsharp.py +106 -0
  2012. build/lib/nabu/processing/transpose.py +126 -0
  2013. build/lib/nabu/processing/unsharp.py +79 -0
  2014. build/lib/nabu/processing/unsharp_cuda.py +53 -0
  2015. build/lib/nabu/processing/unsharp_opencl.py +75 -0
  2016. build/lib/nabu/reconstruction/__init__.py +3 -0
  2017. build/lib/nabu/reconstruction/cone.py +241 -0
  2018. build/lib/nabu/reconstruction/fbp.py +124 -0
  2019. build/lib/nabu/reconstruction/fbp_base.py +391 -0
  2020. build/lib/nabu/reconstruction/fbp_opencl.py +78 -0
  2021. build/lib/nabu/reconstruction/filtering.py +220 -0
  2022. build/lib/nabu/reconstruction/filtering_cuda.py +103 -0
  2023. build/lib/nabu/reconstruction/filtering_opencl.py +111 -0
  2024. build/lib/nabu/reconstruction/projection.py +240 -0
  2025. build/lib/nabu/reconstruction/reconstructor.py +174 -0
  2026. build/lib/nabu/reconstruction/reconstructor_cuda.py +44 -0
  2027. build/lib/nabu/reconstruction/rings.py +248 -0
  2028. build/lib/nabu/reconstruction/rings_cuda.py +322 -0
  2029. build/lib/nabu/reconstruction/sinogram.py +467 -0
  2030. build/lib/nabu/reconstruction/sinogram_cuda.py +250 -0
  2031. build/lib/nabu/reconstruction/sinogram_opencl.py +40 -0
  2032. build/lib/nabu/reconstruction/tests/__init__.py +1 -0
  2033. build/lib/nabu/reconstruction/tests/test_cone.py +308 -0
  2034. build/lib/nabu/reconstruction/tests/test_deringer.py +220 -0
  2035. build/lib/nabu/reconstruction/tests/test_fbp.py +252 -0
  2036. build/lib/nabu/reconstruction/tests/test_filtering.py +133 -0
  2037. build/lib/nabu/reconstruction/tests/test_halftomo.py +100 -0
  2038. build/lib/nabu/reconstruction/tests/test_projector.py +164 -0
  2039. build/lib/nabu/reconstruction/tests/test_reconstructor.py +93 -0
  2040. build/lib/nabu/reconstruction/tests/test_sino_normalization.py +85 -0
  2041. build/lib/nabu/resources/__init__.py +0 -0
  2042. build/lib/nabu/resources/cli/__init__.py +0 -0
  2043. build/lib/nabu/resources/cor.py +5 -0
  2044. build/lib/nabu/resources/dataset_analyzer.py +469 -0
  2045. build/lib/nabu/resources/gpu.py +169 -0
  2046. build/lib/nabu/resources/logger.py +130 -0
  2047. build/lib/nabu/resources/nxflatfield.py +217 -0
  2048. build/lib/nabu/resources/templates/__init__.py +0 -0
  2049. build/lib/nabu/resources/tests/__init__.py +0 -0
  2050. build/lib/nabu/resources/tests/test_nxflatfield.py +104 -0
  2051. build/lib/nabu/resources/tests/test_units.py +47 -0
  2052. build/lib/nabu/resources/utils.py +174 -0
  2053. build/lib/nabu/stitching/__init__.py +0 -0
  2054. build/lib/nabu/stitching/alignment.py +184 -0
  2055. build/lib/nabu/stitching/config.py +1286 -0
  2056. build/lib/nabu/stitching/definitions.py +6 -0
  2057. build/lib/nabu/stitching/frame_composition.py +155 -0
  2058. build/lib/nabu/stitching/overlap.py +373 -0
  2059. build/lib/nabu/stitching/sample_normalization.py +60 -0
  2060. build/lib/nabu/stitching/slurm_utils.py +204 -0
  2061. build/lib/nabu/stitching/tests/__init__.py +0 -0
  2062. build/lib/nabu/stitching/tests/test_alignment.py +99 -0
  2063. build/lib/nabu/stitching/tests/test_config.py +226 -0
  2064. build/lib/nabu/stitching/tests/test_frame_composition.py +180 -0
  2065. build/lib/nabu/stitching/tests/test_overlap.py +98 -0
  2066. build/lib/nabu/stitching/tests/test_sample_normalization.py +49 -0
  2067. build/lib/nabu/stitching/tests/test_slurm_utils.py +146 -0
  2068. build/lib/nabu/stitching/tests/test_utils.py +21 -0
  2069. build/lib/nabu/stitching/tests/test_z_stitching.py +1183 -0
  2070. build/lib/nabu/stitching/utils.py +563 -0
  2071. build/lib/nabu/stitching/z_stitching.py +2279 -0
  2072. build/lib/nabu/tests.py +51 -0
  2073. build/lib/nabu/testutils.py +375 -0
  2074. build/lib/nabu/thirdparty/__init__.py +0 -0
  2075. build/lib/nabu/thirdparty/algotom_convert_sino.py +276 -0
  2076. build/lib/nabu/thirdparty/pore3d_deringer_munch.py +108 -0
  2077. build/lib/nabu/thirdparty/tomocupy_remove_stripe.py +586 -0
  2078. build/lib/nabu/thirdparty/tomopy_phase.py +239 -0
  2079. build/lib/nabu/thirdparty/tomwer_load_flats_darks.py +162 -0
  2080. build/lib/nabu/utils.py +836 -0
  2081. nabu/__init__.py +1 -1
  2082. nabu/estimation/cor.py +2 -2
  2083. nabu/io/cast_volume.py +10 -2
  2084. nabu/pipeline/estimators.py +13 -7
  2085. nabu/resources/dataset_analyzer.py +15 -6
  2086. nabu/stitching/config.py +2 -2
  2087. nabu/stitching/z_stitching.py +3 -1
  2088. {nabu-2024.1.0rc3.dist-info → nabu-2024.1.1.dist-info}/METADATA +1 -1
  2089. nabu-2024.1.1.dist-info/RECORD +2375 -0
  2090. nabu-2024.1.1.dist-info/top_level.txt +4 -0
  2091. doc/doc_config.py +0 -32
  2092. nabu-2024.1.0rc3.dist-info/RECORD +0 -296
  2093. nabu-2024.1.0rc3.dist-info/top_level.txt +0 -2
  2094. {nabu-2024.1.0rc3.dist-info → nabu-2024.1.1.dist-info}/LICENSE +0 -0
  2095. {nabu-2024.1.0rc3.dist-info → nabu-2024.1.1.dist-info}/WHEEL +0 -0
  2096. {nabu-2024.1.0rc3.dist-info → nabu-2024.1.1.dist-info}/entry_points.txt +0 -0
@@ -0,0 +1,1286 @@
1
+ # coding: utf-8
2
+ # /*##########################################################################
3
+ #
4
+ # Copyright (c) 2016-2017 European Synchrotron Radiation Facility
5
+ #
6
+ # Permission is hereby granted, free of charge, to any person obtaining a copy
7
+ # of this software and associated documentation files (the "Software"), to deal
8
+ # in the Software without restriction, including without limitation the rights
9
+ # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10
+ # copies of the Software, and to permit persons to whom the Software is
11
+ # furnished to do so, subject to the following conditions:
12
+ #
13
+ # The above copyright notice and this permission notice shall be included in
14
+ # all copies or substantial portions of the Software.
15
+ #
16
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19
+ # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20
+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21
+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
22
+ # THE SOFTWARE.
23
+ #
24
+ # ###########################################################################*/
25
+
26
+ __authors__ = ["H. Payno"]
27
+ __license__ = "MIT"
28
+ __date__ = "10/05/2022"
29
+
30
+
31
+ from math import ceil
32
+ from typing import Any, Iterable, Optional, Union, Sized
33
+ from dataclasses import dataclass
34
+ import numpy
35
+ from pyunitsystem.metricsystem import MetricSystem
36
+ from nxtomo.paths import nxtomo
37
+ from tomoscan.factory import Factory
38
+ from tomoscan.identifier import VolumeIdentifier, ScanIdentifier
39
+ from tomoscan.esrf.scan.nxtomoscan import NXtomoScan
40
+ from ..pipeline.config_validators import (
41
+ boolean_validator,
42
+ convert_to_bool,
43
+ )
44
+ from ..utils import concatenate_dict, convert_str_to_tuple
45
+ from ..io.utils import get_output_volume
46
+ from .overlap import OverlapStitchingStrategy
47
+ from .utils import ShiftAlgorithm
48
+ from .definitions import StitchingType
49
+ from .alignment import AlignmentAxis1, AlignmentAxis2
50
+ from pyunitsystem.metricsystem import MetricSystem
51
+
52
+
53
+ KEY_IMG_REG_METHOD = "img_reg_method"
54
+
55
+ KEY_WINDOW_SIZE = "window_size"
56
+
57
+ KEY_LOW_PASS_FILTER = "low_pass"
58
+
59
+ KEY_HIGH_PASS_FILTER = "high_pass"
60
+
61
+ KEY_OVERLAP_SIZE = "overlap_size"
62
+
63
+ KEY_SIDE = "side"
64
+
65
+ OUTPUT_SECTION = "output"
66
+
67
+ INPUTS_SECTION = "inputs"
68
+
69
+ Z_PRE_PROC_SECTION = "z-preproc"
70
+
71
+ Z_POST_PROC_SECTION = "z-postproc"
72
+
73
+ INPUT_DATASETS_FIELD = "input_datasets"
74
+
75
+ INPUT_PIXEL_SIZE_MM = "pixel_size"
76
+
77
+ INPUT_VOXEL_SIZE_MM = "voxel_size"
78
+
79
+ STITCHING_SECTION = "stitching"
80
+
81
+ STITCHING_STRATEGY_FIELD = "stitching_strategy"
82
+
83
+ STITCHING_TYPE_FIELD = "type"
84
+
85
+ DATA_FILE_FIELD = "location"
86
+
87
+ OVERWRITE_RESULTS_FIELD = "overwrite_results"
88
+
89
+ DATA_PATH_FIELD = "data_path"
90
+
91
+ AXIS_0_POS_PX = "axis_0_pos_px"
92
+
93
+ AXIS_1_POS_PX = "axis_1_pos_px"
94
+
95
+ AXIS_2_POS_PX = "axis_2_pos_px"
96
+
97
+ AXIS_0_POS_MM = "axis_0_pos_mm"
98
+
99
+ AXIS_1_POS_MM = "axis_1_pos_mm"
100
+
101
+ AXIS_2_POS_MM = "axis_2_pos_mm"
102
+
103
+ AXIS_0_PARAMS = "axis_0_params"
104
+
105
+ AXIS_1_PARAMS = "axis_1_params"
106
+
107
+ AXIS_2_PARAMS = "axis_2_params"
108
+
109
+ FLIP_LR = "fliplr"
110
+
111
+ FLIP_UD = "flipud"
112
+
113
+ NEXUS_VERSION_FIELD = "nexus_version"
114
+
115
+ OUTPUT_DTYPE = "data_type"
116
+
117
+ OUTPUT_VOLUME = "output_volume"
118
+
119
+ STITCHING_SLICES = "slices"
120
+
121
+ CROSS_CORRELATION_SLICE_FIELD = "slice_index_for_correlation"
122
+
123
+ RESCALE_FRAMES = "rescale_frames"
124
+
125
+ RESCALE_PARAMS = "rescale_params"
126
+
127
+ KEY_RESCALE_MIN_PERCENTILES = "rescale_min_percentile"
128
+
129
+ KEY_RESCALE_MAX_PERCENTILES = "rescale_max_percentile"
130
+
131
+ ALIGNMENT_AXIS_2_FIELD = "alignment_axis_2"
132
+
133
+ ALIGNMENT_AXIS_1_FIELD = "alignment_axis_1"
134
+
135
+ PAD_MODE_FIELD = "pad_mode"
136
+
137
+ # SLURM
138
+
139
+ SLURM_SECTION = "slurm"
140
+
141
+ SLURM_PARTITION = "partition"
142
+
143
+ SLURM_MEM = "memory"
144
+
145
+ SLURM_COR_PER_TASKS = "cpu-per-task"
146
+
147
+ SLURM_NUMBER_OF_TASKS = "n_tasks"
148
+
149
+ SLURM_N_JOBS = "n_jobs"
150
+
151
+ SLURM_OTHER_OPTIONS = "other_options"
152
+
153
+ SLURM_PREPROCESSING_COMMAND = "python_venv"
154
+
155
+ SLURM_MODULES_TO_LOADS = "modules"
156
+
157
+ SLURM_CLEAN_SCRIPTS = "clean_scripts"
158
+
159
+ # normalization by sample
160
+
161
+ NORMALIZATION_BY_SAMPLE_SECTION = "normalization_by_sample"
162
+
163
+ NORMALIZATION_BY_SAMPLE_ACTIVE_FIELD = "active"
164
+
165
+ NORMALIZATION_BY_SAMPLE_METHOD = "method"
166
+
167
+ NORMALIZATION_BY_SAMPLE_SIDE = "side"
168
+
169
+ NORMALIZATION_BY_SAMPLE_MARGIN = "margin"
170
+
171
+ NORMALIZATION_BY_SAMPLE_WIDTH = "width"
172
+
173
+ # kernel extra options
174
+
175
+ STITCHING_KERNELS_EXTRA_PARAMS = "stitching_kernels_extra_params"
176
+
177
+ KEY_THRESHOLD_FREQUENCY = "threshold_frequency"
178
+
179
+
180
+ CROSS_CORRELATION_METHODS_AXIS_0 = {
181
+ "": "", # for display
182
+ ShiftAlgorithm.NABU_FFT.value: "will call nabu `find_shift_correlate` function - shift search in fourier space",
183
+ ShiftAlgorithm.SKIMAGE.value: "use scikit image `phase_cross_correlation` function in real space",
184
+ ShiftAlgorithm.NONE.value: "no shift research is done. will only get shift from motor positions",
185
+ }
186
+
187
+ CROSS_CORRELATION_METHODS_AXIS_2 = CROSS_CORRELATION_METHODS_AXIS_0.copy()
188
+ CROSS_CORRELATION_METHODS_AXIS_2.update(
189
+ {
190
+ ShiftAlgorithm.CENTERED.value: "a fast and simple auto-CoR method. It only works when the CoR is not far from the middle of the detector. It does not work for half-tomography.",
191
+ ShiftAlgorithm.GLOBAL.value: "a slow but robust auto-CoR.",
192
+ ShiftAlgorithm.GROWING_WINDOW.value: "automatically find the CoR with a sliding-and-growing window. You can tune the option with the parameter 'cor_options'.",
193
+ ShiftAlgorithm.SLIDING_WINDOW.value: "semi-automatically find the CoR with a sliding window. You have to specify on which side the CoR is (left, center, right). Please see the 'cor_options' parameter.",
194
+ ShiftAlgorithm.COMPOSITE_COARSE_TO_FINE.value: "Estimate CoR from composite multi-angle images. Only works for 360 degrees scans.",
195
+ ShiftAlgorithm.SINO_COARSE_TO_FINE.value: "Estimate CoR from sinogram. Only works for 360 degrees scans.",
196
+ }
197
+ )
198
+
199
+ SECTIONS_COMMENTS = {
200
+ STITCHING_SECTION: "section dedicated to stich parameters\n",
201
+ OUTPUT_SECTION: "section dedicated to output parameters\n",
202
+ INPUTS_SECTION: "section dedicated to inputs\n",
203
+ SLURM_SECTION: "section didicated to slurm. If you want to run locally avoid setting 'partition or remove this section'",
204
+ NORMALIZATION_BY_SAMPLE_SECTION: "section dedicated to normalization by a sample. If activate each frame can be normalized by a sample of the frame",
205
+ }
206
+
207
+ DEFAULT_SHIFT_ALG_AXIS_0 = "nabu-fft"
208
+ DEFAULT_SHIFT_ALG_AXIS_2 = "sliding-window"
209
+
210
+ _shift_algs_axis_0 = "\n + ".join(
211
+ [f"{key}: {value}" for key, value in CROSS_CORRELATION_METHODS_AXIS_0.items()]
212
+ )
213
+ _shift_algs_axis_2 = "\n + ".join(
214
+ [f"{key}: {value}" for key, value in CROSS_CORRELATION_METHODS_AXIS_2.items()]
215
+ )
216
+
217
+ HELP_SHIFT_PARAMS = f"""options for shifts algorithms as `key1=value1,key2=value2`. For now valid keys are:
218
+ - {KEY_OVERLAP_SIZE}: size to apply stitching. If not provided will take the largest size possible'.
219
+ - {KEY_IMG_REG_METHOD}: algorithm to use to find overlaps between the different sections. Possible values are \n * for axis 0: {_shift_algs_axis_0}\n * and for axis 2: {_shift_algs_axis_2}
220
+ - {KEY_LOW_PASS_FILTER}: low pass filter value for filtering frames before shift research
221
+ - {KEY_HIGH_PASS_FILTER}: high pass filter value for filtering frames before shift research"""
222
+
223
+
224
+ def _str_to_dict(my_str: Union[str, dict]):
225
+ """convert a string as key_1=value_2;key_2=value_2 to a dict"""
226
+ if isinstance(my_str, dict):
227
+ return my_str
228
+ res = {}
229
+ for key_value in filter(None, my_str.split(";")):
230
+ key, value = key_value.split("=")
231
+ res[key] = value
232
+ return res
233
+
234
+
235
+ def _dict_to_str(ddict: dict):
236
+ return ";".join([f"{str(key)}={str(value)}" for key, value in ddict.items()])
237
+
238
+
239
+ def str_to_shifts(my_str: Optional[str]) -> Union[str, tuple]:
240
+ if my_str is None:
241
+ return None
242
+ elif isinstance(my_str, str):
243
+ my_str = my_str.replace(" ", "")
244
+ my_str = my_str.lstrip("[").lstrip("(")
245
+ my_str = my_str.rstrip("]").lstrip(")")
246
+ if my_str == "":
247
+ return None
248
+ try:
249
+ shift = ShiftAlgorithm.from_value(my_str)
250
+ except ValueError:
251
+ shifts_as_str = filter(None, my_str.replace(";", ",").split(","))
252
+ return [float(shift) for shift in shifts_as_str]
253
+ else:
254
+ return shift
255
+ elif isinstance(my_str, (tuple, list)):
256
+ return [float(shift) for shift in my_str]
257
+ else:
258
+ raise TypeError("Only str or tuple of str expected expected")
259
+
260
+
261
+ def _valid_stitching_kernels_params(my_dict: Union[dict, str]):
262
+ if isinstance(my_dict, str):
263
+ my_dict = _str_to_dict(my_str=my_dict)
264
+
265
+ valid_keys = (KEY_THRESHOLD_FREQUENCY, KEY_SIDE)
266
+ for key in my_dict.keys():
267
+ if not key in valid_keys:
268
+ raise KeyError(f"{key} is a unrecognized key")
269
+ return my_dict
270
+
271
+
272
+ def _valid_shifts_params(my_dict: Union[dict, str]):
273
+ if isinstance(my_dict, str):
274
+ my_dict = _str_to_dict(my_str=my_dict)
275
+
276
+ valid_keys = (
277
+ KEY_WINDOW_SIZE,
278
+ KEY_IMG_REG_METHOD,
279
+ KEY_OVERLAP_SIZE,
280
+ KEY_HIGH_PASS_FILTER,
281
+ KEY_LOW_PASS_FILTER,
282
+ KEY_SIDE,
283
+ )
284
+ for key in my_dict.keys():
285
+ if not key in valid_keys:
286
+ raise KeyError(f"{key} is a unrecognized key")
287
+ return my_dict
288
+
289
+
290
+ def _slices_to_list_or_slice(my_str: Optional[str]) -> Union[str, slice]:
291
+ if my_str is None:
292
+ return None
293
+ if isinstance(my_str, (tuple, list)):
294
+ if len(my_str) == 2:
295
+ return slice(int(my_str[0]), int(my_str[1]))
296
+ elif len(my_str) == 3:
297
+ return slice(int(my_str[0]), int(my_str[1]), int(my_str[2]))
298
+ else:
299
+ raise ValueError("expect at most free values to define a slice")
300
+
301
+ assert isinstance(my_str, str), f"wrong type. Get {my_str}, {type(my_str)}"
302
+ my_str = my_str.replace(" ", "")
303
+ if ":" in my_str:
304
+ split_string = my_str.split(":")
305
+ start = int(split_string[0])
306
+ stop = int(split_string[1])
307
+ if len(split_string) == 2:
308
+ step = None
309
+ elif len(split_string) == 3:
310
+ step = int(split_string[2])
311
+ else:
312
+ raise ValueError(f"unable to interpret `slices` parameter: {my_str}")
313
+ return slice(start, stop, step)
314
+ else:
315
+ my_str.replace(",", ";")
316
+ return list(filter(None, my_str.split(";")))
317
+
318
+
319
+ def _scalar_or_tuple_to_bool_or_tuple_of_bool(my_str: Union[bool, tuple, str], default=False):
320
+ if isinstance(my_str, bool):
321
+ return my_str
322
+ elif isinstance(my_str, str):
323
+ my_str = my_str.replace(" ", "")
324
+ my_str = my_str.lstrip("(").lstrip("[")
325
+ my_str = my_str.rstrip(")").lstrip("]")
326
+ my_str = my_str.replace(",", ";")
327
+ values = my_str.split(";")
328
+ values = tuple([convert_to_bool(value)[0] for value in values])
329
+ else:
330
+ values = my_str
331
+ if len(values) == 0:
332
+ return default
333
+ elif len(values) == 1:
334
+ return values[0]
335
+ else:
336
+ return values
337
+
338
+
339
+ from nabu.stitching.sample_normalization import Method, SampleSide
340
+
341
+
342
+ class NormalizationBySample:
343
+ def __init__(self) -> None:
344
+ self._active = False
345
+ self._method = Method.MEAN
346
+ self._margin = 0
347
+ self._side = SampleSide.LEFT
348
+ self._width = 30
349
+
350
+ def is_active(self):
351
+ return self._active
352
+
353
+ def set_is_active(self, active: bool):
354
+ assert isinstance(
355
+ active, bool
356
+ ), f"active is expected to be a bool. Get {type(active)} instead. Value == {active}"
357
+ self._active = active
358
+
359
+ @property
360
+ def method(self) -> Method:
361
+ return self._method
362
+
363
+ @method.setter
364
+ def method(self, method: Union[Method, str]) -> None:
365
+ self._method = Method.from_value(method)
366
+
367
+ @property
368
+ def margin(self) -> int:
369
+ return self._margin
370
+
371
+ @margin.setter
372
+ def margin(self, margin: int):
373
+ assert isinstance(margin, int), f"margin is expected to be an int. Get {type(margin)} instead"
374
+ self._margin = margin
375
+
376
+ @property
377
+ def side(self) -> SampleSide:
378
+ return self._side
379
+
380
+ @side.setter
381
+ def side(self, side: Union[SampleSide, str]):
382
+ self._side = SampleSide.from_value(side)
383
+
384
+ @property
385
+ def width(self) -> int:
386
+ return self._width
387
+
388
+ @width.setter
389
+ def width(self, width: int):
390
+ assert isinstance(width, int), f"width is expected to be an int. Get {type(width)} instead"
391
+
392
+ @staticmethod
393
+ def from_dict(my_dict: dict):
394
+ sample_normalization = NormalizationBySample()
395
+ # active
396
+ active = my_dict.get(NORMALIZATION_BY_SAMPLE_ACTIVE_FIELD, None)
397
+ if active is not None:
398
+ active = active in (True, "True", 1, "1")
399
+ sample_normalization.set_is_active(active)
400
+
401
+ # method
402
+ method = my_dict.get(NORMALIZATION_BY_SAMPLE_METHOD, None)
403
+ if method is not None:
404
+ sample_normalization.method = method
405
+
406
+ # margin
407
+ margin = my_dict.get(NORMALIZATION_BY_SAMPLE_MARGIN, None)
408
+ if margin is not None:
409
+ sample_normalization.margin = int(margin)
410
+
411
+ # side
412
+ side = my_dict.get(NORMALIZATION_BY_SAMPLE_SIDE, None)
413
+ if side is not None:
414
+ sample_normalization.side = side
415
+
416
+ # width
417
+ width = my_dict.get(NORMALIZATION_BY_SAMPLE_WIDTH, None)
418
+ if width is not None:
419
+ sample_normalization.width = int(width)
420
+
421
+ return sample_normalization
422
+
423
+ def to_dict(self) -> dict:
424
+ return {
425
+ NORMALIZATION_BY_SAMPLE_ACTIVE_FIELD: self.is_active(),
426
+ NORMALIZATION_BY_SAMPLE_METHOD: self.method.value,
427
+ NORMALIZATION_BY_SAMPLE_MARGIN: self.margin,
428
+ NORMALIZATION_BY_SAMPLE_SIDE: self.side.value,
429
+ NORMALIZATION_BY_SAMPLE_WIDTH: self.width,
430
+ }
431
+
432
+ def __eq__(self, __value: object) -> bool:
433
+ if not isinstance(__value, NormalizationBySample):
434
+ return False
435
+ else:
436
+ return self.to_dict() == __value.to_dict()
437
+
438
+
439
+ @dataclass
440
+ class SlurmConfig:
441
+ "configuration for slurm jobs"
442
+ partition: str = "" # note: must stay empty to make by default we don't use slurm (use by the configuration file)
443
+ mem: str = "128"
444
+ n_jobs: int = 1
445
+ other_options: str = ""
446
+ preprocessing_command: str = ""
447
+ modules_to_load: tuple = tuple()
448
+ clean_script: bool = ""
449
+ n_tasks: int = 1
450
+ n_cpu_per_task: int = 4
451
+
452
+ def __post_init__(self) -> None:
453
+ # make sure either 'modules' or 'preprocessing_command' is provided
454
+ if len(self.modules_to_load) > 0 and self.preprocessing_command not in (None, ""):
455
+ raise ValueError(
456
+ f"Either modules {SLURM_MODULES_TO_LOADS} or preprocessing_command {SLURM_PREPROCESSING_COMMAND} can be provided. Not both."
457
+ )
458
+
459
+ def to_dict(self) -> dict:
460
+ "dump configuration to dict"
461
+ return {
462
+ SLURM_PARTITION: self.partition if self.partition is not None else "",
463
+ SLURM_MEM: self.mem,
464
+ SLURM_N_JOBS: self.n_jobs,
465
+ SLURM_OTHER_OPTIONS: self.other_options,
466
+ SLURM_PREPROCESSING_COMMAND: self.preprocessing_command,
467
+ SLURM_MODULES_TO_LOADS: self.modules_to_load,
468
+ SLURM_CLEAN_SCRIPTS: self.clean_script,
469
+ SLURM_NUMBER_OF_TASKS: self.n_tasks,
470
+ SLURM_COR_PER_TASKS: self.n_cpu_per_task,
471
+ }
472
+
473
+ @staticmethod
474
+ def from_dict(config: dict):
475
+ return SlurmConfig(
476
+ partition=config.get(
477
+ SLURM_PARTITION, None
478
+ ), # warning: never set a default value. Would generate infinite loop from slurm call
479
+ mem=config.get(SLURM_MEM, "32GB"),
480
+ n_jobs=int(config.get(SLURM_N_JOBS, 10)),
481
+ other_options=config.get(SLURM_OTHER_OPTIONS, ""),
482
+ n_tasks=config.get(SLURM_NUMBER_OF_TASKS, 1),
483
+ n_cpu_per_task=config.get(SLURM_COR_PER_TASKS, 4),
484
+ preprocessing_command=config.get(SLURM_PREPROCESSING_COMMAND, ""),
485
+ modules_to_load=convert_str_to_tuple(config.get(SLURM_MODULES_TO_LOADS, "")),
486
+ clean_script=convert_to_bool(config.get(SLURM_CLEAN_SCRIPTS, False))[0],
487
+ )
488
+
489
+
490
+ def _cast_shift_to_str(shifts: Union[tuple, str, None]) -> str:
491
+ if shifts is None:
492
+ return ""
493
+ elif isinstance(shifts, ShiftAlgorithm):
494
+ return shifts.value
495
+ elif isinstance(shifts, str):
496
+ return shifts
497
+ elif isinstance(shifts, (tuple, list)):
498
+ return ";".join([str(value) for value in shifts])
499
+
500
+
501
+ @dataclass
502
+ class StitchingConfiguration:
503
+ """
504
+ bass class to define stitching configuration
505
+ """
506
+
507
+ axis_0_pos_px: Union[tuple, str, None]
508
+ "position along axis 0 in absolute. unit: px"
509
+ axis_1_pos_px: Union[tuple, str, None]
510
+ "position along axis 1 in absolute. unit: px"
511
+ axis_2_pos_px: Union[tuple, str, None]
512
+ "position along axis 2 in absolute. unit: px"
513
+
514
+ axis_0_pos_mm: Union[tuple, str, None] = None
515
+ "position along axis 0 in absolute. unit: mm"
516
+ axis_1_pos_mm: Union[tuple, str, None] = None
517
+ "position along axis 0 in absolute. unit: mm"
518
+ axis_2_pos_mm: Union[tuple, str, None] = None
519
+ "position along axis 0 in absolute. unit: mm"
520
+
521
+ axis_0_params: dict = None
522
+ axis_1_params: dict = None
523
+ axis_2_params: dict = None
524
+ slurm_config: SlurmConfig = None
525
+ flip_lr: Union[tuple, bool] = False
526
+ "flip frame left-right. For scan this will be append to the NXtransformations of the detector"
527
+ flip_ud: Union[tuple, bool] = False
528
+ "flip frame up-down. For scan this will be append to the NXtransformations of the detector"
529
+
530
+ overwrite_results: bool = False
531
+ stitching_strategy: OverlapStitchingStrategy = OverlapStitchingStrategy.COSINUS_WEIGHTS
532
+ stitching_kernels_extra_params: dict = None
533
+
534
+ slice_for_cross_correlation: Union[str, int] = "middle"
535
+
536
+ # opts for rescaling frame during stitching
537
+ rescale_frames: bool = False
538
+ rescale_params: dict = None
539
+
540
+ normalization_by_sample: NormalizationBySample = None
541
+
542
+ @property
543
+ def stitching_type(self):
544
+ raise NotImplementedError("Base class")
545
+
546
+ def __post_init__(self):
547
+ if self.normalization_by_sample is None:
548
+ self.normalization_by_sample = NormalizationBySample()
549
+
550
+ @staticmethod
551
+ def get_description_dict() -> dict:
552
+ def get_pos_info(axis, unit, alternative):
553
+ return f"position over {axis} in {unit}. If provided {alternative} must be set to blank. If none provided then will try to get information from existing metadata"
554
+
555
+ def get_default_shift_params(window_size=None, shift_alg=None) -> str:
556
+ return ";".join(
557
+ [
558
+ f"{KEY_WINDOW_SIZE}={window_size or ''}",
559
+ f"{KEY_IMG_REG_METHOD}={shift_alg or ''}",
560
+ ]
561
+ )
562
+
563
+ return {
564
+ STITCHING_SECTION: {
565
+ STITCHING_TYPE_FIELD: {
566
+ "default": StitchingType.Z_PREPROC.value,
567
+ "help": f"stitching to be applied. Must be in {StitchingType.values()}",
568
+ "type": "required",
569
+ },
570
+ STITCHING_STRATEGY_FIELD: {
571
+ "default": "cosinus weights",
572
+ "help": f"Policy to apply to compute the overlap area. Must be in {OverlapStitchingStrategy.values()}.",
573
+ "type": "required",
574
+ },
575
+ CROSS_CORRELATION_SLICE_FIELD: {
576
+ "default": "middle",
577
+ "help": f"slice to use for image registration",
578
+ "type": "optional",
579
+ },
580
+ AXIS_0_POS_PX: {
581
+ "default": "",
582
+ "help": get_pos_info(axis=0, unit="pixel", alternative=AXIS_0_POS_MM),
583
+ "type": "optional",
584
+ },
585
+ AXIS_0_POS_MM: {
586
+ "default": "",
587
+ "help": get_pos_info(axis=1, unit="millimeter", alternative=AXIS_0_POS_PX),
588
+ "type": "optional",
589
+ },
590
+ AXIS_0_PARAMS: {
591
+ "default": get_default_shift_params(window_size=50, shift_alg=DEFAULT_SHIFT_ALG_AXIS_0),
592
+ "help": HELP_SHIFT_PARAMS,
593
+ "type": "optional",
594
+ },
595
+ AXIS_1_POS_PX: {
596
+ "default": "",
597
+ "help": get_pos_info(axis=1, unit="pixel", alternative=AXIS_1_POS_MM),
598
+ "type": "optional",
599
+ },
600
+ AXIS_1_POS_MM: {
601
+ "default": "",
602
+ "help": get_pos_info(axis=1, unit="millimeter", alternative=AXIS_1_POS_PX),
603
+ "type": "optional",
604
+ },
605
+ AXIS_1_PARAMS: {
606
+ "default": get_default_shift_params(),
607
+ "help": f"same as {AXIS_0_PARAMS} but for axis 1",
608
+ "type": "optional",
609
+ },
610
+ AXIS_2_POS_PX: {
611
+ "default": "",
612
+ "help": get_pos_info(axis=2, unit="pixel", alternative=AXIS_2_POS_MM),
613
+ "type": "optional",
614
+ },
615
+ AXIS_2_POS_MM: {
616
+ "default": "",
617
+ "help": get_pos_info(axis=2, unit="millimeter", alternative=AXIS_1_POS_PX),
618
+ "type": "optional",
619
+ },
620
+ AXIS_2_PARAMS: {
621
+ "default": get_default_shift_params(window_size=200, shift_alg=DEFAULT_SHIFT_ALG_AXIS_2),
622
+ "help": f"same as {AXIS_0_PARAMS} but for axis 2",
623
+ "type": "optional",
624
+ },
625
+ FLIP_LR: {
626
+ "default": False,
627
+ "help": "sometime scan or volume can have a left-right flip in frame (projection/slice) space. For recent NXtomo it should be handled automatically. But for volume you might need to request some flip.",
628
+ "type": "optional",
629
+ },
630
+ FLIP_UD: {
631
+ "default": False,
632
+ "help": "sometime scan or volume can have a up_down flip in frame (projection/slice) space. For recent NXtomo it should be handled automatically. But for volume you might need to request some flip.",
633
+ "type": "optional",
634
+ },
635
+ RESCALE_FRAMES: {
636
+ "default": False,
637
+ "help": "rescale each frame before applying stithcing",
638
+ "type": "advanced",
639
+ },
640
+ RESCALE_PARAMS: {
641
+ "default": "",
642
+ "help": f"parameters for rescaling frames as 'key1=value1;key_2=value2'. Valid Keys are {KEY_RESCALE_MIN_PERCENTILES} and {KEY_RESCALE_MAX_PERCENTILES}.",
643
+ "type": "advanced",
644
+ },
645
+ STITCHING_KERNELS_EXTRA_PARAMS: {
646
+ "default": "",
647
+ "help": f"advanced parameters for some stitching kernels. must be provided as 'key1=value1;key_2=value2'. Valid keys for now are: {KEY_THRESHOLD_FREQUENCY}: threshold to be used by the {OverlapStitchingStrategy.IMAGE_MINIMUM_DIVERGENCE.value} to split images low and high frequencies in Fourier space.",
648
+ "type": "advanced",
649
+ },
650
+ ALIGNMENT_AXIS_2_FIELD: {
651
+ "default": "center",
652
+ "help": f"In case frame have different frame widths how to align them (so along volume axis 2). Valid keys are {AlignmentAxis2.values()}",
653
+ "type": "advanced",
654
+ },
655
+ PAD_MODE_FIELD: {
656
+ "default": "constant",
657
+ "help": f"pad mode to use for frame alignment. Valid values are 'constant', 'edge', 'linear_ramp', maximum', 'mean', 'median', 'minimum', 'reflect', 'symmetric', 'wrap', and 'empty'. See nupy.pad documentation for details",
658
+ "type": "advanced",
659
+ },
660
+ },
661
+ OUTPUT_SECTION: {
662
+ OVERWRITE_RESULTS_FIELD: {
663
+ "default": "1",
664
+ "help": "What to do in the case where the output file exists.\nBy default, the output data is never overwritten and the process is interrupted if the file already exists.\nSet this option to 1 if you want to overwrite the output files.",
665
+ "validator": boolean_validator,
666
+ "type": "required",
667
+ },
668
+ },
669
+ INPUTS_SECTION: {
670
+ INPUT_DATASETS_FIELD: {
671
+ "default": "",
672
+ "help": f"Dataset to stitch together. Must be volume for {StitchingType.Z_PREPROC.value} or NXtomo for {StitchingType.Z_POSTPROC.value}",
673
+ "type": "required",
674
+ },
675
+ STITCHING_SLICES: {
676
+ "default": "",
677
+ "help": f"slices to be stitched. Must be given along axis 0 for pre-processing (z) and along axis 1 for post-processing (y)",
678
+ "type": "advanced",
679
+ },
680
+ },
681
+ SLURM_SECTION: {
682
+ SLURM_PARTITION: {
683
+ "default": "",
684
+ "help": "slurm partition to be used. If empty will run locally",
685
+ "type": "optional",
686
+ },
687
+ SLURM_MEM: {
688
+ "default": "32GB",
689
+ "help": "memory to allocate for each job",
690
+ "type": "optional",
691
+ },
692
+ SLURM_N_JOBS: {
693
+ "default": 10,
694
+ "help": "number of job to launch (split computation on N parallel jobs). Once all are finished we will concatenate the result.",
695
+ "type": "optional",
696
+ },
697
+ SLURM_COR_PER_TASKS: {
698
+ "default": 4,
699
+ "help": "number of cor per task launched",
700
+ "type": "optional",
701
+ },
702
+ SLURM_NUMBER_OF_TASKS: {
703
+ "default": 1,
704
+ "help": "(for parallel execution when possible). Split each job into this number of tasks",
705
+ "type": "optional",
706
+ },
707
+ SLURM_OTHER_OPTIONS: {
708
+ "default": "",
709
+ "help": "you can provide axtra options to slurm from this string",
710
+ "type": "optional",
711
+ },
712
+ SLURM_PREPROCESSING_COMMAND: {
713
+ "default": "",
714
+ "help": "python virtual environment to use",
715
+ "type": "optional",
716
+ },
717
+ SLURM_MODULES_TO_LOADS: {
718
+ "default": "tomotools/stable",
719
+ "help": "module to load",
720
+ "type": "optional",
721
+ },
722
+ },
723
+ NORMALIZATION_BY_SAMPLE_SECTION: {
724
+ NORMALIZATION_BY_SAMPLE_ACTIVE_FIELD: {
725
+ "default": False,
726
+ "help": "should we apply frame normalization by a sample or not",
727
+ "type": "advanced",
728
+ },
729
+ NORMALIZATION_BY_SAMPLE_METHOD: {
730
+ "default": "median",
731
+ "help": "method to compute the normalization value",
732
+ "type": "advanced",
733
+ },
734
+ NORMALIZATION_BY_SAMPLE_SIDE: {
735
+ "default": "left",
736
+ "help": "side to pick the sample",
737
+ "type": "advanced",
738
+ },
739
+ NORMALIZATION_BY_SAMPLE_MARGIN: {
740
+ "default": 0,
741
+ "help": "margin (in px) between border and sample",
742
+ "type": "advanced",
743
+ },
744
+ NORMALIZATION_BY_SAMPLE_WIDTH: {
745
+ "default": 30,
746
+ "help": "sample width (in px)",
747
+ "type": "advanced",
748
+ },
749
+ },
750
+ }
751
+
752
+ def to_dict(self):
753
+ """dump configuration to a dict. Must be serializable because might be dump to HDF5 file"""
754
+ return {
755
+ SLURM_SECTION: self.slurm_config.to_dict() if self.slurm_config is not None else SlurmConfig().to_dict(),
756
+ STITCHING_SECTION: {
757
+ STITCHING_TYPE_FIELD: self.stitching_type.value,
758
+ CROSS_CORRELATION_SLICE_FIELD: str(self.slice_for_cross_correlation),
759
+ AXIS_0_POS_PX: _cast_shift_to_str(self.axis_0_pos_px),
760
+ AXIS_0_POS_MM: _cast_shift_to_str(self.axis_0_pos_mm),
761
+ AXIS_0_PARAMS: _dict_to_str(self.axis_0_params or {}),
762
+ AXIS_1_POS_PX: _cast_shift_to_str(self.axis_1_pos_px),
763
+ AXIS_1_POS_MM: _cast_shift_to_str(self.axis_1_pos_mm),
764
+ AXIS_1_PARAMS: _dict_to_str(self.axis_1_params or {}),
765
+ AXIS_2_POS_PX: _cast_shift_to_str(self.axis_2_pos_px),
766
+ AXIS_2_POS_MM: _cast_shift_to_str(self.axis_2_pos_mm),
767
+ AXIS_2_PARAMS: _dict_to_str(self.axis_2_params or {}),
768
+ STITCHING_STRATEGY_FIELD: OverlapStitchingStrategy.from_value(self.stitching_strategy).value,
769
+ FLIP_UD: self.flip_ud,
770
+ FLIP_LR: self.flip_lr,
771
+ RESCALE_FRAMES: self.rescale_frames,
772
+ RESCALE_PARAMS: _dict_to_str(self.rescale_params or {}),
773
+ STITCHING_KERNELS_EXTRA_PARAMS: _dict_to_str(self.stitching_kernels_extra_params or {}),
774
+ },
775
+ OUTPUT_SECTION: {
776
+ OVERWRITE_RESULTS_FIELD: int(
777
+ self.overwrite_results,
778
+ ),
779
+ },
780
+ NORMALIZATION_BY_SAMPLE_SECTION: self.normalization_by_sample.to_dict(),
781
+ }
782
+
783
+
784
+ @dataclass
785
+ class ZStitchingConfiguration(StitchingConfiguration):
786
+ """
787
+ base class to define z-stitching parameters
788
+ """
789
+
790
+ slices: Union[
791
+ slice, tuple, None
792
+ ] = None # slices to reconstruct. Over axis 0 for pre-processing, over axis 1 for post-processing. If None will reconstruct all
793
+
794
+ alignment_axis_2: AlignmentAxis2 = AlignmentAxis2.CENTER
795
+
796
+ pad_mode: str = "constant" # pad mode to be used for alignment
797
+
798
+ def settle_inputs(self) -> None:
799
+ self.settle_slices()
800
+
801
+ def settle_slices(self) -> tuple:
802
+ raise ValueError("Base class")
803
+
804
+ def get_output_object(self):
805
+ raise ValueError("Base class")
806
+
807
+ def to_dict(self):
808
+ if isinstance(self.slices, slice):
809
+ slices = f"{self.slices.start}:{self.slices.stop}:{self.slices.step}"
810
+ elif self.slices in ("", None):
811
+ slices = ""
812
+ else:
813
+ slices = ";".join(str(s) for s in self.slices)
814
+ return concatenate_dict(
815
+ super().to_dict(),
816
+ {
817
+ INPUTS_SECTION: {
818
+ STITCHING_SLICES: slices,
819
+ },
820
+ STITCHING_SECTION: {
821
+ ALIGNMENT_AXIS_2_FIELD: self.alignment_axis_2.value,
822
+ PAD_MODE_FIELD: self.pad_mode,
823
+ },
824
+ },
825
+ )
826
+
827
+
828
+ @dataclass
829
+ class PreProcessedZStitchingConfiguration(ZStitchingConfiguration):
830
+ """
831
+ base class to define z-stitching parameters
832
+ """
833
+
834
+ input_scans: tuple = () # tuple of ScanBase
835
+ output_file_path: str = ""
836
+ output_data_path: str = ""
837
+ output_nexus_version: Optional[float] = None
838
+ pixel_size: Optional[float] = None
839
+
840
+ @property
841
+ def stitching_type(self) -> StitchingType:
842
+ return StitchingType.Z_PREPROC
843
+
844
+ def get_output_object(self):
845
+ return NXtomoScan(
846
+ scan=self.output_file_path,
847
+ entry=self.output_data_path,
848
+ )
849
+
850
+ def settle_inputs(self) -> None:
851
+ super().settle_inputs()
852
+ self.settle_input_scans()
853
+
854
+ def settle_input_scans(self):
855
+ self.input_scans = [
856
+ Factory.create_tomo_object_from_identifier(identifier)
857
+ if isinstance(identifier, (str, ScanIdentifier))
858
+ else identifier
859
+ for identifier in self.input_scans
860
+ ]
861
+
862
+ def slice_idx_from_str_to_int(self, index):
863
+ if isinstance(index, str):
864
+ index = index.lower()
865
+ if index == "first":
866
+ return 0
867
+ elif index == "last":
868
+ return len(self.input_scans[0].projections) - 1
869
+ elif index == "middle":
870
+ return max(len(self.input_scans[0].projections) // 2 - 1, 0)
871
+ return int(index)
872
+
873
+ def settle_slices(self) -> tuple:
874
+ """
875
+ interpret the slices to be stitched if needed
876
+
877
+ Nore: if slices is an instance of slice will redefine start and stop to avoid having negative indexes
878
+
879
+ :return: (slices:[slice,Iterable], n_proj:int)
880
+ :rtype: tuple
881
+ """
882
+ slices = self.slices
883
+ if isinstance(slices, Sized) and len(slices) == 0:
884
+ # in this case will stitch them all
885
+ slices = None
886
+ if len(self.input_scans) == 0:
887
+ raise ValueError("No input scan provided")
888
+ if slices is None:
889
+ slices = slice(0, len(self.input_scans[0].projections), 1)
890
+ n_proj = slices.stop
891
+ elif isinstance(slices, slice):
892
+ # force slices indices to be positive
893
+ start = slices.start
894
+ if start < 0:
895
+ start += len(self.input_scans[0].projections) + 1
896
+ stop = slices.stop
897
+ if stop < 0:
898
+ stop += len(self.input_scans[0].projections) + 1
899
+ step = slices.step
900
+ if step is None:
901
+ step = 1
902
+ n_proj = ceil((stop - start) / step)
903
+ # update slices for iteration simplify things
904
+ slices = slice(start, stop, step)
905
+ elif isinstance(slices, (tuple, list)):
906
+ n_proj = len(slices)
907
+ slices = [self.slice_idx_from_str_to_int(s) for s in slices]
908
+ else:
909
+ raise TypeError(f"slices is expected to be a tuple or a lice. Not {type(slices)}")
910
+ self.slices = slices
911
+ return slices, n_proj
912
+
913
+ def to_dict(self):
914
+ if self.pixel_size is None:
915
+ pixel_size_mm = ""
916
+ else:
917
+ pixel_size_mm = self.pixel_size * MetricSystem.MILLIMETER.value
918
+ return concatenate_dict(
919
+ super().to_dict(),
920
+ {
921
+ Z_PRE_PROC_SECTION: {
922
+ DATA_FILE_FIELD: self.output_file_path,
923
+ DATA_PATH_FIELD: self.output_data_path,
924
+ NEXUS_VERSION_FIELD: self.output_nexus_version,
925
+ },
926
+ INPUTS_SECTION: {
927
+ INPUT_DATASETS_FIELD: ";".join(
928
+ [str(scan.get_identifier()) for scan in self.input_scans],
929
+ ),
930
+ INPUT_PIXEL_SIZE_MM: pixel_size_mm,
931
+ },
932
+ },
933
+ )
934
+
935
+ @staticmethod
936
+ def get_description_dict() -> dict:
937
+ return concatenate_dict(
938
+ ZStitchingConfiguration.get_description_dict(),
939
+ {
940
+ Z_PRE_PROC_SECTION: {
941
+ DATA_FILE_FIELD: {
942
+ "default": "",
943
+ "help": "output nxtomo file path",
944
+ "type": "required",
945
+ },
946
+ DATA_PATH_FIELD: {
947
+ "default": "",
948
+ "help": "output nxtomo data path",
949
+ "type": "required",
950
+ },
951
+ NEXUS_VERSION_FIELD: {
952
+ "default": "",
953
+ "help": "nexus version. If not provided will pick the latest one know",
954
+ "type": "required",
955
+ },
956
+ },
957
+ },
958
+ )
959
+
960
+ @staticmethod
961
+ def from_dict(config: dict):
962
+ if not isinstance(config, dict):
963
+ raise TypeError(f"config is expected to be a dict and not {type(config)}")
964
+ inputs_scans_str = config.get(INPUTS_SECTION, {}).get(INPUT_DATASETS_FIELD, None)
965
+ if inputs_scans_str in (None, ""):
966
+ input_scans = []
967
+ else:
968
+ input_scans = identifiers_as_str_to_instances(inputs_scans_str)
969
+
970
+ output_file_path = config.get(Z_PRE_PROC_SECTION, {}).get(DATA_FILE_FIELD, None)
971
+
972
+ nexus_version = config.get(Z_PRE_PROC_SECTION, {}).get(NEXUS_VERSION_FIELD, None)
973
+ if nexus_version in (None, ""):
974
+ nexus_version = nxtomo.LATEST_VERSION
975
+ else:
976
+ nexus_version = float(nexus_version)
977
+ pixel_size = config.get(INPUT_PIXEL_SIZE_MM, "").replace(" ", "")
978
+ if pixel_size == "":
979
+ pixel_size = None
980
+ else:
981
+ pixel_size = float(pixel_size) / MetricSystem.MM
982
+
983
+ return PreProcessedZStitchingConfiguration(
984
+ stitching_strategy=OverlapStitchingStrategy.from_value(
985
+ config[STITCHING_SECTION].get(
986
+ STITCHING_STRATEGY_FIELD,
987
+ OverlapStitchingStrategy.COSINUS_WEIGHTS,
988
+ ),
989
+ ),
990
+ axis_0_pos_px=str_to_shifts(config[STITCHING_SECTION].get(AXIS_0_POS_PX, None)),
991
+ axis_0_pos_mm=str_to_shifts(config[STITCHING_SECTION].get(AXIS_0_POS_MM, None)),
992
+ axis_0_params=_valid_shifts_params(_str_to_dict(config[STITCHING_SECTION].get(AXIS_0_PARAMS, {}))),
993
+ axis_1_pos_px=str_to_shifts(config[STITCHING_SECTION].get(AXIS_1_POS_PX, None)),
994
+ axis_1_pos_mm=str_to_shifts(config[STITCHING_SECTION].get(AXIS_1_POS_MM, None)),
995
+ axis_1_params=_valid_shifts_params(
996
+ _str_to_dict(
997
+ config[STITCHING_SECTION].get(AXIS_1_PARAMS, {}),
998
+ )
999
+ ),
1000
+ axis_2_pos_px=str_to_shifts(config[STITCHING_SECTION].get(AXIS_2_POS_PX, None)),
1001
+ axis_2_pos_mm=str_to_shifts(config[STITCHING_SECTION].get(AXIS_2_POS_MM, None)),
1002
+ axis_2_params=_valid_shifts_params(
1003
+ _str_to_dict(
1004
+ config[STITCHING_SECTION].get(AXIS_2_PARAMS, {}),
1005
+ )
1006
+ ),
1007
+ input_scans=input_scans,
1008
+ output_file_path=output_file_path,
1009
+ output_data_path=config.get(Z_PRE_PROC_SECTION, {}).get(DATA_PATH_FIELD, "entry_from_stitchig"),
1010
+ overwrite_results=config[STITCHING_SECTION].get(OVERWRITE_RESULTS_FIELD, True),
1011
+ output_nexus_version=nexus_version,
1012
+ slices=_slices_to_list_or_slice(config[INPUTS_SECTION].get(STITCHING_SLICES, None)),
1013
+ slurm_config=SlurmConfig.from_dict(config.get(SLURM_SECTION, {})),
1014
+ slice_for_cross_correlation=config[STITCHING_SECTION].get(CROSS_CORRELATION_SLICE_FIELD, "middle"),
1015
+ pixel_size=pixel_size,
1016
+ flip_ud=_scalar_or_tuple_to_bool_or_tuple_of_bool(config[STITCHING_SECTION].get(FLIP_UD, False)),
1017
+ flip_lr=_scalar_or_tuple_to_bool_or_tuple_of_bool(config[STITCHING_SECTION].get(FLIP_LR, False)),
1018
+ rescale_frames=convert_to_bool(config[STITCHING_SECTION].get(RESCALE_FRAMES, 0))[0],
1019
+ rescale_params=_str_to_dict(config[STITCHING_SECTION].get(RESCALE_PARAMS, {})),
1020
+ stitching_kernels_extra_params=_valid_stitching_kernels_params(
1021
+ _str_to_dict(
1022
+ config[STITCHING_SECTION].get(STITCHING_KERNELS_EXTRA_PARAMS, {}),
1023
+ )
1024
+ ),
1025
+ alignment_axis_2=AlignmentAxis2.from_value(
1026
+ config[STITCHING_SECTION].get(ALIGNMENT_AXIS_2_FIELD, AlignmentAxis2.CENTER)
1027
+ ),
1028
+ pad_mode=config[STITCHING_SECTION].get(PAD_MODE_FIELD, "constant"),
1029
+ normalization_by_sample=NormalizationBySample.from_dict(config.get(NORMALIZATION_BY_SAMPLE_SECTION, {})),
1030
+ )
1031
+
1032
+
1033
+ @dataclass
1034
+ class PostProcessedZStitchingConfiguration(ZStitchingConfiguration):
1035
+ """
1036
+ base class to define z-stitching parameters
1037
+ """
1038
+
1039
+ input_volumes: tuple = () # tuple of VolumeBase
1040
+ output_volume: Optional[VolumeIdentifier] = None
1041
+ voxel_size: Optional[float] = None
1042
+ alignment_axis_1: AlignmentAxis1 = AlignmentAxis1.CENTER
1043
+
1044
+ @property
1045
+ def stitching_type(self) -> StitchingType:
1046
+ return StitchingType.Z_POSTPROC
1047
+
1048
+ def get_output_object(self):
1049
+ return self.output_volume
1050
+
1051
+ def settle_inputs(self) -> None:
1052
+ super().settle_inputs()
1053
+ self.settle_input_volumes()
1054
+
1055
+ def settle_input_volumes(self):
1056
+ self.input_volumes = [
1057
+ Factory.create_tomo_object_from_identifier(identifier)
1058
+ if isinstance(identifier, (str, VolumeIdentifier))
1059
+ else identifier
1060
+ for identifier in self.input_volumes
1061
+ ]
1062
+
1063
+ def slice_idx_from_str_to_int(self, index):
1064
+ if isinstance(index, str):
1065
+ index = index.lower()
1066
+ if index == "first":
1067
+ return 0
1068
+ elif index == "last":
1069
+ return self.input_volumes[0].get_volume_shape()[1] - 1
1070
+ elif index == "middle":
1071
+ return max(self.input_volumes[0].get_volume_shape()[1] // 2 - 1, 0)
1072
+ return int(index)
1073
+
1074
+ def settle_slices(self) -> tuple:
1075
+ """
1076
+ interpret the slices to be stitched if needed
1077
+
1078
+ Nore: if slices is an instance of slice will redefine start and stop to avoid having negative indexes
1079
+
1080
+ :return: (slices:[slice,Iterable], n_proj:int)
1081
+ :rtype: tuple
1082
+ """
1083
+ slices = self.slices
1084
+ if isinstance(slices, Sized) and len(slices) == 0:
1085
+ # in this case will stitch them all
1086
+ slices = None
1087
+ if len(self.input_volumes) == 0:
1088
+ raise ValueError("No input volume provided. Cannot settle slices")
1089
+ if slices is None:
1090
+ # before alignment was existing
1091
+ # slices = slice(0, self.input_volumes[0].get_volume_shape()[1], 1)
1092
+ slices = slice(
1093
+ 0,
1094
+ max([volume.get_volume_shape()[1] for volume in self.input_volumes]),
1095
+ 1,
1096
+ )
1097
+ n_slices = slices.stop
1098
+ if isinstance(slices, slice):
1099
+ # force slices indices to be positive
1100
+ start = slices.start
1101
+ if start < 0:
1102
+ start += max([volume.get_volume_shape()[1] for volume in self.input_volumes]) + 1
1103
+ stop = slices.stop
1104
+ if stop < 0:
1105
+ stop += max([volume.get_volume_shape()[1] for volume in self.input_volumes]) + 1
1106
+ step = slices.step
1107
+ if step is None:
1108
+ step = 1
1109
+ n_slices = ceil((stop - start) / step)
1110
+ # update slices for iteration simplify things
1111
+ slices = slice(start, stop, step)
1112
+ elif isinstance(slices, Iterable):
1113
+ n_slices = len(slices)
1114
+ slices = [self.slice_idx_from_str_to_int(s) for s in slices]
1115
+ else:
1116
+ raise TypeError(f"slices is expected to be a tuple or a slice. Not {type(slices)}")
1117
+ self.slices = slices
1118
+ return slices, n_slices
1119
+
1120
+ @staticmethod
1121
+ def from_dict(config: dict):
1122
+ if not isinstance(config, dict):
1123
+ raise TypeError(f"config is expected to be a dict and not {type(config)}")
1124
+ inputs_volumes_str = config.get(INPUTS_SECTION, {}).get(INPUT_DATASETS_FIELD, None)
1125
+ if inputs_volumes_str in (None, ""):
1126
+ input_volumes = []
1127
+ else:
1128
+ input_volumes = identifiers_as_str_to_instances(inputs_volumes_str)
1129
+ overwrite_results = config[STITCHING_SECTION].get(OVERWRITE_RESULTS_FIELD, True) in ("1", True, "True", 1)
1130
+ output_volume = config.get(Z_POST_PROC_SECTION, {}).get(OUTPUT_VOLUME, None)
1131
+ if output_volume is not None:
1132
+ output_volume = Factory.create_tomo_object_from_identifier(output_volume)
1133
+ output_volume.overwrite = overwrite_results
1134
+ voxel_size = config.get(INPUTS_SECTION, {}).get(INPUT_VOXEL_SIZE_MM, "")
1135
+ voxel_size = voxel_size.replace(" ", "")
1136
+ if voxel_size == "":
1137
+ voxel_size = None
1138
+ else:
1139
+ voxel_size = float(voxel_size) * MetricSystem.MM
1140
+
1141
+ # on the next section the one with a default value qre the optionnal one
1142
+ return PostProcessedZStitchingConfiguration(
1143
+ stitching_strategy=OverlapStitchingStrategy.from_value(
1144
+ config[STITCHING_SECTION].get(
1145
+ STITCHING_STRATEGY_FIELD,
1146
+ OverlapStitchingStrategy.COSINUS_WEIGHTS,
1147
+ ),
1148
+ ),
1149
+ axis_0_pos_px=str_to_shifts(config[STITCHING_SECTION].get(AXIS_0_POS_PX, None)),
1150
+ axis_0_pos_mm=str_to_shifts(config[STITCHING_SECTION].get(AXIS_0_POS_MM, None)),
1151
+ axis_0_params=_valid_shifts_params(config[STITCHING_SECTION].get(AXIS_0_PARAMS, {})),
1152
+ axis_1_pos_px=str_to_shifts(config[STITCHING_SECTION].get(AXIS_1_POS_PX, None)),
1153
+ axis_1_pos_mm=str_to_shifts(config[STITCHING_SECTION].get(AXIS_1_POS_MM, None)),
1154
+ axis_1_params=_valid_shifts_params(config[STITCHING_SECTION].get(AXIS_1_PARAMS, {})),
1155
+ axis_2_pos_px=str_to_shifts(config[STITCHING_SECTION].get(AXIS_2_POS_PX, None)),
1156
+ axis_2_pos_mm=str_to_shifts(config[STITCHING_SECTION].get(AXIS_2_POS_MM, None)),
1157
+ axis_2_params=_valid_shifts_params(config[STITCHING_SECTION].get(AXIS_2_PARAMS, {})),
1158
+ input_volumes=input_volumes,
1159
+ output_volume=output_volume,
1160
+ overwrite_results=overwrite_results,
1161
+ slices=_slices_to_list_or_slice(config[INPUTS_SECTION].get(STITCHING_SLICES, None)),
1162
+ slurm_config=SlurmConfig.from_dict(config.get(SLURM_SECTION, {})),
1163
+ voxel_size=voxel_size,
1164
+ slice_for_cross_correlation=config[STITCHING_SECTION].get(CROSS_CORRELATION_SLICE_FIELD, "middle"),
1165
+ flip_ud=_scalar_or_tuple_to_bool_or_tuple_of_bool(config[STITCHING_SECTION].get(FLIP_UD, False)),
1166
+ flip_lr=_scalar_or_tuple_to_bool_or_tuple_of_bool(config[STITCHING_SECTION].get(FLIP_LR, False)),
1167
+ rescale_frames=convert_to_bool(config[STITCHING_SECTION].get(RESCALE_FRAMES, 0))[0],
1168
+ rescale_params=_str_to_dict(config[STITCHING_SECTION].get(RESCALE_PARAMS, {})),
1169
+ stitching_kernels_extra_params=_valid_stitching_kernels_params(
1170
+ _str_to_dict(
1171
+ config[STITCHING_SECTION].get(STITCHING_KERNELS_EXTRA_PARAMS, {}),
1172
+ )
1173
+ ),
1174
+ alignment_axis_1=AlignmentAxis1.from_value(
1175
+ config[STITCHING_SECTION].get(ALIGNMENT_AXIS_1_FIELD, AlignmentAxis1.CENTER)
1176
+ ),
1177
+ alignment_axis_2=AlignmentAxis2.from_value(
1178
+ config[STITCHING_SECTION].get(ALIGNMENT_AXIS_2_FIELD, AlignmentAxis2.CENTER)
1179
+ ),
1180
+ pad_mode=config[STITCHING_SECTION].get(PAD_MODE_FIELD, "constant"),
1181
+ normalization_by_sample=NormalizationBySample.from_dict(config.get(NORMALIZATION_BY_SAMPLE_SECTION, {})),
1182
+ )
1183
+
1184
+ def to_dict(self):
1185
+ if self.voxel_size is None:
1186
+ voxel_size_mm = ""
1187
+ else:
1188
+ voxel_size_mm = numpy.array(self.voxel_size) / MetricSystem.MM
1189
+
1190
+ return concatenate_dict(
1191
+ super().to_dict(),
1192
+ {
1193
+ INPUTS_SECTION: {
1194
+ INPUT_DATASETS_FIELD: [volume.get_identifier().to_str() for volume in self.input_volumes],
1195
+ INPUT_VOXEL_SIZE_MM: voxel_size_mm,
1196
+ },
1197
+ Z_POST_PROC_SECTION: {
1198
+ OUTPUT_VOLUME: self.output_volume.get_identifier().to_str()
1199
+ if self.output_volume is not None
1200
+ else "",
1201
+ },
1202
+ STITCHING_SECTION: {
1203
+ ALIGNMENT_AXIS_1_FIELD: self.alignment_axis_1.value,
1204
+ },
1205
+ },
1206
+ )
1207
+
1208
+ @staticmethod
1209
+ def get_description_dict() -> dict:
1210
+ return concatenate_dict(
1211
+ ZStitchingConfiguration.get_description_dict(),
1212
+ {
1213
+ Z_POST_PROC_SECTION: {
1214
+ OUTPUT_VOLUME: {
1215
+ "default": "",
1216
+ "help": "identifier of the output volume. Like hdf5:volume:[file_path]?path=[data_path] for an HDF5 volume",
1217
+ "type": "required",
1218
+ },
1219
+ },
1220
+ STITCHING_SECTION: {
1221
+ ALIGNMENT_AXIS_1_FIELD: {
1222
+ "default": "center",
1223
+ "help": f"alignment to apply over axis 1 if needed. Valid values are {AlignmentAxis1.values()}",
1224
+ "type": "advanced",
1225
+ }
1226
+ },
1227
+ },
1228
+ )
1229
+
1230
+
1231
+ def identifiers_as_str_to_instances(list_identifiers_as_str: str) -> tuple:
1232
+ # convert str to a list of str that should represent identifiers
1233
+ if isinstance(list_identifiers_as_str, str):
1234
+ list_identifiers_as_str = list_identifiers_as_str.lstrip("[").lstrip("(")
1235
+ list_identifiers_as_str = list_identifiers_as_str.rstrip("]").rstrip(")")
1236
+ identifiers_as_str = convert_str_to_tuple(list_identifiers_as_str.replace(";", ","))
1237
+ else:
1238
+ identifiers_as_str = list_identifiers_as_str
1239
+ if identifiers_as_str is None:
1240
+ return tuple()
1241
+ # convert identifiers as string to IdentifierType instances
1242
+ return tuple(
1243
+ [Factory.create_tomo_object_from_identifier(identifier_as_str) for identifier_as_str in identifiers_as_str]
1244
+ )
1245
+
1246
+
1247
+ def dict_to_config_obj(config: dict):
1248
+ if not isinstance(config, dict):
1249
+ raise TypeError
1250
+ stitching_type = config.get(STITCHING_SECTION, {}).get(STITCHING_TYPE_FIELD, None)
1251
+ if stitching_type is None:
1252
+ raise ValueError("Unagle to find stitching type from config dict")
1253
+ else:
1254
+ stitching_type = StitchingType.from_value(stitching_type)
1255
+ if stitching_type is StitchingType.Z_POSTPROC:
1256
+ return PostProcessedZStitchingConfiguration.from_dict(config)
1257
+ elif stitching_type is StitchingType.Z_PREPROC:
1258
+ return PreProcessedZStitchingConfiguration.from_dict(config)
1259
+ else:
1260
+ raise NotImplementedError(f"stitching type {stitching_type.value} not handled yet")
1261
+
1262
+
1263
+ def get_default_stitching_config(stitching_type: Optional[Union[StitchingType, str]]) -> tuple:
1264
+ """
1265
+ Return a default configuration for doing stitching.
1266
+
1267
+ :param stitching_type: if None then return a configuration were use can provide inputs for any
1268
+ of the stitching.
1269
+ Else return config dict dedicated to a particular stitching
1270
+ :return: (config, section comments)
1271
+ """
1272
+ if stitching_type is None:
1273
+ return concatenate_dict(z_postproc_stitching_config, z_preproc_stitching_config)
1274
+
1275
+ stitching_type = StitchingType.from_value(stitching_type)
1276
+ if stitching_type is StitchingType.Z_POSTPROC:
1277
+ return z_postproc_stitching_config
1278
+ elif stitching_type is StitchingType.Z_PREPROC:
1279
+ return z_preproc_stitching_config
1280
+ else:
1281
+ raise NotImplementedError
1282
+
1283
+
1284
+ z_preproc_stitching_config = PreProcessedZStitchingConfiguration.get_description_dict()
1285
+
1286
+ z_postproc_stitching_config = PostProcessedZStitchingConfiguration.get_description_dict()