nabu 2024.1.0rc3__tar.gz → 2024.1.1__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 (332) hide show
  1. {nabu-2024.1.0rc3/nabu.egg-info → nabu-2024.1.1}/PKG-INFO +1 -1
  2. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/__init__.py +1 -1
  3. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/estimation/cor.py +2 -2
  4. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/io/cast_volume.py +10 -2
  5. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/pipeline/estimators.py +13 -7
  6. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/resources/dataset_analyzer.py +15 -6
  7. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/stitching/config.py +2 -2
  8. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/stitching/z_stitching.py +3 -1
  9. {nabu-2024.1.0rc3 → nabu-2024.1.1/nabu.egg-info}/PKG-INFO +1 -1
  10. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu.egg-info/SOURCES.txt +1 -33
  11. nabu-2024.1.0rc3/doc/doc_config.py +0 -32
  12. nabu-2024.1.0rc3/sandbox/align_test.py +0 -61
  13. nabu-2024.1.0rc3/sandbox/app.py +0 -123
  14. nabu-2024.1.0rc3/sandbox/binning_cython.py +0 -37
  15. nabu-2024.1.0rc3/sandbox/circ_sm.py +0 -195
  16. nabu-2024.1.0rc3/sandbox/composite_image.py +0 -90
  17. nabu-2024.1.0rc3/sandbox/convert_id15.py +0 -148
  18. nabu-2024.1.0rc3/sandbox/do_test_ctf.py +0 -40
  19. nabu-2024.1.0rc3/sandbox/esrf_envs.py +0 -36
  20. nabu-2024.1.0rc3/sandbox/fbp_polar.py +0 -39
  21. nabu-2024.1.0rc3/sandbox/fbp_tilt.py +0 -340
  22. nabu-2024.1.0rc3/sandbox/interleaved.py +0 -129
  23. nabu-2024.1.0rc3/sandbox/interp_sinos_halftomo.py +0 -31
  24. nabu-2024.1.0rc3/sandbox/linear_interp.py +0 -14
  25. nabu-2024.1.0rc3/sandbox/merge_recs.py +0 -56
  26. nabu-2024.1.0rc3/sandbox/moduleutils.py +0 -50
  27. nabu-2024.1.0rc3/sandbox/nbreconstruct.py +0 -246
  28. nabu-2024.1.0rc3/sandbox/pag_margin.py +0 -38
  29. nabu-2024.1.0rc3/sandbox/parse.py +0 -132
  30. nabu-2024.1.0rc3/sandbox/plot.py +0 -49
  31. nabu-2024.1.0rc3/sandbox/proj3D.py +0 -75
  32. nabu-2024.1.0rc3/sandbox/rec_bm05.py +0 -71
  33. nabu-2024.1.0rc3/sandbox/rec_thread.py +0 -133
  34. nabu-2024.1.0rc3/sandbox/shift_bilinear2.py +0 -42
  35. nabu-2024.1.0rc3/sandbox/sinotilt.py +0 -181
  36. nabu-2024.1.0rc3/sandbox/sysutils.py +0 -63
  37. nabu-2024.1.0rc3/sandbox/test_mp_queue.py +0 -73
  38. nabu-2024.1.0rc3/sandbox/tilt.py +0 -251
  39. nabu-2024.1.0rc3/sandbox/utils.py +0 -54
  40. nabu-2024.1.0rc3/sandbox/vo.py +0 -204
  41. nabu-2024.1.0rc3/sandbox/workers.py +0 -123
  42. nabu-2024.1.0rc3/sandbox/xrdrec_pyFAI_data.py +0 -212
  43. {nabu-2024.1.0rc3 → nabu-2024.1.1}/LICENSE +0 -0
  44. {nabu-2024.1.0rc3 → nabu-2024.1.1}/README.md +0 -0
  45. {nabu-2024.1.0rc3 → nabu-2024.1.1}/doc/conf.py +0 -0
  46. {nabu-2024.1.0rc3 → nabu-2024.1.1}/doc/create_conf_doc.py +0 -0
  47. {nabu-2024.1.0rc3 → nabu-2024.1.1}/doc/get_mathjax.py +0 -0
  48. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/app/__init__.py +0 -0
  49. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/app/bootstrap.py +0 -0
  50. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/app/bootstrap_stitching.py +0 -0
  51. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/app/cast_volume.py +0 -0
  52. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/app/cli_configs.py +0 -0
  53. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/app/compare_volumes.py +0 -0
  54. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/app/composite_cor.py +0 -0
  55. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/app/correct_rot.py +0 -0
  56. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/app/create_distortion_map_from_poly.py +0 -0
  57. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/app/diag_to_pix.py +0 -0
  58. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/app/diag_to_rot.py +0 -0
  59. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/app/double_flatfield.py +0 -0
  60. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/app/generate_header.py +0 -0
  61. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/app/histogram.py +0 -0
  62. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/app/multicor.py +0 -0
  63. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/app/nx_z_splitter.py +0 -0
  64. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/app/parse_reconstruction_log.py +0 -0
  65. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/app/prepare_weights_double.py +0 -0
  66. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/app/reconstruct.py +0 -0
  67. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/app/reconstruct_helical.py +0 -0
  68. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/app/reduce_dark_flat.py +0 -0
  69. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/app/rotate.py +0 -0
  70. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/app/shrink_dataset.py +0 -0
  71. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/app/stitching.py +0 -0
  72. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/app/tests/test_reduce_dark_flat.py +0 -0
  73. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/app/utils.py +0 -0
  74. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/app/validator.py +0 -0
  75. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/cuda/__init__.py +0 -0
  76. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/cuda/convolution.py +0 -0
  77. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/cuda/fft.py +0 -0
  78. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/cuda/kernel.py +0 -0
  79. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/cuda/medfilt.py +0 -0
  80. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/cuda/padding.py +0 -0
  81. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/cuda/processing.py +0 -0
  82. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/cuda/src/ElementOp.cu +0 -0
  83. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/cuda/src/backproj.cu +0 -0
  84. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/cuda/src/backproj_polar.cu +0 -0
  85. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/cuda/src/boundary.h +0 -0
  86. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/cuda/src/convolution.cu +0 -0
  87. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/cuda/src/dfi_fftshift.cu +0 -0
  88. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/cuda/src/flatfield.cu +0 -0
  89. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/cuda/src/fourier_wavelets.cu +0 -0
  90. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/cuda/src/halftomo.cu +0 -0
  91. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/cuda/src/helical_padding.cu +0 -0
  92. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/cuda/src/histogram.cu +0 -0
  93. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/cuda/src/interpolation.cu +0 -0
  94. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/cuda/src/medfilt.cu +0 -0
  95. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/cuda/src/normalization.cu +0 -0
  96. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/cuda/src/padding.cu +0 -0
  97. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/cuda/src/proj.cu +0 -0
  98. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/cuda/src/rotation.cu +0 -0
  99. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/cuda/src/transpose.cu +0 -0
  100. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/cuda/tests/__init__.py +0 -0
  101. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/cuda/utils.py +0 -0
  102. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/estimation/__init__.py +0 -0
  103. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/estimation/alignment.py +0 -0
  104. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/estimation/cor_sino.py +0 -0
  105. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/estimation/distortion.py +0 -0
  106. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/estimation/focus.py +0 -0
  107. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/estimation/tests/__init__.py +0 -0
  108. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/estimation/tests/test_alignment.py +0 -0
  109. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/estimation/tests/test_cor.py +0 -0
  110. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/estimation/tests/test_focus.py +0 -0
  111. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/estimation/tests/test_tilt.py +0 -0
  112. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/estimation/tests/test_translation.py +0 -0
  113. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/estimation/tilt.py +0 -0
  114. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/estimation/translation.py +0 -0
  115. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/estimation/utils.py +0 -0
  116. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/io/__init__.py +0 -0
  117. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/io/detector_distortion.py +0 -0
  118. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/io/reader.py +0 -0
  119. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/io/reader_helical.py +0 -0
  120. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/io/tests/__init__.py +0 -0
  121. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/io/tests/test_cast_volume.py +0 -0
  122. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/io/tests/test_detector_distortion.py +0 -0
  123. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/io/tests/test_writers.py +0 -0
  124. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/io/tiffwriter_zmm.py +0 -0
  125. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/io/utils.py +0 -0
  126. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/io/writer.py +0 -0
  127. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/misc/__init__.py +0 -0
  128. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/misc/binning.py +0 -0
  129. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/misc/fftshift.py +0 -0
  130. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/misc/filters.py +0 -0
  131. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/misc/fourier_filters.py +0 -0
  132. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/misc/histogram.py +0 -0
  133. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/misc/histogram_cuda.py +0 -0
  134. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/misc/kernel_base.py +0 -0
  135. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/misc/padding.py +0 -0
  136. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/misc/padding_base.py +0 -0
  137. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/misc/processing_base.py +0 -0
  138. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/misc/rotation.py +0 -0
  139. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/misc/rotation_cuda.py +0 -0
  140. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/misc/tests/__init__.py +0 -0
  141. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/misc/tests/test_binning.py +0 -0
  142. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/misc/tests/test_interpolation.py +0 -0
  143. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/misc/transpose.py +0 -0
  144. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/misc/unsharp.py +0 -0
  145. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/misc/unsharp_cuda.py +0 -0
  146. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/misc/unsharp_opencl.py +0 -0
  147. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/misc/utils.py +0 -0
  148. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/opencl/__init__.py +0 -0
  149. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/opencl/fft.py +0 -0
  150. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/opencl/kernel.py +0 -0
  151. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/opencl/memcpy.py +0 -0
  152. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/opencl/padding.py +0 -0
  153. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/opencl/processing.py +0 -0
  154. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/opencl/src/ElementOp.cl +0 -0
  155. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/opencl/src/backproj.cl +0 -0
  156. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/opencl/src/fftshift.cl +0 -0
  157. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/opencl/src/halftomo.cl +0 -0
  158. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/opencl/src/padding.cl +0 -0
  159. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/opencl/src/roll.cl +0 -0
  160. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/opencl/src/transpose.cl +0 -0
  161. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/opencl/tests/__init__.py +0 -0
  162. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/opencl/utils.py +0 -0
  163. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/pipeline/__init__.py +0 -0
  164. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/pipeline/config.py +0 -0
  165. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/pipeline/config_validators.py +0 -0
  166. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/pipeline/datadump.py +0 -0
  167. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/pipeline/dataset_validator.py +0 -0
  168. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/pipeline/detector_distortion_provider.py +0 -0
  169. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/pipeline/fallback_utils.py +0 -0
  170. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/pipeline/fullfield/__init__.py +0 -0
  171. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/pipeline/fullfield/chunked.py +0 -0
  172. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/pipeline/fullfield/chunked_cuda.py +0 -0
  173. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/pipeline/fullfield/computations.py +0 -0
  174. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/pipeline/fullfield/dataset_validator.py +0 -0
  175. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/pipeline/fullfield/nabu_config.py +0 -0
  176. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/pipeline/fullfield/processconfig.py +0 -0
  177. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/pipeline/fullfield/reconstruction.py +0 -0
  178. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/pipeline/helical/__init__.py +0 -0
  179. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/pipeline/helical/dataset_validator.py +0 -0
  180. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/pipeline/helical/fbp.py +0 -0
  181. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/pipeline/helical/filtering.py +0 -0
  182. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/pipeline/helical/gridded_accumulator.py +0 -0
  183. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/pipeline/helical/helical_chunked_regridded.py +0 -0
  184. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/pipeline/helical/helical_chunked_regridded_cuda.py +0 -0
  185. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/pipeline/helical/helical_reconstruction.py +0 -0
  186. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/pipeline/helical/helical_utils.py +0 -0
  187. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/pipeline/helical/nabu_config.py +0 -0
  188. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/pipeline/helical/processconfig.py +0 -0
  189. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/pipeline/helical/span_strategy.py +0 -0
  190. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/pipeline/helical/tests/__init__.py +0 -0
  191. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/pipeline/helical/tests/test_accumulator.py +0 -0
  192. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/pipeline/helical/tests/test_pipeline_elements_full.py +0 -0
  193. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/pipeline/helical/tests/test_strategy.py +0 -0
  194. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/pipeline/helical/utils.py +0 -0
  195. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/pipeline/helical/weight_balancer.py +0 -0
  196. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/pipeline/params.py +0 -0
  197. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/pipeline/processconfig.py +0 -0
  198. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/pipeline/tests/test_chunk_reader.py +0 -0
  199. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/pipeline/tests/test_estimators.py +0 -0
  200. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/pipeline/utils.py +0 -0
  201. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/pipeline/writer.py +0 -0
  202. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/pipeline/xrdct/__init__.py +0 -0
  203. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/preproc/__init__.py +0 -0
  204. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/preproc/alignment.py +0 -0
  205. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/preproc/ccd.py +0 -0
  206. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/preproc/ccd_cuda.py +0 -0
  207. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/preproc/ctf.py +0 -0
  208. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/preproc/ctf_cuda.py +0 -0
  209. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/preproc/distortion.py +0 -0
  210. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/preproc/double_flatfield.py +0 -0
  211. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/preproc/double_flatfield_cuda.py +0 -0
  212. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/preproc/double_flatfield_variable_region.py +0 -0
  213. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/preproc/flatfield.py +0 -0
  214. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/preproc/flatfield_cuda.py +0 -0
  215. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/preproc/flatfield_variable_region.py +0 -0
  216. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/preproc/phase.py +0 -0
  217. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/preproc/phase_cuda.py +0 -0
  218. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/preproc/shift.py +0 -0
  219. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/preproc/shift_cuda.py +0 -0
  220. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/preproc/tests/__init__.py +0 -0
  221. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/preproc/tests/test_ccd_corr.py +0 -0
  222. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/preproc/tests/test_ctf.py +0 -0
  223. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/preproc/tests/test_double_flatfield.py +0 -0
  224. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/preproc/tests/test_flatfield.py +0 -0
  225. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/preproc/tests/test_paganin.py +0 -0
  226. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/preproc/tests/test_vshift.py +0 -0
  227. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/processing/__init__.py +0 -0
  228. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/processing/convolution_cuda.py +0 -0
  229. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/processing/fft_base.py +0 -0
  230. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/processing/fft_cuda.py +0 -0
  231. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/processing/fft_opencl.py +0 -0
  232. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/processing/fftshift.py +0 -0
  233. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/processing/histogram.py +0 -0
  234. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/processing/histogram_cuda.py +0 -0
  235. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/processing/kernel_base.py +0 -0
  236. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/processing/medfilt_cuda.py +0 -0
  237. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/processing/muladd.py +0 -0
  238. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/processing/muladd_cuda.py +0 -0
  239. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/processing/padding_base.py +0 -0
  240. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/processing/padding_cuda.py +0 -0
  241. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/processing/padding_opencl.py +0 -0
  242. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/processing/processing_base.py +0 -0
  243. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/processing/roll_opencl.py +0 -0
  244. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/processing/rotation.py +0 -0
  245. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/processing/rotation_cuda.py +0 -0
  246. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/processing/tests/__init__.py +0 -0
  247. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/processing/tests/test_fft.py +0 -0
  248. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/processing/tests/test_fftshift.py +0 -0
  249. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/processing/tests/test_histogram.py +0 -0
  250. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/processing/tests/test_medfilt.py +0 -0
  251. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/processing/tests/test_muladd.py +0 -0
  252. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/processing/tests/test_padding.py +0 -0
  253. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/processing/tests/test_roll.py +0 -0
  254. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/processing/tests/test_rotation.py +0 -0
  255. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/processing/tests/test_transpose.py +0 -0
  256. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/processing/tests/test_unsharp.py +0 -0
  257. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/processing/transpose.py +0 -0
  258. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/processing/unsharp.py +0 -0
  259. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/processing/unsharp_cuda.py +0 -0
  260. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/processing/unsharp_opencl.py +0 -0
  261. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/reconstruction/__init__.py +0 -0
  262. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/reconstruction/cone.py +0 -0
  263. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/reconstruction/fbp.py +0 -0
  264. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/reconstruction/fbp_base.py +0 -0
  265. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/reconstruction/fbp_opencl.py +0 -0
  266. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/reconstruction/filtering.py +0 -0
  267. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/reconstruction/filtering_cuda.py +0 -0
  268. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/reconstruction/filtering_opencl.py +0 -0
  269. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/reconstruction/projection.py +0 -0
  270. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/reconstruction/reconstructor.py +0 -0
  271. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/reconstruction/reconstructor_cuda.py +0 -0
  272. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/reconstruction/rings.py +0 -0
  273. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/reconstruction/rings_cuda.py +0 -0
  274. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/reconstruction/sinogram.py +0 -0
  275. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/reconstruction/sinogram_cuda.py +0 -0
  276. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/reconstruction/sinogram_opencl.py +0 -0
  277. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/reconstruction/tests/__init__.py +0 -0
  278. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/reconstruction/tests/test_cone.py +0 -0
  279. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/reconstruction/tests/test_deringer.py +0 -0
  280. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/reconstruction/tests/test_fbp.py +0 -0
  281. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/reconstruction/tests/test_filtering.py +0 -0
  282. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/reconstruction/tests/test_halftomo.py +0 -0
  283. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/reconstruction/tests/test_projector.py +0 -0
  284. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/reconstruction/tests/test_reconstructor.py +0 -0
  285. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/reconstruction/tests/test_sino_normalization.py +0 -0
  286. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/resources/__init__.py +0 -0
  287. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/resources/cli/__init__.py +0 -0
  288. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/resources/cor.py +0 -0
  289. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/resources/gpu.py +0 -0
  290. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/resources/logger.py +0 -0
  291. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/resources/nxflatfield.py +0 -0
  292. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/resources/templates/__init__.py +0 -0
  293. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/resources/templates/bm05_pag.conf +0 -0
  294. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/resources/templates/id16_ctf.conf +0 -0
  295. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/resources/templates/id16_holo.conf +0 -0
  296. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/resources/templates/id19_pag.conf +0 -0
  297. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/resources/tests/__init__.py +0 -0
  298. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/resources/tests/test_nxflatfield.py +0 -0
  299. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/resources/tests/test_units.py +0 -0
  300. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/resources/utils.py +0 -0
  301. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/stitching/__init__.py +0 -0
  302. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/stitching/alignment.py +0 -0
  303. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/stitching/definitions.py +0 -0
  304. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/stitching/frame_composition.py +0 -0
  305. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/stitching/overlap.py +0 -0
  306. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/stitching/sample_normalization.py +0 -0
  307. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/stitching/slurm_utils.py +0 -0
  308. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/stitching/tests/__init__.py +0 -0
  309. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/stitching/tests/test_alignment.py +0 -0
  310. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/stitching/tests/test_config.py +0 -0
  311. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/stitching/tests/test_frame_composition.py +0 -0
  312. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/stitching/tests/test_overlap.py +0 -0
  313. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/stitching/tests/test_sample_normalization.py +0 -0
  314. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/stitching/tests/test_slurm_utils.py +0 -0
  315. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/stitching/tests/test_utils.py +0 -0
  316. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/stitching/tests/test_z_stitching.py +0 -0
  317. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/stitching/utils.py +0 -0
  318. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/tests.py +0 -0
  319. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/testutils.py +0 -0
  320. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/thirdparty/__init__.py +0 -0
  321. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/thirdparty/algotom_convert_sino.py +0 -0
  322. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/thirdparty/pore3d_deringer_munch.py +0 -0
  323. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/thirdparty/tomocupy_remove_stripe.py +0 -0
  324. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/thirdparty/tomopy_phase.py +0 -0
  325. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/thirdparty/tomwer_load_flats_darks.py +0 -0
  326. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/utils.py +0 -0
  327. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu.egg-info/dependency_links.txt +0 -0
  328. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu.egg-info/entry_points.txt +0 -0
  329. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu.egg-info/requires.txt +0 -0
  330. {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu.egg-info/top_level.txt +0 -0
  331. {nabu-2024.1.0rc3 → nabu-2024.1.1}/pyproject.toml +0 -0
  332. {nabu-2024.1.0rc3 → nabu-2024.1.1}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: nabu
3
- Version: 2024.1.0rc3
3
+ Version: 2024.1.1
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.1.0-rc3"
1
+ __version__ = "2024.1.1"
2
2
  __nabu_modules__ = [
3
3
  "app",
4
4
  "cuda",
@@ -285,13 +285,13 @@ class CenterOfRotationSlidingWindow(CenterOfRotation):
285
285
  abs_pos = near_pos + img_shape[-1] // 2
286
286
  offset = min(img_shape[-1] - abs_pos, abs_pos) # distance to closest edge.
287
287
 
288
- window_fraction = 0.8 # Hard-coded ?
288
+ window_fraction = 0.4 # Hard-coded ?
289
289
  window_shift = int(np.floor(offset * window_fraction))
290
290
  window_width = 2 * window_shift + 1
291
291
 
292
292
  sliding_shift = int(np.floor(offset * (1 - window_fraction))) - 1
293
293
  n = 2 * sliding_shift + 1
294
- win_1_start_seed = abs_pos - window_shift - sliding_shift
294
+ win_1_start_seed = 2 * near_pos - sliding_shift
295
295
 
296
296
  if side.lower() == "right":
297
297
  win_2_start = 0
@@ -167,6 +167,12 @@ def cast_volume(
167
167
  if not isinstance(output_volume, VolumeBase):
168
168
  raise TypeError(f"output_volume is expected to be a {VolumeBase}. {type(output_volume)} provided")
169
169
 
170
+ try:
171
+ output_data_type = numpy.dtype(
172
+ output_data_type
173
+ ) # User friendly API in case user provides np.uint16 e.g. (see issue #482)
174
+ except Exception:
175
+ pass
170
176
  if not isinstance(output_data_type, numpy.dtype):
171
177
  raise TypeError(f"output_data_type is expected to be a {numpy.dtype}. {type(output_data_type)} provided")
172
178
 
@@ -326,7 +332,7 @@ def find_histogram(volume: VolumeBase, scan: Optional[TomoScanBase] = None) -> O
326
332
  )
327
333
 
328
334
 
329
- def _get_hst_saturations(hist, bins, rescale_min_percentile, rescale_max_percentile):
335
+ def _get_hst_saturations(hist, bins, rescale_min_percentile: numpy.float32, rescale_max_percentile: numpy.float32):
330
336
  hist_cum = numpy.cumsum(hist)
331
337
  bin_index_min = numpy.searchsorted(hist_cum, numpy.percentile(hist_cum, rescale_min_percentile))
332
338
  bin_index_max = numpy.searchsorted(hist_cum, numpy.percentile(hist_cum, rescale_max_percentile))
@@ -360,4 +366,6 @@ def _min_max_from_histo(url: DataUrl, rescale_min_percentile: int, rescale_max_p
360
366
  else:
361
367
  bins = histogram[1]
362
368
  hist = histogram[0]
363
- return _get_hst_saturations(hist, bins, rescale_min_percentile, rescale_max_percentile)
369
+ return _get_hst_saturations(
370
+ hist, bins, numpy.float32(rescale_min_percentile), numpy.float32(rescale_max_percentile)
371
+ )
@@ -27,7 +27,7 @@ from ..resources.logger import LoggerOrPrint
27
27
  from ..resources.utils import extract_parameters
28
28
  from ..utils import check_supported, is_int
29
29
  from .params import tilt_methods
30
- from ..resources.dataset_analyzer import get_0_180_radios
30
+ from ..resources.dataset_analyzer import get_radio_pair
31
31
  from ..processing.rotation import Rotation
32
32
  from ..io.reader import ChunkReader
33
33
  from ..preproc.ccd import Log, CCDFilter
@@ -148,7 +148,7 @@ class CORFinderBase:
148
148
  )
149
149
  near_init = default_lookup_side
150
150
  elif isinstance(near_init, Real):
151
- self.cor_options.update({"near_pos": near_init})
151
+ self.cor_options.update({"near_pos": int(near_init)})
152
152
  near_init = "near" # ???
153
153
  elif near_init == "near": # Legacy
154
154
  if not isinstance(self.cor_options["near_pos"], Real):
@@ -201,8 +201,8 @@ class CORFinderBase:
201
201
  lookup_side = self.cor_options.get("side", default_lookup_side)
202
202
 
203
203
  # OctaveAccurate
204
- if cor_class == CenterOfRotationOctaveAccurate:
205
- lookup_side = "center"
204
+ # if cor_class == CenterOfRotationOctaveAccurate:
205
+ # lookup_side = "center"
206
206
  angles = self.dataset_info.rotation_angles
207
207
 
208
208
  self.cor_exec_args = []
@@ -246,7 +246,9 @@ class CORFinder(CORFinderBase):
246
246
  },
247
247
  }
