User Tools

Site Tools


neuroimagen:tau_analysis

Analisis de PET-tau

http://detritus.fundacioace.com/files/ADNI_UCBERKELEY_AV1451_Methods_2021-01-14.pdf

Voy a intentar entender el analisis de PET-tau a taves de un set de sujetos bajados de ADNI. Los sujetos deben tener una MRI y un PET-Tau hechos en fecha similar (+/- 6 meses?). En el documento de ADNI esta mas o menos explicado el analisis y con un poco de maña y otro de google podemos armar lo que falta.

Procesando

Basicamente se han de hacer algunas tareas que conducen a dos metricas distintas.

  • Registro de PET-Tau a espacio nativo MRI
  • Aplicar mascaras provenientes de la segmentacion FS a imagen PET-Tau
  • Calcular correccion PVC
  • Calcular SUVR con y sin correccion

Registro a T1w

El primer paso es colocar la imagen tau (4D de 6 slices) en espacio nativo T1. Debemos haber procesado el T1 con Freesurfer, asi que traemos primero el struc de FS. Ahora hacemos un split de la imagen tau y registramos cada imagen resultante al T1. La imagen tau final sera el valor medio de cada una de estas imagenes registradas.

Esta mierda que se llama media ponderada dondequiera, aqui se llama correccion de movimiento

Y para ir preparando el wrapper

el call, usando el modulo SLURM.pm se hace como,

Hacer mascaras

Ahora debemos seleccionar las regiones de interes donde queremos medir el SUVR. Hay varias opciones, como las regiones de Braak donde normalmente se observa la progresion del AD, un combinacion de estas regiones o una meta-region que definamos.

Las definiciones de cada region se han tomado de los metodos de ADNI para el AV1451.

