User Tools

Site Tools


neuroimagen:pipe03

This is an old revision of the document!


ACE Pipeline (v0.3.0)

Creando el proyecto

Para comenzar a trabajar es necesario crear la estructura del proyecto, que debe ser fija. Para ello existe el script make_std.pl que toma como argumento el nombre del proyecto y crea un sencillo archivo de configuracion, así como un par de directorios necesarios.

Ejemplo,

$ make_std.pl mopead

crea el archivo $HOME/.config/neuro/mopead.cfg, con la estructura del proyecto,

$ cat ~/.config/neuro/mopead.cfg 
DATA = /nas/osotolongo/data/mopead
DATABASE = /nas/osotolongo/data/mopead/mopead.csv
WORKING = /nas/osotolongo/data/mopead/working
NIFTI = /nas/osotolongo/data/mopead/nifti
MRI = /nas/osotolongo/data/mopead/mri
fMRI = /nas/osotolongo/data/mopead/fmri
DTI = /nas/osotolongo/data/mopead/dti
PET-FDG = /nas/osotolongo/data/mopead/pet-fdg
PET-PIB = /nas/osotolongo/data/mopead/pet-pib
PET-FBB = /nas/osotolongo/data/mopead/fbb
FBB-NC = /nas/osotolongo/data/mopead/fbb_first
SPECT = /nas/osotolongo/data/mopead/spect

Este archivo lo leen todos los demas scripts, así que si es necesario mover algun directorio de sitio,basta con cambiar este archivo para que los scripts busquen la imagenes en el nuevo directorio.

Fuera de crear el directorio del proyecto y el directorio working, el script no hace mas nada. Hay que crear la base de datos del proyecto, que debe tener esta forma,

$ cat mopead.csv 
0001;mop
0002;mop
0003;mop
0004;mop
0005;mop
0006;mop
0007;mop
0008;mop
0009;mop
0010;mop
0011;mop
0012;mop
0013;mop
0014;mop
0015;mop
0016;mop
0017;mop
0018;mop
0019;mop
0020;mop
0021;mop
0022;mop
0023;mop

Esta no es más que una cadena numerica de entre 4 y 6 numeros (no tiene por que ser consecutiva ni estar ordenada) y una cadena de caracteres de entre 1 y 4 caracteres (no tienen que ser iguales, puede usarse para diferenciar grupos), separados por un punto y coma (;). Cuatro numeros y tres caracteres es un buen compromiso.

MRI

La organizacion de las tareas de segmentacion se realizo con el proyecto MOPEAD. Ver la pagina del proyecto para mas info.

Los archivos de imagen T1 deben estar almacenados en el directorio mri dentro del directorio del proyecto y en formato NIfTI-1. Deben ademas ser nombrados de acuerdo a la base de datos del proyecto. El archivo mop0001sXXXX.nii.gz (las X son cualquier numero) es el correspondiente a la linea 0001;mop de la base de datos.

El script fsl2fs.pl crea la estructura de freesurfer del sujeto y convierte los archivos T1 en el formato y estructura necesarios para ejecutar la segmentacion de freesurfer. Envía un email cuando termina. Las opciones son,

  • -a, adjunta el archivo log al email
  • -cut, para hacer solo un subconjunto de los archivos. Ver mas abajo en Opciones comunes.

Así,

$ fsl2fs.pl mopead

crea la estructura y convierte todos los T1 en mopead/mri hacia $SUBJECTS_DIR/mopead_mopXXXX/mri/orig/XXX.mgz

$ ls /nas/data/mopead/mri
mop0001s0005.nii.gz  mop0007s0005.nii.gz  mop0013s0005.nii.gz  mop0019s0005.nii.gz
mop0002s0005.nii.gz  mop0008s0005.nii.gz  mop0014s0005.nii.gz  mop0020s0005.nii.gz
mop0003s0005.nii.gz  mop0009s0005.nii.gz  mop0015s0005.nii.gz  mop0021s0005.nii.gz
mop0004s0005.nii.gz  mop0010s0005.nii.gz  mop0016s0005.nii.gz  mop0022s0005.nii.gz
mop0005s0005.nii.gz  mop0011s0005.nii.gz  mop0017s0005.nii.gz  mop0023s0005.nii.gz
mop0006s0005.nii.gz  mop0012s0005.nii.gz  mop0018s0005.nii.gz

$ ls -d /nas/data/subjects/mopead_*
/nas/data/subjects/mopead_mop0001  /nas/data/subjects/mopead_mop0013
/nas/data/subjects/mopead_mop0002  /nas/data/subjects/mopead_mop0014
/nas/data/subjects/mopead_mop0003  /nas/data/subjects/mopead_mop0015
/nas/data/subjects/mopead_mop0004  /nas/data/subjects/mopead_mop0016
/nas/data/subjects/mopead_mop0005  /nas/data/subjects/mopead_mop0017
/nas/data/subjects/mopead_mop0006  /nas/data/subjects/mopead_mop0018
/nas/data/subjects/mopead_mop0007  /nas/data/subjects/mopead_mop0019
/nas/data/subjects/mopead_mop0008  /nas/data/subjects/mopead_mop0020
/nas/data/subjects/mopead_mop0009  /nas/data/subjects/mopead_mop0021
/nas/data/subjects/mopead_mop0010  /nas/data/subjects/mopead_mop0022
/nas/data/subjects/mopead_mop0011

