httomo-backends 1.0.1__tar.gz → 1.1.0__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 (165) hide show
  1. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/PKG-INFO +1 -1
  2. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/cufft.py +0 -1
  3. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/methods_database/packages/backends/httomolibgpu/httomolibgpu.yaml +9 -0
  4. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/methods_database/packages/backends/httomolibgpu/supporting_funcs/misc/corr.py +10 -0
  5. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/methods_database/packages/backends/httomolibgpu/supporting_funcs/misc/denoise.py +0 -1
  6. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/methods_database/packages/backends/httomolibgpu/supporting_funcs/misc/morph.py +13 -2
  7. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/methods_database/packages/backends/httomolibgpu/supporting_funcs/misc/rescale.py +6 -0
  8. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/methods_database/packages/backends/httomolibgpu/supporting_funcs/prep/normalize.py +0 -1
  9. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/methods_database/packages/backends/httomolibgpu/supporting_funcs/prep/stripe.py +9 -2
  10. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/methods_database/packages/backends/httomolibgpu/supporting_funcs/recon/algorithm.py +65 -1
  11. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/methods_database/packages/backends/tomopy/supporting_funcs/recon/algorithm.py +0 -1
  12. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/scripts/yaml_templates_generator.py +1 -0
  13. httomo_backends-1.1.0/httomo_backends/yaml_templates/httomolibgpu/httomolibgpu.recon.algorithm/ADMM3d_tomobar.yaml +17 -0
  14. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends.egg-info/PKG-INFO +1 -1
  15. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends.egg-info/SOURCES.txt +1 -0
  16. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/pyproject.toml +1 -1
  17. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/tests/test_httomolibgpu.py +167 -16
  18. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/LICENSE +0 -0
  19. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/README.rst +0 -0
  20. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/__init__.py +0 -0
  21. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/methods_database/__init__.py +0 -0
  22. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/methods_database/packages/__init__.py +0 -0
  23. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/methods_database/packages/backends/httomolib/httomolib.yaml +0 -0
  24. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/methods_database/packages/backends/httomolib/httomolib_modules.yaml +0 -0
  25. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/methods_database/packages/backends/httomolibgpu/__init__.py +0 -0
  26. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/methods_database/packages/backends/httomolibgpu/httomolibgpu_modules.yaml +0 -0
  27. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/methods_database/packages/backends/httomolibgpu/supporting_funcs/__init__.py +0 -0
  28. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/methods_database/packages/backends/httomolibgpu/supporting_funcs/misc/__init__.py +0 -0
  29. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/methods_database/packages/backends/httomolibgpu/supporting_funcs/prep/__init__.py +0 -0
  30. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/methods_database/packages/backends/httomolibgpu/supporting_funcs/prep/phase.py +0 -0
  31. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/methods_database/packages/backends/httomolibgpu/supporting_funcs/recon/__init__.py +0 -0
  32. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/methods_database/packages/backends/httomolibgpu/supporting_funcs/recon/peak_memory_line_profile_hook.py +0 -0
  33. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/methods_database/packages/backends/tomopy/__init__.py +0 -0
  34. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/methods_database/packages/backends/tomopy/supporting_funcs/__init__.py +0 -0
  35. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/methods_database/packages/backends/tomopy/supporting_funcs/misc/__init__.py +0 -0
  36. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/methods_database/packages/backends/tomopy/supporting_funcs/misc/corr.py +0 -0
  37. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/methods_database/packages/backends/tomopy/supporting_funcs/prep/__init__.py +0 -0
  38. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/methods_database/packages/backends/tomopy/supporting_funcs/prep/stripe.py +0 -0
  39. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/methods_database/packages/backends/tomopy/supporting_funcs/recon/__init__.py +0 -0
  40. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/methods_database/packages/backends/tomopy/tomopy.yaml +0 -0
  41. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/methods_database/packages/backends/tomopy/tomopy_modules.yaml +0 -0
  42. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/methods_database/packages/httomo.yaml +0 -0
  43. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/methods_database/query.py +0 -0
  44. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/pipelines_full/FBP2d_astra_directive.yaml +0 -0
  45. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/pipelines_full/FBP3d_tomobar_denoising_directive.yaml +0 -0
  46. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/pipelines_full/FBP3d_tomobar_directive.yaml +0 -0
  47. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/pipelines_full/FBP3d_tomobar_noimagesaving_directive.yaml +0 -0
  48. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/pipelines_full/FISTA3d_tomobar_directive.yaml +0 -0
  49. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/pipelines_full/LPRec3d_tomobar_directive.yaml +0 -0
  50. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/pipelines_full/__init__.py +0 -0
  51. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/pipelines_full/deg360_distortion_FBP3d_tomobar_directive.yaml +0 -0
  52. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/pipelines_full/deg360_paganin_FBP3d_tomobar_directive.yaml +0 -0
  53. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/pipelines_full/sweep_center_FBP3d_tomobar_directive.yaml +0 -0
  54. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/pipelines_full/sweep_paganin_FBP3d_tomobar_directive.yaml +0 -0
  55. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/pipelines_full/titaren_center_pc_FBP3d_resample_directive.yaml +0 -0
  56. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/pipelines_full/tomopy_gridrec_directive.yaml +0 -0
  57. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/scripts/__init__.py +0 -0
  58. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/scripts/json_pipelines_generator.py +0 -0
  59. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/scripts/yaml_pipelines_generator.py +1 -1
  60. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/scripts/yaml_unsupported_tomopy_remove.py +0 -0
  61. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/yaml_templates/httomo/__init__.py +0 -0
  62. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/yaml_templates/httomo/httomo.data.hdf.loaders/standard_tomo.yaml +0 -0
  63. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/yaml_templates/httomo/httomo.methods/calculate_stats.yaml +0 -0
  64. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/yaml_templates/httomo/httomo.methods/save_intermediate_data.yaml +0 -0
  65. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/yaml_templates/httomolib/__init__.py +0 -0
  66. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/yaml_templates/httomolib/httomolib.misc.images/save_to_images.yaml +0 -0
  67. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/yaml_templates/httomolib/httomolib.misc.morph/data_reducer.yaml +0 -0
  68. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/yaml_templates/httomolib/httomolib.misc.rescale/rescale_to_int.yaml +0 -0
  69. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/yaml_templates/httomolib/httomolib.misc.segm/binary_thresholding.yaml +0 -0
  70. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/yaml_templates/httomolib/httomolib.misc.utils/data_checker.yaml +0 -0
  71. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/yaml_templates/httomolib/httomolib.prep.phase/paganin_filter.yaml +0 -0
  72. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/yaml_templates/httomolibgpu/__init__.py +0 -0
  73. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/yaml_templates/httomolibgpu/httomolibgpu.misc.corr/median_filter.yaml +0 -0
  74. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/yaml_templates/httomolibgpu/httomolibgpu.misc.corr/remove_outlier.yaml +0 -0
  75. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/yaml_templates/httomolibgpu/httomolibgpu.misc.denoise/total_variation_PD.yaml +0 -0
  76. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/yaml_templates/httomolibgpu/httomolibgpu.misc.denoise/total_variation_ROF.yaml +0 -0
  77. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/yaml_templates/httomolibgpu/httomolibgpu.misc.morph/data_resampler.yaml +0 -0
  78. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/yaml_templates/httomolibgpu/httomolibgpu.misc.morph/sino_360_to_180.yaml +0 -0
  79. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/yaml_templates/httomolibgpu/httomolibgpu.misc.rescale/rescale_to_int.yaml +0 -0
  80. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/yaml_templates/httomolibgpu/httomolibgpu.misc.utils/data_checker.yaml +0 -0
  81. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/yaml_templates/httomolibgpu/httomolibgpu.prep.alignment/distortion_correction_proj_discorpy.yaml +0 -0
  82. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/yaml_templates/httomolibgpu/httomolibgpu.prep.normalize/dark_flat_field_correction.yaml +0 -0
  83. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/yaml_templates/httomolibgpu/httomolibgpu.prep.normalize/minus_log.yaml +0 -0
  84. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/yaml_templates/httomolibgpu/httomolibgpu.prep.phase/paganin_filter.yaml +0 -0
  85. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/yaml_templates/httomolibgpu/httomolibgpu.prep.phase/paganin_filter_savu_legacy.yaml +0 -0
  86. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/yaml_templates/httomolibgpu/httomolibgpu.prep.stripe/raven_filter.yaml +0 -0
  87. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/yaml_templates/httomolibgpu/httomolibgpu.prep.stripe/remove_all_stripe.yaml +0 -0
  88. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/yaml_templates/httomolibgpu/httomolibgpu.prep.stripe/remove_stripe_based_sorting.yaml +0 -0
  89. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/yaml_templates/httomolibgpu/httomolibgpu.prep.stripe/remove_stripe_fw.yaml +0 -0
  90. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/yaml_templates/httomolibgpu/httomolibgpu.prep.stripe/remove_stripe_ti.yaml +0 -0
  91. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/yaml_templates/httomolibgpu/httomolibgpu.recon.algorithm/CGLS3d_tomobar.yaml +0 -0
  92. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/yaml_templates/httomolibgpu/httomolibgpu.recon.algorithm/FBP2d_astra.yaml +0 -0
  93. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/yaml_templates/httomolibgpu/httomolibgpu.recon.algorithm/FBP3d_tomobar.yaml +0 -0
  94. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/yaml_templates/httomolibgpu/httomolibgpu.recon.algorithm/FISTA3d_tomobar.yaml +0 -0
  95. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/yaml_templates/httomolibgpu/httomolibgpu.recon.algorithm/LPRec3d_tomobar.yaml +0 -0
  96. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/yaml_templates/httomolibgpu/httomolibgpu.recon.algorithm/SIRT3d_tomobar.yaml +0 -0
  97. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/yaml_templates/httomolibgpu/httomolibgpu.recon.rotation/find_center_360.yaml +0 -0
  98. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/yaml_templates/httomolibgpu/httomolibgpu.recon.rotation/find_center_pc.yaml +0 -0
  99. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/yaml_templates/httomolibgpu/httomolibgpu.recon.rotation/find_center_vo.yaml +0 -0
  100. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/yaml_templates/tomopy/__init__.py +0 -0
  101. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/yaml_templates/tomopy/tomopy.misc.corr/adjust_range.yaml +0 -0
  102. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/yaml_templates/tomopy/tomopy.misc.corr/circ_mask.yaml +0 -0
  103. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/yaml_templates/tomopy/tomopy.misc.corr/gaussian_filter.yaml +0 -0
  104. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/yaml_templates/tomopy/tomopy.misc.corr/median_filter.yaml +0 -0
  105. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/yaml_templates/tomopy/tomopy.misc.corr/median_filter3d.yaml +0 -0
  106. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/yaml_templates/tomopy/tomopy.misc.corr/median_filter_nonfinite.yaml +0 -0
  107. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/yaml_templates/tomopy/tomopy.misc.corr/remove_nan.yaml +0 -0
  108. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/yaml_templates/tomopy/tomopy.misc.corr/remove_neg.yaml +0 -0
  109. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/yaml_templates/tomopy/tomopy.misc.corr/remove_outlier.yaml +0 -0
  110. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/yaml_templates/tomopy/tomopy.misc.corr/remove_outlier1d.yaml +0 -0
  111. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/yaml_templates/tomopy/tomopy.misc.corr/remove_outlier3d.yaml +0 -0
  112. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/yaml_templates/tomopy/tomopy.misc.corr/remove_ring.yaml +0 -0
  113. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/yaml_templates/tomopy/tomopy.misc.corr/sobel_filter.yaml +0 -0
  114. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/yaml_templates/tomopy/tomopy.misc.morph/downsample.yaml +0 -0
  115. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/yaml_templates/tomopy/tomopy.misc.morph/pad.yaml +0 -0
  116. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/yaml_templates/tomopy/tomopy.misc.morph/sino_360_to_180.yaml +0 -0
  117. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/yaml_templates/tomopy/tomopy.misc.morph/trim_sinogram.yaml +0 -0
  118. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/yaml_templates/tomopy/tomopy.misc.morph/upsample.yaml +0 -0
  119. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/yaml_templates/tomopy/tomopy.prep.alignment/add_jitter.yaml +0 -0
  120. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/yaml_templates/tomopy/tomopy.prep.alignment/add_noise.yaml +0 -0
  121. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/yaml_templates/tomopy/tomopy.prep.alignment/align_joint.yaml +0 -0
  122. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/yaml_templates/tomopy/tomopy.prep.alignment/align_seq.yaml +0 -0
  123. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/yaml_templates/tomopy/tomopy.prep.alignment/blur_edges.yaml +0 -0
  124. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/yaml_templates/tomopy/tomopy.prep.alignment/distortion_correction_proj.yaml +0 -0
  125. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/yaml_templates/tomopy/tomopy.prep.alignment/distortion_correction_sino.yaml +0 -0
  126. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/yaml_templates/tomopy/tomopy.prep.alignment/scale.yaml +0 -0
  127. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/yaml_templates/tomopy/tomopy.prep.alignment/shift_images.yaml +0 -0
  128. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/yaml_templates/tomopy/tomopy.prep.normalize/minus_log.yaml +0 -0
  129. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/yaml_templates/tomopy/tomopy.prep.normalize/normalize.yaml +0 -0
  130. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/yaml_templates/tomopy/tomopy.prep.normalize/normalize_bg.yaml +0 -0
  131. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/yaml_templates/tomopy/tomopy.prep.normalize/normalize_nf.yaml +0 -0
  132. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/yaml_templates/tomopy/tomopy.prep.normalize/normalize_roi.yaml +0 -0
  133. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/yaml_templates/tomopy/tomopy.prep.phase/retrieve_phase.yaml +0 -0
  134. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/yaml_templates/tomopy/tomopy.prep.stripe/remove_all_stripe.yaml +0 -0
  135. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/yaml_templates/tomopy/tomopy.prep.stripe/remove_dead_stripe.yaml +0 -0
  136. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/yaml_templates/tomopy/tomopy.prep.stripe/remove_large_stripe.yaml +0 -0
  137. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/yaml_templates/tomopy/tomopy.prep.stripe/remove_stripe_based_filtering.yaml +0 -0
  138. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/yaml_templates/tomopy/tomopy.prep.stripe/remove_stripe_based_fitting.yaml +0 -0
  139. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/yaml_templates/tomopy/tomopy.prep.stripe/remove_stripe_based_interpolation.yaml +0 -0
  140. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/yaml_templates/tomopy/tomopy.prep.stripe/remove_stripe_based_sorting.yaml +0 -0
  141. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/yaml_templates/tomopy/tomopy.prep.stripe/remove_stripe_fw.yaml +0 -0
  142. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/yaml_templates/tomopy/tomopy.prep.stripe/remove_stripe_sf.yaml +0 -0
  143. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/yaml_templates/tomopy/tomopy.prep.stripe/remove_stripe_ti.yaml +0 -0
  144. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/yaml_templates/tomopy/tomopy.prep.stripe/stripes_detect3d.yaml +0 -0
  145. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/yaml_templates/tomopy/tomopy.prep.stripe/stripes_mask3d.yaml +0 -0
  146. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/yaml_templates/tomopy/tomopy.recon.algorithm/recon.yaml +0 -0
  147. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/yaml_templates/tomopy/tomopy.recon.rotation/find_center.yaml +0 -0
  148. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/yaml_templates/tomopy/tomopy.recon.rotation/find_center_pc.yaml +0 -0
  149. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/yaml_templates/tomopy/tomopy.recon.rotation/find_center_vo.yaml +0 -0
  150. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/yaml_templates/tomopy/tomopy.sim.project/add_drift.yaml +0 -0
  151. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/yaml_templates/tomopy/tomopy.sim.project/add_focal_spot_blur.yaml +0 -0
  152. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/yaml_templates/tomopy/tomopy.sim.project/add_gaussian.yaml +0 -0
  153. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/yaml_templates/tomopy/tomopy.sim.project/add_poisson.yaml +0 -0
  154. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/yaml_templates/tomopy/tomopy.sim.project/add_rings.yaml +0 -0
  155. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/yaml_templates/tomopy/tomopy.sim.project/add_salt_pepper.yaml +0 -0
  156. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/yaml_templates/tomopy/tomopy.sim.project/add_zingers.yaml +0 -0
  157. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/yaml_templates/tomopy/tomopy.sim.project/project.yaml +0 -0
  158. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/yaml_templates/tomopy/tomopy.sim.project/project2.yaml +0 -0
  159. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends/yaml_templates/tomopy/tomopy.sim.project/project3.yaml +0 -0
  160. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends.egg-info/dependency_links.txt +0 -0
  161. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends.egg-info/requires.txt +0 -0
  162. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/httomo_backends.egg-info/top_level.txt +0 -0
  163. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/setup.cfg +0 -0
  164. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/tests/test_method_query.py +0 -0
  165. {httomo_backends-1.0.1 → httomo_backends-1.1.0}/tests/test_tomopy.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: httomo-backends