248
248
 
249
- def __init__(self, method, dataset_info, do_flatfield=True, cor_options=None, logger=None):
249
+ def __init__(
250
+ self, method, dataset_info, do_flatfield=True, cor_options=None, logger=None, radio_angles: tuple = (0.0, np.pi)
251
+ ):
250
252
  """
251
253
  Initialize a CORFinder object.
252
254
 
@@ -254,15 +256,19 @@ class CORFinder(CORFinderBase):
254
256
  ----------
255
257
  dataset_info: `nabu.resources.dataset_analyzer.DatasetAnalyzer`
256
258
  Dataset information structure
259
+ radio_angles: angles to use to find the cor
257
260
  """
258
261
  super().__init__(method, dataset_info, do_flatfield=do_flatfield, cor_options=cor_options, logger=logger)
262
+ self._radio_angles = radio_angles
259
263
  self._init_radios()
260
264
  self._init_flatfield()
261
265
  self._apply_flatfield()
262
266
  self._apply_tilt()
263
267
 
264
268
  def _init_radios(self):
265
- self.radios, self._radios_indices = get_0_180_radios(self.dataset_info, return_indices=True)
269
+ self.radios, self._radios_indices = get_radio_pair(
270
+ self.dataset_info, radio_angles=self._radio_angles, return_indices=True
271
+ )
266
272
 
