pytomography 3.1.4__tar.gz → 3.2.2__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 (250) hide show
  1. {pytomography-3.1.4 → pytomography-3.2.2}/PKG-INFO +2 -1
  2. {pytomography-3.1.4 → pytomography-3.2.2}/docs/source/autoapi/index.rst +1 -0
  3. {pytomography-3.1.4 → pytomography-3.2.2}/docs/source/autoapi/pytomography/io/SPECT/dicom/index.rst +12 -6
  4. {pytomography-3.1.4 → pytomography-3.2.2}/docs/source/autoapi/pytomography/io/SPECT/index.rst +11 -5
  5. {pytomography-3.1.4 → pytomography-3.2.2}/docs/source/autoapi/pytomography/io/SPECT/simind/index.rst +1 -1
  6. {pytomography-3.1.4 → pytomography-3.2.2}/docs/source/autoapi/pytomography/likelihoods/index.rst +4 -4
  7. {pytomography-3.1.4 → pytomography-3.2.2}/docs/source/autoapi/pytomography/likelihoods/likelihood/index.rst +2 -2
  8. {pytomography-3.1.4 → pytomography-3.2.2}/docs/source/autoapi/pytomography/likelihoods/mse_objective/index.rst +2 -2
  9. {pytomography-3.1.4 → pytomography-3.2.2}/docs/source/autoapi/pytomography/projectors/PET/index.rst +1 -1
  10. {pytomography-3.1.4 → pytomography-3.2.2}/docs/source/autoapi/pytomography/projectors/PET/petlm_system_matrix/index.rst +1 -1
  11. {pytomography-3.1.4 → pytomography-3.2.2}/docs/source/autoapi/pytomography/transforms/SPECT/index.rst +5 -11
  12. {pytomography-3.1.4 → pytomography-3.2.2}/docs/source/autoapi/pytomography/transforms/SPECT/psf/index.rst +8 -35
  13. {pytomography-3.1.4 → pytomography-3.2.2}/docs/source/autoapi/pytomography/utils/index.rst +1 -1
  14. {pytomography-3.1.4 → pytomography-3.2.2}/docs/source/autoapi/pytomography/utils/scatter/index.rst +23 -1
  15. pytomography-3.2.2/docs/source/autoapi/test_multi_bed_recon/index.rst +44 -0
  16. {pytomography-3.1.4 → pytomography-3.2.2}/docs/source/conf.py +13 -1
  17. pytomography-3.2.2/docs/source/notebooks/CT_slice.png +0 -0
  18. pytomography-3.2.2/docs/source/notebooks/run_all_notebooks.py +29 -0
  19. pytomography-3.2.2/docs/source/notebooks/t_CT_GEN3.ipynb +478 -0
  20. pytomography-3.2.2/docs/source/notebooks/t_GE_HDF5.ipynb +572 -0
  21. pytomography-3.2.2/docs/source/notebooks/t_PETGATE_DIP.ipynb +1133 -0
  22. {pytomography-3.1.4 → pytomography-3.2.2}/docs/source/notebooks/t_PETGATE_scat_lm.ipynb +181 -181
  23. pytomography-3.2.2/docs/source/notebooks/t_PETGATE_scat_lmTOF.ipynb +1056 -0
  24. pytomography-3.2.2/docs/source/notebooks/t_PETGATE_scat_sino.ipynb +1547 -0
  25. pytomography-3.2.2/docs/source/notebooks/t_PETGATE_scat_sinoTOF.ipynb +1201 -0
  26. pytomography-3.2.2/docs/source/notebooks/t_ac225_dicom_recon.ipynb +614 -0
  27. pytomography-3.2.2/docs/source/notebooks/t_ac225_simind_recon.ipynb +526 -0
  28. pytomography-3.2.2/docs/source/notebooks/t_dicomdata.ipynb +1344 -0
  29. pytomography-3.2.2/docs/source/notebooks/t_dicommultibed.ipynb +945 -0
  30. pytomography-3.2.2/docs/source/notebooks/t_examplesystemmatrix.ipynb +2650 -0
  31. pytomography-3.2.2/docs/source/notebooks/t_siminddata.ipynb +1957 -0
  32. pytomography-3.2.2/docs/source/notebooks/t_uncertainty_spect.ipynb +955 -0
  33. {pytomography-3.1.4 → pytomography-3.2.2}/docs/source/usage.md +9 -0
  34. {pytomography-3.1.4 → pytomography-3.2.2}/pyproject.toml +3 -2
  35. {pytomography-3.1.4 → pytomography-3.2.2}/src/pytomography/algorithms/preconditioned_gradient_ascent.py +3 -6
  36. {pytomography-3.1.4 → pytomography-3.2.2}/src/pytomography/io/SPECT/dicom.py +7 -3
  37. {pytomography-3.1.4 → pytomography-3.2.2}/src/pytomography/io/SPECT/shared.py +1 -0
  38. {pytomography-3.1.4 → pytomography-3.2.2}/src/pytomography/io/SPECT/simind.py +14 -3
  39. {pytomography-3.1.4 → pytomography-3.2.2}/src/pytomography/likelihoods/likelihood.py +3 -2
  40. {pytomography-3.1.4 → pytomography-3.2.2}/src/pytomography/priors/nearest_neighbour.py +2 -4
  41. {pytomography-3.1.4 → pytomography-3.2.2}/src/pytomography/projectors/PET/petlm_system_matrix.py +18 -13
  42. {pytomography-3.1.4 → pytomography-3.2.2}/src/pytomography/projectors/SPECT/spect_system_matrix.py +4 -2
  43. {pytomography-3.1.4 → pytomography-3.2.2}/src/pytomography/projectors/system_matrix.py +3 -3
  44. {pytomography-3.1.4 → pytomography-3.2.2}/src/pytomography/transforms/SPECT/psf.py +16 -23
  45. pytomography-3.1.4/docs/source/notebooks/run_all_notebooks.py +0 -27
  46. pytomography-3.1.4/docs/source/notebooks/t_CT_GEN3.ipynb +0 -468
  47. pytomography-3.1.4/docs/source/notebooks/t_GE_HDF5.ipynb +0 -572
  48. pytomography-3.1.4/docs/source/notebooks/t_PETGATE_DIP.ipynb +0 -1133
  49. pytomography-3.1.4/docs/source/notebooks/t_PETGATE_scat_lmTOF.ipynb +0 -1056
  50. pytomography-3.1.4/docs/source/notebooks/t_PETGATE_scat_sino.ipynb +0 -1547
  51. pytomography-3.1.4/docs/source/notebooks/t_PETGATE_scat_sinoTOF.ipynb +0 -1097
  52. pytomography-3.1.4/docs/source/notebooks/t_dicomdata.ipynb +0 -1344
  53. pytomography-3.1.4/docs/source/notebooks/t_dicommultibed.ipynb +0 -945
  54. pytomography-3.1.4/docs/source/notebooks/t_examplesystemmatrix.ipynb +0 -2650
  55. pytomography-3.1.4/docs/source/notebooks/t_siminddata.ipynb +0 -1957
  56. pytomography-3.1.4/docs/source/notebooks/t_uncertainty_spect.ipynb +0 -955
  57. {pytomography-3.1.4 → pytomography-3.2.2}/.github/workflows/publish-to-test-pypi.yml +0 -0
  58. {pytomography-3.1.4 → pytomography-3.2.2}/.gitignore +0 -0
  59. {pytomography-3.1.4 → pytomography-3.2.2}/.readthedocs.yaml +0 -0
  60. {pytomography-3.1.4 → pytomography-3.2.2}/LICENSE +0 -0
  61. {pytomography-3.1.4 → pytomography-3.2.2}/README.md +0 -0
  62. {pytomography-3.1.4 → pytomography-3.2.2}/docs/Makefile +0 -0
  63. {pytomography-3.1.4 → pytomography-3.2.2}/docs/make.bat +0 -0
  64. {pytomography-3.1.4 → pytomography-3.2.2}/docs/source/_templates/autoapi/index.rst +0 -0
  65. {pytomography-3.1.4 → pytomography-3.2.2}/docs/source/_templates/autoapi/python/attribute.rst +0 -0
  66. {pytomography-3.1.4 → pytomography-3.2.2}/docs/source/_templates/autoapi/python/class.rst +0 -0
  67. {pytomography-3.1.4 → pytomography-3.2.2}/docs/source/_templates/autoapi/python/data.rst +0 -0
  68. {pytomography-3.1.4 → pytomography-3.2.2}/docs/source/_templates/autoapi/python/exception.rst +0 -0
  69. {pytomography-3.1.4 → pytomography-3.2.2}/docs/source/_templates/autoapi/python/function.rst +0 -0
  70. {pytomography-3.1.4 → pytomography-3.2.2}/docs/source/_templates/autoapi/python/method.rst +0 -0
  71. {pytomography-3.1.4 → pytomography-3.2.2}/docs/source/_templates/autoapi/python/module.rst +0 -0
  72. {pytomography-3.1.4 → pytomography-3.2.2}/docs/source/_templates/autoapi/python/package.rst +0 -0
  73. {pytomography-3.1.4 → pytomography-3.2.2}/docs/source/_templates/autoapi/python/property.rst +0 -0
  74. {pytomography-3.1.4 → pytomography-3.2.2}/docs/source/autoapi/pytomography/algorithms/dip_recon/index.rst +0 -0
  75. {pytomography-3.1.4 → pytomography-3.2.2}/docs/source/autoapi/pytomography/algorithms/fbp/index.rst +0 -0
  76. {pytomography-3.1.4 → pytomography-3.2.2}/docs/source/autoapi/pytomography/algorithms/index.rst +0 -0
  77. {pytomography-3.1.4 → pytomography-3.2.2}/docs/source/autoapi/pytomography/algorithms/preconditioned_gradient_ascent/index.rst +0 -0
  78. {pytomography-3.1.4 → pytomography-3.2.2}/docs/source/autoapi/pytomography/callbacks/callback/index.rst +0 -0
  79. {pytomography-3.1.4 → pytomography-3.2.2}/docs/source/autoapi/pytomography/callbacks/data_saving/index.rst +0 -0
  80. {pytomography-3.1.4 → pytomography-3.2.2}/docs/source/autoapi/pytomography/callbacks/index.rst +0 -0
  81. {pytomography-3.1.4 → pytomography-3.2.2}/docs/source/autoapi/pytomography/index.rst +0 -0
  82. {pytomography-3.1.4 → pytomography-3.2.2}/docs/source/autoapi/pytomography/io/CT/dicom_ct_pd/index.rst +0 -0
  83. {pytomography-3.1.4 → pytomography-3.2.2}/docs/source/autoapi/pytomography/io/CT/index.rst +0 -0
  84. {pytomography-3.1.4 → pytomography-3.2.2}/docs/source/autoapi/pytomography/io/PET/clinical/index.rst +0 -0
  85. {pytomography-3.1.4 → pytomography-3.2.2}/docs/source/autoapi/pytomography/io/PET/gate/index.rst +0 -0
  86. {pytomography-3.1.4 → pytomography-3.2.2}/docs/source/autoapi/pytomography/io/PET/index.rst +0 -0
  87. {pytomography-3.1.4 → pytomography-3.2.2}/docs/source/autoapi/pytomography/io/PET/petsird/index.rst +0 -0
  88. {pytomography-3.1.4 → pytomography-3.2.2}/docs/source/autoapi/pytomography/io/PET/prd/_binary/index.rst +0 -0
  89. {pytomography-3.1.4 → pytomography-3.2.2}/docs/source/autoapi/pytomography/io/PET/prd/_dtypes/index.rst +0 -0
  90. {pytomography-3.1.4 → pytomography-3.2.2}/docs/source/autoapi/pytomography/io/PET/prd/_ndjson/index.rst +0 -0
  91. {pytomography-3.1.4 → pytomography-3.2.2}/docs/source/autoapi/pytomography/io/PET/prd/binary/index.rst +0 -0
  92. {pytomography-3.1.4 → pytomography-3.2.2}/docs/source/autoapi/pytomography/io/PET/prd/index.rst +0 -0
  93. {pytomography-3.1.4 → pytomography-3.2.2}/docs/source/autoapi/pytomography/io/PET/prd/ndjson/index.rst +0 -0
  94. {pytomography-3.1.4 → pytomography-3.2.2}/docs/source/autoapi/pytomography/io/PET/prd/protocols/index.rst +0 -0
  95. {pytomography-3.1.4 → pytomography-3.2.2}/docs/source/autoapi/pytomography/io/PET/prd/types/index.rst +0 -0
  96. {pytomography-3.1.4 → pytomography-3.2.2}/docs/source/autoapi/pytomography/io/PET/prd/yardl_types/index.rst +0 -0
  97. {pytomography-3.1.4 → pytomography-3.2.2}/docs/source/autoapi/pytomography/io/PET/shared/index.rst +0 -0
  98. {pytomography-3.1.4 → pytomography-3.2.2}/docs/source/autoapi/pytomography/io/SPECT/attenuation_map/index.rst +0 -0
  99. {pytomography-3.1.4 → pytomography-3.2.2}/docs/source/autoapi/pytomography/io/SPECT/shared/index.rst +0 -0
  100. {pytomography-3.1.4 → pytomography-3.2.2}/docs/source/autoapi/pytomography/io/index.rst +0 -0
  101. {pytomography-3.1.4 → pytomography-3.2.2}/docs/source/autoapi/pytomography/io/shared/dicom/index.rst +0 -0
  102. {pytomography-3.1.4 → pytomography-3.2.2}/docs/source/autoapi/pytomography/io/shared/dicom_creation/index.rst +0 -0
  103. {pytomography-3.1.4 → pytomography-3.2.2}/docs/source/autoapi/pytomography/io/shared/index.rst +0 -0
  104. {pytomography-3.1.4 → pytomography-3.2.2}/docs/source/autoapi/pytomography/io/shared/interfile/index.rst +0 -0
  105. {pytomography-3.1.4 → pytomography-3.2.2}/docs/source/autoapi/pytomography/likelihoods/poisson_log_likelihood/index.rst +0 -0
  106. {pytomography-3.1.4 → pytomography-3.2.2}/docs/source/autoapi/pytomography/metadata/CT/ct_conebeam_flatpanel_metadata/index.rst +0 -0
  107. {pytomography-3.1.4 → pytomography-3.2.2}/docs/source/autoapi/pytomography/metadata/CT/ct_gen3_metadata/index.rst +0 -0
  108. {pytomography-3.1.4 → pytomography-3.2.2}/docs/source/autoapi/pytomography/metadata/CT/index.rst +0 -0
  109. {pytomography-3.1.4 → pytomography-3.2.2}/docs/source/autoapi/pytomography/metadata/PET/index.rst +0 -0
  110. {pytomography-3.1.4 → pytomography-3.2.2}/docs/source/autoapi/pytomography/metadata/PET/pet_sinogram_metadata/index.rst +0 -0
  111. {pytomography-3.1.4 → pytomography-3.2.2}/docs/source/autoapi/pytomography/metadata/PET/pet_tof_metadata/index.rst +0 -0
  112. {pytomography-3.1.4 → pytomography-3.2.2}/docs/source/autoapi/pytomography/metadata/PET/petlm_metadata/index.rst +0 -0
  113. {pytomography-3.1.4 → pytomography-3.2.2}/docs/source/autoapi/pytomography/metadata/SPECT/index.rst +0 -0
  114. {pytomography-3.1.4 → pytomography-3.2.2}/docs/source/autoapi/pytomography/metadata/SPECT/spect_metadata/index.rst +0 -0
  115. {pytomography-3.1.4 → pytomography-3.2.2}/docs/source/autoapi/pytomography/metadata/index.rst +0 -0
  116. {pytomography-3.1.4 → pytomography-3.2.2}/docs/source/autoapi/pytomography/metadata/metadata/index.rst +0 -0
  117. {pytomography-3.1.4 → pytomography-3.2.2}/docs/source/autoapi/pytomography/priors/index.rst +0 -0
  118. {pytomography-3.1.4 → pytomography-3.2.2}/docs/source/autoapi/pytomography/priors/nearest_neighbour/index.rst +0 -0
  119. {pytomography-3.1.4 → pytomography-3.2.2}/docs/source/autoapi/pytomography/priors/prior/index.rst +0 -0
  120. {pytomography-3.1.4 → pytomography-3.2.2}/docs/source/autoapi/pytomography/projectors/CT/ct_conebeam_flatpanel_system_matrix/index.rst +0 -0
  121. {pytomography-3.1.4 → pytomography-3.2.2}/docs/source/autoapi/pytomography/projectors/CT/ct_gen3_system_matrix/index.rst +0 -0
  122. {pytomography-3.1.4 → pytomography-3.2.2}/docs/source/autoapi/pytomography/projectors/CT/index.rst +0 -0
  123. {pytomography-3.1.4 → pytomography-3.2.2}/docs/source/autoapi/pytomography/projectors/PET/pet_sinogram_system_matrix/index.rst +0 -0
  124. {pytomography-3.1.4 → pytomography-3.2.2}/docs/source/autoapi/pytomography/projectors/SPECT/index.rst +0 -0
  125. {pytomography-3.1.4 → pytomography-3.2.2}/docs/source/autoapi/pytomography/projectors/SPECT/spect_system_matrix/index.rst +0 -0
  126. {pytomography-3.1.4 → pytomography-3.2.2}/docs/source/autoapi/pytomography/projectors/index.rst +0 -0
  127. {pytomography-3.1.4 → pytomography-3.2.2}/docs/source/autoapi/pytomography/projectors/shared/index.rst +0 -0
  128. {pytomography-3.1.4 → pytomography-3.2.2}/docs/source/autoapi/pytomography/projectors/shared/kem_system_matrix/index.rst +0 -0
  129. {pytomography-3.1.4 → pytomography-3.2.2}/docs/source/autoapi/pytomography/projectors/shared/motion_correction_system_matrix/index.rst +0 -0
  130. {pytomography-3.1.4 → pytomography-3.2.2}/docs/source/autoapi/pytomography/projectors/system_matrix/index.rst +0 -0
  131. {pytomography-3.1.4 → pytomography-3.2.2}/docs/source/autoapi/pytomography/transforms/SPECT/attenuation/index.rst +0 -0
  132. {pytomography-3.1.4 → pytomography-3.2.2}/docs/source/autoapi/pytomography/transforms/index.rst +0 -0
  133. {pytomography-3.1.4 → pytomography-3.2.2}/docs/source/autoapi/pytomography/transforms/shared/filters/index.rst +0 -0
  134. {pytomography-3.1.4 → pytomography-3.2.2}/docs/source/autoapi/pytomography/transforms/shared/index.rst +0 -0
  135. {pytomography-3.1.4 → pytomography-3.2.2}/docs/source/autoapi/pytomography/transforms/shared/kem/index.rst +0 -0
  136. {pytomography-3.1.4 → pytomography-3.2.2}/docs/source/autoapi/pytomography/transforms/shared/motion/index.rst +0 -0
  137. {pytomography-3.1.4 → pytomography-3.2.2}/docs/source/autoapi/pytomography/transforms/shared/spatial/index.rst +0 -0
  138. {pytomography-3.1.4 → pytomography-3.2.2}/docs/source/autoapi/pytomography/transforms/transform/index.rst +0 -0
  139. {pytomography-3.1.4 → pytomography-3.2.2}/docs/source/autoapi/pytomography/utils/fourier_filters/index.rst +0 -0
  140. {pytomography-3.1.4 → pytomography-3.2.2}/docs/source/autoapi/pytomography/utils/misc/index.rst +0 -0
  141. {pytomography-3.1.4 → pytomography-3.2.2}/docs/source/autoapi/pytomography/utils/nist_data/index.rst +0 -0
  142. {pytomography-3.1.4 → pytomography-3.2.2}/docs/source/autoapi/pytomography/utils/spatial/index.rst +0 -0
  143. {pytomography-3.1.4 → pytomography-3.2.2}/docs/source/autoapi/pytomography/utils/sss/index.rst +0 -0
  144. {pytomography-3.1.4 → pytomography-3.2.2}/docs/source/developers_guide.md +0 -0
  145. {pytomography-3.1.4 → pytomography-3.2.2}/docs/source/external_data.md +0 -0
  146. {pytomography-3.1.4 → pytomography-3.2.2}/docs/source/images/PT1.png +0 -0
  147. {pytomography-3.1.4 → pytomography-3.2.2}/docs/source/images/coordinate_conventions.png +0 -0
  148. {pytomography-3.1.4 → pytomography-3.2.2}/docs/source/images/emission.png +0 -0
  149. {pytomography-3.1.4 → pytomography-3.2.2}/docs/source/images/example_scanner_sm.png +0 -0
  150. {pytomography-3.1.4 → pytomography-3.2.2}/docs/source/images/figure4.jpg +0 -0
  151. {pytomography-3.1.4 → pytomography-3.2.2}/docs/source/images/figure5.jpg +0 -0
  152. {pytomography-3.1.4 → pytomography-3.2.2}/docs/source/images/pytomo_front_title.png +0 -0
  153. {pytomography-3.1.4 → pytomography-3.2.2}/docs/source/index.md +0 -0
  154. {pytomography-3.1.4 → pytomography-3.2.2}/docs/source/notebooks/conventions.ipynb +0 -0
  155. {pytomography-3.1.4 → pytomography-3.2.2}/docs/source/notebooks/script_to_generate_eta_for_petsird.py +0 -0
  156. {pytomography-3.1.4 → pytomography-3.2.2}/docs/source/notebooks/t_CT_microct.ipynb +0 -0
  157. {pytomography-3.1.4 → pytomography-3.2.2}/docs/source/notebooks/t_PETGATE_LM.ipynb +0 -0
  158. {pytomography-3.1.4 → pytomography-3.2.2}/docs/source/notebooks/t_PETGATE_SINO.ipynb +0 -0
  159. {pytomography-3.1.4 → pytomography-3.2.2}/docs/source/notebooks/t_PETGATE_scat_lm copy.ipynb +0 -0
  160. {pytomography-3.1.4 → pytomography-3.2.2}/docs/source/notebooks/t_PETSIRD.ipynb +0 -0
  161. {pytomography-3.1.4 → pytomography-3.2.2}/docs/source/notebooks/t_fbp.ipynb +0 -0
  162. {pytomography-3.1.4 → pytomography-3.2.2}/docs/source/notebooks/t_quantitative.ipynb +0 -0
  163. {pytomography-3.1.4 → pytomography-3.2.2}/src/pytomography/__init__.py +0 -0
  164. {pytomography-3.1.4 → pytomography-3.2.2}/src/pytomography/algorithms/__init__.py +0 -0
  165. {pytomography-3.1.4 → pytomography-3.2.2}/src/pytomography/algorithms/dip_recon.py +0 -0
  166. {pytomography-3.1.4 → pytomography-3.2.2}/src/pytomography/algorithms/fbp.py +0 -0
  167. {pytomography-3.1.4 → pytomography-3.2.2}/src/pytomography/callbacks/__init__.py +0 -0
  168. {pytomography-3.1.4 → pytomography-3.2.2}/src/pytomography/callbacks/callback.py +0 -0
  169. {pytomography-3.1.4 → pytomography-3.2.2}/src/pytomography/callbacks/data_saving.py +0 -0
  170. {pytomography-3.1.4 → pytomography-3.2.2}/src/pytomography/data/NIST_attenuation_data/adipose.csv +0 -0
  171. {pytomography-3.1.4 → pytomography-3.2.2}/src/pytomography/data/NIST_attenuation_data/air.csv +0 -0
  172. {pytomography-3.1.4 → pytomography-3.2.2}/src/pytomography/data/NIST_attenuation_data/aluminum.csv +0 -0
  173. {pytomography-3.1.4 → pytomography-3.2.2}/src/pytomography/data/NIST_attenuation_data/bonecortical.csv +0 -0
  174. {pytomography-3.1.4 → pytomography-3.2.2}/src/pytomography/data/NIST_attenuation_data/boneequivplastic.csv +0 -0
  175. {pytomography-3.1.4 → pytomography-3.2.2}/src/pytomography/data/NIST_attenuation_data/breast.csv +0 -0
  176. {pytomography-3.1.4 → pytomography-3.2.2}/src/pytomography/data/NIST_attenuation_data/lead.csv +0 -0
  177. {pytomography-3.1.4 → pytomography-3.2.2}/src/pytomography/data/NIST_attenuation_data/lungtissue.csv +0 -0
  178. {pytomography-3.1.4 → pytomography-3.2.2}/src/pytomography/data/NIST_attenuation_data/muscle.csv +0 -0
  179. {pytomography-3.1.4 → pytomography-3.2.2}/src/pytomography/data/NIST_attenuation_data/tissueequivplastic.csv +0 -0
  180. {pytomography-3.1.4 → pytomography-3.2.2}/src/pytomography/data/NIST_attenuation_data/tungsten.csv +0 -0
  181. {pytomography-3.1.4 → pytomography-3.2.2}/src/pytomography/data/NIST_attenuation_data/water.csv +0 -0
  182. {pytomography-3.1.4 → pytomography-3.2.2}/src/pytomography/data/collim.col +0 -0
  183. {pytomography-3.1.4 → pytomography-3.2.2}/src/pytomography/data/ct_table.csv +0 -0
  184. {pytomography-3.1.4 → pytomography-3.2.2}/src/pytomography/data/pet_scanner_info.txt +0 -0
  185. {pytomography-3.1.4 → pytomography-3.2.2}/src/pytomography/io/CT/__init__.py +0 -0
  186. {pytomography-3.1.4 → pytomography-3.2.2}/src/pytomography/io/CT/dicom_ct_pd.py +0 -0
  187. {pytomography-3.1.4 → pytomography-3.2.2}/src/pytomography/io/PET/__init__.py +0 -0
  188. {pytomography-3.1.4 → pytomography-3.2.2}/src/pytomography/io/PET/clinical.py +0 -0
  189. {pytomography-3.1.4 → pytomography-3.2.2}/src/pytomography/io/PET/gate.py +0 -0
  190. {pytomography-3.1.4 → pytomography-3.2.2}/src/pytomography/io/PET/petsird.py +0 -0
  191. {pytomography-3.1.4 → pytomography-3.2.2}/src/pytomography/io/PET/prd/__init__.py +0 -0
  192. {pytomography-3.1.4 → pytomography-3.2.2}/src/pytomography/io/PET/prd/_binary.py +0 -0
  193. {pytomography-3.1.4 → pytomography-3.2.2}/src/pytomography/io/PET/prd/_dtypes.py +0 -0
  194. {pytomography-3.1.4 → pytomography-3.2.2}/src/pytomography/io/PET/prd/_ndjson.py +0 -0
  195. {pytomography-3.1.4 → pytomography-3.2.2}/src/pytomography/io/PET/prd/binary.py +0 -0
  196. {pytomography-3.1.4 → pytomography-3.2.2}/src/pytomography/io/PET/prd/ndjson.py +0 -0
  197. {pytomography-3.1.4 → pytomography-3.2.2}/src/pytomography/io/PET/prd/protocols.py +0 -0
  198. {pytomography-3.1.4 → pytomography-3.2.2}/src/pytomography/io/PET/prd/types.py +0 -0
  199. {pytomography-3.1.4 → pytomography-3.2.2}/src/pytomography/io/PET/prd/yardl_types.py +0 -0
  200. {pytomography-3.1.4 → pytomography-3.2.2}/src/pytomography/io/PET/shared.py +0 -0
  201. {pytomography-3.1.4 → pytomography-3.2.2}/src/pytomography/io/SPECT/__init__.py +0 -0
  202. {pytomography-3.1.4 → pytomography-3.2.2}/src/pytomography/io/SPECT/attenuation_map.py +0 -0
  203. {pytomography-3.1.4 → pytomography-3.2.2}/src/pytomography/io/__init__.py +0 -0
  204. {pytomography-3.1.4 → pytomography-3.2.2}/src/pytomography/io/shared/__init__.py +0 -0
  205. {pytomography-3.1.4 → pytomography-3.2.2}/src/pytomography/io/shared/dicom.py +0 -0
  206. {pytomography-3.1.4 → pytomography-3.2.2}/src/pytomography/io/shared/dicom_creation.py +0 -0
  207. {pytomography-3.1.4 → pytomography-3.2.2}/src/pytomography/io/shared/interfile.py +0 -0
  208. {pytomography-3.1.4 → pytomography-3.2.2}/src/pytomography/likelihoods/__init__.py +0 -0
  209. {pytomography-3.1.4 → pytomography-3.2.2}/src/pytomography/likelihoods/mse_objective.py +0 -0
  210. {pytomography-3.1.4 → pytomography-3.2.2}/src/pytomography/likelihoods/poisson_log_likelihood.py +0 -0
  211. {pytomography-3.1.4 → pytomography-3.2.2}/src/pytomography/metadata/CT/__init__.py +0 -0
  212. {pytomography-3.1.4 → pytomography-3.2.2}/src/pytomography/metadata/CT/ct_conebeam_flatpanel_metadata.py +0 -0
  213. {pytomography-3.1.4 → pytomography-3.2.2}/src/pytomography/metadata/CT/ct_gen3_metadata.py +0 -0
  214. {pytomography-3.1.4 → pytomography-3.2.2}/src/pytomography/metadata/PET/__init__.py +0 -0
  215. {pytomography-3.1.4 → pytomography-3.2.2}/src/pytomography/metadata/PET/pet_sinogram_metadata.py +0 -0
  216. {pytomography-3.1.4 → pytomography-3.2.2}/src/pytomography/metadata/PET/pet_tof_metadata.py +0 -0
  217. {pytomography-3.1.4 → pytomography-3.2.2}/src/pytomography/metadata/PET/petlm_metadata.py +0 -0
  218. {pytomography-3.1.4 → pytomography-3.2.2}/src/pytomography/metadata/SPECT/__init__.py +0 -0
  219. {pytomography-3.1.4 → pytomography-3.2.2}/src/pytomography/metadata/SPECT/spect_metadata.py +0 -0
  220. {pytomography-3.1.4 → pytomography-3.2.2}/src/pytomography/metadata/__init__.py +0 -0
  221. {pytomography-3.1.4 → pytomography-3.2.2}/src/pytomography/metadata/metadata.py +0 -0
  222. {pytomography-3.1.4 → pytomography-3.2.2}/src/pytomography/priors/__init__.py +0 -0
  223. {pytomography-3.1.4 → pytomography-3.2.2}/src/pytomography/priors/prior.py +0 -0
  224. {pytomography-3.1.4 → pytomography-3.2.2}/src/pytomography/projectors/CT/__init__.py +0 -0
  225. {pytomography-3.1.4 → pytomography-3.2.2}/src/pytomography/projectors/CT/ct_conebeam_flatpanel_system_matrix.py +0 -0
  226. {pytomography-3.1.4 → pytomography-3.2.2}/src/pytomography/projectors/CT/ct_gen3_system_matrix.py +0 -0
  227. {pytomography-3.1.4 → pytomography-3.2.2}/src/pytomography/projectors/PET/__init__.py +0 -0
  228. {pytomography-3.1.4 → pytomography-3.2.2}/src/pytomography/projectors/PET/pet_sinogram_system_matrix.py +0 -0
  229. {pytomography-3.1.4 → pytomography-3.2.2}/src/pytomography/projectors/SPECT/__init__.py +0 -0
  230. {pytomography-3.1.4 → pytomography-3.2.2}/src/pytomography/projectors/__init__.py +0 -0
  231. {pytomography-3.1.4 → pytomography-3.2.2}/src/pytomography/projectors/shared/__init__.py +0 -0
  232. {pytomography-3.1.4 → pytomography-3.2.2}/src/pytomography/projectors/shared/kem_system_matrix.py +0 -0
  233. {pytomography-3.1.4 → pytomography-3.2.2}/src/pytomography/projectors/shared/motion_correction_system_matrix.py +0 -0
  234. {pytomography-3.1.4 → pytomography-3.2.2}/src/pytomography/tests/test_multi_bed_recon.py +0 -0
  235. {pytomography-3.1.4 → pytomography-3.2.2}/src/pytomography/transforms/SPECT/__init__.py +0 -0
  236. {pytomography-3.1.4 → pytomography-3.2.2}/src/pytomography/transforms/SPECT/attenuation.py +0 -0
  237. {pytomography-3.1.4 → pytomography-3.2.2}/src/pytomography/transforms/__init__.py +0 -0
  238. {pytomography-3.1.4 → pytomography-3.2.2}/src/pytomography/transforms/shared/__init__.py +0 -0
  239. {pytomography-3.1.4 → pytomography-3.2.2}/src/pytomography/transforms/shared/filters.py +0 -0
  240. {pytomography-3.1.4 → pytomography-3.2.2}/src/pytomography/transforms/shared/kem.py +0 -0
  241. {pytomography-3.1.4 → pytomography-3.2.2}/src/pytomography/transforms/shared/motion.py +0 -0
  242. {pytomography-3.1.4 → pytomography-3.2.2}/src/pytomography/transforms/shared/spatial.py +0 -0
  243. {pytomography-3.1.4 → pytomography-3.2.2}/src/pytomography/transforms/transform.py +0 -0
  244. {pytomography-3.1.4 → pytomography-3.2.2}/src/pytomography/utils/__init__.py +0 -0
  245. {pytomography-3.1.4 → pytomography-3.2.2}/src/pytomography/utils/fourier_filters.py +0 -0
  246. {pytomography-3.1.4 → pytomography-3.2.2}/src/pytomography/utils/misc.py +0 -0
  247. {pytomography-3.1.4 → pytomography-3.2.2}/src/pytomography/utils/nist_data.py +0 -0
  248. {pytomography-3.1.4 → pytomography-3.2.2}/src/pytomography/utils/scatter.py +0 -0
  249. {pytomography-3.1.4 → pytomography-3.2.2}/src/pytomography/utils/spatial.py +0 -0
  250. {pytomography-3.1.4 → pytomography-3.2.2}/src/pytomography/utils/sss.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: pytomography