$ ls /nas/data/subjects/mopead_mop0001/mri/orig/
001.mgz

Ya la estructura esta preparada para lanzar la segmentación. Para esto es el script precon.pl, con las opciones,

  • -a, adjunta el archivo log al email
  • -cut, para hacer solo un subconjunto de los sujetos. Ver Opciones comunes.

La orden,

$ precon.pl mopead

lanza la segmentacion de freesurfer al cluster, repartiendo las tareas en caso necesario entre las distintas maquinas. El script lanza todos los procesos en paralelo bajo la misma tarea por lo que si hay algín problema con la segmentación la tarea seguirá indefinidamente. Si se prolonga demasiado habra que matar la tarea. Para todo esto es necesario utilizar las herramientas de slurm. Ver mas abajo en Opciones comunes y revisar Como usar el cluster sin morir en el intento.

Para comprobar si hay algun error se lanza otro script,

$ check_fs_run.pl mopead

Este lee los logs de freesurfer, busca los errores e informa los sujetos que estan mal. Ojo, que si hubo un error previo, hay que borrar los logs antes de relanzar la segmentacion.

Tras esto solo queda sacar las metricas,

$ mri_metrics.pl mopead

que devuelve el archivo mopead_mri.csv con los resultados.

DTI

Para la redefinicion del calculo DTI se ha utilizado el proyecto MOPEAD. Ver la pagina de este proyecto para mas info sobre como funcionan las herramientas.

Preprocesamiento

Los archivos de DTI deben estar almacenados en el directorio dti dentro del directorio del proyecto y en formato NIfTI-1. Deben ademas ser nombrados de acuerdo a la base de datos del proyecto. El archivo mop0001sXXXX.nii.gz (las X son cualquier numero) es el correspondiente a la linea 0001;mop de la base de datos. Deben existir ademas los archivos mop0001sXXXX.bval y mop0001sXXXX.bvec. En caso de tenerlo, el archivo mop0001_p2a_b0.nii.gz, permite hacer correccion de susceptibilidad.

De cara al cluster, hay dos maneras de ejecutar el procesamiento DTI. Los scripts dti_reg.pl y dti_reg_split.pl hacen exactamente lo mismo pero mientras el primero lanza todas las tareas en el mismo trabajo, el segundo lanza una tarea por trabajo permitiendo un control individual del proceso de cada sujeto a cambio de velocidad de procesamiento. Dependiendo de las opciones, la cantidad de sujetos y los fallos que se obtenga en el proceso es preferible uno o el otro.

Las opciones son,

  • -cut, (Ver Opciones comunes)
  • -nocorr, no realiza correciones (para cuando no existe el P»A)
  • -legacy, en lugar de la versión moderna de eddy utiliza eddy_correct y es util para los casos en que falla el procesamiento.

Por ejemplo,

$ dti_reg_split -nocorr -cut soloestos.csv facehbi

procesara los sujetos contenidos en el archivo soloestos.csv que pertenezcan al proyecto facehbi sin realizar correciones por suceptibilidad.

Los valores de FA y MD se obtienen ejecutando dti_metrics.pl. Este script calcula, y envia la tabla por email, estos valores en las regiones de referencia definidos por los atlas de la JHU. Por defecto utiliza el JHU white-matter tractography atlas. Las opciones son,

  • -l, no envía la tabla por email
  • -a1, usa el ICBM-DTI-81 white-matter labels atlas
  • -a2, usa el JHU white-matter tractography atlas
  • -sd, incluye tambien las desviaciones standard

Tractografía

Para la tractografia se utliza el script dti_track.pl. Este script ejecuta bedpostx y probtrackx sobre los sujetos del proyecto. Para ejecutar este script es necesario crear el archivo dti_tracks.seed en el directorio del proyecto. Este archivo contiene las ROI que se utilizaran como mascara para probtrackx. Por defecto se utiliza la segmentacion de freesurfer y las ROI se indican por el indice que se puede ver en FreeSurferColorLUT.txt.

Las opciones son,

  • -cut (Ver Opciones comunes)
  • -slow: ejecuta bedpost sin utlizar el cluster (desaconsejada)
  • -uofm: utiliza el atlas de la UofM, en lugar de la segmentacion de freesurfer
  • -s2t: ejecuta probtrackx con clasificación de targets. Necesita los archivos dti_track.seed y dti_track.targets

Por ejemplo para ejecutar el script con los hipocampos como mascara,

$ cat dti_track.seed 
17
53
 
$ dti_track.pl mopead

Para ejecutar esto mismo en el Default Mode Network dorsal, definido por el atlas de la UofM,

$ dti_track.pl -uofm DMN_dorsal mopead

Para hacer un seed to targets del nodo 1 de la Laguage Network, de este atlas, a los demas nodos,

