Skip to content

fmriprep

Luis Concha edited this page Jan 8, 2020 · 5 revisions

fmriprep

fMRIPrep es una herramienta desarrollada por el grupo de Russ Poldrack que tiene como objetivo el pre-procesamiento de datos de resonancia funcional (BOLD) para su posterior análisis mediante otras herramientas. El pre-procesamiento de los datos es crucial para cualquier análisis de BOLD, ya sea de tareas, o de resting-state. Existe mucha controversia de cómo deben pre-procesarse los datos (ver, por ejemplo), pues algunas elecciones pueden llevar a diferentes resultados. fMRIPrep facilita la tarea de pre-procesamiento y ofrece varias alternativas que pueden calcularse de forma simultánea, facilitando la tarea del proceso de múltiples versiones de análisis.

Una vez que los datos están organizados en formato BIDS, podemos utilizar Singularity para correr fMRIPrep. Además, utilzando el cluster, que está administrado mediante SGE, se pueden correr varios sujetos de manera paralela. Para facilitar la vida, el script fsl_sub encapsula los comandos necesarios para la utilización del cluster SGE.

⚠️Si vas a correr muchos sujetos de forma simultánea, existe el riesgo de que satures el cluster.. Para evitarlo puedes hacer dos cosas:

  1. Envía tus sujetos de diez en diez.
  2. Solicita mucho RAM para cada uno de los trabajos utilizando el switch -R de fsl_sub.

Aquí abajo hay un ejemplo de un script para enviar a analizar a un grupo de sujetos. En el ejemplo, la carpeta BIDS (asignada a la variable bidsDir) tiene a los sujetos con nomenclatura sub-????, donde cada ? indica un dígito. Es decir, hay desde el sujeto sub-0001 hasta potencialmente el sub-9999. Entonces, para enviar a los sujetos sub-0001 al sub-0009, podemos poner que se procesen los sujetos ${bidsDir}/sub-000? en la línea donde generamos la lista de sujetos a procesar. Como vemos en la línea que invoca a fsl_sub, estamos solicitando 8 GB de RAM para cada trabajo (-R 8).

#!/bin/bash

## Indicamos los lugares donde están los datos.
## Ojo, todos deben estar en algún lugar dentro de /misc
# 1. El contenedor de fmriprep
container=/misc/mansfield/lconcha/containers/fmriprep.img
# 2. La ruta de los datos en formato BIDS
bidsDir=/misc/mansfield/lconcha/bids/datos_Circe
# 3. La ruta donde poner los resultados
outDir=/misc/mansfield/lconcha/TMP/out/test
# 4. Una ruta para archivos temporales
workDir=/misc/mansfield/lconcha/TMP/work



# Necesitamos una licencia de freesurfer
export FS_LICENSE=${FREESURFER_HOME}/.license

# Generamos la lista de sujetos a procesar
subjid=`ls -d ${bidsDir}/sub-000?`

# Enviamos los jobs de uno por uno al cluster.
for s in $subjid
do
  this_subject=`basename $s`
  this_subject=${this_subject/sub-/}
  echo "submitting job for subject $this_subject"
  fsl_sub -N pre_${this_subject} -R 8 \
  singularity run \
  --bind /misc $container \
  ${bidsDir} \
  $outDir \
  participant \
  --participant_label $this_subject \
  --fs-no-reconall \
  --ignore fieldmaps \
  --output-space template \
  -w $workDir \
  --resource-monitor \
  --write-graph
  echo ""
  sleep 1
done

Por supuesto, esto es solo un ejemplo, y la miríada de opciones de fMRIPrep pueden consultarse en el respectivo manual.

Clone this wiki locally