Introduction¶
Clinica & BIDS specifications for PET modality
Since Clinica v0.6
, PET data following the official specifications in BIDS version 1.6.0 are now compatible with Clinica.
See BIDS page for more information.
Partial volume correction (PVC)¶
To correct for partial volume effects, several PVC algorithms exist and are implemented in the PETPVC toolbox.
To perform PVC (compulsory for pet-surface
, optional for pet-volume
), you will need to specify in a TSV file the full width at half maximum (FWHM), in millimeters, of the PSF associated with your data, in the x, y and z directions.
For instance, if the FWHM of the PSF associated with your first image is 5 mm along the x and y axes, and 6 mm along the z axis, the first row of your TSV file will look like this:
participant_id session_id acq_label psf_x psf_y psf_z
sub-CLNC0001 ses-M000 18FFDG 5 5 6
sub-CLNC0001 ses-M000 18FAV45 4.5 4.5 5
sub-CLNC0002 ses-M000 18FFDG 5 5 6
sub-CLNC0003 ses-M000 18FFDG 7 7 7
Since the PSF depends on the PET tracer and scanner, the participant_id
, session_id
, acq_label
, psf_x
, psf_y
and psf_z
columns are compulsory.
The values in the column acq_label
should match the value associated to the trc
key in the BIDS dataset.
For example in the following BIDS layout the values associated would be 18FFDG
and 18FAV45
:
bids
└─ sub-CLNC0001
└─ ses-M000
├─ sub-CLNC001_ses-M000_trc-18FAV45_pet.nii.gz
└─ sub-CLNC001_ses-M000_trc-18FFDG_pet.nii.gz
Reconstruction methods¶
PET data can be reconstructed into the spatial distribution of the injected radio-tracer through various methods. The specification of the method used to reconstruct a given image is supported by the BIDS standard.
There exists four reserved values:
acdyn
: for reconstructions with attenuation correction of dynamic dataacstat
: for reconstructions with attenuation correction of static datanacdyn
: for reconstructions without attenuation correction of dynamic datanacstat
: for reconstructions without attenuation correction of static data
In addition to these values, when working with ADNI data, the following values are possible:
coregdyn
: Corresponds to "ADNI processing steps 1"coregavg
: Corresponds to "ADNI processing steps 2"coregstd
: Corresponds to "ADNI processing steps 3"coregiso
: Corresponds to "ADNI processing steps 4"
See this page for more information.
Reference regions used for intensity normalization¶
In neurology, an approach widely used to allow inter- and intra-subject comparison of PET images is to compute standardized uptake value ratio (SUVR) maps. The images are intensity normalized by dividing each voxel of the image by the average uptake in a reference region. This region is chosen according to the tracer and disease studied as it must be unaffected by the disease.
Clinica v0.3.8
introduces the possibility for the user to select the reference region for the SUVR map computation.
Reference regions provided by Clinica come from the Pick atlas in MNI space and currently are:
pons
: 6 mm eroded version of the pons regioncerebellumPons
: 6 mm eroded version of the cerebellum + pons regionspons2
: new in Clinicav0.4
cerebellumPons2
: new in Clinicav0.4
In Clinica v0.4
two new versions of these masks have been introduced: pons2
and cerebellumPons2
.
Indeed, we wanted to improve the reference regions mask to better fit the MNI152NLin2009cSym template used in linear processing pipelines.
The new masks still come from the Pick atlas but with a different processing: we decided to first truncate the mask using SPM12 tissue probability maps to remove voxels overlapping with regions outside the brain (bone, CSF, background...).
Then, we eroded the mask using scipy binary_erosion
with 3 iterations.
Tutorial: How to add new SUVR reference regions to Clinica?¶
It is possible to run the pet-surface
and pet-volume
pipelines using a custom reference region.
-
Install Clinica following the developer instructions ;
-
In the
<clinica>/clinica/utils/pet.py
file:- Step 1: Define the label of the SUVR reference region that will be stored in CAPS filename(s).
To do so, you need to add a variant to the
SUVRReferenceRegion
enumeration, which should look like this:
class SUVRReferenceRegion(str, Enum): PONS = "pons" CEREBELLUM_PONS = "cerebellumPons" PONS2 = "pons2" CEREBELLUM_PONS2 = "cerebellumPons2"
Simply define a new label that will be your new SUVR reference region. The
SUVRReferenceRegion
enumeration is used by all command-line interfaces, so you do not need to modify the pipelines' CLI to make this new region appear.- Step 2: Define the path of the SUVR reference region that you will use.
The function responsible to get the SUVR mask is called
get_suvr_mask
, and it looks by default in the folder<clinica>/resources/masks/
. You can put your mask in this folder and edit the following function (add an if statement to handle the enumeration variant you added in step 1):
def _get_suvr_reference_region_labels_filename(region: SUVRReferenceRegion) -> str: if region == SUVRReferenceRegion.PONS: return "region-pons_eroded-6mm_mask.nii.gz" if region == SUVRReferenceRegion.CEREBELLUM_PONS: return "region-cerebellumPons_eroded-6mm_mask.nii.gz" if region == SUVRReferenceRegion.PONS2: return "region-pons_remove-extrabrain_eroded-2it_mask.nii.gz" if region == SUVRReferenceRegion.CEREBELLUM_PONS2: return "region-cerebellumPons_remove-extrabrain_eroded-3it_mask.nii.gz"
- Step 1: Define the label of the SUVR reference region that will be stored in CAPS filename(s).
To do so, you need to add a variant to the
Contact us !¶
- Check for past answers on Clinica Google Group
- Start a discussion on GitHub
- Report an issue on Github