$ cat dti_track.seed 
mri_LN1.nii
 
$ cat dti_track.targets 
mri_LN2.nii
mri_LN3.nii
mri_LN4.nii
mri_LN5.nii
mri_LN6.nii
mri_LN7.nii
 
$ dti_track.pl -s2t -uofm LN mopead

PET-FDG

El primer paso para analizar las imágenes PET-FDG es registrarlas al espacio MNI. Para ello es necesario tener las imágenes MRI previamente procesadas con Freesurfer. El script es capaz de buscar y convertir las imágenes necesarias y copiarlas al directorio working.

El comando a utilizar para el coregistro es,

$ pet_reg.pl estudio

Las opciones son,

  • -cut, -a, -l, (Ver Opciones comunes)
  • -norm, normaliza las imagenes entre 0 y 1

El script de registro en el espacio MNI produce además un informe de dicho registro en el archivo working/pets/index.html que puede consultarse para comprobar que el registro de todas las imágenes se haya producido satisfactoriamente. Tras esto solo hay que decidir que normalización ha de hacerse y que ROI debe analizarse. Por ejemplo,

cd working; for x in *_pet_inMNI*; do a=`echo $x | awk -F"_" '{print $1}' | sed 's/mci//;s/hc//'`; b=`fslstats $x -k /opt/neuro.dev/lib/bin_rpons_vermis.nii.gz -M`; c=`fslstats $x -k  /opt/neuro.dev/lib/ADNI_Composite.nii.gz -M`; echo $a, `echo $c/$b | bc -l` ; done > ../slandau.csv

normaliza por el pons todos los PET-FDG de los sujetos catalogados como mci o hc y halla el valor medio de la ROI de trabajo de ADNI. Esta linea está aquí a modo de ejemplo pero también puede hacerse con el comando,

$ parallel_fdg_adniroi_metrics.pl estudio

que deja los resultados en el archivo, estudio_fdg_adni_suvr_predef.csv. Ver más sobre las ROI de ADNI.

Tambien pueden obtenerse estos valores en toda la segmentacion de freesurfer, normalizados por pons,

$ pet_fdg_rois_metrics.pl estudio

o normalizados por el cerebelo,

$ pet_fs_roi_metrics.pl estudio

PET-PIB

Las imagenes PET-PIB se registran al espacio anatomico del sujeto,

$ pib_reg.pl estudio

Las opciones son,

  • -cut, -a, -l, (Ver Opciones comunes)
  • -useb, utiliza el cerebro extraido para hacer el registro
  • -usem, registra una mascara del PET-PIB al espacio de sujeto y utliza esta informacion para registrar la imagen

Nota: Las imagenes PIB son bastante problematicas de registrar, por ello aqui las opciones -useb y -usem, asi como el informe del registro. Se ha de inspeccionar visualmente el registro y relanzar con estas opciones en los sujetos que no haya funcionado.

Luego se extrae el valor medio de la captacion en el cortex (en las 5 regiones que todo el mundo usa), normalizado por el cerebelo,

$ parallel_pib_rois_metrics.pl estudio

los resultados se escriben en el archivo estudio_pib_fs_suvr_predef.csv.

PET-FBB

Esta herramienta se creo ustilizando el estudio FACEHBI como piloto. El procedimiento sigue las lineas de este estudio. Se reciben 4 imagenes, cada una integrando 5 minutos. Las imagenes se coregistran independientemente al espacio del sujeto y se luego promedian. Para ello,

$ fbb_correct.pl estudio

Las opciones son,

  • -cut, (Ver Opciones comunes)
  • -usem, registra una mascara de los FBB y usa la informacion para registrar las imagenes
  • -useb, registra los FBB al cerebro extraido
  • -useg, registra uno de los FBB y usa la informacion para registrar el resto

Tras esto, se extrae el valor medio en el cortex (si, en las mismas 5 regiones), normalizado por el valor en la materia gris del cerebelo,

$ parallel_fbb_rois_metrics.pl estudio

los resultados se escriben en el archivo estudio_fbb_fs_suvr_predef.csv.

fMRI

Opciones comunes

Para realizar la misma tarea se usan en cada script las mismas opciones de entrada.

  • -cut: toma una archivo .csv como argumento y ejecuta el script solo sobre los sujetos nombrados en ese archivo. Este archivo debe tener el mismo formato que la base de datos del proyectoy debe ser un subconjunto de ella. O sea, solo se ejecutara el script sobre los sujetos que tambien esten en la base de datos del proyecto.
    script.pl -cut soloestos.csv proyecto

    ejecutara script.pl sobre los sujetos que esten en los archivos soloestos.csv y proyecto.csv. Esto es util para cuando se desea ejecutar el procesamiento sobre sujetos que llegan nuevos o repetir algunos sujetos.

  • -a: Envía como attachment los resultados finales o los logs que producen los scripts
  • -l: Cuando por defecto el script envía attachments, esta opción evita que los haga
neuroimagen/pipe03.1541588446.txt.gz · Last modified: 2020/08/04 10:45 (external edit)