pytomography.metadata.PET.petlm_metadata
#
Module Contents#
Classes#
Metadata required for PET listmode modeling. PET listmode projection actually requires two different projectors: the system matrix that projects to all detected crystal pair LORs (which is denoted as \(H\)) and the system matrix that projects to all valid LORs (denoted as \(\tilde{H}\)). The system matrix \(H\) is used for forward/back projection in reconstruction algorithms, while \(\tilde{H}\) is used for computing the normalization image \(\tilde{H}^T 1\). |
- class pytomography.metadata.PET.petlm_metadata.PETLMProjMeta(detector_ids, scanner_LUT, tof_meta=None, weights=None, detector_ids_sensitivity=None, weights_sensitivity=None)[source]#
Metadata required for PET listmode modeling. PET listmode projection actually requires two different projectors: the system matrix that projects to all detected crystal pair LORs (which is denoted as \(H\)) and the system matrix that projects to all valid LORs (denoted as \(\tilde{H}\)). The system matrix \(H\) is used for forward/back projection in reconstruction algorithms, while \(\tilde{H}\) is used for computing the normalization image \(\tilde{H}^T 1\). :param detector_ids: \(N \times 2\) (non-TOF) or \(N \times 3\) (TOF) tensor that provides detector ID pairs (and TOF bin) for coincidence events. This information is used to construct \(H\). :type detector_ids: torch.Tensor :param scanner_LUT: scanner lookup table that provides spatial coordinates for all detector ID pairs :type scanner_LUT: torch.Tensor :param tof_meta: PET time-of-flight metadata used to modify \(H\) for time of flight projection. If None, then time of flight is not used. Defaults to None. :type tof_meta: PETTOFMeta | None, optional :param weights: weights used to scale projections after forward projection and before back projection; these modify the system matrix \(H\). While such weights can be used to apply attenuation/normalization correction, they aren’t required in the absence of randoms/scatter; these correction need only be performed using
weights_sensitivity
. If provided, these weights must have the number of elements as the first dimension ofdetector_ids
. If none, then no scaling is done. Defaults to None. :type weights: torch.tensor | None, optional :param detector_ids_sensitivity: valid detector ids used to generate the sensitivity image \(\tilde{H}^T 1\). As such, these are used to construct \(\tilde{H}\). If None, then assumes all detector ids (specified byscanner_LUT
) are valid. Defaults to None. :type detector_ids_sensitivity: torch.tensor | None, optional :param weights_sensitivity: weights used for scaling projections in the computation of the sensitivity image, if the weights are given as \(w\) then the sensitivty image becomes \(\tilde{H}^T w\); these modify the system matrix \(\tilde{H}\). These weights are used for attenuation/normalization correction. Ifdetector_ids_sensitivity
is provided, thenweights_sensitivity
should have the same shape. Ifdetector_ids_sensitivity
is not provided, thenweights_sensitivity
should be the same length as all possible combinations of detectors in thescanner_LUT
. If None, then no scaling is performed. Defaults to None. :type weights_sensitivity: torch.tensor | None, optional- Parameters:
detector_ids (torch.Tensor) –
scanner_LUT (torch.Tensor) –
tof_meta (pytomography.metadata.PET.pet_tof_metadata.PETTOFMeta | None) –
weights (torch.tensor | None) –
detector_ids_sensitivity (torch.tensor | None) –
weights_sensitivity (torch.tensor | None) –