[osotolongo@brick03 atau]$ ls /nas/software/neuro.dev/lib/tau/*.roi
/nas/software/neuro.dev/lib/tau/braak_12.roi  /nas/software/neuro.dev/lib/tau/braak_4.roi
/nas/software/neuro.dev/lib/tau/braak_1.roi   /nas/software/neuro.dev/lib/tau/braak_56.roi
/nas/software/neuro.dev/lib/tau/braak_2.roi   /nas/software/neuro.dev/lib/tau/braak_5.roi
/nas/software/neuro.dev/lib/tau/braak_34.roi  /nas/software/neuro.dev/lib/tau/braak_6.roi
/nas/software/neuro.dev/lib/tau/braak_3.roi   /nas/software/neuro.dev/lib/tau/meta_temporal.roi
 
[osotolongo@brick03 atau]$ cat /nas/software/neuro.dev/lib/tau/braak_3.roi
1016,L_parahippocampal
1007,L_fusiform
1013,L_lingual
18,L_amygdala
2016,R_parahippocampal
2007,R_fusiform
2013,R_lingual
54,R_amygdala

Ahora tomamos la segmentacion de FS (aparc+aseg), la llevamos a espacio nativo y seleccionamos, segun los LUT, los elementos de cada ROI. Se hace una mascara con cada ROI y simplemente se suman para tener la mascara de la ROI deseada.

Es bastante rapido de hacer

Esto en el wrapper ha de hacerse para cada roi que deseemos

Normalizacion

Mascaras para normalizar

Se puede normalizar por la la captacion en la sustancia blanca o en la sustancia gris del cerebelo.

1.- Para asegurarnos de que el uptake medido en la sustancia blanca no esta contaminado por otras zonas, sacamos la parte central de la sustancia blanca (eroded white matter). A la sustancia blanca extraida de FS se le aplica un suavizado con un kernel gaussiano de 6mm y se corta con un umbral de 0.7. El resultado se binariza y tenemos la mascara de normalizacion.

Ojo, que el resto del procedimiento es identico al de las ROIs

2.- Para garantizar que no haga contaminacion en las mediciones de la materia gris del cerebelo tomamos solo la zona inferior (inferior cerebellum gray matter). Para ello se toma el atlas del cerebelo de //SUIT// en espacio MNI que proporciona AFNI. Se calcula el registro del T1w a espacio MNI y con la inversa se lleva este atlas a espacio nativo. De aqui se seleccionan las regiones inferiores del cerebelo y se hace una mascara del cerebelo calculado por FS. La mascara resultante es la que se utilizara para normalizar.

Este es un poco mas complicado pero también similar a los anteriores

Y en el wrapper se lanzan como procesos de independientes de SLURM

Merge Masks

Ahora construimos un 4D con las mascaras que hemos escogido + las dos que utilizaremos para normalizar. Esto es un solo comando que usa el string que hemos venido construyendo y se lanza directamente tras terminar todas las mascaras

PVC correction

Usando los archivos 4D que hemos construdio, calcularemos la correccion de volumen parcial (PVC) correspondiente a cada mascara. Vamos a usar PETPVC, desarrollada en University College London para corregir usando el metodo GTM.

Y como tambien debemos reportar el SUVR no corregido, voy a escribir un script sencillo que tome el mismo input y produzca el mismo output

ahora pongo los dos procesos en el mismo script pues son rapidos

y los lanzamos desde el wrapper cuando tengamos los archivos 4D

Informe de registro

Tras efectuar el registro se puede generar el informe para ver como ha ido. Aqui el procedimiento es muy parecido al de FBB asi que no vale la pena comentar nada

Metricas

Cuando tenemos el output del PVC (y los SUVR sin corregir), hemos de escribir toda la informacion en una tabla que agrupe las metricas y los sujetos. Ha de ser una tabla para cada combinacion. Es decir hay una tabla para los SUVR corregidos y normalizados por EWM, otra para los SUVR corregidos y normalizados por ICGM, y por supuesto las mismas tablas para los SUVR sin corregir.

Pero como tenemos los resultados en el mismo formato, solo hay que escribir un algoritmo

Esto ha de lanzarse tras hacer los PVC

Wrapper

Todo el procesamiento Tau, del NIfTI a las metricas finales

Testing with ADNI

Procesamiento

Ahora tengo que probar que todo funciona correctamente y comprar los resultados contra los reportados en ADNI. el primer paso debe ser escoger los sujetos que voy a procesar.

Lo que hago es ir a R, instalar el paquete ADNIMERGE y encontrar la correspondencia entre los RID y los PTID ya que los resultados del AV1451 se reportan con el RID pero las imagenes se identifican por el PTID.

Cuando tenga las lista de los PTID debo ir a la pagina de ADNI y buscar, en es ta lista, aquellos que tienen MRI T1 y PET-Tau al mismo tiempo. Entonces simplemente escogo algunos sujetos y bajo las dos imagenes (MRI y PET) que matcheen bien (uy que palabreja). Los tags son muy distintos aqui asi que debo revisar bien el proceso de conversion a BIDS. Pero con unos 50 MRI que se convierten automaticamente tengo para empezar. Despues tocara revisar que los PETs esten OK.

Entonces sigo el procedimiento usual de cualquier proyecto, hago la DB, convierto a BIDS, paso el recon a todas las MRI. Primero vamos a construir el proyecto de la manera usual y a ejecutar la segmentacion de Freesurfer.

[osotolongo@brick03 ttau]$ make_proj.pl ttau /old_nas/ttau/raw/ADNI/
[osotolongo@brick03 ttau]$ update_mri_db.pl ttau
[osotolongo@brick03 ttau]$ ls
bids  ids.csv  raw  ttau_mri.csv  working
[osotolongo@brick03 ttau]$ cd bids/
[osotolongo@brick03 bids]$ dcm2bids_scaffold 
[osotolongo@brick03 bids]$ dcm2bids_helper -d /old_nas/ttau/raw/ADNI/002_S_0413/
Example in:
/old_nas/ttau/bids/tmp_dcm2bids/helper
[osotolongo@brick03 bids]$ cat /old_nas/ttau/bids/tmp_dcm2bids/helper/002_002_S_0413_Accelerated_Sagittal_MPRAGE_20170621132338.json | jq ".SeriesDescription"
"Accelerated_Sagittal_MPRAGE"
[osotolongo@brick03 bids]$ cat /old_nas/ttau/bids/tmp_dcm2bids/helper/324840_002_S_0413_ADNI_Brain_PET__Raw_20170621152221.json | jq ".SeriesDescription"
"ADNI_Brain_PET:_Raw"
...
...
...
[osotolongo@brick03 ttau]$ bulk2bids.pl ttau
...
...
...
[osotolongo@brick03 ttau]$ precon.pl ttau

Bueno, no es tan simple porque hay la conversion a BIDS hay que hacerla a mano en algunos casos, revisar tres veces todo, etc, pero basicamente es lo que hay que hacer para cualquier proyecto.

Y entonces es que lanzo el tau_proc.pl.

[osotolongo@brick03 ttau]$ tau_proc.pl ttau
Collecting needed files
Running shit
[osotolongo@brick03 ttau]$ squeue
             JOBID PARTITION     NAME     USER ST       TIME  NODES NODELIST(REASON) 
             24897      fast tau_rois osotolon PD       0:00      1 (Dependency) 
             24898      fast tau_rois osotolon PD       0:00      1 (Dependency) 
             24899      fast tau_rois osotolon PD       0:00      1 (Dependency) 
...
             25468      fast tau_rois osotolon  R       0:01      1 brick04 
             25479      fast tau_rois osotolon  R       0:01      1 brick04 
             25490      fast tau_rois osotolon  R       0:01      1 brick04 
             25501      fast tau_rois osotolon  R       0:01      1 brick04 
[osotolongo@brick03 ttau]$ squeue | wc -l
619

Puede que falle alguno de los sujetos en cuyo caso se repite para este y las metricas salen para todos

[osotolongo@brick03 ttau]$ ls ttau_tau_suvr_*
ttau_tau_suvr_ewm_pvc.csv  ttau_tau_suvr_ewm_unc.csv  ttau_tau_suvr_icgm_pvc.csv  ttau_tau_suvr_icgm_unc.csv

Voy a coger uno cualquiera,

[osotolongo@brick03 ttau]$ head ttau_tau_suvr_ewm_pvc.csv
Subject, braak_1, braak_2, braak_3, braak_4, braak_5, braak_6
0001, 1.44483375159353, 1.542037154334, 1.68067637885554, 1.64863738043504, 1.7229901461639, 1.67999486862888
0002, 1.48708315130333, 1.33939614581816, 1.61751371292656, 1.61595553613902, 1.73767778263191, 1.71424688121936
0003, 1.9650963436256, 1.8743393102064, 1.79994898471214, 1.64887682735088, 1.66973455323989, 1.7693272672532
0004, 1.86972155598144, 1.47172525122697, 1.77916508872797, 1.7092461469606, 1.88224178228654, 1.83245160031674
0005, 1.37786202498854, 1.27174541179284, 1.52766873243927, 1.43915270111392, 1.50966462746348, 1.61955741984337
0006, 1.4514188475063, 1.17718144895938, 1.53763984073279, 1.55371280053709, 1.55088108801574, 1.52661876242198
0007, 2.56283422459893, 1.39576528400058, 2.57994652406417, 2.66047839283133, 2.43327793033675, 1.79630726983668
0008, 2.677682894831, 1.52617894711733, 2.26320873983255, 2.95362330940057, 2.61091763471126, 1.93361042864299
0009, 1.87077072644842, 1.75846335993224, 1.82703173579494, 1.77024997834227, 1.79149380588898, 1.69506877532751
[osotolongo@brick03 ttau]$ sed 's/;/,/;1iSubject,PTID' ttau_mri.csv > codes.csv
[osotolongo@brick03 ttau]$ join -t, codes.csv ttau_tau_suvr_ewm_pvc.csv > ewm_pvc.csv
[osotolongo@brick03 ttau]$ head ewm_pvc.csv
Subject,PTID, braak_1, braak_2, braak_3, braak_4, braak_5, braak_6
0001,002_S_0413, 1.44483375159353, 1.542037154334, 1.68067637885554, 1.64863738043504, 1.7229901461639, 1.67999486862888
0002,002_S_1155, 1.48708315130333, 1.33939614581816, 1.61751371292656, 1.61595553613902, 1.73767778263191, 1.71424688121936
0003,002_S_1261, 1.9650963436256, 1.8743393102064, 1.79994898471214, 1.64887682735088, 1.66973455323989, 1.7693272672532
0004,002_S_1280, 1.86972155598144, 1.47172525122697, 1.77916508872797, 1.7092461469606, 1.88224178228654, 1.83245160031674
0005,002_S_4213, 1.37786202498854, 1.27174541179284, 1.52766873243927, 1.43915270111392, 1.50966462746348, 1.61955741984337
0006,002_S_4229, 1.4514188475063, 1.17718144895938, 1.53763984073279, 1.55371280053709, 1.55088108801574, 1.52661876242198
0007,002_S_4262, 2.56283422459893, 1.39576528400058, 2.57994652406417, 2.66047839283133, 2.43327793033675, 1.79630726983668
0008,002_S_4521, 2.677682894831, 1.52617894711733, 2.26320873983255, 2.95362330940057, 2.61091763471126, 1.93361042864299
0009,002_S_4654, 1.87077072644842, 1.75846335993224, 1.82703173579494, 1.77024997834227, 1.79149380588898, 1.69506877532751

y voy a buscar las fechas de los PETs, pues las necesitare mas tarde. Primero voy a copiar cualquier DICOM PET para mirar el AcquisitionDate, en un sitio aparte para que no se me confundan con los MRI.

[osotolongo@brick03 raw]$ for x in `ls ADNI/`; do mkdir CHECK/${x}; done
[osotolongo@brick03 raw]$ for x in `ls ADNI/`; do y=$(ls -d ADNI/${x}/* | grep PET); if [[ ${y} ]]; then f=$(find ${y} -type f | head -n 1); cp $f CHECK/${x}/; fi; done
[osotolongo@brick03 raw]$ tree CHECK/
CHECK/
├── 002_S_0413
│   └── ADNI_002_S_0413_PT_ADNI_Brain_PET__Raw_br_raw_20170622122126095_198_S574062_I863053.dcm
├── 002_S_1155
│   └── ADNI_002_S_1155_PT_ADNI_Brain_PET__Raw_br_raw_20170425132632053_105_S558344_I843576.dcm
├── 002_S_1261
│   └── ADNI_002_S_1261_PT_ADNI_Brain_PET__Raw_br_raw_20170320134605163_460_S547104_I831093.dcm
├── 002_S_1280
│   └── ADNI_002_S_1280_PT_ADNI_Brain_PET__Raw_br_raw_20170315120003807_259_S545652_I829443.dcm
├── 002_S_4213
│   └── ADNI_002_S_4213_PT_ADNI_Brain_PET__Raw_br_raw_20170818105234393_5_S598553_I892242.dcm
├── 002_S_4229
│   └── ADNI_002_S_4229_PT_ADNI_Brain_PET__Raw_br_raw_20171006103626160_184_S618186_I915198.dcm
├── 002_S_4262
│   └── ADNI_002_S_4262_PT_ADNI_Brain_PET__Raw_br_raw_20160226102445166_420_S383619_I641202.dcm
├── 002_S_4521
│   └── ADNI_002_S_4521_PT_ADNI_Brain_PET__Raw_br_raw_20160406143337045_210_S411667_I672710.dcm
├── 002_S_4654
│   └── ADNI_002_S_4654_PT_ADNI_Brain_PET__Raw_br_raw_20160422123234789_222_S426421_I689622.dcm
├── 002_S_4799
│   └── ADNI_002_S_4799_PT_ADNI_Brain_PET__Raw_br_raw_20180615124556282_63_S696406_I1010905.dcm
├── 002_S_5178
│   └── ADNI_002_S_5178_PT_ADNI_Brain_PET__Raw_br_raw_20170601120820611_179_S569644_I857832.dcm
├── 002_S_5230
│   └── ADNI_002_S_5230_PT_ADNI_Brain_PET__Raw_br_raw_20170814143412364_155_S594270_I886723.dcm
├── 002_S_6007
│   └── ADNI_002_S_6007_PT_ADNI_Brain_PET__Raw_br_raw_20170427121132154_62_S558985_I844301.dcm
├── 002_S_6009
│   └── ADNI_002_S_6009_PT_ADNI_Brain_PET__Raw_br_raw_20170516133754120_124_S564181_I851391.dcm
├── 002_S_6030
│   └── ADNI_002_S_6030_PT_ADNI_Brain_PET__Raw_br_raw_20170726144651878_339_S588018_I879426.dcm
├── 002_S_6053
│   └── ADNI_002_S_6053_PT_ADNI_Brain_PET__Raw_br_raw_20170828120721764_236_S601531_I895803.dcm
├── 002_S_6103
│   └── ADNI_002_S_6103_PT_ADNI_Brain_PET__Raw_br_raw_20180322120342372_261_S669417_I976654.dcm
├── 002_S_6456
│   └── ADNI_002_S_6456_PT_ADNI_Brain_PET__Raw_br_raw_20180807132825528_274_S713482_I1032082.dcm
├── 002_S_6652
│   └── ADNI_002_S_6652_PT_ADNI_Brain_PET__Raw_br_raw_20190425134639516_506_S818823_I1158635.dcm
├── 002_S_6695
│   └── ADNI_002_S_6695_PT_ADNI_Brain_PET__Raw_br_raw_20190430114756478_164_S819870_I1159991.dcm
├── 003_S_1122
├── 003_S_4119
├── 003_S_4288
├── 003_S_4441
├── 003_S_4644
├── 003_S_5154
├── 003_S_6014
├── 003_S_6067
├── 003_S_6256
├── 003_S_6257
├── 003_S_6258
├── 003_S_6259
├── 003_S_6260
├── 003_S_6264
├── 003_S_6268
├── 003_S_6307
├── 003_S_6432
├── 003_S_6606
├── 003_S_6644
├── 011_S_0021
├── 011_S_6303
├── 011_S_6367
├── 011_S_6465
├── 011_S_6714
├── 012_S_4094
│   └── ADNI_012_S_4094_PT_PET_AC_3D_BRAIN__br_raw_20191217141112685_123_S906083_I1267876.dcm
├── 012_S_4188
│   └── ADNI_012_S_4188_PT_PET_AC_3D_BRAIN__br_raw_20191120135313594_198_S898709_I1258492.dcm
├── 012_S_4643
│   └── ADNI_012_S_4643_PT_PET_AC_3D_BRAIN__br_raw_20160609062740359_108_S459983_I729585.dcm
├── 012_S_6073
│   └── ADNI_012_S_6073_PT_PET_AC_3D_BRAIN__br_raw_20180111122501862_185_S649546_I952534.dcm
├── 012_S_6760
│   └── ADNI_012_S_6760_PT_PET_AC_3D_BRAIN__br_raw_20190812082418032_76_S851921_I1200704.dcm
├── 013_S_2389
│   └── ADNI_013_S_2389_PT_PET_Brain_DYNAMIC_6X5--__br_raw_20180308153859437_613_S665196_I971459.dcm
├── 013_S_6206
│   └── ADNI_013_S_6206_PT_PET_Brain_DYNAMIC_6X5__br_raw_20180726141550509_565_S709086_I1026668.dcm
├── 013_S_6768
│   └── ADNI_013_S_6768_PT_PET_Brain_AV-1451_DYNAMIC__br_raw_20191016130947649_483_S884501_I1241169.dcm
├── 013_S_6780
│   └── ADNI_013_S_6780_PT_PET_Brain_AV-1451_DYNAMIC__br_raw_20191010165106316_85_S883192_I1239588.dcm
├── 014_S_4401
│   └── ADNI_014_S_4401_PT_ADNI_Brain_PET__Raw_br_raw_20171121162212250_113_S635424_I935447.dcm
├── 023_S_0031
│   └── ADNI_023_S_0031_PT_PET_Brain_TAU__2___AC__br_raw_20190423173518567_12_S817876_I1157437.dcm
├── 067_S_0056
└── 067_S_0059

Me faltan,

[osotolongo@brick03 raw]$ for x in `ls ADNI/`; do y=$(ls -d ADNI/${x}/* | grep 1451); if [[ ${y} ]]; then f=$(find ${y} -type f | head -n 1); cp $f CHECK/${x}/; fi; done
[osotolongo@brick03 raw]$ tree CHECK/
CHECK/
├── 002_S_0413
│   └── ADNI_002_S_0413_PT_ADNI_Brain_PET__Raw_br_raw_20170622122126095_198_S574062_I863053.dcm
├── 002_S_1155
│   └── ADNI_002_S_1155_PT_ADNI_Brain_PET__Raw_br_raw_20170425132632053_105_S558344_I843576.dcm
├── 002_S_1261
│   └── ADNI_002_S_1261_PT_ADNI_Brain_PET__Raw_br_raw_20170320134605163_460_S547104_I831093.dcm
├── 002_S_1280
│   └── ADNI_002_S_1280_PT_ADNI_Brain_PET__Raw_br_raw_20170315120003807_259_S545652_I829443.dcm
├── 002_S_4213
│   └── ADNI_002_S_4213_PT_ADNI_Brain_PET__Raw_br_raw_20170818105234393_5_S598553_I892242.dcm
├── 002_S_4229
│   └── ADNI_002_S_4229_PT_ADNI_Brain_PET__Raw_br_raw_20171006103626160_184_S618186_I915198.dcm
├── 002_S_4262
│   └── ADNI_002_S_4262_PT_ADNI_Brain_PET__Raw_br_raw_20160226102445166_420_S383619_I641202.dcm
├── 002_S_4521
│   └── ADNI_002_S_4521_PT_ADNI_Brain_PET__Raw_br_raw_20160406143337045_210_S411667_I672710.dcm
├── 002_S_4654
│   └── ADNI_002_S_4654_PT_ADNI_Brain_PET__Raw_br_raw_20160422123234789_222_S426421_I689622.dcm
├── 002_S_4799
│   └── ADNI_002_S_4799_PT_ADNI_Brain_PET__Raw_br_raw_20180615124556282_63_S696406_I1010905.dcm
├── 002_S_5178
│   └── ADNI_002_S_5178_PT_ADNI_Brain_PET__Raw_br_raw_20170601120820611_179_S569644_I857832.dcm
├── 002_S_5230
│   └── ADNI_002_S_5230_PT_ADNI_Brain_PET__Raw_br_raw_20170814143412364_155_S594270_I886723.dcm
├── 002_S_6007
│   └── ADNI_002_S_6007_PT_ADNI_Brain_PET__Raw_br_raw_20170427121132154_62_S558985_I844301.dcm
├── 002_S_6009
│   └── ADNI_002_S_6009_PT_ADNI_Brain_PET__Raw_br_raw_20170516133754120_124_S564181_I851391.dcm
├── 002_S_6030
│   └── ADNI_002_S_6030_PT_ADNI_Brain_PET__Raw_br_raw_20170726144651878_339_S588018_I879426.dcm
├── 002_S_6053
│   └── ADNI_002_S_6053_PT_ADNI_Brain_PET__Raw_br_raw_20170828120721764_236_S601531_I895803.dcm
├── 002_S_6103
│   └── ADNI_002_S_6103_PT_ADNI_Brain_PET__Raw_br_raw_20180322120342372_261_S669417_I976654.dcm
├── 002_S_6456
│   └── ADNI_002_S_6456_PT_ADNI_Brain_PET__Raw_br_raw_20180807132825528_274_S713482_I1032082.dcm
├── 002_S_6652
│   └── ADNI_002_S_6652_PT_ADNI_Brain_PET__Raw_br_raw_20190425134639516_506_S818823_I1158635.dcm
├── 002_S_6695
│   └── ADNI_002_S_6695_PT_ADNI_Brain_PET__Raw_br_raw_20190430114756478_164_S819870_I1159991.dcm
├── 003_S_1122
│   └── ADNI_003_S_1122_PT_ADNI3_av-1451__AC__br_raw_20171019121957192_634_S622410_I920110.dcm
├── 003_S_4119
│   └── ADNI_003_S_4119_PT_ADNI3_av-1451__AC__br_raw_20191024101644788_318_S887685_I1245124.dcm
├── 003_S_4288
│   └── ADNI_003_S_4288_PT_ADNI3_av-1451__AC__br_raw_20180301152746113_94_S663344_I969266.dcm
├── 003_S_4441
│   └── ADNI_003_S_4441_PT_ADNI3_av-1451__AC__br_raw_20190425141845749_602_S818825_I1158637.dcm
├── 003_S_4644
│   └── ADNI_003_S_4644_PT_ADNI3_av-1451__AC__br_raw_20180418155808610_128_S677845_I987120.dcm
├── 003_S_5154
│   └── ADNI_003_S_5154_PT_ADNI3_av-1451__AC__br_raw_20180913144127683_168_S726965_I1048272.dcm
├── 003_S_6014
│   └── ADNI_003_S_6014_PT_ADNI3_av-1451__AC__br_raw_20180411104621424_608_S675426_I984154.dcm
├── 003_S_6067
│   └── ADNI_003_S_6067_PT_ADNI3_av-1451__AC__br_raw_20180314150648891_332_S667020_I973677.dcm
├── 003_S_6256
│   └── ADNI_003_S_6256_PT_ADNI3_AV-1451__AC__br_raw_20180710101539021_58_S702929_I1019022.dcm
├── 003_S_6257
│   └── ADNI_003_S_6257_PT_ADNI3_av-1451__AC__br_raw_20180330133302322_350_S672236_I980135.dcm
├── 003_S_6258
│   └── ADNI_003_S_6258_PT_ADNI3_av-1451__AC__br_raw_20180502165119864_598_S681920_I992116.dcm
├── 003_S_6259
│   └── ADNI_003_S_6259_PT_ADNI3_av-1451__AC__br_raw_20180518161343520_30_S687345_I999771.dcm
├── 003_S_6260
│   └── ADNI_003_S_6260_PT_ADNI3_AV-1451__AC__br_raw_20180730160933950_194_S710691_I1028655.dcm
├── 003_S_6264
│   └── ADNI_003_S_6264_PT_ADNI3_av-1451__AC__br_raw_20181206135747230_262_S755211_I1082828.dcm
├── 003_S_6268
│   └── ADNI_003_S_6268_PT_ADNI3_av-1451__AC__br_raw_20180822110628592_620_S720092_I1039770.dcm
├── 003_S_6307
│   └── ADNI_003_S_6307_PT_ADNI3_av-1451__AC__br_raw_20190814170919421_474_S858406_I1208729.dcm
├── 003_S_6432
│   └── ADNI_003_S_6432_PT_ADNI3_av-1451__AC__br_raw_20190726154159037_552_S845026_I1191956.dcm
├── 003_S_6606
│   └── ADNI_003_S_6606_PT_ADNI3_av-1451__AC__br_raw_20190304155918547_66_S803257_I1138703.dcm
├── 003_S_6644
│   └── ADNI_003_S_6644_PT_ADNI3_av-1451__AC__br_raw_20190219125639038_134_S798424_I1132421.dcm
├── 011_S_0021
│   └── ADNI_011_S_0021_PT_ADNI3_AV1451__AC___br_raw_20180209092946315_455_S657348_I961935.dcm
├── 011_S_6303
│   └── ADNI_011_S_6303_PT_ADNI3_AV1451__AC___br_raw_20180508091001800_37_S683222_I994488.dcm
├── 011_S_6367
│   └── ADNI_011_S_6367_PT_ADNI3_AV1451__AC___br_raw_20180605090017512_268_S691948_I1005530.dcm
├── 011_S_6465
│   └── ADNI_011_S_6465_PT_ADNI3_AV1451__AC___br_raw_20180816124040325_474_S717388_I1036653.dcm
├── 011_S_6714
│   └── ADNI_011_S_6714_PT_ADNI3_AV1451__AC___br_raw_20190725105029277_209_S844033_I1190652.dcm
├── 012_S_4094
│   └── ADNI_012_S_4094_PT_PET_AC_3D_BRAIN__br_raw_20191217141112685_123_S906083_I1267876.dcm
├── 012_S_4188
│   └── ADNI_012_S_4188_PT_PET_AC_3D_BRAIN__br_raw_20191120135313594_198_S898709_I1258492.dcm
├── 012_S_4643
│   └── ADNI_012_S_4643_PT_PET_AC_3D_BRAIN__br_raw_20160609062740359_108_S459983_I729585.dcm
├── 012_S_6073
│   └── ADNI_012_S_6073_PT_PET_AC_3D_BRAIN__br_raw_20180111122501862_185_S649546_I952534.dcm
├── 012_S_6760
│   └── ADNI_012_S_6760_PT_PET_AC_3D_BRAIN__br_raw_20190812082418032_76_S851921_I1200704.dcm
├── 013_S_2389
│   └── ADNI_013_S_2389_PT_PET_Brain_DYNAMIC_6X5--__br_raw_20180308153859437_613_S665196_I971459.dcm
├── 013_S_6206
│   └── ADNI_013_S_6206_PT_PET_Brain_DYNAMIC_6X5__br_raw_20180726141550509_565_S709086_I1026668.dcm
├── 013_S_6768
│   └── ADNI_013_S_6768_PT_PET_Brain_AV-1451_DYNAMIC__br_raw_20191016130947649_483_S884501_I1241169.dcm
├── 013_S_6780
│   └── ADNI_013_S_6780_PT_PET_Brain_AV-1451_DYNAMIC__br_raw_20191010165106316_85_S883192_I1239588.dcm
├── 014_S_4401
│   └── ADNI_014_S_4401_PT_ADNI_Brain_PET__Raw_br_raw_20171121162212250_113_S635424_I935447.dcm
├── 023_S_0031
│   └── ADNI_023_S_0031_PT_PET_Brain_TAU__2___AC__br_raw_20190423173518567_12_S817876_I1157437.dcm
├── 067_S_0056
│   └── ADNI_067_S_0056_PT_AV1451.TAU_Dyn_6x5min_2Di_336_2z_AllPass__AC___br_raw_20190115195420753_396_S785330_I1116637.dcm
└── 067_S_0059
    └── ADNI_067_S_0059_PT_AV1451.TAU_Dyn_6x5min_2Di_336_2z_AllPass__AC___br_raw_20171214155739398_493_S644301_I946067.dcm
 
57 directories, 57 files

yahoo! Ahora si que puedo sacar las fechas.

[osotolongo@brick03 ttau]$ for x in /nas/data/ttau/raw/CHECK/*; do f=$(find ${x} -type f | head -n 1); d=$(dckey -k "AcquisitionDate" ${f} 2>&1 ); n=$(echo ${x} | awk -F"/" '{print $7}'); echo "${n},${d}"; done | sed '1iPTID,Date'| sort -t, -n -k 1 > dates.csv
[osotolongo@brick03 ttau]$ head dates.csv 
PTID,Date
002_S_0413,20170621
002_S_1155,20170424
002_S_1261,20170315
002_S_1280,20170313
002_S_4213,20170817
002_S_4229,20171003
002_S_4262,20160225
002_S_4521,20160405
002_S_4654,20160421
[osotolongo@brick03 ttau]$ sort -t, -n -k 2 ewm_pvc.csv > ewm_pvc_sorted.csv
[osotolongo@brick03 ttau]$ join -t, -1 1 -2 2 dates.csv ewm_pvc_sorted.csv > ewm_pvc_ok.csv
[osotolongo@brick03 ttau]$ head ewm_pvc_ok.csv
PTID,Date,Subject, braak_1, braak_2, braak_3, braak_4, braak_5, braak_6
002_S_0413,20170621,0001, 1.44483375159353, 1.542037154334, 1.68067637885554, 1.64863738043504, 1.7229901461639, 1.67999486862888
002_S_1155,20170424,0002, 1.48708315130333, 1.33939614581816, 1.61751371292656, 1.61595553613902, 1.73767778263191, 1.71424688121936
002_S_1261,20170315,0003, 1.9650963436256, 1.8743393102064, 1.79994898471214, 1.64887682735088, 1.66973455323989, 1.7693272672532
002_S_1280,20170313,0004, 1.86972155598144, 1.47172525122697, 1.77916508872797, 1.7092461469606, 1.88224178228654, 1.83245160031674
002_S_4213,20170817,0005, 1.37786202498854, 1.27174541179284, 1.52766873243927, 1.43915270111392, 1.50966462746348, 1.61955741984337
002_S_4229,20171003,0006, 1.4514188475063, 1.17718144895938, 1.53763984073279, 1.55371280053709, 1.55088108801574, 1.52661876242198
002_S_4262,20160225,0007, 2.56283422459893, 1.39576528400058, 2.57994652406417, 2.66047839283133, 2.43327793033675, 1.79630726983668
002_S_4521,20160405,0008, 2.677682894831, 1.52617894711733, 2.26320873983255, 2.95362330940057, 2.61091763471126, 1.93361042864299
002_S_4654,20160421,0009, 1.87077072644842, 1.75846335993224, 1.82703173579494, 1.77024997834227, 1.79149380588898, 1.69506877532751

Data ADNI

A ver que hay dentro,

[osotolongo@brick03 tau]$ head -n 1 UCBERKELEYAV1451_PVC_01_15_21.csv | sed 's/,/\n/g' | cat -n 
     1	"RID"
     2	"VISCODE"
     3	"VISCODE2"
     4	"EXAMDATE"
     5	"INFERIOR_CEREBGM_SUVR"
     6	"INFERIOR_CEREBGM_VOLUME"
     7	"HEMIWM_SUVR"
     8	"HEMIWM_VOLUME"
     9	"BRAAK1_SUVR"
    10	"BRAAK1_VOLUME"
    11	"BRAAK34_SUVR"
    12	"BRAAK34_VOLUME"
    13	"META_TEMPORAL_SUVR"
    14	"META_TEMPORAL_VOLUME"
    15	"BRAAK56_SUVR"
    16	"BRAAK56_VOLUME"
    17	"BRAAK2_SUVR"
    18	"BRAAK2_VOLUME"
    19	"AMYGDALA_SUVR"
    20	"AMYGDALA_VOLUME"
    21	"BRAIN_STEM_SUVR"
    22	"BRAIN_STEM_VOLUME"
    23	"LEFT_MIDDLEFR_SUVR"
    24	"LEFT_MIDDLEFR_VOLUME"
    25	"LEFT_ORBITOFR_SUVR"
    26	"LEFT_ORBITOFR_VOLUME"
    27	"LEFT_PARSFR_SUVR"
    28	"LEFT_PARSFR_VOLUME"
    29	"LEFT_ACCUMBENS_AREA_SUVR"
    30	"LEFT_ACCUMBENS_AREA_VOLUME"
    31	"LEFT_AMYGDALA_SUVR"
    32	"LEFT_AMYGDALA_VOLUME"
    33	"LEFT_CAUDATE_SUVR"
    34	"LEFT_CAUDATE_VOLUME"
    35	"LEFT_HIPPOCAMPUS_SUVR"
    36	"LEFT_HIPPOCAMPUS_VOLUME"
    37	"LEFT_PALLIDUM_SUVR"
    38	"LEFT_PALLIDUM_VOLUME"
    39	"LEFT_PUTAMEN_SUVR"
    40	"LEFT_PUTAMEN_VOLUME"
    41	"LEFT_THALAMUS_PROPER_SUVR"
    42	"LEFT_THALAMUS_PROPER_VOLUME"
    43	"RIGHT_MIDDLEFR_SUVR"
    44	"RIGHT_MIDDLEFR_VOLUME"
    45	"RIGHT_ORBITOFR_SUVR"
    46	"RIGHT_ORBITOFR_VOLUME"
    47	"RIGHT_PARSFR_SUVR"
    48	"RIGHT_PARSFR_VOLUME"
    49	"RIGHT_ACCUMBENS_AREA_SUVR"
    50	"RIGHT_ACCUMBENS_AREA_VOLUME"
    51	"RIGHT_AMYGDALA_SUVR"
    52	"RIGHT_AMYGDALA_VOLUME"
    53	"RIGHT_CAUDATE_SUVR"
    54	"RIGHT_CAUDATE_VOLUME"
    55	"RIGHT_HIPPOCAMPUS_SUVR"
    56	"RIGHT_HIPPOCAMPUS_VOLUME"
    57	"RIGHT_PALLIDUM_SUVR"
    58	"RIGHT_PALLIDUM_VOLUME"
    59	"RIGHT_PUTAMEN_SUVR"
    60	"RIGHT_PUTAMEN_VOLUME"
    61	"RIGHT_THALAMUS_PROPER_SUVR"
    62	"RIGHT_THALAMUS_PROPER_VOLUME"
    63	"CHOROID_SUVR"
    64	"CHOROID_VOLUME"
    65	"CTX_LH_BANKSSTS_SUVR"
    66	"CTX_LH_BANKSSTS_VOLUME"
    67	"CTX_LH_CAUDALANTERIORCINGULATE_SUVR"
    68	"CTX_LH_CAUDALANTERIORCINGULATE_VOLUME"
    69	"CTX_LH_CUNEUS_SUVR"
    70	"CTX_LH_CUNEUS_VOLUME"
    71	"CTX_LH_ENTORHINAL_SUVR"
    72	"CTX_LH_ENTORHINAL_VOLUME"
    73	"CTX_LH_FUSIFORM_SUVR"
    74	"CTX_LH_FUSIFORM_VOLUME"
    75	"CTX_LH_INFERIORPARIETAL_SUVR"
    76	"CTX_LH_INFERIORPARIETAL_VOLUME"
    77	"CTX_LH_INFERIORTEMPORAL_SUVR"
    78	"CTX_LH_INFERIORTEMPORAL_VOLUME"
    79	"CTX_LH_INSULA_SUVR"
    80	"CTX_LH_INSULA_VOLUME"
    81	"CTX_LH_ISTHMUSCINGULATE_SUVR"
    82	"CTX_LH_ISTHMUSCINGULATE_VOLUME"
    83	"CTX_LH_LATERALOCCIPITAL_SUVR"
    84	"CTX_LH_LATERALOCCIPITAL_VOLUME"
    85	"CTX_LH_LINGUAL_SUVR"
    86	"CTX_LH_LINGUAL_VOLUME"
    87	"CTX_LH_MIDDLETEMPORAL_SUVR"
    88	"CTX_LH_MIDDLETEMPORAL_VOLUME"
    89	"CTX_LH_PARACENTRAL_SUVR"
    90	"CTX_LH_PARACENTRAL_VOLUME"
    91	"CTX_LH_PARAHIPPOCAMPAL_SUVR"
    92	"CTX_LH_PARAHIPPOCAMPAL_VOLUME"
    93	"CTX_LH_PERICALCARINE_SUVR"
    94	"CTX_LH_PERICALCARINE_VOLUME"
    95	"CTX_LH_POSTCENTRAL_SUVR"
    96	"CTX_LH_POSTCENTRAL_VOLUME"
    97	"CTX_LH_POSTERIORCINGULATE_SUVR"
    98	"CTX_LH_POSTERIORCINGULATE_VOLUME"
    99	"CTX_LH_PRECENTRAL_SUVR"
   100	"CTX_LH_PRECENTRAL_VOLUME"
   101	"CTX_LH_PRECUNEUS_SUVR"
   102	"CTX_LH_PRECUNEUS_VOLUME"
   103	"CTX_LH_ROSTRALANTERIORCINGULATE_SUVR"
   104	"CTX_LH_ROSTRALANTERIORCINGULATE_VOLUME"
   105	"CTX_LH_SUPERIORFRONTAL_SUVR"
   106	"CTX_LH_SUPERIORFRONTAL_VOLUME"
   107	"CTX_LH_SUPERIORPARIETAL_SUVR"
   108	"CTX_LH_SUPERIORPARIETAL_VOLUME"
   109	"CTX_LH_SUPERIORTEMPORAL_SUVR"
   110	"CTX_LH_SUPERIORTEMPORAL_VOLUME"
   111	"CTX_LH_SUPRAMARGINAL_SUVR"
   112	"CTX_LH_SUPRAMARGINAL_VOLUME"
   113	"CTX_LH_TEMPORALPOLE_SUVR"
   114	"CTX_LH_TEMPORALPOLE_VOLUME"
   115	"CTX_LH_TRANSVERSETEMPORAL_SUVR"
   116	"CTX_LH_TRANSVERSETEMPORAL_VOLUME"
   117	"CTX_RH_BANKSSTS_SUVR"
   118	"CTX_RH_BANKSSTS_VOLUME"
   119	"CTX_RH_CAUDALANTERIORCINGULATE_SUVR"
   120	"CTX_RH_CAUDALANTERIORCINGULATE_VOLUME"
   121	"CTX_RH_CUNEUS_SUVR"
   122	"CTX_RH_CUNEUS_VOLUME"
   123	"CTX_RH_ENTORHINAL_SUVR"
   124	"CTX_RH_ENTORHINAL_VOLUME"
   125	"CTX_RH_FUSIFORM_SUVR"
   126	"CTX_RH_FUSIFORM_VOLUME"
   127	"CTX_RH_INFERIORPARIETAL_SUVR"
   128	"CTX_RH_INFERIORPARIETAL_VOLUME"
   129	"CTX_RH_INFERIORTEMPORAL_SUVR"
   130	"CTX_RH_INFERIORTEMPORAL_VOLUME"
   131	"CTX_RH_INSULA_SUVR"
   132	"CTX_RH_INSULA_VOLUME"
   133	"CTX_RH_ISTHMUSCINGULATE_SUVR"
   134	"CTX_RH_ISTHMUSCINGULATE_VOLUME"
   135	"CTX_RH_LATERALOCCIPITAL_SUVR"
   136	"CTX_RH_LATERALOCCIPITAL_VOLUME"
   137	"CTX_RH_LINGUAL_SUVR"
   138	"CTX_RH_LINGUAL_VOLUME"
   139	"CTX_RH_MIDDLETEMPORAL_SUVR"
   140	"CTX_RH_MIDDLETEMPORAL_VOLUME"
   141	"CTX_RH_PARACENTRAL_SUVR"
   142	"CTX_RH_PARACENTRAL_VOLUME"
   143	"CTX_RH_PARAHIPPOCAMPAL_SUVR"
   144	"CTX_RH_PARAHIPPOCAMPAL_VOLUME"
   145	"CTX_RH_PERICALCARINE_SUVR"
   146	"CTX_RH_PERICALCARINE_VOLUME"
   147	"CTX_RH_POSTCENTRAL_SUVR"
   148	"CTX_RH_POSTCENTRAL_VOLUME"
   149	"CTX_RH_POSTERIORCINGULATE_SUVR"
   150	"CTX_RH_POSTERIORCINGULATE_VOLUME"
   151	"CTX_RH_PRECENTRAL_SUVR"
   152	"CTX_RH_PRECENTRAL_VOLUME"
   153	"CTX_RH_PRECUNEUS_SUVR"
   154	"CTX_RH_PRECUNEUS_VOLUME"
   155	"CTX_RH_ROSTRALANTERIORCINGULATE_SUVR"
   156	"CTX_RH_ROSTRALANTERIORCINGULATE_VOLUME"
   157	"CTX_RH_SUPERIORFRONTAL_SUVR"
   158	"CTX_RH_SUPERIORFRONTAL_VOLUME"
   159	"CTX_RH_SUPERIORPARIETAL_SUVR"
   160	"CTX_RH_SUPERIORPARIETAL_VOLUME"
   161	"CTX_RH_SUPERIORTEMPORAL_SUVR"
   162	"CTX_RH_SUPERIORTEMPORAL_VOLUME"
   163	"CTX_RH_SUPRAMARGINAL_SUVR"
   164	"CTX_RH_SUPRAMARGINAL_VOLUME"
   165	"CTX_RH_TEMPORALPOLE_SUVR"
   166	"CTX_RH_TEMPORALPOLE_VOLUME"
   167	"CTX_RH_TRANSVERSETEMPORAL_SUVR"
   168	"CTX_RH_TRANSVERSETEMPORAL_VOLUME"
   169	"OTHER_SUVR"
   170	"OTHER_VOLUME"
   171	"update_stamp"

Ah, voy a sacar una medida de aqui a ver,

[osotolongo@brick03 tau]$ awk -F"," '{print $1","$4","$9","$7}' UCBERKELEYAV1451_PVC_01_15_21.csv | sed 's/"//g;s/-//g;s/EXAMDATE/Date/' > adni_pvc.csv
[osotolongo@brick03 tau]$ head adni_pvc.csv 
RID,Date,BRAAK1_SUVR,HEMIWM_SUVR
21,20180202,2.2462,1.0244
31,20180424,3.1467,0.8688
31,20190423,3.0552,0.8856
56,20180220,2.4762,1.1414
56,20190110,2.2607,1.2007
56,20191203,2.3225,1.1212
59,20171212,2.2866,1.0762
69,20180403,2.343,1.1652
69,20190123,2.2939,1.0749

y saco del ADNIMERGE la correspondencia de los RID,

[osotolongo@brick03 tau]$ head idcorr.csv
"RID","PTID"
21,"011_S_0021"
31,"023_S_0031"
56,"067_S_0056"
59,"067_S_0059"
69,"100_S_0069"
89,"073_S_0089"
96,"022_S_0096"
112,"127_S_0112"
120,"027_S_0120"

y a mezclar un poco,

[osotolongo@brick03 tau]$ join -t, idcorr_ok.csv adni_pvc.csv > adni_pvc_ok.csv
[osotolongo@brick03 tau]$ head adni_pvc_ok.csv
RID,PTID,Date,BRAAK1_SUVR,HEMIWM_SUVR
21,011_S_0021,20180202,2.2462,1.0244
31,023_S_0031,20180424,3.1467,0.8688
31,023_S_0031,20190423,3.0552,0.8856
56,067_S_0056,20180220,2.4762,1.1414
56,067_S_0056,20190110,2.2607,1.2007
56,067_S_0056,20191203,2.3225,1.1212
59,067_S_0059,20171212,2.2866,1.0762
69,100_S_0069,20180403,2.343,1.1652
69,100_S_0069,20190123,2.2939,1.0749

y vamos a intentar unir los registros correctos,

[osotolongo@brick03 ttau]$ awk -F"," '{print $1"_"$2","$0}' ewm_pvc_ok.csv > ewm_pvc_refact.csv
[osotolongo@brick03 tau]$ awk -F"," '{print $2"_"$3","$0}' adni_pvc_ok.csv > adni_pvc_refact.csv
[osotolongo@brick03 tau]$ head adni_pvc_refact.csv
PTID_Date,RID,PTID,Date,BRAAK1_SUVR,HEMIWM_SUVR
011_S_0021_20180202,21,011_S_0021,20180202,2.2462,1.0244
023_S_0031_20180424,31,023_S_0031,20180424,3.1467,0.8688
023_S_0031_20190423,31,023_S_0031,20190423,3.0552,0.8856
067_S_0056_20180220,56,067_S_0056,20180220,2.4762,1.1414
067_S_0056_20190110,56,067_S_0056,20190110,2.2607,1.2007
067_S_0056_20191203,56,067_S_0056,20191203,2.3225,1.1212
067_S_0059_20171212,59,067_S_0059,20171212,2.2866,1.0762
100_S_0069_20180403,69,100_S_0069,20180403,2.343,1.1652
100_S_0069_20190123,69,100_S_0069,20190123,2.2939,1.0749
[osotolongo@brick03 check]$ pwd
/old_nas/ttau/check
[osotolongo@brick03 check]$ cp /old_nas/ttau/ewm_pvc_refact.csv ./
[osotolongo@brick03 check]$ cp /old_nas/tau/adni_pvc_refact.csv ./
[osotolongo@brick03 check]$ sort -t, -n -k 1 ewm_pvc_refact.csv > ewm_pvc_refact_sorted.csv
[osotolongo@brick03 check]$ sort -t, -n -k 1 adni_pvc_refact.csv > adni_pvc_refact_sorted.csv

Comparando con ADNI

Pegando en bash

Esto lo puedo mirar con R

Después de haber revisado todos los procedimientos, comparado de varias maneras con los datos de ADNI y usado varias maneras de normalización hemos de tomar desiciones.

  1. La normalización se hará por inferior cerebellum gray matter (ICGM) que parece ser la mas estable.
  2. Definitivamente los resultados de ADNI vienen ya normalizados por ICGM, solo hay que sacar los valores de las areas a estudiar. No obstante los corregidos han de normalizarse de nuevo, siguiendo el paper de Baker et al. (Ver metodo de ADNI).

Aqui las comparaciones,

Uncorrected Braak 1 PVCed Braak 1
Uncorrected Meta Temporal PVCed Meta Temporal

How to cite

PET-Tau scans have been processing following ADNI method, freely available at ADNI website for registered researchers [1, 2]. First, the 4D 30min PET image was separated into 6 5min images for movement correction and registered into the T1w subject native space. The regions of interest for calculating SUVR, as well as for normalization, where built using the Freesurfer 6.1 segmentation of the T1w. Partial volume correction was calculated using GTM method [3] with PETPVC [4]. Corrected and uncorrected SUVR where calculated using inferior cerebellum gray matter as region of reference.

[1] http://loni.adni.usc.edu. Flortaucipir (AV-1451) processing methods. (https://adni.bitbucket.io/reference/docs/UCBERKELEYAV1451/UCBERKELEY_AV1451_Methods_2021-01-14.pdf)

[2] Maass, A., et al., Comparison of multiple tau-PET measures as biomarkers in aging and Alzheimer's disease. Neuroimage, 2017. 157: p. 448-463.

[3] Rousset, O.G., Y. Ma, and A.C. Evans, Correction for partial volume effects in PET: principle and validation. J Nucl Med, 1998. 39(5): p. 904-11.

[4] BA Thomas, V Cuplov, A Bousse, A Mendes, K Thielemans, BF Hutton, K Erlandsson. PETPVC: a toolbox for performing partial volume correction techniques in positron emission tomography. Physics in Medicine and Biology 61 (22), 7975.

neuroimagen/tau_analysis.txt · Last modified: 2021/03/06 16:22 by osotolongo