SPECT Point Spread Function Toolbox
This toolbox provides functionality for developing and fitting PSF models to SPECT point source data; the developed PSF models can be loaded into PyTomography for general PSF modeling.
Installation
- Clone this repository and navigate to the directory you cloned into.
- If using anaconda (recommended) then activate the
condaenvironment you want to install the repository in. - Use the command
python -m pip install -e .to install the currentmainbranch.
Usage
See the documentation and in particular the associated tutorials for demonstration on how to use the library.
Contributing
If you wish to contribute, please see follow the contributing guidelines file. Contributions might include fixing bugs highlighted in the issues, as well as adding new features, such as new operators that accelerate the computational time of PSF modeling.
License
The package is distributing under the MIT license. More details can be found in the LICENSE.
Testing
There is an automated testing script to test the functionality of the library in the tests folder. It requires the pytest package is ran using pytest test_functionality.py.
Context
Gamma cameras used in SPECT imaging have finite resolution: infinitesmal point sources of radioactivity show up as finite "point spread functions" (PSF) on the camera. Sample PSFs from point sources at various distances from a camera can be seen on the left hand side of the figure below.
The PSF consists of three main components: (i) the geometric component (GC) which depends on the shape and spacing of the collimator bores, (ii) the septal penetration component (SPC) which results from photons that travel through the collimator material without being attenuated, and (iii) the septal scatter component (SSC), which consists of photons that scatter within the collimator material and subsequently get detected in the scintillator. When the thickness of the SPECT collimator is large and the diameter of the collimator bores is small relative to the energy of the detected radiation, the PSF is dominated by the GC and can be reasonably approximated using a distance dependent Gaussian function. When the energy of the photons is large relative to the collimator parameters, the PSF contains significant contributions from SPC and SSC and it can no longer be approximated using simple Gaussian functions. The tails and dim background present in the PSF plots in the figure below correspond to the SPC and SSC. For more information, see chapter 16 of the greatest book of all time
The figure below shows axial slices of reconstructed Monte Carlo Ac225 SPECT data. The images highlighted as "PSF Model" correspond to application of a PSF operator developed in the library on a point source. The images highlighted as "New" are obtainable via reconstruction with PyTomography using the PSF operators obtained in this library; they require comprehensive PSF modeling.
Release files for spectpsftoolbox 0.1.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| spectpsftoolbox-0.1.2.tar.gz | 3.2 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| spectpsftoolbox-0.1.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 3.2 MB
Release files / spectpsftoolbox-0.1.2.tar.gz
| Download URL | spectpsftoolbox-0.1.2.tar.gz |
|---|---|
| Size | 3.2 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
3e044732587f779a5d012d82592e1a4d2fdfff0486ddc930890f6b8fba0d6757
|
|
BLAKE2b-256 checksum How to use checksums |
0de56fd541c607e1c08a2cc88b31cd92ac293d3b3a77b6330627d8588bf5b6a2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.0.1 CPython/3.12.8
|
Release files / spectpsftoolbox-0.1.2-py3-none-any.whl
| Download URL | spectpsftoolbox-0.1.2-py3-none-any.whl |
|---|---|
| Size | 16.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
7a69a0e0fc2ca12ac149dc8820651a96b0cbbba1abafd52d44faa78d3b125125
|
|
BLAKE2b-256 checksum How to use checksums |
026af17512dc21e4561514828fc0063a0716d817781c4c04f7eb57a026877356
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.0.1 CPython/3.12.8
|