El siguiente manual tiene como objetivo guiar a los estudiantes del grupo Imagine en el uso de Freesurfer para registro y análisis de imágenes de cerebro. Esta introducción no pretende ser un curso oficial ni remplazar la documentación del sitio oficial(official wiki), solo poner a disposición de los estudiantes del grupo algunas de las herramientas y scripts útiles en el manejo de esta herramienta.
Para el correcto funcionamiento de freesurfer es necesario establecer dos variables de entorno, normalmente la primera de ellas se debe configurar en la instalación del programa FREESURFER_HOME
y debe contener la ruta al directorio de instalación de freesurfer. La segunda es específica, en ella se indica la ruta a las imágenes que van a ser utilizadas en el proceso de análisis y reconstrucción, SUBJECTS_DIR
.
A continuación se listan las acciones mínimas para correr el programa de recondtrucción cortical sobre una imagen MRI, en alguno de los formatos reconocidos por freesrufer.
1 - Establecer las variable de entorno.
2 - Crear los subdirectorios donde se guardaran las imagenes y resultados del proceso.
3 - Convertir la imagen .nii.gz en .mgz para el proceso de reconstrucción total.
4 - Llamar al script que hace la reconstrucción completa del cerebro.
5 - Verificar los resultados y corregir de ser necesario, al corregir los resultados puede ser necesario volver a lanzar el proceso indicando que se esta relanzando de esta manera tomara en cuenta los cambios hachos manualmente en los archivos
Lo primero que debe hacer es lanzar una consola de ejecución de comandos, i.e. gnome-terminal, konsole, commander, etc. En lo particular yo prefiero trabajar con konsole, pues utiliza un núcleo de procesamiento diferente con cada pestaña. Una vez en ella dirijase al directorio en donde tiene la imagen que va a analizar, esto se hace a través del comando cd. Si no tiene ninguna estructura o sitio preferido para las imágenes, es una buena practica definir una, comience creando una carpeta, para este ejercicio nosotros creamos al carpeta freesurferTest en nuestro directorio de imágenes médicas. A continuación se muestra la estructura de archivos inicial del ejercicio.
$HOME
|-- Documents
|-- MedicalImages
|-- freesurferTest
En este ejercico vamos a trabajar con una imagen de prueba en formato Nifti llamada sujetoPrueba.nii.gz la cual vamos a ubicar dentro de la carpeta freesurferTest. Una vez la imagen fué copiada estamos listos para comenzar.
$HOME
|-- MedicalImages
|-- freesurferTest
|-- sujetoPrueba.nii.gz
cd $HOME/MedicalImages/freesurferTest
.FREESURFER_HOME
este bien configurada, suponiendo que instalo freesurfer en /usr/local/freesurfer
, la variable debería apuntar a esa carpeta, para ver el contenido de la variable de entorno en la consola digite: [~]$ echo $FREESURFER_HOME
el resultado debe ser /usr/local/freesurfer
. En caso de no estar bien configurada debe establecerla, para esto debe digitar la siguiente instrucción, tenga en cuenta que esta instrucción depende de si es bash o tcsh[~]$ export $FREESURFER_HOME=/usr/local/freesurfer
[~]$ setenv $FREESURFER_HOME=/usr/local/freesurfer
$SUBJECTS_DIR
este bien establecida, la variable debe apuntar al directorio en donde tenemos las imágenes a analizar, en este caso $HOME/MedicalImages/freesurferTest
si no existe o muestra otro valor debe crearla como en paso anterior, a continuación un ejemplo usando bash como interprete de comandos [~]$ export SUBJECTS_DIR=$HOME/MedicalImages/freesurferTest
.[~]$ mksubjdirs Resultados
al finalizar se crea una carpeta con el nombre indicado por el argumento con la siguiente estructura:$HOME
|-- MedicalImages
|-- freesurferTest
|-- sujetoPrueba.nii.gz
|-- Resultados
|-- bem
|-- label
|-- morph
|-- mpg
|-- mri
|-- aseg
|-- brain
|-- filled
|-- flash
|-- parameter_maps
|-- fsamples
|-- norm
|-- orig
|-- T1
|-- tmp
|-- transforms
|-- wm
|-- rgb
|-- scripts
|-- stats
|-- surf
|-- tiff
|-- tmp
|-- touch
Resultados/mri/orig
, para esto digitamos la instrucción [~]$ mri_convert sujetoPrueba.nii.gz Resultados/mri/orig/001.mgz
. Esta instrucción crea la imagen 001.mgz en el directorio indicado.$HOME
|-- MedicalImages
|-- freesurferTest
|-- sujetoPrueba.nii.gz
|-- Resultados
|-- mri
|-- orig
|-- 001.mgz
[~]$ recon-all -autorecon-all -subjid Resultados
. La ejecución de este toma entre 12 y 14 horas en un solo núcleo de porcesamiento a 2.2 Ghz.$HOME
|-- freesurferTest
. |-- sujetoPrueba.nii.gz
. |-- Resultados
. . |-- bem
. . |-- label
. . . |-- aparc.annot.a2009s.ctab
. . . |-- aparc.annot.ctab
. . . |-- BA.ctab
. . . |-- lh.aparc.a2009s.annot
. . . |-- lh.aparc.annot
. . . |-- lh.BA1.label
. . . |-- lh.BA2.label
. . . |-- lh.BA3a.label
. . . |-- lh.BA3b.label
. . . |-- lh.BA44.label
. . . |-- lh.BA45.label
. . . |-- lh.BA4a.label
. . . |-- lh.BA4p.label
. . . |-- lh.BA6.label
. . . |-- lh.BA.annot
. . . |-- lh.cortex.label
. . . |-- lh.entorhinal_exvivo.label
. . . |-- lh.MT.label
. . . |-- lh.V1.label
. . . |-- lh.V2.label
. . . |-- rh.aparc.a2009s.annot
. . . |-- rh.aparc.annot
. . . |-- rh.BA1.label
. . . |-- rh.BA2.label
. . . |-- rh.BA3a.label
. . . |-- rh.BA3b.label
. . . |-- rh.BA44.label
. . . |-- rh.BA45.label
. . . |-- rh.BA4a.label
. . . |-- rh.BA4p.label
. . . |-- rh.BA6.label
. . . |-- rh.BA.annot
. . . |-- rh.cortex.label
. . . |-- rh.entorhinal_exvivo.label
. . . |-- rh.MT.label
. . . |-- rh.V1.label
. . . |-- rh.V2.label
. . |-- morph
. . |-- mpg
. . |-- mri
. . . |-- aparc.a2009s+aseg.mgz
. . . |-- aparc+aseg.mgz
. . . |-- aseg
. . . |-- aseg.auto.mgz
. . . |-- aseg.auto_noCCseg.label_intensities.txt
. . . |-- aseg.auto_noCCseg.mgz
. . . |-- aseg.mgz
. . . |-- brain
. . . |-- brain.finalsurfs.mgz
. . . |-- brainmask.auto.mgz
. . . |-- brainmask.mgz
. . . |-- brain.mgz
. . . |-- ctrl_pts.mgz
. . . |-- filled
. . . |-- filled.mgz
. . . |-- flash
. . . |-- fsamples
. . . |-- lh.ribbon.mgz
. . . |-- mri_nu_correct.mni.log
. . . |-- norm
. . . |-- norm.mgz
. . . |-- nu.mgz
. . . |-- nu_noneck.mgz
. . . |-- orig
. . . . |-- 001.mgz
. . . |-- orig.mgz
. . . |-- rawavg.mgz
. . . |-- rh.ribbon.mgz
. . . |-- ribbon.mgz
. . . |-- segment.dat
. . . |-- T1
. . . |-- T1.mgz
. . . |-- talairach.label_intensities.txt
. . . |-- talairach.log
. . . |-- talairach_with_skull.log
. . . |-- tmp
. . . |-- transforms
. . . . |-- bak
. . . . |-- cc_up.lta
. . . . |-- talairach.auto.xfm
. . . . |-- talairach_avi.log
. . . . |-- talairach_avi_QA.log
. . . . |-- talairach.lta
. . . . |-- talairach.m3z
. . . . |-- talairach.m3z.inv.x.mgz
. . . . |-- talairach.m3z.inv.y.mgz
. . . . |-- talairach.m3z.inv.z.mgz
. . . . |-- talairach_with_skull.lta
. . . . |-- talairach.xfm
. . . . |-- talsrcimg_to_711-2C_as_mni_average_305_t4_vox2vox.txt
. . . |-- wm
. . . |-- wm.asegedit.mgz
. . . |-- wm.mgz
. . . |-- wmparc.mgz