Table of Contents
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
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.
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
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.
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
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
Wrapper
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
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.
- La normalización se hará por inferior cerebellum gray matter (ICGM) que parece ser la mas estable.
- 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,
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.