nabu 2024.2.0__tar.gz → 2024.2.0rc1__tar.gz

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 (324) hide show
  1. {nabu-2024.2.0/nabu.egg-info → nabu-2024.2.0rc1}/PKG-INFO +1 -1
  2. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/__init__.py +1 -1
  3. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/estimation/cor.py +6 -1
  4. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/estimation/cor_sino.py +1 -3
  5. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/pipeline/estimators.py +2 -38
  6. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/pipeline/fullfield/chunked.py +2 -6
  7. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/pipeline/tests/test_estimators.py +2 -6
  8. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/pipeline/writer.py +0 -7
  9. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/resources/dataset_analyzer.py +13 -18
  10. {nabu-2024.2.0 → nabu-2024.2.0rc1/nabu.egg-info}/PKG-INFO +1 -1
  11. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu.egg-info/requires.txt +1 -1
  12. {nabu-2024.2.0 → nabu-2024.2.0rc1}/pyproject.toml +1 -1
  13. {nabu-2024.2.0 → nabu-2024.2.0rc1}/LICENSE +0 -0
  14. {nabu-2024.2.0 → nabu-2024.2.0rc1}/README.md +0 -0
  15. {nabu-2024.2.0 → nabu-2024.2.0rc1}/doc/conf.py +0 -0
  16. {nabu-2024.2.0 → nabu-2024.2.0rc1}/doc/create_conf_doc.py +0 -0
  17. {nabu-2024.2.0 → nabu-2024.2.0rc1}/doc/get_mathjax.py +0 -0
  18. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/app/__init__.py +0 -0
  19. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/app/bootstrap.py +0 -0
  20. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/app/bootstrap_stitching.py +0 -0
  21. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/app/cast_volume.py +0 -0
  22. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/app/cli_configs.py +0 -0
  23. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/app/compare_volumes.py +0 -0
  24. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/app/composite_cor.py +0 -0
  25. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/app/correct_rot.py +0 -0
  26. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/app/create_distortion_map_from_poly.py +0 -0
  27. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/app/diag_to_pix.py +0 -0
  28. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/app/diag_to_rot.py +0 -0
  29. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/app/double_flatfield.py +0 -0
  30. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/app/generate_header.py +0 -0
  31. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/app/histogram.py +0 -0
  32. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/app/multicor.py +0 -0
  33. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/app/nx_z_splitter.py +0 -0
  34. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/app/parse_reconstruction_log.py +0 -0
  35. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/app/prepare_weights_double.py +0 -0
  36. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/app/reconstruct.py +0 -0
  37. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/app/reconstruct_helical.py +0 -0
  38. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/app/reduce_dark_flat.py +0 -0
  39. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/app/rotate.py +0 -0
  40. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/app/shrink_dataset.py +0 -0
  41. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/app/stitching.py +0 -0
  42. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/app/tests/__init__.py +0 -0
  43. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/app/tests/test_reduce_dark_flat.py +0 -0
  44. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/app/utils.py +0 -0
  45. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/app/validator.py +0 -0
  46. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/cuda/__init__.py +0 -0
  47. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/cuda/convolution.py +0 -0
  48. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/cuda/fft.py +0 -0
  49. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/cuda/kernel.py +0 -0
  50. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/cuda/medfilt.py +0 -0
  51. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/cuda/padding.py +0 -0
  52. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/cuda/processing.py +0 -0
  53. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/cuda/src/ElementOp.cu +0 -0
  54. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/cuda/src/backproj.cu +0 -0
  55. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/cuda/src/backproj_polar.cu +0 -0
  56. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/cuda/src/boundary.h +0 -0
  57. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/cuda/src/cone.cu +0 -0
  58. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/cuda/src/convolution.cu +0 -0
  59. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/cuda/src/dfi_fftshift.cu +0 -0
  60. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/cuda/src/flatfield.cu +0 -0
  61. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/cuda/src/fourier_wavelets.cu +0 -0
  62. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/cuda/src/halftomo.cu +0 -0
  63. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/cuda/src/helical_padding.cu +0 -0
  64. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/cuda/src/hierarchical_backproj.cu +0 -0
  65. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/cuda/src/histogram.cu +0 -0
  66. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/cuda/src/interpolation.cu +0 -0
  67. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/cuda/src/medfilt.cu +0 -0
  68. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/cuda/src/normalization.cu +0 -0
  69. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/cuda/src/padding.cu +0 -0
  70. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/cuda/src/proj.cu +0 -0
  71. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/cuda/src/rotation.cu +0 -0
  72. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/cuda/src/transpose.cu +0 -0
  73. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/cuda/tests/__init__.py +0 -0
  74. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/cuda/utils.py +0 -0
  75. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/estimation/__init__.py +0 -0
  76. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/estimation/alignment.py +0 -0
  77. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/estimation/distortion.py +0 -0
  78. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/estimation/focus.py +0 -0
  79. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/estimation/tests/__init__.py +0 -0
  80. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/estimation/tests/test_alignment.py +0 -0
  81. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/estimation/tests/test_cor.py +0 -0
  82. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/estimation/tests/test_focus.py +0 -0
  83. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/estimation/tests/test_tilt.py +0 -0
  84. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/estimation/tests/test_translation.py +0 -0
  85. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/estimation/tilt.py +0 -0
  86. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/estimation/translation.py +0 -0
  87. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/estimation/utils.py +0 -0
  88. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/io/__init__.py +0 -0
  89. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/io/cast_volume.py +0 -0
  90. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/io/detector_distortion.py +0 -0
  91. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/io/reader.py +0 -0
  92. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/io/reader_helical.py +0 -0
  93. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/io/tests/__init__.py +0 -0
  94. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/io/tests/test_cast_volume.py +0 -0
  95. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/io/tests/test_detector_distortion.py +0 -0
  96. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/io/tests/test_readers.py +0 -0
  97. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/io/tests/test_writers.py +0 -0
  98. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/io/utils.py +0 -0
  99. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/io/writer.py +0 -0
  100. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/misc/__init__.py +0 -0
  101. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/misc/binning.py +0 -0
  102. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/misc/fftshift.py +0 -0
  103. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/misc/filters.py +0 -0
  104. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/misc/fourier_filters.py +0 -0
  105. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/misc/histogram.py +0 -0
  106. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/misc/histogram_cuda.py +0 -0
  107. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/misc/kernel_base.py +0 -0
  108. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/misc/padding.py +0 -0
  109. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/misc/padding_base.py +0 -0
  110. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/misc/processing_base.py +0 -0
  111. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/misc/rotation.py +0 -0
  112. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/misc/rotation_cuda.py +0 -0
  113. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/misc/tests/__init__.py +0 -0
  114. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/misc/tests/test_binning.py +0 -0
  115. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/misc/tests/test_interpolation.py +0 -0
  116. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/misc/transpose.py +0 -0
  117. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/misc/unsharp.py +0 -0
  118. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/misc/unsharp_cuda.py +0 -0
  119. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/misc/unsharp_opencl.py +0 -0
  120. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/misc/utils.py +0 -0
  121. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/opencl/__init__.py +0 -0
  122. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/opencl/fft.py +0 -0
  123. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/opencl/kernel.py +0 -0
  124. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/opencl/memcpy.py +0 -0
  125. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/opencl/padding.py +0 -0
  126. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/opencl/processing.py +0 -0
  127. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/opencl/src/ElementOp.cl +0 -0
  128. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/opencl/src/backproj.cl +0 -0
  129. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/opencl/src/fftshift.cl +0 -0
  130. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/opencl/src/halftomo.cl +0 -0
  131. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/opencl/src/padding.cl +0 -0
  132. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/opencl/src/roll.cl +0 -0
  133. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/opencl/src/transpose.cl +0 -0
  134. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/opencl/tests/__init__.py +0 -0
  135. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/opencl/utils.py +0 -0
  136. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/pipeline/__init__.py +0 -0
  137. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/pipeline/config.py +0 -0
  138. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/pipeline/config_validators.py +0 -0
  139. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/pipeline/datadump.py +0 -0
  140. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/pipeline/dataset_validator.py +0 -0
  141. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/pipeline/detector_distortion_provider.py +0 -0
  142. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/pipeline/fullfield/__init__.py +0 -0
  143. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/pipeline/fullfield/chunked_cuda.py +0 -0
  144. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/pipeline/fullfield/computations.py +0 -0
  145. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/pipeline/fullfield/dataset_validator.py +0 -0
  146. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/pipeline/fullfield/nabu_config.py +0 -0
  147. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/pipeline/fullfield/processconfig.py +0 -0
  148. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/pipeline/fullfield/reconstruction.py +0 -0
  149. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/pipeline/helical/__init__.py +0 -0
  150. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/pipeline/helical/dataset_validator.py +0 -0
  151. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/pipeline/helical/fbp.py +0 -0
  152. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/pipeline/helical/filtering.py +0 -0
  153. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/pipeline/helical/gridded_accumulator.py +0 -0
  154. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/pipeline/helical/helical_chunked_regridded.py +0 -0
  155. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/pipeline/helical/helical_chunked_regridded_cuda.py +0 -0
  156. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/pipeline/helical/helical_reconstruction.py +0 -0
  157. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/pipeline/helical/helical_utils.py +0 -0
  158. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/pipeline/helical/nabu_config.py +0 -0
  159. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/pipeline/helical/processconfig.py +0 -0
  160. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/pipeline/helical/span_strategy.py +0 -0
  161. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/pipeline/helical/tests/__init__.py +0 -0
  162. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/pipeline/helical/weight_balancer.py +0 -0
  163. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/pipeline/params.py +0 -0
  164. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/pipeline/processconfig.py +0 -0
  165. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/pipeline/reader.py +0 -0
  166. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/pipeline/utils.py +0 -0
  167. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/pipeline/xrdct/__init__.py +0 -0
  168. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/preproc/__init__.py +0 -0
  169. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/preproc/alignment.py +0 -0
  170. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/preproc/ccd.py +0 -0
  171. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/preproc/ccd_cuda.py +0 -0
  172. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/preproc/ctf.py +0 -0
  173. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/preproc/ctf_cuda.py +0 -0
  174. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/preproc/distortion.py +0 -0
  175. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/preproc/double_flatfield.py +0 -0
  176. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/preproc/double_flatfield_cuda.py +0 -0
  177. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/preproc/double_flatfield_variable_region.py +0 -0
  178. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/preproc/flatfield.py +0 -0
  179. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/preproc/flatfield_cuda.py +0 -0
  180. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/preproc/flatfield_variable_region.py +0 -0
  181. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/preproc/phase.py +0 -0
  182. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/preproc/phase_cuda.py +0 -0
  183. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/preproc/shift.py +0 -0
  184. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/preproc/shift_cuda.py +0 -0
  185. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/preproc/tests/__init__.py +0 -0
  186. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/preproc/tests/test_ccd_corr.py +0 -0
  187. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/preproc/tests/test_ctf.py +0 -0
  188. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/preproc/tests/test_double_flatfield.py +0 -0
  189. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/preproc/tests/test_flatfield.py +0 -0
  190. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/preproc/tests/test_paganin.py +0 -0
  191. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/preproc/tests/test_vshift.py +0 -0
  192. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/processing/__init__.py +0 -0
  193. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/processing/azim.py +0 -0
  194. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/processing/convolution_cuda.py +0 -0
  195. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/processing/fft_base.py +0 -0
  196. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/processing/fft_cuda.py +0 -0
  197. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/processing/fft_opencl.py +0 -0
  198. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/processing/fftshift.py +0 -0
  199. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/processing/histogram.py +0 -0
  200. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/processing/histogram_cuda.py +0 -0
  201. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/processing/kernel_base.py +0 -0
  202. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/processing/medfilt_cuda.py +0 -0
  203. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/processing/muladd.py +0 -0
  204. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/processing/muladd_cuda.py +0 -0
  205. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/processing/padding_base.py +0 -0
  206. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/processing/padding_cuda.py +0 -0
  207. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/processing/padding_opencl.py +0 -0
  208. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/processing/processing_base.py +0 -0
  209. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/processing/roll_opencl.py +0 -0
  210. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/processing/rotation.py +0 -0
  211. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/processing/rotation_cuda.py +0 -0
  212. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/processing/tests/__init__.py +0 -0
  213. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/processing/tests/test_fft.py +0 -0
  214. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/processing/tests/test_fftshift.py +0 -0
  215. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/processing/tests/test_histogram.py +0 -0
  216. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/processing/tests/test_medfilt.py +0 -0
  217. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/processing/tests/test_muladd.py +0 -0
  218. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/processing/tests/test_padding.py +0 -0
  219. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/processing/tests/test_roll.py +0 -0
  220. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/processing/tests/test_rotation.py +0 -0
  221. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/processing/tests/test_transpose.py +0 -0
  222. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/processing/tests/test_unsharp.py +0 -0
  223. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/processing/transpose.py +0 -0
  224. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/processing/unsharp.py +0 -0
  225. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/processing/unsharp_cuda.py +0 -0
  226. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/processing/unsharp_opencl.py +0 -0
  227. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/reconstruction/__init__.py +0 -0
  228. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/reconstruction/cone.py +0 -0
  229. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/reconstruction/fbp.py +0 -0
  230. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/reconstruction/fbp_base.py +0 -0
  231. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/reconstruction/fbp_opencl.py +0 -0
  232. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/reconstruction/filtering.py +0 -0
  233. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/reconstruction/filtering_cuda.py +0 -0
  234. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/reconstruction/filtering_opencl.py +0 -0
  235. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/reconstruction/hbp.py +0 -0
  236. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/reconstruction/mlem.py +0 -0
  237. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/reconstruction/projection.py +0 -0
  238. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/reconstruction/reconstructor.py +0 -0
  239. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/reconstruction/reconstructor_cuda.py +0 -0
  240. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/reconstruction/rings.py +0 -0
  241. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/reconstruction/rings_cuda.py +0 -0
  242. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/reconstruction/sinogram.py +0 -0
  243. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/reconstruction/sinogram_cuda.py +0 -0
  244. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/reconstruction/sinogram_opencl.py +0 -0
  245. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/reconstruction/tests/__init__.py +0 -0
  246. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/reconstruction/tests/test_cone.py +0 -0
  247. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/reconstruction/tests/test_deringer.py +0 -0
  248. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/reconstruction/tests/test_fbp.py +0 -0
  249. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/reconstruction/tests/test_filtering.py +0 -0
  250. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/reconstruction/tests/test_halftomo.py +0 -0
  251. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/reconstruction/tests/test_mlem.py +0 -0
  252. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/reconstruction/tests/test_projector.py +0 -0
  253. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/reconstruction/tests/test_reconstructor.py +0 -0
  254. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/reconstruction/tests/test_sino_normalization.py +0 -0
  255. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/resources/__init__.py +0 -0
  256. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/resources/cli/__init__.py +0 -0
  257. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/resources/cor.py +0 -0
  258. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/resources/gpu.py +0 -0
  259. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/resources/logger.py +0 -0
  260. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/resources/nxflatfield.py +0 -0
  261. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/resources/templates/__init__.py +0 -0
  262. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/resources/templates/bm05_pag.conf +0 -0
  263. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/resources/templates/id16_ctf.conf +0 -0
  264. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/resources/templates/id16_holo.conf +0 -0
  265. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/resources/templates/id16a_fluo.conf +0 -0
  266. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/resources/templates/id19_pag.conf +0 -0
  267. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/resources/tests/__init__.py +0 -0
  268. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/resources/tests/test_extract.py +0 -0
  269. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/resources/tests/test_nxflatfield.py +0 -0
  270. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/resources/tests/test_units.py +0 -0
  271. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/resources/utils.py +0 -0
  272. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/stitching/__init__.py +0 -0
  273. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/stitching/alignment.py +0 -0
  274. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/stitching/config.py +0 -0
  275. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/stitching/definitions.py +0 -0
  276. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/stitching/frame_composition.py +0 -0
  277. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/stitching/overlap.py +0 -0
  278. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/stitching/sample_normalization.py +0 -0
  279. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/stitching/single_axis_stitching.py +0 -0
  280. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/stitching/slurm_utils.py +0 -0
  281. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/stitching/stitcher/__init__.py +0 -0
  282. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/stitching/stitcher/base.py +0 -0
  283. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/stitching/stitcher/dumper/__init__.py +0 -0
  284. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/stitching/stitcher/dumper/base.py +0 -0
  285. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/stitching/stitcher/dumper/postprocessing.py +0 -0
  286. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/stitching/stitcher/dumper/preprocessing.py +0 -0
  287. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/stitching/stitcher/post_processing.py +0 -0
  288. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/stitching/stitcher/pre_processing.py +0 -0
  289. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/stitching/stitcher/single_axis.py +0 -0
  290. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/stitching/stitcher/stitcher.py +0 -0
  291. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/stitching/stitcher/y_stitcher.py +0 -0
  292. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/stitching/stitcher/z_stitcher.py +0 -0
  293. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/stitching/stitcher_2D.py +0 -0
  294. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/stitching/tests/__init__.py +0 -0
  295. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/stitching/tests/test_alignment.py +0 -0
  296. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/stitching/tests/test_config.py +0 -0
  297. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/stitching/tests/test_frame_composition.py +0 -0
  298. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/stitching/tests/test_overlap.py +0 -0
  299. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/stitching/tests/test_sample_normalization.py +0 -0
  300. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/stitching/tests/test_slurm_utils.py +0 -0
  301. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/stitching/tests/test_utils.py +0 -0
  302. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/stitching/tests/test_y_preprocessing_stitching.py +0 -0
  303. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/stitching/tests/test_z_postprocessing_stitching.py +0 -0
  304. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/stitching/tests/test_z_preprocessing_stitching.py +0 -0
  305. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/stitching/utils/__init__.py +0 -0
  306. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/stitching/utils/post_processing.py +0 -0
  307. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/stitching/utils/tests/test_post-processing.py +0 -0
  308. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/stitching/utils/utils.py +0 -0
  309. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/stitching/y_stitching.py +0 -0
  310. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/stitching/z_stitching.py +0 -0
  311. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/tests.py +0 -0
  312. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/testutils.py +0 -0
  313. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/thirdparty/__init__.py +0 -0
  314. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/thirdparty/algotom_convert_sino.py +0 -0
  315. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/thirdparty/pore3d_deringer_munch.py +0 -0
  316. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/thirdparty/tomocupy_remove_stripe.py +0 -0
  317. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/thirdparty/tomopy_phase.py +0 -0
  318. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/thirdparty/tomwer_load_flats_darks.py +0 -0
  319. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu/utils.py +0 -0
  320. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu.egg-info/SOURCES.txt +0 -0
  321. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu.egg-info/dependency_links.txt +0 -0
  322. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu.egg-info/entry_points.txt +0 -0
  323. {nabu-2024.2.0 → nabu-2024.2.0rc1}/nabu.egg-info/top_level.txt +0 -0
  324. {nabu-2024.2.0 → nabu-2024.2.0rc1}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: nabu