267
273
  def _init_flatfield(self):
268
274
  if not (self.do_flatfield):
@@ -919,7 +925,7 @@ class DetectorTiltEstimator:
919
925
  named arguments to pass to the detector tilt estimator class.
920
926
  """
921
927
  self._set_params(dataset_info, do_flatfield, logger, autotilt_options)
922
- self.radios, self.radios_indices = get_0_180_radios(dataset_info, return_indices=True)
928
+ self.radios, self.radios_indices = get_radio_pair(dataset_info, radio_angles=(0.0, np.pi), return_indices=True)
923
929
  self._init_flatfield()
924
930
  self._apply_flatfield()
925
931
 
@@ -424,14 +424,17 @@ def analyze_dataset(dataset_path, extra_options=None, logger=None):
424
424
  return dataset_structure
425
425
 
426
426
 
427
- def get_0_180_radios(dataset_info, return_indices=False):
427
+ def get_radio_pair(dataset_info, radio_angles: tuple, return_indices=False):
428
428
  """
429
- Get the radios at 0 degres and 180 degrees.
429
+ Get closest radios at radio_angles[0] and radio_angles[1]
430
+ angles must be in angles
430
431
 
431
432
  Parameters
432
433
  ----------
433
434
  dataset_info: `DatasetAnalyzer` instance