3
- Version: 3.1.4
3
+ Version: 3.2.2
4
4
  Summary: Package to perform tomographic image reconstruction
5
5
  Project-URL: Homepage, https://github.com/qurit/PyTomography
6
6
  Project-URL: Bug Tracker, https://github.com/qurit/PyTomography/issues
@@ -30,6 +30,7 @@ Requires-Dist: myst-parser; extra == 'doc'
30
30
  Requires-Dist: nbsphinx; extra == 'doc'
31
31
  Requires-Dist: pydata-sphinx-theme; extra == 'doc'
32
32
  Requires-Dist: sphinx-autoapi~=3.0.0; extra == 'doc'
33
+ Requires-Dist: sphinx-design; extra == 'doc'
33
34
  Requires-Dist: sphinx~=6.2.1; extra == 'doc'
34
35
  Requires-Dist: toml; extra == 'doc'
35
36
  Description-Content-Type: text/markdown
@@ -7,5 +7,6 @@ This page contains auto-generated API reference documentation [#f1]_.
7
7
  :titlesonly:
8
8
 
9
9
  /autoapi/pytomography/index
10
+ /autoapi/test_multi_bed_recon/index
10
11
 
11
12
  .. [#f1] Created with `sphinx-autoapi <https://github.com/readthedocs/sphinx-autoapi>`_
@@ -85,7 +85,7 @@ Functions
85
85
  :rtype: float
86
86
 
87
87
 
88
- .. py:function:: get_energy_window_scatter_estimate(file, index_peak, index_lower, index_upper = None, weighting_lower = 0.5, weighting_upper = 0.5, return_scatter_variance_estimate = False)
88
+ .. py:function:: get_energy_window_scatter_estimate(file, index_peak, index_lower, index_upper = None, weighting_lower = 0.5, weighting_upper = 0.5, proj_meta=None, sigma_theta = 0, sigma_r = 0, sigma_z = 0, N_sigmas = 3, return_scatter_variance_estimate = False)
89
89
 
90
90
  Gets an estimate of scatter projection data from a DICOM file using either the dual energy window (`index_upper=None`) or triple energy window method.
91
91
 
@@ -108,7 +108,7 @@ Functions
108
108
  :rtype: torch.Tensor[Ltheta,Lr,Lz]
109
109
 
110
110
 
111
- .. py:function:: get_energy_window_scatter_estimate_projections(file, projections, index_peak, index_lower, index_upper = None, weighting_lower = 0.5, weighting_upper = 0.5, return_scatter_variance_estimate = False)
111
+ .. py:function:: get_energy_window_scatter_estimate_projections(file, projections, index_peak, index_lower, index_upper = None, weighting_lower = 0.5, weighting_upper = 0.5, proj_meta=None, sigma_theta = 0, sigma_r = 0, sigma_z = 0, N_sigmas = 3, return_scatter_variance_estimate = False)
112
112
 
113
113
  Gets an estimate of scatter projection data from a DICOM file using either the dual energy window (`index_upper=None`) or triple energy window method. This is seperate from ``get_energy_window_scatter_estimate`` as it allows a user to input projecitons that are already loaded/modified. This is useful for when projection data gets mixed for reconstructing multiple bed positions.
114
114
 
@@ -144,7 +144,7 @@ Functions
144
144
  :rtype: torch.Tensor
145
145
 
146
146
 
147
- .. py:function:: get_psfmeta_from_scanner_params(collimator_name, energy_keV, min_sigmas = 3, material = 'lead', intrinsic_resolution = 0)
147
+ .. py:function:: get_psfmeta_from_scanner_params(collimator_name, energy_keV, min_sigmas = 3, material = 'lead', intrinsic_resolution = 0, intrinsic_resolution_140keV = None)
148
148
 
149
149
  Obtains SPECT PSF metadata given a unique collimator code and photopeak energy of radionuclide. For more information on collimator codes, see the "external data" section of the readthedocs page.
150
150
 
@@ -156,14 +156,16 @@ Functions
156
156
  :type min_sigmas: float
157
157
  :param material: Material of the collimator.
158
158
  :type material: str
159
- :param intrinsic_resolution: Intrinsic resolution (FWHM) of the scintillator crystals. Defaults to 0.
159
+ :param intrinsic_resolution: Intrinsic resolution (FWHM) of the scintillator crystals. Note that most scanners provide the intrinsic resolution at 140keV only; if you only have access to this, you should use the ``intrinsic_resolution_140keV`` argument of this function. Defaults to 0.
160
160
  :type intrinsic_resolution: float
161
+ :param intrinsic_resolution_140keV: Intrinsic resolution (FWHM) of the scintillator crystals at an energy of 140keV. The true intrinsic resolution is calculated assuming the resolution is proportional to E^(-1/2). If provided, then ``intrinsic_resolution`` is ignored. Defaults to None.
162
+ :type intrinsic_resolution_140keV: float | None
161
163
 
162
164
  :returns: PSF metadata.
163
165
  :rtype: SPECTPSFMeta
164
166
 
165
167
 
166
- .. py:function:: CT_to_mumap(CT, files_CT, file_NM, index_peak = 0, technique = 'from_table')
168
+ .. py:function:: CT_to_mumap(CT, files_CT, file_NM, index_peak = 0, technique = 'from_table', E_SPECT = None)
167
169
 
168
170
  Converts a CT image to a mu-map given SPECT projection data. The CT data must be aligned with the projection data already; this is a helper function for ``get_attenuation_map_from_CT_slices``.
169
171
 
@@ -177,6 +179,8 @@ Functions
177
179
  :type index_peak: int, optional
178
180
  :param technique: Technique to convert HU to attenuation coefficients. The default, 'from_table', uses a table of coefficients for bilinear curves obtained for a variety of common radionuclides. The technique 'from_cortical_bone_fit' looks for a cortical bone peak in the scan and uses that to obtain the bilinear coefficients. For phantom scans where the attenuation coefficient is always significantly less than bone, the cortical bone technique will still work, since the first part of the bilinear curve (in the air to water range) does not depend on the cortical bone fit. Alternatively, one can provide an arbitrary function here which takes in a 3D scan with units of HU and converts to mu.
179
181
  :type technique: str, optional
182
+ :param E_SPECT: Energy of the photopeak in SPECT scan; this overrides the energy in the DICOM file, so should only be used if the DICOM file is incorrect. If None, then the energy is obtained from the DICOM file.
183
+ :type E_SPECT: float
180
184
 
181
185
  :returns: Attenuation map in units of 1/cm
182
186
  :rtype: torch.tensor
@@ -216,7 +220,7 @@ Functions
216
220
  :rtype: function
217
221
 
218
222
 
219
- .. py:function:: get_attenuation_map_from_CT_slices(files_CT, file_NM = None, index_peak = 0, mode = 'constant', HU2mu_technique = 'from_table')
223
+ .. py:function:: get_attenuation_map_from_CT_slices(files_CT, file_NM = None, index_peak = 0, mode = 'constant', HU2mu_technique = 'from_table', E_SPECT = None)
220
224
 
221
225
  Converts a sequence of DICOM CT files (corresponding to a single scan) into a torch.Tensor object usable as an attenuation map in PyTomography.
222
226
 
@@ -230,6 +234,8 @@ Functions
230
234
  :type mode: str
231
235
  :param HU2mu_technique: Technique to convert HU to attenuation coefficients. The default, 'from_table', uses a table of coefficients for bilinear curves obtained for a variety of common radionuclides. The technique 'from_cortical_bone_fit' looks for a cortical bone peak in the scan and uses that to obtain the bilinear coefficients. For phantom scans where the attenuation coefficient is always significantly less than bone, the cortical bone technique will still work, since the first part of the bilinear curve (in the air to water range) does not depend on the cortical bone fit. Alternatively, one can provide an arbitrary function here which takes in a 3D scan with units of HU and converts to mu.
232
236
  :type HU2mu_technique: str
237
+ :param E_SPECT: Energy of the photopeak in SPECT scan; this overrides the energy in the DICOM file, so should only be used if the DICOM file is incorrect. Defaults to None.
238
+ :type E_SPECT: float
233
239
 
234
240
  :returns: Tensor of shape [Lx, Ly, Lz] corresponding to attenuation map.
235
241
  :rtype: torch.Tensor
@@ -78,7 +78,7 @@ Functions
78
78
  :rtype: torch.Tensor
79
79
 
80
80
 
81
- .. py:function:: get_attenuation_map_from_CT_slices(files_CT, file_NM = None, index_peak = 0, mode = 'constant', HU2mu_technique = 'from_table')
81
+ .. py:function:: get_attenuation_map_from_CT_slices(files_CT, file_NM = None, index_peak = 0, mode = 'constant', HU2mu_technique = 'from_table', E_SPECT = None)
82
82
 
83
83
  Converts a sequence of DICOM CT files (corresponding to a single scan) into a torch.Tensor object usable as an attenuation map in PyTomography.
84
84
 
@@ -92,12 +92,14 @@ Functions
92
92
  :type mode: str
93
93
  :param HU2mu_technique: Technique to convert HU to attenuation coefficients. The default, 'from_table', uses a table of coefficients for bilinear curves obtained for a variety of common radionuclides. The technique 'from_cortical_bone_fit' looks for a cortical bone peak in the scan and uses that to obtain the bilinear coefficients. For phantom scans where the attenuation coefficient is always significantly less than bone, the cortical bone technique will still work, since the first part of the bilinear curve (in the air to water range) does not depend on the cortical bone fit. Alternatively, one can provide an arbitrary function here which takes in a 3D scan with units of HU and converts to mu.
94
94
  :type HU2mu_technique: str
95
+ :param E_SPECT: Energy of the photopeak in SPECT scan; this overrides the energy in the DICOM file, so should only be used if the DICOM file is incorrect. Defaults to None.
96
+ :type E_SPECT: float
95
97
 
96
98
  :returns: Tensor of shape [Lx, Ly, Lz] corresponding to attenuation map.
97
99
  :rtype: torch.Tensor
98
100
 
99
101
 
100
- .. py:function:: get_energy_window_scatter_estimate(file, index_peak, index_lower, index_upper = None, weighting_lower = 0.5, weighting_upper = 0.5, return_scatter_variance_estimate = False)
102
+ .. py:function:: get_energy_window_scatter_estimate(file, index_peak, index_lower, index_upper = None, weighting_lower = 0.5, weighting_upper = 0.5, proj_meta=None, sigma_theta = 0, sigma_r = 0, sigma_z = 0, N_sigmas = 3, return_scatter_variance_estimate = False)
101
103
 
102
104
  Gets an estimate of scatter projection data from a DICOM file using either the dual energy window (`index_upper=None`) or triple energy window method.
103
105
 
@@ -120,7 +122,7 @@ Functions
120
122
  :rtype: torch.Tensor[Ltheta,Lr,Lz]
121
123
 
122
124
 
123
- .. py:function:: get_psfmeta_from_scanner_params(collimator_name, energy_keV, min_sigmas = 3, material = 'lead', intrinsic_resolution = 0)
125
+ .. py:function:: get_psfmeta_from_scanner_params(collimator_name, energy_keV, min_sigmas = 3, material = 'lead', intrinsic_resolution = 0, intrinsic_resolution_140keV = None)
124
126
 
125
127
  Obtains SPECT PSF metadata given a unique collimator code and photopeak energy of radionuclide. For more information on collimator codes, see the "external data" section of the readthedocs page.
126
128
 
@@ -132,14 +134,16 @@ Functions
132
134
  :type min_sigmas: float
133
135
  :param material: Material of the collimator.
134
136
  :type material: str
135
- :param intrinsic_resolution: Intrinsic resolution (FWHM) of the scintillator crystals. Defaults to 0.
137
+ :param intrinsic_resolution: Intrinsic resolution (FWHM) of the scintillator crystals. Note that most scanners provide the intrinsic resolution at 140keV only; if you only have access to this, you should use the ``intrinsic_resolution_140keV`` argument of this function. Defaults to 0.
136
138
  :type intrinsic_resolution: float
139
+ :param intrinsic_resolution_140keV: Intrinsic resolution (FWHM) of the scintillator crystals at an energy of 140keV. The true intrinsic resolution is calculated assuming the resolution is proportional to E^(-1/2). If provided, then ``intrinsic_resolution`` is ignored. Defaults to None.
140
+ :type intrinsic_resolution_140keV: float | None
137
141
 
138
142
  :returns: PSF metadata.
139
143
  :rtype: SPECTPSFMeta
140
144
 
141
145
 
142
- .. py:function:: CT_to_mumap(CT, files_CT, file_NM, index_peak = 0, technique = 'from_table')
146
+ .. py:function:: CT_to_mumap(CT, files_CT, file_NM, index_peak = 0, technique = 'from_table', E_SPECT = None)
143
147
 
144
148
  Converts a CT image to a mu-map given SPECT projection data. The CT data must be aligned with the projection data already; this is a helper function for ``get_attenuation_map_from_CT_slices``.
145
149
 
@@ -153,6 +157,8 @@ Functions
153
157
  :type index_peak: int, optional
154
158
  :param technique: Technique to convert HU to attenuation coefficients. The default, 'from_table', uses a table of coefficients for bilinear curves obtained for a variety of common radionuclides. The technique 'from_cortical_bone_fit' looks for a cortical bone peak in the scan and uses that to obtain the bilinear coefficients. For phantom scans where the attenuation coefficient is always significantly less than bone, the cortical bone technique will still work, since the first part of the bilinear curve (in the air to water range) does not depend on the cortical bone fit. Alternatively, one can provide an arbitrary function here which takes in a 3D scan with units of HU and converts to mu.
155
159
  :type technique: str, optional
160
+ :param E_SPECT: Energy of the photopeak in SPECT scan; this overrides the energy in the DICOM file, so should only be used if the DICOM file is incorrect. If None, then the energy is obtained from the DICOM file.
161
+ :type E_SPECT: float
156
162
 
157
163
  :returns: Attenuation map in units of 1/cm
158
164
  :rtype: torch.tensor
@@ -111,7 +111,7 @@ Attributes
111
111
  :rtype: torch.Tensor[batch_size, Lx, Ly, Lz]
112
112
 
113
113
 
114
- .. py:function:: get_psfmeta_from_header(headerfile)
114
+ .. py:function:: get_psfmeta_from_header(headerfile, min_sigmas=3)
115
115
 
116
116
  Obtains the SPECTPSFMeta data corresponding to a SIMIND simulation scan from the headerfile
117
117
 
@@ -74,8 +74,8 @@ Classes
74
74
  :type projections: torch.Tensor | None
75
75
  :param additive_term: Additional term added after forward projection by the system matrix. This term might include things like scatter and randoms. Defaults to None.
76
76
  :type additive_term: torch.Tensor, optional
77
- :param additive_term_variance_estimate: Variance estimate of the additive term. If none, then uncertainty estimation does not include contribution from the additive term. Defaults to None.
78
- :type additive_term_variance_estimate: torch.tensor, optional
77
+ :param additive_term_variance_estimate: Operator for variance estimate of additive term. If none, then uncertainty estimation does not include contribution from the additive term. Defaults to None.
78
+ :type additive_term_variance_estimate: Callable, optional
79
79
 
80
80
  .. py:method:: compute_gradient(object, subset_idx = None, norm_BP_subset_method = 'subset_specific')
81
81
 
@@ -177,8 +177,8 @@ Classes
177
177
  :type projections: torch.Tensor | None
178
178
  :param additive_term: Additional term added after forward projection by the system matrix. This term might include things like scatter and randoms. Defaults to None.
179
179
  :type additive_term: torch.Tensor, optional
180
- :param additive_term_variance_estimate: Variance estimate of the additive term. If none, then uncertainty estimation does not include contribution from the additive term. Defaults to None.
181
- :type additive_term_variance_estimate: torch.tensor, optional
180
+ :param additive_term_variance_estimate: Operator for variance estimate of additive term. If none, then uncertainty estimation does not include contribution from the additive term. Defaults to None.
181
+ :type additive_term_variance_estimate: Callable, optional
182
182
 
183
183
  .. py:method:: _set_n_subsets(n_subsets)
184
184
 
@@ -27,8 +27,8 @@ Classes
27
27
  :type projections: torch.Tensor | None
28
28
  :param additive_term: Additional term added after forward projection by the system matrix. This term might include things like scatter and randoms. Defaults to None.
29
29
  :type additive_term: torch.Tensor, optional
30
- :param additive_term_variance_estimate: Variance estimate of the additive term. If none, then uncertainty estimation does not include contribution from the additive term. Defaults to None.
31
- :type additive_term_variance_estimate: torch.tensor, optional
30
+ :param additive_term_variance_estimate: Operator for variance estimate of additive term. If none, then uncertainty estimation does not include contribution from the additive term. Defaults to None.
31
+ :type additive_term_variance_estimate: Callable, optional
32
32
 
33
33
  .. py:method:: _set_n_subsets(n_subsets)
34
34
 
@@ -61,8 +61,8 @@ Classes
61
61
  :type projections: torch.Tensor | None
62
62
  :param additive_term: Additional term added after forward projection by the system matrix. This term might include things like scatter and randoms. Defaults to None.
63
63
  :type additive_term: torch.Tensor, optional
64
- :param additive_term_variance_estimate: Variance estimate of the additive term. If none, then uncertainty estimation does not include contribution from the additive term. Defaults to None.
65
- :type additive_term_variance_estimate: torch.tensor, optional
64
+ :param additive_term_variance_estimate: Operator for variance estimate of additive term. If none, then uncertainty estimation does not include contribution from the additive term. Defaults to None.
65
+ :type additive_term_variance_estimate: Callable, optional
66
66
 
67
67
  .. py:method:: compute_gradient(object, subset_idx = None, norm_BP_subset_method = 'subset_specific')
68
68
 
@@ -36,7 +36,7 @@ Functions
36
36
 
37
37
 
38
38
 
39
- .. py:class:: PETLMSystemMatrix(object_meta, proj_meta, obj2obj_transforms = [], attenuation_map = None, scale_projection_by_sensitivity = False, N_splits = 1, device = pytomography.device)
39
+ .. py:class:: PETLMSystemMatrix(object_meta, proj_meta, obj2obj_transforms = [], attenuation_map = None, scale_projection_by_sensitivity = False, N_splits = 1, FOV_scale_enabled = True, device = pytomography.device)
40
40
 
41
41
  Bases: :py:obj:`pytomography.projectors.SystemMatrix`
42
42
 
@@ -17,7 +17,7 @@ Classes
17
17
 
18
18
 
19
19
 
20
- .. py:class:: PETLMSystemMatrix(object_meta, proj_meta, obj2obj_transforms = [], attenuation_map = None, scale_projection_by_sensitivity = False, N_splits = 1, device = pytomography.device)
20
+ .. py:class:: PETLMSystemMatrix(object_meta, proj_meta, obj2obj_transforms = [], attenuation_map = None, scale_projection_by_sensitivity = False, N_splits = 1, FOV_scale_enabled = True, device = pytomography.device)
21
21
 
22
22
  Bases: :py:obj:`pytomography.projectors.SystemMatrix`
23
23
 
@@ -87,18 +87,18 @@ Classes
87
87
 
88
88
 
89
89
 
90
- .. py:class:: SPECTPSFTransform(psf_meta = None, kernel_f = None, psf_net = None, assume_padded = True)
90
+ .. py:class:: SPECTPSFTransform(psf_meta = None, psf_operator = None, assume_padded = True)
91
91
 
92
92
  Bases: :py:obj:`pytomography.transforms.Transform`
93
93
 
94
- obj2obj transform used to model the effects of PSF blurring in SPECT. The smoothing kernel used to apply PSF modeling uses a Gaussian kernel with width :math:`\sigma` dependent on the distance of the point to the detector; that information is specified in the ``SPECTPSFMeta`` parameter. There are a few potential arguments to initialize this transform (i) `psf_meta`, which contains relevant collimator information to obtain a Gaussian PSF model that works for low/medium energy SPECT (ii) `kernel_f`, an callable function that gives the kernel at any source-detector distance :math:`d`, or (iii) `psf_net`, a network configured to automatically apply full PSF modeling to a given object :math:`f` at all source-detector distances. Only one of the arguments should be given.
94
+ obj2obj transform used to model the effects of PSF blurring in SPECT. The smoothing kernel used to apply PSF modeling uses a Gaussian kernel with width :math:`\sigma` dependent on the distance of the point to the detector; that information is specified in the ``SPECTPSFMeta`` parameter. There are a few potential arguments to initialize this transform (i) `psf_meta`, which contains relevant collimator information to obtain a Gaussian PSF model that works for low/medium energy SPECT (ii) `kernel_f`, an callable function that gives the kernel at any source-detector distance :math:`d`, or (iii) `psf_operator`, a network configured to automatically apply full PSF modeling to a given object :math:`f` at all source-detector distances. Only one of the arguments should be given.
95
95
 
96
96
  :param psf_meta: Metadata corresponding to the parameters of PSF blurring. In most cases (low/medium energy SPECT), this should be the only given argument.
97
97
  :type psf_meta: SPECTPSFMeta
98
98
  :param kernel_f: Function :math:`PSF(x,y,d)` that gives PSF at every source-detector distance :math:`d`. It should be able to take in 1D numpy arrays as its first two arguments, and a single argument for the final argument :math:`d`. The function should return a corresponding 2D PSF kernel.
99
99
  :type kernel_f: Callable
100
- :param psf_net: Network that takes in an object :math:`f` and applies all necessary PSF correction to return a new object :math:`\tilde{f}` that is PSF corrected, such that subsequent summation along the x-axis accurately models the collimator detector response.
101
- :type psf_net: Callable
100
+ :param psf_operator: Network that takes in an object :math:`f` and applies all necessary PSF correction to return a new object :math:`\tilde{f}` that is PSF corrected, such that subsequent summation along the x-axis accurately models the collimator detector response.
101
+ :type psf_operator: Callable
102
102
 
103
103
  .. py:method:: _configure_gaussian_model()
104
104
 
@@ -106,15 +106,9 @@ Classes
106
106
 
107
107
 
108
108
 
109
- .. py:method:: _configure_kernel_model()
110
-
111
- Internal function to configure arbitrary kernel modeling. This is called when `kernel_f` is given in initialization
112
-
113
-
114
-
115
109
  .. py:method:: _configure_manual_net()
116
110
 
117
- Internal function to configure the PSF net. This is called when `psf_net` is given in initialization
111
+ Internal function to configure the PSF net. This is called when `psf_operator` is given in initialization
118
112
 
119
113
 
120
114
 
@@ -13,7 +13,7 @@ Classes
13
13
  .. autoapisummary::
14
14
 
15
15
  pytomography.transforms.SPECT.psf.GaussianBlurNet
16
- pytomography.transforms.SPECT.psf.ArbitraryPSFNet
16
+ pytomography.transforms.SPECT.psf.PSF2D
17
17
  pytomography.transforms.SPECT.psf.SPECTPSFTransform
18
18
 
19
19
 
@@ -50,30 +50,9 @@ Functions
50
50
 
51
51
 
52
52
 
53
- .. py:class:: ArbitraryPSFNet(kernel_f, distances, kernel_size, dr)
53
+ .. py:class:: PSF2D(psf_operator, distances, kernel_size, dr)
54
54
 
55
- Bases: :py:obj:`torch.nn.Module`
56
-
57
- Network used to apply an arbitrary PSF based on the `kernel_f` function, which should be a function of parallel directions :math:`x` and :math:`y` and perpendicular direction :math:`d` to the detector head
58
-
59
- :param kernel_f: PSF kernel
60
- :type kernel_f: Callable
61
- :param distances: Distances corresponding to each plane parallel to the detector
62
- :type distances: Sequence[float]
63
- :param kernel_size: Size of kernel used for blurring. Should be large enough to encapsulate the entire PSF at all distances
64
- :type kernel_size: int
65
- :param dr: The :math:`x` and :math:`y` voxel spacing in the object
66
- :type dr: Sequence[float]
67
-
68
- .. py:method:: forward(input)
69
-
70
- Applies PSF blurring to `input`. Each X-plane gets a different blurring kernel applied, depending on detector distance.
71
-
72
- :param input: Object to apply blurring to
73
- :type input: torch.tensor
74
-
75
- :returns: Blurred object, adjusted such that subsequent summation along the x-axis models the CDR
76
- :rtype: torch.tensor
55
+ .. py:method:: __call__(input)
77
56
 
78
57
 
79
58
 
@@ -90,18 +69,18 @@ Functions
90
69
  :rtype: torch.nn.Conv2d
91
70
 
92
71
 
93
- .. py:class:: SPECTPSFTransform(psf_meta = None, kernel_f = None, psf_net = None, assume_padded = True)
72
+ .. py:class:: SPECTPSFTransform(psf_meta = None, psf_operator = None, assume_padded = True)
94
73
 
95
74
  Bases: :py:obj:`pytomography.transforms.Transform`
96
75
 
97
- obj2obj transform used to model the effects of PSF blurring in SPECT. The smoothing kernel used to apply PSF modeling uses a Gaussian kernel with width :math:`\sigma` dependent on the distance of the point to the detector; that information is specified in the ``SPECTPSFMeta`` parameter. There are a few potential arguments to initialize this transform (i) `psf_meta`, which contains relevant collimator information to obtain a Gaussian PSF model that works for low/medium energy SPECT (ii) `kernel_f`, an callable function that gives the kernel at any source-detector distance :math:`d`, or (iii) `psf_net`, a network configured to automatically apply full PSF modeling to a given object :math:`f` at all source-detector distances. Only one of the arguments should be given.
76
+ obj2obj transform used to model the effects of PSF blurring in SPECT. The smoothing kernel used to apply PSF modeling uses a Gaussian kernel with width :math:`\sigma` dependent on the distance of the point to the detector; that information is specified in the ``SPECTPSFMeta`` parameter. There are a few potential arguments to initialize this transform (i) `psf_meta`, which contains relevant collimator information to obtain a Gaussian PSF model that works for low/medium energy SPECT (ii) `kernel_f`, an callable function that gives the kernel at any source-detector distance :math:`d`, or (iii) `psf_operator`, a network configured to automatically apply full PSF modeling to a given object :math:`f` at all source-detector distances. Only one of the arguments should be given.
98
77
 
99
78
  :param psf_meta: Metadata corresponding to the parameters of PSF blurring. In most cases (low/medium energy SPECT), this should be the only given argument.
100
79
  :type psf_meta: SPECTPSFMeta
101
80
  :param kernel_f: Function :math:`PSF(x,y,d)` that gives PSF at every source-detector distance :math:`d`. It should be able to take in 1D numpy arrays as its first two arguments, and a single argument for the final argument :math:`d`. The function should return a corresponding 2D PSF kernel.
102
81
  :type kernel_f: Callable
103
- :param psf_net: Network that takes in an object :math:`f` and applies all necessary PSF correction to return a new object :math:`\tilde{f}` that is PSF corrected, such that subsequent summation along the x-axis accurately models the collimator detector response.
104
- :type psf_net: Callable
82
+ :param psf_operator: Network that takes in an object :math:`f` and applies all necessary PSF correction to return a new object :math:`\tilde{f}` that is PSF corrected, such that subsequent summation along the x-axis accurately models the collimator detector response.
83
+ :type psf_operator: Callable
105
84
 
106
85
  .. py:method:: _configure_gaussian_model()
107
86
 
@@ -109,15 +88,9 @@ Functions
109
88
 
110
89
 
111
90
 
112
- .. py:method:: _configure_kernel_model()
113
-
114
- Internal function to configure arbitrary kernel modeling. This is called when `kernel_f` is given in initialization
115
-
116
-
117
-
118
91
  .. py:method:: _configure_manual_net()
119
92
 
120
- Internal function to configure the PSF net. This is called when `psf_net` is given in initialization
93
+ Internal function to configure the PSF net. This is called when `psf_operator` is given in initialization
121
94
 
122
95
 
123
96
 
@@ -291,7 +291,7 @@ Functions
291
291
  :rtype: np.array
292
292
 
293
293
 
294
- .. py:function:: compute_EW_scatter(projection_lower, projection_upper, width_lower, width_upper, width_peak, weighting_lower = 0.5, weighting_upper = 0.5, return_scatter_variance_estimate = False)
294
+ .. py:function:: compute_EW_scatter(projection_lower, projection_upper, width_lower, width_upper, width_peak, weighting_lower = 0.5, weighting_upper = 0.5, proj_meta=None, sigma_theta = 0, sigma_r = 0, sigma_z = 0, N_sigmas = 3, return_scatter_variance_estimate = False)
295
295
 
296
296
  Computes triple energy window estimate from lower and upper scatter projections as well as window widths
297
297
 
@@ -13,11 +13,33 @@ Functions
13
13
 
14
14
  .. autoapisummary::
15
15
 
16
+ pytomography.utils.scatter.get_smoothed_scatter
16
17
  pytomography.utils.scatter.compute_EW_scatter
17
18
 
18
19
 
19
20
 
20
- .. py:function:: compute_EW_scatter(projection_lower, projection_upper, width_lower, width_upper, width_peak, weighting_lower = 0.5, weighting_upper = 0.5, return_scatter_variance_estimate = False)
21
+ .. py:function:: get_smoothed_scatter(scatter, proj_meta, sigma_theta = 0, sigma_r = 0, sigma_z = 0, N_sigmas = 3)
22
+
23
+ Smooths SPECT projection metadata
24
+
25
+ :param scatter: Input projection data
26
+ :type scatter: torch.Tensor
27
+ :param proj_meta: Projection metadata
28
+ :type proj_meta: ProjMeta
29
+ :param sigma_theta: Smoothing in theta (specified in degrees). Defaults to 0.
30
+ :type sigma_theta: float, optional
31
+ :param sigma_r: Smoothing in r (specified in cm). Defaults to 0.
32
+ :type sigma_r: float, optional
33
+ :param sigma_z: Smoothing in z (specified in cm). Defaults to 0.
34
+ :type sigma_z: float, optional
35
+ :param N_sigmas: Number of sigmas to include in the smoothing kernel. Defaults to 3.
36
+ :type N_sigmas: int, optional
37
+
38
+ :returns: Smoothed projections
39
+ :rtype: torch.Tensor
40
+
41
+
42
+ .. py:function:: compute_EW_scatter(projection_lower, projection_upper, width_lower, width_upper, width_peak, weighting_lower = 0.5, weighting_upper = 0.5, proj_meta=None, sigma_theta = 0, sigma_r = 0, sigma_z = 0, N_sigmas = 3, return_scatter_variance_estimate = False)
21
43
 
22
44
  Computes triple energy window estimate from lower and upper scatter projections as well as window widths
23
45
 
@@ -0,0 +1,44 @@
1
+ :py:mod:`test_multi_bed_recon`
2
+ ==============================
3
+
4
+ .. py:module:: test_multi_bed_recon
5
+
6
+ .. autoapi-nested-parse::
7
+
8
+ regression test for multi bed recon
9
+
10
+
11
+
12
+ Module Contents
13
+ ---------------
14
+
15
+
16
+ Functions
17
+ ~~~~~~~~~
18
+
19
+ .. autoapisummary::
20
+
21
+ test_multi_bed_recon.test_multi_bed_recon
22
+ test_multi_bed_recon.reconstruct_singlebed
23
+
24
+
25
+
26
+ Attributes
27
+ ~~~~~~~~~~
28
+
29
+ .. autoapisummary::
30
+
31
+ test_multi_bed_recon.files_NM
32
+
33
+
34
+ .. py:data:: files_NM
35
+ :value: []
36
+
37
+
38
+
39
+ .. py:function:: test_multi_bed_recon()
40
+
41
+
42
+ .. py:function:: reconstruct_singlebed(i, projectionss, files_NM, files_CT)
43
+
44
+
@@ -71,4 +71,16 @@ html_static_path = ['_static']
71
71
 
72
72
  # typehints
73
73
  autodoc_typehints = "description"
74
- autodoc_inherit_docstrings=True
74
+ autodoc_inherit_docstrings=True
75
+
76
+ # Add link to github
77
+ html_theme_options = {
78
+ "icon_links": [
79
+ {
80
+ "name": "GitHub",
81
+ "url": "https://github.com/qurit/PyTomography",
82
+ "icon": "fa-brands fa-github",
83
+ "type": "fontawesome",
84
+ },
85
+ ],
86
+ }
@@ -0,0 +1,29 @@
1
+ import papermill as pm
2
+ import os
3
+
4
+ os.environ['PYDEVD_DISABLE_FILE_VALIDATION'] = '1'
5
+
6
+ tutorials = [
7
+ #'t_siminddata.ipynb',
8
+ #'t_dicomdata.ipynb',
9
+ #'t_dicommultibed.ipynb',
10
+ #'t_uncertainty_spect.ipynb',
11
+ #'t_ac225_dicom_recon.ipynb',
12
+ 't_ac225_simind_recon.ipynb',
13
+ #'t_PETGATE_scat_sino.ipynb',
14
+ 't_PETGATE_scat_sinoTOF.ipynb',
15
+ #'t_PETGATE_scat_lm.ipynb',
16
+ #'t_PETGATE_scat_lmTOF.ipynb',
17
+ #'t_PETGATE_DIP.ipynb',
18
+ #'t_GE_HDF5.ipynb',
19
+ #'t_CT_GEN3.ipynb',
20
+ 't_examplesystemmatrix.ipynb'
21
+ ]
22
+
23
+ for tutorial in tutorials:
24
+ print(f"Running {tutorial}...")
25
+ try:
26
+ pm.execute_notebook(tutorial, tutorial)
27
+ print(f"{tutorial} ran successfully.")
28
+ except pm.PapermillExecutionError as e:
29
+ print(f"{tutorial} failed")