3
- Version: 2024.2.0
3
+ Version: 2024.2.0rc1
4
4
  Summary: Nabu - Tomography software
5
5
  Author-email: Pierre Paleo <pierre.paleo@esrf.fr>, Henri Payno <henri.payno@esrf.fr>, Alessandro Mirone <mirone@esrf.fr>, Jérôme Lesaint <jerome.lesaint@esrf.fr>
6
6
  Maintainer-email: Pierre Paleo <pierre.paleo@esrf.fr>
@@ -1,4 +1,4 @@
1
- __version__ = "2024.2.0"
1
+ __version__ = "2024.2.0-rc1"
2
2
  __nabu_modules__ = [
3
3
  "app",
4
4
  "cuda",
@@ -239,7 +239,7 @@ class CenterOfRotationSlidingWindow(CenterOfRotation):
239
239
  win_2_start = img_width // 2 - window_shift
240
240
  else:
241
241
  abs_pos = int(side + img_width // 2)
242
- window_fraction = 0.1 # Hard-coded ?
242
+ window_fraction = 0.2 # Hard-coded ?
243
243
 
244
244
  window_width = round(window_fraction * img_width)
245
245
  window_shift = window_width // 2
@@ -1114,6 +1114,11 @@ class CenterOfRotationOctaveAccurate(CenterOfRotation):
1114
1114
  # ---
1115
1115
  self._check_img_pair_sizes(img_1, img_2)
1116
1116
 
1117
+ if side != "center":
1118
+ msg = "This method cannot handle half acquisition"
1119
+ self.logger.fatal(msg)
1120
+ raise ValueError(msg)
1121
+
1117
1122
  img_shape = img_2.shape
1118
1123
  roi_yxhw = self._determine_roi(img_shape, roi_yxhw)
1119
1124
 
@@ -91,7 +91,7 @@ class SinoCor:
91
91
  imax = i
92
92
  self.cor_abs = self.sx - (imax + window_width + 1.0) / 2.0
93
93
  self.cor_rel = self.sx / 2 - (imax + window_width + 1.0) / 2.0
94
- elif side == "left":
94
+ else:
95
95
  for i in nr:
96
96
  imout = self.data1[:, i : i + window_width] - self.data2[:, self.sx - window_width : self.sx]
97
97
  diff = imout.max() - imout.min()
@@ -100,8 +100,6 @@ class SinoCor:
100
100
  imax = i
101
101
  self.cor_abs = (imax + window_width - 1.0) / 2
102
102
  self.cor_rel = self.cor_abs - self.sx / 2.0 - 1
103
- else:
104
- raise ValueError(f"Invalid side given ({side}). should be 'left' or 'right'")
105
103
  if imax < 1:
106
104
  self.logger.warning("sliding width %d seems too large!" % window_width)
107
105
  self.rcor_abs = round(self.cor_abs)
@@ -31,21 +31,6 @@ from .params import cor_methods, tilt_methods
31
31
 
32
32
 
33
33
  def estimate_cor(method, dataset_info, do_flatfield=True, cor_options=None, logger=None):
34
- """
35
- High level function to compute the center of rotation (COR)
36
-
37
- Parameters
38
- ----------
39
- method: name of the method to be used for computing the center of rotation
40
- dataset_info: `nabu.resources.dataset_analyzer.DatasetAnalyzer`
41
- Dataset information structure
42
- do_flatfield: If True apply flat field to compute the center of rotation
43
- cor_options: optional dictionary that can contain the following keys:
44
- * slice_idx: index of the slice to use for computing the sinogram (for sinogram based algorithms)
45
- * subsampling subsampling
46
- * radio_angles: angles of the radios to use (for radio based algorithms)
47
- logger: logging object
48
- """
49
34
  logger = LoggerOrPrint(logger)
50
35
  cor_options = cor_options or {}
51
36
  check_supported(method, list(cor_methods.keys()), "COR estimation method")
@@ -71,7 +56,6 @@ def estimate_cor(method, dataset_info, do_flatfield=True, cor_options=None, logg
71
56
  dataset_info,
72
57
  do_flatfield=do_flatfield,
73
58
  cor_options=cor_options,
74
- radio_angles=cor_options.get("radio_angles", (0.0, np.pi)),
75
59
  logger=logger,
76
60
  )
77
61
  estimated_cor = cor_finder.find_cor()
@@ -82,7 +66,6 @@ def estimate_cor(method, dataset_info, do_flatfield=True, cor_options=None, logg
82
66
  slice_idx=cor_options.get("slice_idx", "middle"),
83
67
  subsampling=cor_options.get("subsampling", 10),
84
68
  do_flatfield=do_flatfield,
85
- take_log=cor_options.get("take_log", True),
86
69
  cor_options=cor_options,
87
70
  logger=logger,
88
71
  )
@@ -197,12 +180,6 @@ class CORFinder(CORFinderBase):
197
180
  self._init_radios()
198
181
  self._apply_flatfield()
199
182
  self._apply_tilt()
200
- # octave-accurate does not support half-acquisition scans,
201
- # but information on field of view is only known here with the "dataset_info" object.
202
- # Do the check here.
203
- if self.dataset_info.is_halftomo and method == "octave-accurate":
204
- raise ValueError("The CoR estimator 'octave-accurate' does not support half-acquisition scans")
205
- #
206
183
 
207
184
  def _init_radios(self):
208
185
  self.radios, self._radios_indices = get_radio_pair(
@@ -243,13 +220,6 @@ class CORFinder(CORFinderBase):
243
220
  # All find_shift() methods in self.search_methods have the same API with "img_1" and "img_2"
244
221
  cor_exec_kwargs = update_func_kwargs(self.cor_finder.find_shift, self.cor_options)
245
222
  cor_exec_kwargs["return_relative_to_middle"] = False
246
- # ----- FIXME -----
247
- # 'self.cor_options' can contain 'side="from_file"', and we should not modify it directly
248
- # because it's entered by the user.
249
- # Either make a copy of self.cor_options, or change the inspect() mechanism
250
- if cor_exec_kwargs.get("side", None) == "from_file":
251
- cor_exec_kwargs["side"] = self._lookup_side or "center"
252
- # ------
253
223
  if self._lookup_side is not None:
254
224
  cor_exec_kwargs["side"] = self._lookup_side
255
225
  self.logger.debug("%s.find_shift(%s)" % (self.cor_finder.__class__.__name__, str(cor_exec_kwargs)))
@@ -389,13 +359,7 @@ class SinoCORFinder(CORFinderBase):
389
359
 
390
360
  cor_exec_kwargs = update_func_kwargs(self.cor_finder.find_shift, self.cor_options)
391
361
  cor_exec_kwargs["return_relative_to_middle"] = False
392
- # FIXME
393
- # 'self.cor_options' can contain 'side="from_file"', and we should not modify it directly
394
- # because it's entered by the user.
395
- # Either make a copy of self.cor_options, or change the inspect() mechanism
396
- if cor_exec_kwargs["side"] == "from_file":
397
- cor_exec_kwargs["side"] = self._lookup_side or "center"
398
- #
362
+
399
363
  if self._lookup_side is not None:
400
364
  cor_exec_kwargs["side"] = self._lookup_side
401
365
 
@@ -490,7 +454,7 @@ class CompositeCORFinder(CORFinderBase):
490
454
  if (self.angle_max - self.angle_min) < 1.2 * np.pi:
491
455
  useful_span = None
492
456
  raise ValueError(
493
- f"""Sinogram-based Center of Rotation estimation can only be used for scans over more than 180 degrees.
457
+ f"""Sinogram-based Center of Rotation estimation can only be used for scans over more than 180 degrees.
494
458
  Your angular span was barely above 180 degrees, it was in fact {((self.angle_max - self.angle_min)/np.pi):.2f} x 180
495
459
  and it is not considered to be enough by the discriminating condition which requires at least 1.2 half-turns
496
460
  """
@@ -668,10 +668,7 @@ class ChunkedPipeline:
668
668
  "jpeg2000_compression_ratio": options["jpeg2000_compression_ratio"],
669
669
  "float_clip_values": options["float_clip_values"],
670
670
  "tiff_single_file": options.get("tiff_single_file", False),
671
- "single_output_file_initialized": getattr(
672
- self.process_config, "single_output_file_initialized", False
673
- ), # COMPAT.
674
- "writer_initialized": getattr(self.process_config, "_writer_initialized", False),
671
+ "single_output_file_initialized": getattr(self.process_config, "single_output_file_initialized", False),
675
672
  "raw_vol_metadata": {"voxelSize": self.dataset_info.pixel_size}, # legacy...
676
673
  }
677
674
  writer_extra_options.update(extra_options)
@@ -856,8 +853,7 @@ class ChunkedPipeline:
856
853
  self.writer.write_data(data)
857
854
  self.logger.info("Wrote %s" % self.writer.fname)
858
855
  self._write_histogram()
859
- self.process_config.single_output_file_initialized = True # COMPAT.
860
- self.process_config._writer_initialized = True
856
+ self.process_config.single_output_file_initialized = True
861
857
 
862
858
  def _write_histogram(self):
863
859
  if "histogram" not in self.processing_steps:
@@ -84,17 +84,13 @@ class TestCorNearPos:
84
84
 
85
85
  def test_cor_fourier_angles_standard(self):
86
86
  cor_options = extract_parameters(self.conf_std["reconstruction"].get("cor_options", None), sep=";")
87
- # TODO modify test files
88
- if "near_pos" in cor_options and "near" in cor_options.get("side", "") == "near":
89
- cor_options["side"] = cor_options["near_pos"]
90
- #
91
87
  for side in [None, "from_file", "center"]:
92
88
  if side is not None:
93
89
  cor_options.update({"side": side})
94
90
  finder = SinoCORFinder("fourier-angles", self.ds_std, do_flatfield=True, cor_options=cor_options)
95
91
  cor = finder.find_cor()
96
92
  message = f"Computed CoR {cor} and expected CoR {self.true_cor} do not coincide. Near_pos options was set to {cor_options.get('near_pos',None)}."
97
- assert np.isclose(self.true_cor + 0.5, cor, atol=self.abs_tol), message
93
+ assert np.isclose(self.true_cor, cor, atol=self.abs_tol), message
98
94
 
99
95
  def test_cor_sliding_bliss(self):
100
96
  cor_options = extract_parameters(self.conf_bliss["reconstruction"].get("cor_options", None), sep=";")
@@ -118,4 +114,4 @@ class TestCorNearPos:
118
114
  finder = SinoCORFinder("fourier-angles", self.ds_bliss, do_flatfield=True, cor_options=cor_options)
119
115
  cor = finder.find_cor()
120
116
  message = f"Computed CoR {cor} and expected CoR {self.true_cor} do not coincide. Near_pos options was set to {cor_options.get('near_pos',None)}."
121
- assert np.isclose(self.true_cor + 0.5, cor, atol=self.abs_tol), message
117
+ assert np.isclose(self.true_cor, cor, atol=self.abs_tol), message
@@ -1,6 +1,5 @@
1
1
  from os import path
2
2
  from tomoscan.esrf import TIFFVolume, MultiTIFFVolume, EDFVolume, JP2KVolume
3
- from tomoscan.esrf.volume.singleframebase import VolumeSingleFrameBase
4
3
  from ..utils import check_supported, get_num_threads
5
4
  from ..resources.logger import LoggerOrPrint
6
5
  from ..io.writer import NXProcessWriter, HSTVolVolume, NXVolVolume
@@ -114,7 +113,6 @@ class WriterManager:
114
113
  return vol_writer.data_url.file_path()
115
114
 
116
115
  def _init_writer(self):
117
- self._writer_was_already_initialized = self.extra_options.get("writer_initialized", False)
118
116
  if self.file_format in ["tiff", "edf", "jp2", "hdf5"]:
119
117
  writer_kwargs = {
120
118
  "folder": self.output_dir,
@@ -145,11 +143,6 @@ class WriterManager:
145
143
  self._h5_entry = self.metadata.get("entry", "entry")
146
144
  self.writer = self._writer_classes[self.file_format](**writer_kwargs)
147
145
  self.fname = self.get_fname(self.writer)
148
- # In certain cases, tomoscan needs to remove any previous existing volume filess
149
- # and avoid calling 'clean_output_data' when writing downstream (for chunk processing)
150
- if isinstance(self.writer, VolumeSingleFrameBase):
151
- self.writer.skip_existing_data_files_removal = self._writer_was_already_initialized
152
- # ---
153
146
  if path.exists(self.fname):
154
147
  err = "File already exists: %s" % self.fname
155
148
  if self.overwrite:
@@ -52,7 +52,7 @@ class DatasetAnalyzer:
52
52
  "output_dir": None,
53
53
  "exclude_projections": None,
54
54
  "hdf5_entry": None,
55
- # "nx_version": 1.0,
55
+ "nx_version": 1.0,
56
56
  }
57
57
  # --
58
58
  advanced_options.update(extra_options)
@@ -302,7 +302,7 @@ class EDFDatasetAnalyzer(DatasetAnalyzer):
302
302
  return np.deg2rad(self.dataset_scanner.rotation_angle())
303
303
 
304
304
  def get_reduced_flats(self, **reader_kwargs):
305
- if self.raw_flats in [None, {}]:
305
+ if self.flats in [None, {}]:
306
306
  raise FileNotFoundError("No reduced flat ('refHST') found in %s" % self.location)
307
307
  # A few notes:
308
308
  # (1) In principle we could do the reduction (mean/median) from raw frames (ref_xxxx_yyyy)
@@ -311,15 +311,15 @@ class EDFDatasetAnalyzer(DatasetAnalyzer):
311
311
  # (eg. subsampling, binning, distortion correction...)
312
312
  # (3) The following spawns one reader instance per file, which is not elegant,
313
313
  # but in principle there are typically 1-2 reduced flats in a scan
314
- readers = {k: EDFStackReader([self.raw_flats[k].file_path()], **reader_kwargs) for k in self.raw_flats.keys()}
315
- return {k: readers[k].load_data()[0] for k in self.raw_flats.keys()}
314
+ readers = {k: EDFStackReader([self.flats[k].file_path()], **reader_kwargs) for k in self.flats.keys()}
315
+ return {k: readers[k].load_data()[0] for k in self.flats.keys()}
316
316
 
317
317
  def get_reduced_darks(self, **reader_kwargs):
318
318
  # See notes in get_reduced_flats() above
319
- if self.raw_darks in [None, {}]:
319
+ if self.darks in [None, {}]:
320
320
  raise FileNotFoundError("No reduced dark ('darkend.edf' or 'dark.edf') found in %s" % self.location)
321
- readers = {k: EDFStackReader([self.raw_darks[k].file_path()], **reader_kwargs) for k in self.raw_darks.keys()}
322
- return {k: readers[k].load_data()[0] for k in self.raw_darks.keys()}
321
+ readers = {k: EDFStackReader([self.darks[k].file_path()], **reader_kwargs) for k in self.darks.keys()}
322
+ return {k: readers[k].load_data()[0] for k in self.darks.keys()}
323
323
 
324
324
  @property
325
325
  def files(self):
@@ -365,10 +365,10 @@ class HDF5DatasetAnalyzer(DatasetAnalyzer):
365
365
  def _get_dataset_hdf5_url(self):
366
366
  if len(self.projections) > 0:
367
367
  frames_to_take = self.projections
368
- elif len(self.raw_flats) > 0:
369
- frames_to_take = self.raw_flats
370
- elif len(self.raw_darks) > 0:
371
- frames_to_take = self.raw_darks
368
+ elif len(self.flats) > 0:
369
+ frames_to_take = self.flats
370
+ elif len(self.darks) > 0:
371
+ frames_to_take = self.darks
372
372
  else:
373
373
  raise ValueError("No projections, no flats and no darks ?!")
374
374
  first_proj_idx = sorted(frames_to_take.keys())[0]
@@ -409,13 +409,8 @@ class HDF5DatasetAnalyzer(DatasetAnalyzer):
409
409
  slices: list of slice
410
410
  A list where each item is a slice.
411
411
  """
412
- name_to_attr = {
413
- "projections": self.projections,
414
- "flats": self.raw_flats,
415
- "darks": self.raw_darks,
416
- }
417
- check_supported(what, name_to_attr.keys(), "image type")
418
- images = name_to_attr[what] # dict
412
+ check_supported(what, ["projections", "flats", "darks"], "image type")
413
+ images = getattr(self, what) # dict
419
414
  # we can't directly use set() on slice() object (unhashable). Use tuples
420
415
  slices = set()
421
416
  for du in get_compacted_dataslices(images).values():
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: nabu
3
- Version: 2024.2.0
3
+ Version: 2024.2.0rc1
4
4
  Summary: Nabu - Tomography software
5
5
  Author-email: Pierre Paleo <pierre.paleo@esrf.fr>, Henri Payno <henri.payno@esrf.fr>, Alessandro Mirone <mirone@esrf.fr>, Jérôme Lesaint <jerome.lesaint@esrf.fr>
6
6
  Maintainer-email: Pierre Paleo <pierre.paleo@esrf.fr>
@@ -2,7 +2,7 @@ numpy<2,>1.9.0
2
2
  scipy
3
3
  h5py>=3.0
4
4
  silx>=0.15.0
5
- tomoscan>=2.1.0
5
+ tomoscan>=2.1.0a14
6
6
  psutil
7
7
  pytest
8
8
  tifffile
@@ -53,7 +53,7 @@ dependencies = [
53
53
  "scipy",
54
54
  "h5py>=3.0",
55
55
  "silx >= 0.15.0",
56
- "tomoscan >= 2.1.0",
56
+ "tomoscan >= 2.1.0a14",
57
57
  "psutil",
58
58
  "pytest",
59
59
  "tifffile",
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes