FreeSurfer

Links úteis para FreeSurfer:

Download

ReconAll

FreeSurfer Tutorial - Process Flow

Processamento

1. Rodar freesurfer

export SUBJECTS_DIR=/pastas_imagens

cd $SUBJECTS_DIR

recon-all -subjid nome_pasta_vai_criar -i ${SUBJECTS_DIR}/pasta_imagem_processar/nome_imagem.nii.gz -all

2. Carregar os volumes, superfícies e segmentação subcortical

freeview -v \

/localização_pasta_imagem_processada/mri/T1.mgz \

/localização_pasta_imagem_processada/mri/wm.mgz \

/localização_pasta_imagem_processada/mri/brainmask.mgz \

/localização_pasta_imagem_processada/mri/aseg.mgz:colormap=lut:opacity=0.2 \

-f /localização_pasta_imagem_processada/surf/lh.white:edgecolor=blue \

/localização_pasta_imagem_processada/surf/lh.pial:edgecolor=red \

/localização_pasta_imagem_processada/surf/rh.white:edgecolor=blue \

/localização_pasta_imagem_processada/surf/rh.pial:edgecolor=red

Notas sobre a linha de comando:

-v é utilizado para abrir volumes;

-brainmask.mgz é a linha do crânio;

-wm.mgz é a máscara da substância branca;

-aseg.mgz é a segmentação subcortical carregada com a correspondente tabela de cores com uma baixa opacidade.

-f é utilizado para carregar superfícies:

Substância branca e pial são carregadas para cada hemisfério com a cor indicada por 'edgecolor'.

3. Abrir imagens em 3D

O exemplo abaixo é para o hemisfério esquerdo, porém também é possível ver somente o hemisfério direito ou os dois hemisférios ao mesmo tempo.

freeview -f /localização_pasta_imagem_processada/surf/

lh.pial:annot=aparc.annot:name=pial_aparc:visible=0 \

/localização_pasta_imagem_processada/surf/

lh.inflated:overlay=lh.thickness:overlay_threshold=0.1,3::name=inflated_thickness:visible=0 \

/localização_pasta_imagem_processada/surf/lh.inflated:visible=0 \

/localização_pasta_imagem_processada/surf/lh.white:visible=0 \

/localização_pasta_imagem_processada/surf/lh.pial \

--viewport 3d

Notas sobre a linha de comando:

lh.pial:annot=aparc.annot carrega a parcela cortical Desikan-Killiany na superfície pial;

:name=pial_aparc:visible=0 mostra o nome que aparecerá no display e faz com que essa camada não apareça;

lh.inflated:overlay=lh.thickness:overlay_threshold=0.1,3 carrega uma sobreposição sobre a superfície inflada e seta o mínimo e o máximo do display.

Reprocessamento

Troubleshooting your output

1. Correção de Substância Cinza

Tutorial

1.1. Abrir com o script abaixo e fazer as correções seguindo o tutorial

freeview -v \

/localização_pasta_imagem_processada/mri/T1.mgz \

/localização_pasta_imagem_processada/mri/wm.mgz:colormap=heat:opacity=0.25 \

/localização_pasta_imagem_processada/mri/brainmask.mgz \

/localização_pasta_imagem_processada/mri/aseg.mgz:colormap=lut:opacity=0.2 \

-f /localização_pasta_imagem_processada/surf/lh.white:edgecolor=blue \

/localização_pasta_imagem_processada/surf/lh.pial:edgecolor=red \

/localização_pasta_imagem_processada/surf/rh.white:edgecolor=blue \

/localização_pasta_imagem_processada/surf/rh.pial:edgecolor=red

1.2. Após as correções utilizar o script abaixo para o reprocessamento

export SUBJECTS_DIR=/localização_pasta_imagem_a_ser_reprocessada

cd ${SUBJECTS_DIR}

recon-all -autorecon-pial -subjid nome_pasta

2. Correção de Defeitos Topológicos

Tutorial

Às vezes, alguns voxels que são substância branca são excluídos, para corrigir esse defeito é necessário apenas editar o volume wm.mgz.

2.1. Abrir o script abaixo e fazer as correções seguindo o tutorial

freeview -v /localização_pasta_imagem_processada/mri/brainmask.mgz \

/localização_pasta_imagem_processada/mri/wm.mgz:colormap=heat:opacity=0.4:visible=0 \

-f /localização_pasta_imagem_processada/surf/lh.white:edgecolor=yellow \

/localização_pasta_imagem_processada/surf/lh.pial:edgecolor=red \

/localização_pasta_imagem_processada/surf/rh.white:edgecolor=yellow \

/localização_pasta_imagem_processada/surf/rh.pial:edgecolor=red \

/localização_pasta_imagem_processada/surf/lh.smoothwm.nofix:visible=0

2.2. Após as correções utilizar o script abaixo para o reprocessamento

export SUBJECTS_DIR=/localização_pasta_imagem_a_ser_reprocessada

cd ${SUBJECTS_DIR}

recon-all -autorecon2-wm -autorecon3 -subjid nome_pasta

3. Correção de Normalização de Intensidade Utilizando Pontos de Controle

Tutorial

Às vezes a normalização de intensidade irá falhar por não conseguir determinar apropriadamente a intensidade para a substância branca, o que resulta em uma segmentação de substância branca errônea. Os pontos de controle são manualmente selecionados na localização do volume em que se tem certeza que faz parte da substância branca.

3.1. Abrir o script abaixo e fazer as correções seguindo o tutorial

freeview -v /localização_pasta_imagem_processada/mri/brainmask.mgz \

-f /localização_pasta_imagem_processada/surf/lh.white:edgecolor=blue \

/localização_pasta_imagem_processada/surf/lh.pial:edgecolor=red \

/localização_pasta_imagem_processada/surf/rh.white:edgecolor=blue \

/localização_pasta_imagem_processada/surf/rh.pial:edgecolor=red

3.2. Após as correções utilizar o script abaixo para o reprocessamento

export SUBJECTS_DIR=/localização_pasta_imagem_a_ser_reprocessada

cd ${SUBJECTS_DIR}

recon-all -autorecon2-cp -autorecon3 -subjid nome_pasta

Processamento Longitudinal

Processamento Longitudinal

Tutorial

Processamento

O objetivo é verificar a variação do cérebro do sujeito ao longo do tempo. Um estudo longitudinal reduz a variabilidade da estimativa de morfometria intra-indivíduos, detecta pequenas mudanças ou permite um número menos de sujeitos no estudo, pode ser usada para marcar a progressão da doença (atrofia), melhor estimar o início dos sintomas, para estudar o efeito de drogas, por exemplo. Fazendo dessa forma, reduz ruído, aumenta a confiabilidade e a sensibilidade.

O processamento longitudinal consiste em 3 passos: cross, base e long.

1. Processamento Separadamente - Cross

Primeiramente processamos os dados separadamente para cada sujeito e visita, utilizando o recon-all -all.

export SUBJECTS_DIR=/pastas_imagens

cd $SUBJECTS_DIR

recon-all -subjid nome_pasta_vai_criar -i $SUBJECTS_DIR/pasta_imagem_processar/nome_imagem.nii -all

2. Templates para cada objeto - Base

É feito o processamento das visitas N do mesmo sujeito, de forma que seja criado um template que tem como saída apenas um diretório.

export SUBJECTS_DIR=/pastas_imagens

cd $SUBJECTS_DIR

recon-all -base nome_da_pasta_que_vai_criar -tp ID_visitaN1 -tp ID_visitaN2 ... -all

3. Processamento Longitudinal - Long

Será realizado o processamento longitudinal de fato, cuja saída terá mais dois diretórios, cada um relacionado ao template criado previamente. É feito então o processamento de cada sujeito com seu template de visita.

export SUBJECTS_DIR=/pastas_imagens

cd $SUBJECTS_DIR

recon-all -long ID_visitaN1 pasta_criada_base -all

recon-all -long ID_visitaN2 pasta_criada_base -all

Reprocessamento Longitudinal

Primeiramente vamos inspecionar o template (base) de um único sujeito. Abrir a imagem norm.mgz e superfícies no Freeviw, na visualização coronal.

freeview -v OAS2_0001/mri/norm.mgz \

-f OAS2_0001/surf/lh.pial:edgecolor=red \

OAS2_0001/surf/rh.pial:edgecolor=red \

OAS2_0001/surf/lh.white:edgecolor=blue \

OAS2_0001/surf/rh.white:edgecolor=blue

Isto irá mostrar o template (base) que é a anatomia média dos sujeitos ao longo do tempo sobrepostos com a superfície pial e da substância branca. Devem ser inspecionadas as superfícies nesta imagem, verificar se as superfícies seguem a substância branca e cinzenta. Em seguida, deve-se verificar os resultados longitudinais. Com o comando abaixo, a base e o long estarão no mesmo voxel. Portanto, essas imagens poderão ser diretamente comparadas se abertas uma em cima da outra.

freeview -v OAS2_0001_MR1.long.OAS2_0001/mri/norm.mgz \

OAS2_0001_MR2.long.OAS2_0001/mri/norm.mgz \

-f OAS2_0001_MR1.long.OAS2_0001/surf/lh.pial:edgecolor=red \

OAS2_0001_MR1.long.OAS2_0001/surf/lh.white:edgecolor=blue \

OAS2_0001_MR2.long.OAS2_0001/surf/lh.pial:edgecolor=255,128,128 \

OAS2_0001_MR2.long.OAS2_0001/surf/lh.white:edgecolor=lightblue

Você irá ver imagens normalizadas do cérebro sem o crânio (norm.mgz) nos dois pontos no tempo. Você também verá a superfície branca e pial em cada ponto de tempo. O comando abre apenas o hemisfério esquerdo para economizar memória. O tempo1 usa vermelho e azul, enquanto tempo 2 usa rosa e azul claro para as cores de superfície.

As superfícies não mudam muito ao longo do tempo. Também pode-se comparar as imagens diretamente. Para isso, desmarcar as 4 caixas em frente as superfícies ou pressionar ctrl+f. Selecionar o primeiro volume norm e usar a opacidade para “misturar” as duas imagens. Tambem pode trocar as imagens usando alt+c ou a opacidade. Assim é possível observar deformações (atrofias) e também qualquer problema de alinhamento (não seria o caso). Também poderá observar se os ventrículos estão maiores.

Para analisar os dados longitudinais se pode abrir os stats de cada sujeitos (contém estatística como volume de estruturas subcorticais ou espessuras médias de regiões corticais) e esses dados podem alimentar qualquer pacote estatístico para fazer qualquer análise que queira (LME – Linear Mixed Effects Model, por ex).

Comando para pegar os dados de todos os sujeitos e criar uma única tabela: asegstats2table

Comando para passar à uma tabela qdec --qdec-long

QDEC

Tutorial

Os passos 1 - 3 só precisam ser feitos se esta gerando novos dados para o QDEC.

1. Utilizar o qcache antes de começar e criar uma pasta chamada QDEC, onde serão salvas as imagens

Utilizar o script abaixo que vai organizar as pastas processadas, rodar o qcache e gerar o fsaverage.

set subjs=(001 002 ...)

foreach subj ($subjs)

cd /pasta_onde_esta_a_imagem

cp -a nome_pasta ${subj}

mv ${subj} /.../QDEC

cd /pasta_onde_esta_a_imagem

cp -a fsaverage subj${subj}

mv subj${subj} /.../QDEC

end

setenv SUBJECTS_DIR "/.../QDEC"

cd ${SUBJECTS_DIR}

foreach subj ($subjs)

recon-all -s ${subj} -qcache

end

2. Preciso de um fsaverage no diretório do freesurfer, para isso utilizar o script abaixo e colocar o ID de cada sujeito corretamente para ser feito.

Vai gerar a pasta avgsubject dentro da pasta QDEC.

export SUBJECTS_DIR=/.../QDEC

cd${SUBJECTS_DIR}

make_average_subject --out avgsubject --subjects 001 002 003...

3. Criar na pasta QDEC uma tabela de entrada principal chamada qdec.table.dat, com as informações a serem analisadas, como no exemplo abaixo.

Mudar essa tabela se necessário incluir mais sujeitos, nesse caso refazer os passos 1 e 2.

fsid gender age JVQ CTQ
001 male 12 5 49
002 female 12 2 45
004 male 11 14 50

4. Para abrir o Qdec utilizar o script abaixo.

Após abrir o qdec seguir o passo a passo do tutorial com o link acima a partir de Subjects.

export SUBJECTS_DIR=/.../QDEC

cd ${SUBJECTS_DIR}

qdec &

Planilhas

1. Gerar planilha do aseg

Planilha aseg

asegstats2table --subjects bert ernie fred --meas volume --tablefile aseg_stats.txt

O script irá gerar uma planilha do arquivo aseg.stats do freesurfer.

2. Gerar planilhas do aparc

Planilha aparc

aparcstats2table --subjects bert ernie fred --hemi rh --meas thickness --tablefile aparc_stats.txt

O comando acima irá combinar o arquivo rh.aparc.stats dos sujeitos bert ernie e fred para criar uma tabela aparc_stats.txt, que irá mostrar a grossura de todas as estruturas do arquivo original.

Se por acaso você quiser outra informação, como da planilha lh.aparc.a2009s.stats pode-se usar --parc aparc.a2009s e além disso se quiser algo além de grossura pode-se especificar em --meas com area, volume ou meancurve.

aparcstats2table --hemi rh --subjects bert ernie fred --parc aparc.a2009s --meas meancurve --tablefile lh.a2005s.meancurve.txt