3
- Version: 1.0.1
3
+ Version: 1.1.0
4
4
  Summary: Supplementary files for HTTomo backends.
5
5
  Author: Garry ODonnell, Jacob Williamson
6
6
  Author-email: Daniil Kazantsev <daniil.kazantsev@diamond.ac.uk>, Yousef Moazzam <yousef.moazzam@diamond.ac.uk>, Jessica Verschoyle <jessica.verschoyle@diamond.ac.uk>, Naman Gera <naman.gera@diamond.ac.uk>, scientificsoftware@diamond.ac.uk
@@ -2,7 +2,6 @@ import ctypes
2
2
  import sys
3
3
  from enum import Enum
4
4
 
5
-
6
5
  if "linux" not in sys.platform:
7
6
  raise RuntimeError("Linux is currently the only supported platform")
8
7
 
@@ -227,6 +227,15 @@ recon:
227
227
  memory_gpu:
228
228
  multiplier: None
229
229
  method: module
230
+ ADMM3d_tomobar:
231
+ pattern: sinogram
232
+ output_dims_change: True
233
+ implementation: gpu_cupy
234
+ save_result_default: True
235
+ padding: True
236
+ memory_gpu:
237
+ multiplier: None
238
+ method: module
230
239
  rotation:
231
240
  find_center_vo:
232
241
  pattern: projection
@@ -1,5 +1,7 @@
1
+ import inspect
1
2
  from typing import Tuple
2
3
 
4
+ from httomolibgpu.misc.corr import median_filter, remove_outlier
3
5
 
4
6
  __all__ = [
5
7
  "_calc_padding_remove_outlier",
@@ -8,10 +10,18 @@ __all__ = [
8
10
 
9
11
 
10
12
  def _calc_padding_remove_outlier(**kwargs) -> Tuple[int, int]:
13
+ if "kernel_size" not in kwargs:
14
+ params = inspect.signature(remove_outlier).parameters
15
+ kwargs["kernel_size"] = params["kernel_size"].default
16
+
11
17
  kernel_size = kwargs["kernel_size"]
12
18
  return (kernel_size // 2, kernel_size // 2)
13
19
 
14
20
 
15
21
  def _calc_padding_median_filter(**kwargs) -> Tuple[int, int]:
22
+ if "kernel_size" not in kwargs:
23
+ params = inspect.signature(median_filter).parameters
24
+ kwargs["kernel_size"] = params["kernel_size"].default
25
+
16
26
  kernel_size = kwargs["kernel_size"]
17
27
  return (kernel_size // 2, kernel_size // 2)
@@ -1,6 +1,5 @@
1
1
  from typing import Tuple
2
2
 
3
-
4
3
  __all__ = [
5
4
  "_calc_padding_total_variation_ROF",
6
5
  "_calc_padding_total_variation_PD",
@@ -20,10 +20,13 @@
20
20
  # ---------------------------------------------------------------------------
21
21
  """Modules for memory estimation for morph functions"""
22
22
 
23
+ import inspect
23
24
  import math
24
25
  from typing import Tuple
25
26
  import numpy as np
26
27
 
28
+ from httomolibgpu.misc.morph import data_resampler, sino_360_to_180
29
+
27
30
  __all__ = [
28
31
  "_calc_memory_bytes_data_resampler",
29
32
  "_calc_output_dim_data_resampler",
@@ -42,6 +45,10 @@ def _calc_memory_bytes_data_resampler(
42
45
  **kwargs,
43
46
  ) -> Tuple[int, int]:
44
47
  newshape = kwargs["newshape"]
48
+
49
+ if "interpolation" not in kwargs:
50
+ params = inspect.signature(data_resampler).parameters
51
+ kwargs["interpolation"] = params["interpolation"].default
45
52
  interpolation = kwargs["interpolation"]
46
53
 
47
54
  input_size = np.prod(non_slice_dims_shape) * dtype.itemsize
@@ -62,7 +69,9 @@ def _calc_output_dim_sino_360_to_180(
62
69
  non_slice_dims_shape: Tuple[int, int],
63
70
  **kwargs,
64
71
  ) -> Tuple[int, int]:
65
- assert "overlap" in kwargs, "Expected overlap in method parameters"
72
+ if "overlap" not in kwargs:
73
+ params = inspect.signature(sino_360_to_180).parameters
74
+ kwargs["overlap"] = params["overlap"].default
66
75
  overlap: float = kwargs["overlap"]
67
76
 
68
77
  original_sino_width = non_slice_dims_shape[1]
@@ -75,7 +84,9 @@ def _calc_memory_bytes_sino_360_to_180(
75
84
  dtype: np.dtype,
76
85
  **kwargs,
77
86
  ) -> Tuple[int, int]:
78
- assert "overlap" in kwargs, "Expected overlap in method parameters"
87
+ if "overlap" not in kwargs:
88
+ params = inspect.signature(sino_360_to_180).parameters
89
+ kwargs["overlap"] = params["overlap"].default
79
90
  overlap: float = kwargs["overlap"]
80
91
 
81
92
  original_sino_width = non_slice_dims_shape[1]
@@ -1,6 +1,9 @@
1
+ import inspect
1
2
  from typing import Tuple
2
3
  import numpy as np
3
4
 
5
+ from httomolibgpu.misc.rescale import rescale_to_int
6
+
4
7
  __all__ = [
5
8
  "_calc_memory_bytes_rescale_to_int",
6
9
  ]
@@ -11,6 +14,9 @@ def _calc_memory_bytes_rescale_to_int(
11
14
  dtype: np.dtype,
12
15
  **kwargs,
13
16
  ) -> Tuple[int, int]:
17
+ if "bits" not in kwargs:
18
+ params = inspect.signature(rescale_to_int).parameters
19
+ kwargs["bits"] = params["bits"].default
14
20
  bits: int = kwargs["bits"]
15
21
  if bits == 8:
16
22
  itemsize = 1
@@ -1,7 +1,6 @@
1
1
  from typing import Tuple
2
2
  import numpy as np
3
3
 
4
-
5
4
  __all__ = [
6
5
  "_calc_memory_bytes_dark_flat_field_correction",
7
6
  ]
@@ -20,13 +20,13 @@
20
20
  # ---------------------------------------------------------------------------
21
21
  """Modules for memory estimation for stripe removal methods"""
22
22
 
23
+ import inspect
23
24
  import math
24
25
  from typing import Tuple
25
26
  import numpy as np
26
27
 
27
28
  from httomo_backends.cufft import CufftType, cufft_estimate_1d
28
- from httomolibgpu.prep.stripe import remove_stripe_fw
29
-
29
+ from httomolibgpu.prep.stripe import raven_filter, remove_stripe_fw
30
30
 
31
31
  __all__ = [
32
32
  "_calc_memory_bytes_for_slices_remove_stripe_fw",
@@ -87,7 +87,14 @@ def _calc_memory_bytes_raven_filter(
87
87
  **kwargs,
88
88
  ) -> Tuple[int, int]:
89
89
 
90
+ if "pad_x" not in kwargs:
91
+ params = inspect.signature(raven_filter).parameters
92
+ kwargs["pad_x"] = params["pad_x"].default
90
93
  pad_x = kwargs["pad_x"]
94
+
95
+ if "pad_y" not in kwargs:
96
+ params = inspect.signature(raven_filter).parameters
97
+ kwargs["pad_y"] = params["pad_y"].default
91
98
  pad_y = kwargs["pad_y"]
92
99
 
93
100
  # Unpadded input
@@ -24,6 +24,7 @@ import math
24
24
  from typing import Tuple
25
25
  import numpy as np
26
26
  from httomo_backends.cufft import CufftType, cufft_estimate_1d, cufft_estimate_2d
27
+ from httomolibgpu.recon.algorithm import ADMM3d_tomobar
27
28
 
28
29
  __all__ = [
29
30
  "_calc_memory_bytes_FBP3d_tomobar",
@@ -31,13 +32,16 @@ __all__ = [
31
32
  "_calc_memory_bytes_SIRT3d_tomobar",
32
33
  "_calc_memory_bytes_CGLS3d_tomobar",
33
34
  "_calc_memory_bytes_FISTA3d_tomobar",
35
+ "_calc_memory_bytes_ADMM3d_tomobar",
34
36
  "_calc_output_dim_FBP2d_astra",
35
37
  "_calc_output_dim_FBP3d_tomobar",
36
38
  "_calc_output_dim_LPRec3d_tomobar",
37
39
  "_calc_output_dim_SIRT3d_tomobar",
38
40
  "_calc_output_dim_CGLS3d_tomobar",
39
41
  "_calc_output_dim_FISTA3d_tomobar",
42
+ "_calc_output_dim_ADMM3d_tomobar",
40
43
  "_calc_padding_FISTA3d_tomobar",
44
+ "_calc_padding_ADMM3d_tomobar",
41
45
  ]
42
46
 
43
47
 
@@ -45,6 +49,10 @@ def _calc_padding_FISTA3d_tomobar(**kwargs) -> Tuple[int, int]:
45
49
  return (5, 5)
46
50
 
47
51
 
52
+ def _calc_padding_ADMM3d_tomobar(**kwargs) -> Tuple[int, int]:
53
+ return (5, 5)
54
+
55
+
48
56
  def __calc_output_dim_recon(non_slice_dims_shape, **kwargs):
49
57
  """Function to calculate output dimensions for all reconstructors.
50
58
  The change of the dimension depends either on the user-provided "recon_size"
@@ -52,7 +60,7 @@ def __calc_output_dim_recon(non_slice_dims_shape, **kwargs):
52
60
 
53
61
  """
54
62
  DetectorsLengthH = non_slice_dims_shape[1]
55
- recon_size = kwargs["recon_size"]
63
+ recon_size = kwargs.get("recon_size", None)
56
64
  if recon_size is None:
57
65
  recon_size = DetectorsLengthH
58
66
  output_dims = (recon_size, recon_size)
@@ -83,6 +91,10 @@ def _calc_output_dim_FISTA3d_tomobar(non_slice_dims_shape, **kwargs):
83
91
  return __calc_output_dim_recon(non_slice_dims_shape, **kwargs)
84
92
 
85
93
 
94
+ def _calc_output_dim_ADMM3d_tomobar(non_slice_dims_shape, **kwargs):
95
+ return __calc_output_dim_recon(non_slice_dims_shape, **kwargs)
96
+
97
+
86
98
  def _calc_memory_bytes_FBP3d_tomobar(
87
99
  non_slice_dims_shape: Tuple[int, int],
88
100
  dtype: np.dtype,
@@ -604,6 +616,58 @@ def _calc_memory_bytes_FISTA3d_tomobar(
604
616
  return (tot_memory_bytes, 0)
605
617
 
606
618
 
619
+ def _calc_memory_bytes_ADMM3d_tomobar(
620
+ non_slice_dims_shape: Tuple[int, int],
621
+ dtype: np.dtype,
622
+ **kwargs,
623
+ ) -> Tuple[int, int]:
624
+ detector_pad = 0
625
+ if "detector_pad" in kwargs:
626
+ detector_pad = kwargs["detector_pad"]
627
+ if detector_pad is True:
628
+ detector_pad = __estimate_detectorHoriz_padding(non_slice_dims_shape[1])
629
+ elif detector_pad is False:
630
+ detector_pad = 0
631
+
632
+ anglesnum = non_slice_dims_shape[0]
633
+ DetectorsLengthH_padded = non_slice_dims_shape[1] + 2 * detector_pad
634
+
635
+ # calculate the output shape
636
+ output_dims = _calc_output_dim_FISTA3d_tomobar(non_slice_dims_shape, **kwargs)
637
+ recon_data_size_original = (
638
+ np.prod(output_dims) * dtype.itemsize
639
+ ) # recon user-defined size
640
+
641
+ in_data_siz_pad = (anglesnum * DetectorsLengthH_padded) * dtype.itemsize
642
+ output_dims_larger_grid = (DetectorsLengthH_padded, DetectorsLengthH_padded)
643
+
644
+ out_data_size = np.prod(output_dims_larger_grid) * dtype.itemsize
645
+ x0 = out_data_size
646
+ x = out_data_size
647
+ z = out_data_size
648
+ u = out_data_size
649
+ grad_data = out_data_size
650
+ grad_admm = out_data_size
651
+ arithmetic = 3 * out_data_size
652
+
653
+ admm_part = (
654
+ recon_data_size_original
655
+ + in_data_siz_pad
656
+ + x0
657
+ + x
658
+ + z
659
+ + u
660
+ + grad_data
661
+ + grad_admm
662
+ + out_data_size
663
+ + arithmetic
664
+ )
665
+ regul_part = 8 * np.prod(output_dims_larger_grid) * dtype.itemsize
666
+
667
+ tot_memory_bytes = int(admm_part + regul_part)
668
+ return (tot_memory_bytes, 0)
669
+
670
+
607
671
  def __estimate_detectorHoriz_padding(detX_size) -> int:
608
672
  det_half = detX_size // 2
609
673
  padded_value_exact = int(np.sqrt(2 * (det_half**2))) - det_half
@@ -23,7 +23,6 @@
23
23
  from typing import Tuple
24
24
  import numpy as np
25
25
 
26
-
27
26
  __all__ = [
28
27
  "_calc_output_dim_recon",
29
28
  ]
@@ -24,6 +24,7 @@
24
24
  Please run the generator as:
25
25
  python -m yaml_templates_generator -i /path/to/modules.yml -o /path/to/output/
26
26
  """
27
+
27
28
  import argparse
28
29
  import importlib
29
30
  import inspect
@@ -0,0 +1,17 @@
1
+ - method: ADMM3d_tomobar
2
+ module_path: httomolibgpu.recon.algorithm
3
+ parameters:
4
+ center: ${{centering.side_outputs.centre_of_rotation}}
5
+ detector_pad: false
6
+ recon_size: null
7
+ recon_mask_radius: 0.95
8
+ iterations: 3
9
+ subsets_number: 24
10
+ initialisation: FBP
11
+ ADMM_rho_const: 1.0
12
+ ADMM_relax_par: 1.7
13
+ regularisation_type: PD_TV
14
+ regularisation_parameter: 0.0025
15
+ regularisation_iterations: 40
16
+ regularisation_half_precision: true
17
+ nonnegativity: false
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: httomo-backends
3
- Version: 1.0.1
3
+ Version: 1.1.0
4
4
  Summary: Supplementary files for HTTomo backends.
5
5
  Author: Garry ODonnell, Jacob Williamson
6
6
  Author-email: Daniil Kazantsev <daniil.kazantsev@diamond.ac.uk>, Yousef Moazzam <yousef.moazzam@diamond.ac.uk>, Jessica Verschoyle <jessica.verschoyle@diamond.ac.uk>, Naman Gera <naman.gera@diamond.ac.uk>, scientificsoftware@diamond.ac.uk
@@ -88,6 +88,7 @@ httomo_backends/yaml_templates/httomolibgpu/httomolibgpu.prep.stripe/remove_all_
88
88
  httomo_backends/yaml_templates/httomolibgpu/httomolibgpu.prep.stripe/remove_stripe_based_sorting.yaml
89
89
  httomo_backends/yaml_templates/httomolibgpu/httomolibgpu.prep.stripe/remove_stripe_fw.yaml
90
90
  httomo_backends/yaml_templates/httomolibgpu/httomolibgpu.prep.stripe/remove_stripe_ti.yaml
91
+ httomo_backends/yaml_templates/httomolibgpu/httomolibgpu.recon.algorithm/ADMM3d_tomobar.yaml
91
92
  httomo_backends/yaml_templates/httomolibgpu/httomolibgpu.recon.algorithm/CGLS3d_tomobar.yaml
92
93
  httomo_backends/yaml_templates/httomolibgpu/httomolibgpu.recon.algorithm/FBP2d_astra.yaml
93
94
  httomo_backends/yaml_templates/httomolibgpu/httomolibgpu.recon.algorithm/FBP3d_tomobar.yaml
@@ -24,7 +24,7 @@ dev_template = "{tag}"
24
24
 
25
25
  [project]
26
26
  name = "httomo-backends"
27
- version = "1.0.1"
27
+ version = "1.1.0"
28
28
  description = "Supplementary files for HTTomo backends."
29
29
  readme = "README.rst"
30
30
  license = {text = "BSD-3-Clause"}
@@ -32,9 +32,11 @@ from httomolibgpu.recon.algorithm import (
32
32
  LPRec3d_tomobar,
33
33
  CGLS3d_tomobar,
34
34
  FISTA3d_tomobar,
35
+ ADMM3d_tomobar,
35
36
  )
36
37
  from httomolibgpu.misc.rescale import rescale_to_int
37
38
 
39
+ from httomo_backends.methods_database.packages.backends.httomolibgpu.supporting_funcs.misc.corr import *
38
40
  from httomo_backends.methods_database.packages.backends.httomolibgpu.supporting_funcs.misc.morph import *
39
41
  from httomo_backends.methods_database.packages.backends.httomolibgpu.supporting_funcs.prep.phase import *
40
42
  from httomo_backends.methods_database.packages.backends.httomolibgpu.supporting_funcs.prep.stripe import *
@@ -43,7 +45,6 @@ from httomo_backends.methods_database.packages.backends.httomolibgpu.supporting_
43
45
  from httomo_backends.methods_database.packages.backends.httomolibgpu.supporting_funcs.misc.rescale import *
44
46
  from httomo_backends.methods_database.packages.backends.httomolibgpu.supporting_funcs.prep.normalize import *
45
47
 
46
-
47
48
  module_mem_path = "httomo.methods_database.packages.external."
48
49
 
49
50
 
@@ -99,7 +100,7 @@ def test_dark_flat_field_correction_memoryhook(
99
100
  ) # the amount of memory in bytes needed for the method according to memoryhook
100
101
 
101
102
  # now we estimate how much of the total memory required for this data
102
- (estimated_memory_bytes, subtract_bytes) = (
103
+ estimated_memory_bytes, subtract_bytes = (
103
104
  _calc_memory_bytes_dark_flat_field_correction(data.shape[1:], dtype=data.dtype)
104
105
  )
105
106
 
@@ -430,7 +431,7 @@ def test_remove_stripe_ti_memoryhook(slices, ensure_clean_memory):
430
431
  ) # the amount of memory in bytes needed for the method according to memoryhook
431
432
 
432
433
  # now we estimate how much of the total memory required for this data
433
- (estimated_memory_bytes, subtract_bytes) = _calc_memory_bytes_remove_stripe_ti(
434
+ estimated_memory_bytes, subtract_bytes = _calc_memory_bytes_remove_stripe_ti(
434
435
  (dim_x, dim_y), dtype=np.float32()
435
436
  )
436
437
  estimated_memory_mb = round(slices * estimated_memory_bytes / (1024**2), 2)
@@ -494,7 +495,7 @@ def test_raven_filter_memoryhook(projections, ensure_clean_memory):
494
495
  ) # the amount of memory in bytes needed for the method according to memoryhook
495
496
 
496
497
  # now we estimate how much of the total memory required for this data
497
- (estimated_memory_bytes, subtract_bytes) = _calc_memory_bytes_raven_filter(
498
+ estimated_memory_bytes, subtract_bytes = _calc_memory_bytes_raven_filter(
498
499
  (projections, horiz_det), dtype=np.float32(), **kwargs
499
500
  )
500
501
  estimated_memory_mb = round(vert_det * estimated_memory_bytes / (1024**2), 2)
@@ -527,7 +528,7 @@ def test_remove_all_stripe_memoryhook(angles, dim_x_slices, dim_y, ensure_clean_
527
528
  max_mem_mb = round(max_mem / (1024**2), 2) # now in mbs
528
529
 
529
530
  # now we estimate how much of the total memory required for this data
530
- (estimated_memory_bytes, subtract_bytes) = _calc_memory_bytes_remove_all_stripe(
531
+ estimated_memory_bytes, subtract_bytes = _calc_memory_bytes_remove_all_stripe(
531
532
  (angles, dim_y), dtype=np.float32()
532
533
  )
533
534
  estimated_memory_mb = round(dim_x_slices * estimated_memory_bytes / (1024**2), 2)
@@ -565,7 +566,7 @@ def test_data_sampler_memoryhook(slices, newshape, interpolation, ensure_clean_m
565
566
  ) # the amount of memory in bytes needed for the method according to memoryhook
566
567
 
567
568
  # now we estimate how much of the total memory required for this data
568
- (estimated_memory_bytes, subtract_bytes) = _calc_memory_bytes_data_resampler(
569
+ estimated_memory_bytes, subtract_bytes = _calc_memory_bytes_data_resampler(
569
570
  (recon_size, recon_size), dtype=np.float32(), **kwargs
570
571
  )
571
572
  # as this is slice-by-slice implementation we should be adding slices number
@@ -623,7 +624,7 @@ def test_recon_FBP3d_tomobar_memoryhook(
623
624
  ) # the amount of memory in bytes needed for the method according to memoryhook
624
625
 
625
626
  # now we estimate how much of the total memory required for this data
626
- (estimated_memory_bytes, subtract_bytes) = _calc_memory_bytes_FBP3d_tomobar(
627
+ estimated_memory_bytes, subtract_bytes = _calc_memory_bytes_FBP3d_tomobar(
627
628
  (projections, detectorX), dtype=np.float32(), **kwargs
628
629
  )
629
630
  estimated_memory_mb = round(slices * estimated_memory_bytes / (1024**2), 2)
@@ -779,7 +780,7 @@ def __test_recon_LPRec3d_tomobar_memoryhook_common(
779
780
  input_data_type = np.float32()
780
781
 
781
782
  # now we estimate how much of the total memory required for this data
782
- (estimated_memory_bytes, subtract_bytes) = _calc_memory_bytes_LPRec3d_tomobar(
783
+ estimated_memory_bytes, subtract_bytes = _calc_memory_bytes_LPRec3d_tomobar(
783
784
  non_slice_dims_shape, dtype=input_data_type, **kwargs
784
785
  )
785
786
 
@@ -830,7 +831,7 @@ def test_recon_SIRT3d_tomobar_memoryhook(slices, recon_size_it, ensure_clean_mem
830
831
  ) # the amount of memory in bytes needed for the method according to memoryhook
831
832
 
832
833
  # now we estimate how much of the total memory required for this data
833
- (estimated_memory_bytes, subtract_bytes) = _calc_memory_bytes_SIRT3d_tomobar(
834
+ estimated_memory_bytes, subtract_bytes = _calc_memory_bytes_SIRT3d_tomobar(
834
835
  (1801, 2560), dtype=np.float32(), **kwargs
835
836
  )
836
837
  estimated_memory_mb = round(slices * estimated_memory_bytes / (1024**2), 2)
@@ -877,7 +878,7 @@ def test_recon_SIRT3d_tomobar_autopad_memoryhook(
877
878
  ) # the amount of memory in bytes needed for the method according to memoryhook
878
879
 
879
880
  # now we estimate how much of the total memory required for this data
880
- (estimated_memory_bytes, subtract_bytes) = _calc_memory_bytes_SIRT3d_tomobar(
881
+ estimated_memory_bytes, subtract_bytes = _calc_memory_bytes_SIRT3d_tomobar(
881
882
  (angles_tot, det_size), dtype=np.float32(), **kwargs
882
883
  )
883
884
  estimated_memory_mb = round(slices * estimated_memory_bytes / (1024**2), 2)
@@ -922,7 +923,7 @@ def test_recon_CGLS3d_tomobar_memoryhook(slices, recon_size_it, ensure_clean_mem
922
923
  ) # the amount of memory in bytes needed for the method according to memoryhook
923
924
 
924
925
  # now we estimate how much of the total memory required for this data
925
- (estimated_memory_bytes, subtract_bytes) = _calc_memory_bytes_CGLS3d_tomobar(
926
+ estimated_memory_bytes, subtract_bytes = _calc_memory_bytes_CGLS3d_tomobar(
926
927
  (angles_tot, det_size), dtype=np.float32(), **kwargs
927
928
  )
928
929
  estimated_memory_mb = round(slices * estimated_memory_bytes / (1024**2), 2)
@@ -969,7 +970,7 @@ def test_recon_CGLS3d_tomobar_autopad_memoryhook(
969
970
  ) # the amount of memory in bytes needed for the method according to memoryhook
970
971
 
971
972
  # now we estimate how much of the total memory required for this data
972
- (estimated_memory_bytes, subtract_bytes) = _calc_memory_bytes_CGLS3d_tomobar(
973
+ estimated_memory_bytes, subtract_bytes = _calc_memory_bytes_CGLS3d_tomobar(
973
974
  (angles_tot, det_size), dtype=np.float32(), **kwargs
974
975
  )
975
976
  estimated_memory_mb = round(slices * estimated_memory_bytes / (1024**2), 2)
@@ -1018,7 +1019,7 @@ def test_recon_FISTA3d_tomobar_nonOS_memoryhook(
1018
1019
  ) # the amount of memory in bytes needed for the method according to memoryhook
1019
1020
 
1020
1021
  # now we estimate how much of the total memory required for this data
1021
- (estimated_memory_bytes, subtract_bytes) = _calc_memory_bytes_FISTA3d_tomobar(
1022
+ estimated_memory_bytes, subtract_bytes = _calc_memory_bytes_FISTA3d_tomobar(
1022
1023
  (angles_total, detX_size), dtype=np.float32(), **kwargs
1023
1024
  )
1024
1025
  estimated_memory_mb = round(slices * estimated_memory_bytes / (1024**2), 2)
@@ -1034,6 +1035,65 @@ def test_recon_FISTA3d_tomobar_nonOS_memoryhook(
1034
1035
  assert percents_relative_maxmem <= 100
1035
1036
 
1036
1037
 
1038
+ @pytest.mark.cupy
1039
+ @pytest.mark.parametrize("slices", [3, 5])
1040
+ @pytest.mark.parametrize("recon_size_it", [2560])
1041
+ @pytest.mark.parametrize("padding", [0, 100, 200, True])
1042
+ @pytest.mark.parametrize("subsets", [1, 6])
1043
+ @pytest.mark.parametrize("initialisation", ["FBP", None])
1044
+ def test_recon_ADMM3d_tomobar_memoryhook(
1045
+ slices, recon_size_it, padding, subsets, initialisation, ensure_clean_memory
1046
+ ):
1047
+ angles_total = 901
1048
+ detX_size = 2560
1049
+ data = cp.random.random_sample((angles_total, slices, detX_size), dtype=np.float32)
1050
+
1051
+ hook = MaxMemoryHook()
1052
+ with hook:
1053
+ recon_data = ADMM3d_tomobar(
1054
+ cp.copy(data),
1055
+ np.linspace(0.0 * np.pi / 180.0, 180.0 * np.pi / 180.0, data.shape[0]),
1056
+ center=1200,
1057
+ recon_size=recon_size_it,
1058
+ iterations=1,
1059
+ subsets_number=subsets,
1060
+ regularisation_iterations=2,
1061
+ nonnegativity=True,
1062
+ detector_pad=padding,
1063
+ initialisation=initialisation,
1064
+ )
1065
+
1066
+ # make sure estimator function is within range (80% min, 100% max)
1067
+ max_mem = (
1068
+ hook.max_mem
1069
+ ) # the amount of memory in bytes needed for the method according to memoryhook
1070
+
1071
+ # now we estimate how much of the total memory required for this data
1072
+ estimated_memory_bytes, subtract_bytes = _calc_memory_bytes_ADMM3d_tomobar(
1073
+ (angles_total, detX_size),
1074
+ dtype=np.float32(),
1075
+ center=1200,
1076
+ recon_size=recon_size_it,
1077
+ iterations=1,
1078
+ subsets_number=subsets,
1079
+ regularisation_iterations=2,
1080
+ nonnegativity=True,
1081
+ detector_pad=padding,
1082
+ initialisation=initialisation,
1083
+ )
1084
+ estimated_memory_mb = round(slices * estimated_memory_bytes / (1024**2), 2)
1085
+ max_mem -= subtract_bytes
1086
+ max_mem_mb = round(max_mem / (1024**2), 2)
1087
+
1088
+ # now we compare both memory estimations
1089
+ difference_mb = abs(estimated_memory_mb - max_mem_mb)
1090
+ percents_relative_maxmem = round((difference_mb / max_mem_mb) * 100)
1091
+ # the estimated_memory_mb should be LARGER or EQUAL to max_mem_mb
1092
+ # the resulting percent value should not deviate from max_mem on more than 20%
1093
+ assert estimated_memory_mb >= max_mem_mb
1094
+ assert percents_relative_maxmem <= 50
1095
+
1096
+
1037
1097
  @pytest.mark.cupy
1038
1098
  @pytest.mark.parametrize("slices", [3, 5])
1039
1099
  @pytest.mark.parametrize("recon_size_it", [2560])
@@ -1066,7 +1126,7 @@ def test_recon_FISTA3d_tomobar_OS_memoryhook(
1066
1126
  ) # the amount of memory in bytes needed for the method according to memoryhook
1067
1127
 
1068
1128
  # now we estimate how much of the total memory required for this data
1069
- (estimated_memory_bytes, subtract_bytes) = _calc_memory_bytes_FISTA3d_tomobar(
1129
+ estimated_memory_bytes, subtract_bytes = _calc_memory_bytes_FISTA3d_tomobar(
1070
1130
  (angles_total, detX_size), dtype=np.float32(), **kwargs
1071
1131
  )
1072
1132
  estimated_memory_mb = round(slices * estimated_memory_bytes / (1024**2), 2)
@@ -1105,7 +1165,7 @@ def test_rescale_to_int_memoryhook(
1105
1165
  max_mem_mb = round(max_mem / (1024**2), 2)
1106
1166
 
1107
1167
  # now we estimate how much of the total memory required for this data
1108
- (estimated_memory_bytes, subtract_bytes) = _calc_memory_bytes_rescale_to_int(
1168
+ estimated_memory_bytes, subtract_bytes = _calc_memory_bytes_rescale_to_int(
1109
1169
  (data.shape[0], data.shape[2]), dtype=np.float32(), **kwargs
1110
1170
  )
1111
1171
  estimated_memory_mb = round(slices * estimated_memory_bytes / (1024**2), 2)
@@ -1140,7 +1200,7 @@ def test_sino_360_to_180_memoryhook(
1140
1200
  sino_360_to_180(cp.copy(data), overlap)
1141
1201
 
1142
1202
  # Call memory estimator to estimate memory usage
1143
- (estimated_bytes, subtract_bytes) = _calc_memory_bytes_sino_360_to_180(
1203
+ estimated_bytes, subtract_bytes = _calc_memory_bytes_sino_360_to_180(
1144
1204
  non_slice_dims_shape=(shape[0], shape[2]),
1145
1205
  dtype=np.float32(),
1146
1206
  overlap=overlap,
@@ -1166,3 +1226,94 @@ def test_FBP2d_astra_output_dim():
1166
1226
  recon_size=recon_size,
1167
1227
  )
1168
1228
  assert output_dims == (recon_size, recon_size)
1229
+
1230
+
1231
+ def test_remove_outlier_padding_calculator_fetches_default_param_value():
1232
+ try:
1233
+ _calc_padding_remove_outlier(**{})
1234
+ except KeyError as e:
1235
+ pytest.fail(f"Failed to get default value for {e} parameter")
1236
+
1237
+
1238
+ def test_median_filter_padding_calculator_fetches_default_param_value():
1239
+ try:
1240
+ _calc_padding_median_filter(**{})
1241
+ except KeyError as e:
1242
+ pytest.fail(f"Failed to get default value for {e} parameter")
1243
+
1244
+
1245
+ def test_data_resampler_memory_estimator_fetches_default_param_value():
1246
+ try:
1247
+ _calc_memory_bytes_data_resampler((2, 2), np.float32(), **{"newshape": (1, 1)})
1248
+ except KeyError as e:
1249
+ pytest.fail(f"Failed to get default value for {e} parameter")
1250
+
1251
+
1252
+ def test_sino_360_to_180_output_dims_calculator_fetches_default_param_value():
1253
+ try:
1254
+ _calc_output_dim_sino_360_to_180((1, 1), **{})
1255
+ except KeyError as e:
1256
+ pytest.fail(f"Failed to get default value for {e} parameter")
1257
+
1258
+
1259
+ def test_sino_360_to_180_memory_estimator_fetches_default_param_value():
1260
+ try:
1261
+ _calc_memory_bytes_sino_360_to_180((1, 1), np.float32(), **{})
1262
+ except KeyError as e:
1263
+ pytest.fail(f"Failed to get default value for {e} parameter")
1264
+
1265
+
1266
+ def test_rescale_to_int_memory_estimator_fetches_default_param_value():
1267
+ try:
1268
+ _calc_memory_bytes_rescale_to_int((1, 1), np.float32(), **{})
1269
+ except KeyError as e:
1270
+ pytest.fail(f"Failed to get default value for {e} parameter")
1271
+
1272
+
1273
+ def test_raven_filter_memory_estimator_fetches_default_param_value():
1274
+ try:
1275
+ _calc_memory_bytes_raven_filter((1, 1), np.float32(), **{})
1276
+ except KeyError as e:
1277
+ pytest.fail(f"Failed to get default value for {e} parameter")
1278
+
1279
+
1280
+ def test_FBP2d_astra_output_dims_calculator_fetches_default_param_value():
1281
+ try:
1282
+ _calc_output_dim_FBP2d_astra((1, 1), **{})
1283
+ except KeyError as e:
1284
+ pytest.fail(f"Failed to get default value for {e} parameter")
1285
+
1286
+
1287
+ def test_FBP3d_tomobar_output_dims_calculator_fetches_default_param_value():
1288
+ try:
1289
+ _calc_output_dim_FBP3d_tomobar((1, 1), **{})
1290
+ except KeyError as e:
1291
+ pytest.fail(f"Failed to get default value for {e} parameter")
1292
+
1293
+
1294
+ def test_LPRec3d_tomobar_output_dims_calculator_fetches_default_param_value():
1295
+ try:
1296
+ _calc_output_dim_LPRec3d_tomobar((1, 1), **{})
1297
+ except KeyError as e:
1298
+ pytest.fail(f"Failed to get default value for {e} parameter")
1299
+
1300
+
1301
+ def test_SIRT3d_tomobar_output_dims_calculator_fetches_default_param_value():
1302
+ try:
1303
+ _calc_output_dim_SIRT3d_tomobar((1, 1), **{})
1304
+ except KeyError as e:
1305
+ pytest.fail(f"Failed to get default value for {e} parameter")
1306
+
1307
+
1308
+ def test_CGLS3d_tomobar_output_dims_calculator_fetches_default_param_value():
1309
+ try:
1310
+ _calc_output_dim_CGLS3d_tomobar((1, 1), **{})
1311
+ except KeyError as e:
1312
+ pytest.fail(f"Failed to get default value for {e} parameter")
1313
+
1314
+
1315
+ def test_FISTA3d_tomobar_output_dims_calculator_fetches_default_param_value():
1316
+ try:
1317
+ _calc_output_dim_FISTA3d_tomobar((1, 1), **{})
1318
+ except KeyError as e:
1319
+ pytest.fail(f"Failed to get default value for {e} parameter")
File without changes