User Tools

Site Tools


neuroimagen:fbb_calib

Calibrar FBB con los datos de GAAIN

Introduccion

La conversion a Centiloide a partir de SUVR esta descrita en Rowe et.al..

Aquí utlizaremos los mismos datos e intentaremos alcanzar los mismos valores de SUVR. Dicho de otro modo, calibraremos el metod de calculo de SUVR con los datos y resultados de GAAIN Centiloid Project.

Material y metodos

Para hacer la calibración necesitamos tres cosas,

  1. Las imagenes originales, tanto de controles jovenes como de sujetos mayores con alto nivel de amiloide.
  2. Las mascaras a aplicar, en espacio MNI, tanto del cortex como de la region de referencia.
  3. Los valores de SUVR calculados en Rowe et.al.

Todo puede descargarse de la pagina de GAAIN.

Registro

El primer paso es registrar las imagenes PET-FBB a espacio T1.

${ANTS_PATH}/antsRegistrationSyNQuick.sh -d 3 -f working/0001_struc.nii.gz -m bids/sub-0001/pet/sub-0001_single_fbb.nii.gz -t s -o 0001_movingToFixed_
${ANTS_PATH}/antsApplyTransforms -d 3 -r working/0001_struc.nii.gz -i bids/sub-0001/pet/sub-0001_single_fbb.nii.gz -t 0001_movingToFixed_0GenericAffine.mat -t 0001_movingToFixed_1Warp.nii.gz -o 0001_fbb.nii.gz

El script correspodiente dentro del pipeline debe tener en cuenta que puede haber mas de una imagen

El segundo paso es registrar de espacio nativo a MNI,

ANTS 3 -m CC[${FSLDIR}/data/standard/MNI152_T1_2mm.nii.gz, working/0001_struc.nii.gz, 1, 4] -r Gauss[0,3] -t Elast[1.5] -i 30x20x10 -o working/0001_fbb_t1_mni.nii.gz
WarpImageMultiTransform 3 working/0001_fbb.nii.gz working/0001_fbb_mni.nii.gz -R ${FSLDIR}/data/standard/MNI152_T1_2mm.nii.gz working/0001_fbb_t1_mniWarp.nii.gz working/0001_fbb_t1_mniAffine.txt

Ahora, si superponemos las mascaras a la imagen FBB en espacio MNI ya podemos calcular el SUVR. Esto lo he hecho rapidito en Perl,

foreach my $subject (sort @subjects){
        my $fbb = $w_dir.'/'.$subject.'_fbb.nii.gz';
        my $struct = $w_dir.'/'.$subject.'_struc.nii.gz';
        if (-e $fbb && -e $struct){
                # Apply masks to FBB
                my $roi_mask = $roi_paths.$ctx_roi;
                my $order = "fslstats ".$w_dir."/".$subject."_fbb_mni -k ".$roi_mask." -M";
                print "$order\n";
                my $ctx = qx/$order/;
                $roi_mask = $roi_paths.$ref_roi;
                $order = "fslstats ".$w_dir."/".$subject."_fbb_mni -k ".$roi_mask." -M";
                print "$order\n";
                my $norm = qx/$order/;
                if ($norm > 0) {
                        my $mean = $ctx/$norm;
                        print OF "$subject";
                        print OF ";$mean";
                        print OF ";", centiloid_fbb($mean);
                        print OF "\n";
                }
        }
}
close OF;

Resultados

Ahora solo tendriamos que unirlos resultados y compararlos

> ref <- read.csv("reference_cl.csv", sep=";", header=TRUE)
> cl <- read.csv("centiloid_fbb_cl_link.csv", sep=";", header=TRUE)
> ctest <- merge(cl, ref, by="PSubject")
> a <- lm(ctest$SUVR ~ ctest$WC_suvr)
> summary(a)
 
Call:
lm(formula = ctest$SUVR ~ ctest$WC_suvr)
 
Residuals:
      Min        1Q    Median        3Q       Max 
-0.089356 -0.027784 -0.007222  0.026046  0.132218 
 
Coefficients:
              Estimate Std. Error t value Pr(>|t|)    
(Intercept)    0.04538    0.03235   1.403     0.17    
ctest$WC_suvr  0.96789    0.02381  40.648   <2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
 
Residual standard error: 0.0505 on 32 degrees of freedom
Multiple R-squared:  0.981,	Adjusted R-squared:  0.9804 
F-statistic:  1652 on 1 and 32 DF,  p-value: < 2.2e-16
 
> plot(ctest$WC_suvr, ctest$SUVR, xlab = "SUVR GAAIN", ylab = "SUVR ACE", main = "Calibracion GAAIN", sub = "Adjusted R-squared:   0.9804, 0.96789 x + 0.04538")
> lines(ctest$WC_suvr, fitted(a), col="blue")
> lines(ctest$WC_suvr, ctest$WC_suvr, col="red")

Nota: La linea roja indica cual seria el ajuste perfecto. La linea azul el ajuste que se ha alcanzado

Conclusiones

  1. Los valores de SUVR muestran que nuestro metodo de calculo funciona correctamente con un $R^2 =0.98$.
  2. Se ha alcanzado un ajuste ($SUVR_{ACE} = 0.96789 SUVR_{ref} + 0.04538$) muy bueno de los datos, aunque puede que para valores alejados de la media de SUVR nuestros valores sean ligeramente distintos a los calculados por el metodo citado en la literatura.

Apendice: Registro alternativo

Ocurre que los registro pueden fallar. Alternativamente pueden registrarse los FBB utlizando la forma “antigua” de ANTs.

${ANTS_PATH}/ANTS 3 -m CC[${wdir}/${id}_struc.nii.gz, ${src}, 1, 4] -r Gauss[0,3] -t Elast[1.5] -i 30x20x10 -o ${td}/${id}_movingToFixed_
sleep 2 # Est es para que no falle porque el NAS es una puta mierda
${ANTS_PATH}/WarpImageMultiTransform 3 ${src} ${wdir}/${id}_fbb.nii.gz -R ${wdir}/${id}_struc.nii.gz ${td}/${id}_movingToFixed_Warp.nii.gz ${td}/${id}_movingToFixed_Affine.txt

Esto se llama con,

$ fbb_correct.pl -alt -cut registros_fallidos.txt project_id

Pero, ojo que ya aqui la calibracion no es tan buena,

Apendice: Correcion de movimiento

MeeH

Lo correcto seria: Registrar cada intervalo de 5min y tomar el AVG como la imagen definitiva, no volver a registrar.

neuroimagen/fbb_calib.txt · Last modified: 2021/03/10 10:16 by osotolongo