The purpose of this repo is to provide a starting point for developing software that uses PETSIRD. Here we will focus on python usecases using parallelproj projection library.
conda env create -f environment.yml
conda activate petsird-v0.2-parallelproj
cd python
python petsird_generator.py > test.bin
python petsird_analysis.py < test.bin
TODO:
- start from this parallel example here and this petsird example here
- map PETSIRD scanner detector elements to LOR endpoints
- How to map BoxShape to a single LOR point? (center of the Box is not want we want. We need most likely interaction point.)
- use LOR endpoints to setup BlockScannerModules tha can be used in ModularizedPETScannerGeometry or a RegularPolygonPETScannerGeometry - depending of the system geometry and module definition. Using the latter is more convient for the definition of sinograms, the former is better for systems with less symmetries where it is less straight forward to define "sinograms".
Start from this parallelproj example.
TODO:
- rewrite (simplify) util function that converts sinogram to listmode including event detectors IDs instead of coordinates. Write an updated noisy emission sinogram to LM converter similar to this but skipping the detector ID to world coordinate lookup.
- write scanner geometry to file