434
435
  Data structure with the dataset information
436
+ radio_angles: tuple
437
+ tuple of two elements: angles (in radian) to get
435
438
  return_indices: bool, optional
436
439
  Whether to return radios indices along with the radios array.
437
440
 
@@ -441,14 +444,20 @@ def get_0_180_radios(dataset_info, return_indices=False):
441
444
  If return_indices is True, return a tuple (radios, indices).
442
445
  Otherwise, return an array with the radios.
443
446
  """
447
+ if not (isinstance(radio_angles, tuple) and len(radio_angles) == 2):
448
+ raise TypeError("radio_angles should be a tuple of two elements.")
449
+ if not isinstance(radio_angles[0], (np.floating, float)) or not isinstance(radio_angles[1], (np.floating, float)):
450
+ raise TypeError(
451
+ f"radio_angles should be float. Get {type(radio_angles[0])} and {type(radio_angles[1])} instead"
452
+ )
453
+
444
454
  radios_indices = []
445
455
  radios_indices = sorted(dataset_info.projections.keys())
446
456
  angles = dataset_info.rotation_angles
447
457
  angles = angles - angles.min()
448
- i_0 = np.argmin(np.abs(angles))
449
- i_180 = np.argmin(np.abs(angles - np.pi))
450
- _min_indices = [i_0, i_180]
451
- radios_indices = [radios_indices[i_0], radios_indices[i_180]]
458
+ i_radio_1 = np.argmin(np.abs(angles - radio_angles[0]))
459
+ i_radio_2 = np.argmin(np.abs(angles - radio_angles[1]))
460
+ radios_indices = [radios_indices[i_radio_1], radios_indices[i_radio_2]]
452
461
  n_radios = 2
453
462
  radios = np.zeros((n_radios,) + dataset_info.radio_dims[::-1], "f")
454
463
  for i in range(n_radios):
@@ -710,12 +710,12 @@ class StitchingConfiguration:
710
710
  "type": "optional",
711
711
  },
712
712
  SLURM_PREPROCESSING_COMMAND: {
713
- "default": "'/scisoft/tomotools_env/activate.sh stable'",
713
+ "default": "",
714
714
  "help": "python virtual environment to use",
715
715
  "type": "optional",
716
716
  },
717
717
  SLURM_MODULES_TO_LOADS: {
718
- "default": "",
718
+ "default": "tomotools/stable",
719
719
  "help": "module to load",
720
720
  "type": "optional",
721
721
  },
@@ -1223,7 +1223,9 @@ class PreProcessZStitcher(ZStitcher):
1223
1223
 
1224
1224
  # first save the NXtomo entry without the frame
1225
1225
  # dicttonx will fail if the folder does not exists
1226
- os.makedirs(os.path.dirname(self.configuration.output_file_path), exist_ok=True)
1226
+ dir_name = os.path.dirname(self.configuration.output_file_path)
1227
+ if dir_name not in (None, ""):
1228
+ os.makedirs(dir_name, exist_ok=True)
1227
1229
  nx_tomo.save(
1228
1230
  file_path=self.configuration.output_file_path,
1229
1231
  data_path=self.configuration.output_data_path,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: nabu
3
- Version: 2024.1.0rc3
3
+ Version: 2024.1.1
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>
@@ -3,7 +3,6 @@ README.md
3
3
  pyproject.toml
4
4
  doc/conf.py
5
5
  doc/create_conf_doc.py
6
- doc/doc_config.py
7
6
  doc/get_mathjax.py
8
7
  nabu/__init__.py
9
8
  nabu/tests.py
@@ -296,35 +295,4 @@ nabu/thirdparty/algotom_convert_sino.py
296
295
  nabu/thirdparty/pore3d_deringer_munch.py
297
296
  nabu/thirdparty/tomocupy_remove_stripe.py
298
297
  nabu/thirdparty/tomopy_phase.py
299
- nabu/thirdparty/tomwer_load_flats_darks.py
300
- sandbox/align_test.py
301
- sandbox/app.py
302
- sandbox/binning_cython.py
303
- sandbox/circ_sm.py
304
- sandbox/composite_image.py
305
- sandbox/convert_id15.py
306
- sandbox/do_test_ctf.py
307
- sandbox/esrf_envs.py
308
- sandbox/fbp_polar.py
309
- sandbox/fbp_tilt.py
310
- sandbox/interleaved.py
311
- sandbox/interp_sinos_halftomo.py
312
- sandbox/linear_interp.py
313
- sandbox/merge_recs.py
314
- sandbox/moduleutils.py
315
- sandbox/nbreconstruct.py
316
- sandbox/pag_margin.py
317
- sandbox/parse.py
318
- sandbox/plot.py
319
- sandbox/proj3D.py
320
- sandbox/rec_bm05.py
321
- sandbox/rec_thread.py
322
- sandbox/shift_bilinear2.py
323
- sandbox/sinotilt.py
324
- sandbox/sysutils.py
325
- sandbox/test_mp_queue.py
326
- sandbox/tilt.py
327
- sandbox/utils.py
328
- sandbox/vo.py
329
- sandbox/workers.py
330
- sandbox/xrdrec_pyFAI_data.py
298
+ nabu/thirdparty/tomwer_load_flats_darks.py
@@ -1,32 +0,0 @@
1
- #!/usr/bin/env python
2
-
3
- from nabu.resources.nabu_config import nabu_config
4
-
5
-
6
- def generate(file_):
7
- def write(content):
8
- print(content, file=file_)
9
- for section, values in nabu_config.items():
10
- if section == "about":
11
- continue
12
- write("## %s\n" % section)
13
- for key, val in values.items():
14
- if val["type"] == "unsupported":
15
- continue
16
- write(val["help"] + "\n")
17
- write(
18
- "```ini\n%s = %s\n```"
19
- % (key, val["default"])
20
- )
21
-
22
-
23
-
24
- if __name__ == "__main__":
25
-
26
- import sys, os
27
- print(os.path.abspath(__file__))
28
- exit(0)
29
-
30
- fname = "/tmp/test.md"
31
- with open(fname, "w") as f:
32
- generate(f)
@@ -1,61 +0,0 @@
1
- import numpy as np
2
- from nabu.estimation.translation import DetectorTranslationAlongBeam
3
- from tomoscan.io import HDF5File
4
-
5
-
6
- def get_data(fname, h5_paths):
7
- with HDF5File(fname, "r") as f:
8
- align_data = f[h5_paths["align_data"]][()]
9
- dark = f[h5_paths["dark"]][0]
10
- pixel_size_um = f[h5_paths["pixel_size"]][()]
11
- positions_mm = f[h5_paths["positions"]][()]
12
-
13
- # Dark subtraction
14
- align_data = align_data - dark.astype("f")
15
-
16
- return align_data, pixel_size_um, positions_mm
17
-
18
-
19
-
20
- def get_alignment(align_data, pixel_size_um, positions_mm, plot=True):
21
-
22
- tr_calc = DetectorTranslationAlongBeam()
23
- if plot == True:
24
- tr_calc.verbose=True
25
-
26
- shifts_v, shifts_h = tr_calc.find_shift(align_data, positions_mm)
27
-
28
- # pixel_size is in microns, motor position is in mm
29
- tilt_v_deg = np.rad2deg(np.arctan(shifts_v * pixel_size_um / 1e3))
30
- tilt_h_deg = np.rad2deg(np.arctan(shifts_h * pixel_size_um / 1e3))
31
- print (f"\nVertical tilt to be applied in deg (thy): {tilt_v_deg}")
32
- print (f"Horizontal tilt to be applied in deg (thz): {tilt_h_deg}\n")
33
-
34
- return align_data, shifts_v, shifts_h, positions_mm
35
-
36
-
37
-
38
-
39
-
40
-
41
- if __name__ == "__main__":
42
- fname = "/data/id19/inhouse/id192201/id19/sample/sample_0001/sample_0001.h5"
43
- h5_paths = {
44
- "align_data": "11.1/measurement/pcolinux",
45
- "dark": "12.1/measurement/pcolinux",
46
- "pixel_size": "11.1/instrument/pcolinux/x_pixel_size",
47
- "positions": "11.1/measurement/hrxc"
48
- }
49
- align_data, pixel_size_um, positions_mm = get_data(fname, h5_paths)
50
- # align_data, shifts_v, shifts_h, positions_mm = get_alignment(align_data, pixel_size_um, positions_mm)
51
-
52
- D = DetectorTranslationAlongBeam()
53
- D. verbose = True
54
- sv, sh = D.find_shift(align_data, positions_mm)
55
- D.verbose = False
56
- sv, sh = D.find_shift(align_data, positions_mm)
57
- D.verbose = True
58
- sv, sh = D.find_shift(align_data, positions_mm)
59
-
60
-
61
-
@@ -1,123 +0,0 @@
1
- from time import sleep
2
- import pycuda.autoinit
3
- import pycuda.gpuarray as garray
4
- from nabu.resources.processconfig import ProcessConfig
5
- from nabu.resources.tasks import build_processing_steps
6
-
7
- from nabu.app.logger import Logger
8
-
9
- from nabu.app.chunkreader import ChunkReaderComponent
10
- from nabu.app.flatfield import FlatFieldComponent
11
- from nabu.app.phase import PhaseRetrievalComponent
12
- from nabu.app.opmap import NegativeLogComponent
13
- from nabu.app.ccdfilter import CCDFilterComponent
14
- from nabu.app.unsharp import UnsharpMaskComponent
15
- from nabu.app.reconstructor import ReconstructorComponent
16
-
17
-
18
- if __name__ == "__main__":
19
-
20
- conf = ProcessConfig("/home/pierre/workspace/data/nabu.conf")
21
- steps, options = build_processing_steps(conf)
22
- dataset_infos = conf.dataset_infos
23
- SUB_REGION = (None, None, None, 50)
24
-
25
- logger = Logger("nabu_processing", console=True)
26
-
27
- # Read chunk
28
- options["read_chunk"]["sub_region"] = SUB_REGION
29
- options["read_chunk"]["convert_float"] = True
30
- Ch = ChunkReaderComponent(options["read_chunk"], dataset_infos, logger=logger)
31
- Ch.execute()
32
- radios = Ch.chunk_reader.files_data
33
- d_radios = garray.to_gpu(radios)
34
-
35
- # Flat-field
36
- options["flatfield"]["sub_region"] = SUB_REGION
37
- options["flatfield"]["use_opencl"] = False
38
- options["flatfield"]["use_cuda"] = True
39
- F = FlatFieldComponent(d_radios, options["flatfield"], dataset_infos, logger=logger)
40
- F.execute()
41
-
42
- # CCD filter
43
- options["ccd_correction"]["use_cuda"] = True
44
- options["ccd_correction"]["use_opencl"] = False
45
- CCD = CCDFilterComponent(d_radios, options["ccd_correction"], dataset_infos, logger=logger)
46
- CCD.execute()
47
-
48
-
49
- # Phase retrieval
50
- options["phase"]["use_cuda"] = True
51
- options["phase"]["use_opencl"] = False
52
- P = PhaseRetrievalComponent(radios[0].shape, options["phase"], dataset_infos, logger=logger)
53
- P.execute(d_radios)
54
-
55
- # Unsharp
56
- # ~ options["unsharp_mask"]["use_cuda"] = True
57
- # ~ options["unsharp_mask"]["use_opencl"] = False
58
- # ~ U = UnsharpMaskComponent(radios[0].shape, options["unsharp_mask"], dataset_infos, logger=logger)
59
- # ~ U.execute(d_radios)
60
-
61
- # -log()
62
- options["take_log"]["use_cuda"] = True
63
- options["take_log"]["use_opencl"] = False
64
- L = NegativeLogComponent(d_radios, options["take_log"], dataset_infos, logger=logger)
65
- L.execute()
66
-
67
-
68
- # Test
69
- # ~ from spire.utils import ims
70
- # ~ r = d_radios.get()
71
- # ~ ims(r[:, 10, :])
72
-
73
-
74
- # Reconstruction
75
- options["reconstruction"]["use_cuda"] = True
76
-
77
- # Test ...
78
- if 1:
79
- options["reconstruction"]["start_x"] = 100
80
- options["reconstruction"]["end_x"] = -100
81
- options["reconstruction"]["start_y"] = 100
82
- options["reconstruction"]["end_y"] = -100
83
- options["reconstruction"]["start_z"] = 0
84
- options["reconstruction"]["end_z"] = SUB_REGION[-1]-1
85
- d_rec = garray.zeros((50, 1849, 1849), "f") # y
86
- #
87
- else:
88
- d_rec = garray.zeros((SUB_REGION[-1], 2048, 2048), "f")
89
- R = ReconstructorComponent(d_radios.shape, options["reconstruction"], dataset_infos, logger=logger)
90
- R.execute(d_radios, output=d_rec)
91
-
92
-
93
- # Write to file
94
- rec = d_rec.get()
95
- import numpy as np
96
- np.save("/home/pierre/tmp/crayon/recs_nabu_vertical.npy", rec)
97
-
98
- """from nabu.reconstruction.reconstructor_cuda import CudaReconstructor
99
- R = CudaReconstructor(
100
- radios.shape,
101
- [0, 1],
102
- vol_type="projections",
103
- extra_options={"padding_mode": conf.nabu_config["reconstruction"]["padding_type"]}
104
- )
105
- d_recs = garray.zeros((1, 2048, 2048), "f")
106
- R.reconstruct(d_radios, output=d_recs)
107
- recs = d_recs.get()
108
- ims(recs[0], cmap="gray")
109
- # save
110
- import numpy as np
111
- np.save("/tmp/rec0.npy", recs[0])
112
- """
113
-
114
-
115
- """
116
- Notes
117
- - If the cuda backend is used at step N, it should also be used at step N+1,
118
-
119
-
120
- otherwise we have to get() the data
121
-
122
- """
123
-
@@ -1,37 +0,0 @@
1
- %%cython --compile-args=-fopenmp --link-args=-fopenmp -a
2
- #%%cython -a
3
- #cython: embedsignature=True, language_level=3, binding=True
4
- #cython: boundscheck=False, wraparound=False, cdivision=True, initializedcheck=False,
5
- ## This is for developping:
6
- ## cython: profile=True, warn.undeclared=True, warn.unused=True, warn.unused_result=False, warn.unused_arg=True
7
-
8
- import numpy as np
9
- from cython.parallel import prange
10
- """
11
- def bin2_cython(float[:, ::1] img):
12
- cdef:
13
- float[:, ::1] res
14
- int i, j, Ny, Nx
15
-
16
- shp = img.shape
17
- Ny, Nx = (img.shape[0]//2, img.shape[1]//2)
18
- res = np.zeros((Ny, Nx), dtype="f")
19
- for i in prange(Ny, nogil=True):
20
- for j in range(Nx):
21
- res[i, j] = 0.25 * (img[2*i, 2*j] + img[2*i+1, 2*j] + img[2*i, 2*j+1] + img[2*i+1, 2*j+1])
22
- return np.asarray(res)
23
- """
24
-
25
-
26
- def bin2_cython(unsigned short[:, ::1] img):
27
- cdef:
28
- float[:, ::1] res
29
- int i, j, Ny, Nx
30
-
31
- shp = img.shape
32
- Ny, Nx = (img.shape[0]//2, img.shape[1]//2)
33
- res = np.zeros((Ny, Nx), dtype="f")
34
- for i in prange(Ny, nogil=True):
35
- for j in range(Nx):
36
- res[i, j] = 0.25 * (img[2*i, 2*j] + img[2*i+1, 2*j] + img[2*i, 2*j+1] + img[2*i+1, 2*j+1])
37
- return np.asarray(res)