Links úteis para FreeSurfer:
FreeSurfer Tutorial - Process Flow
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 |
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'.
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.
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 |
À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 |
À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 |
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.
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 |
É 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 |
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 |
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
Os passos 1 - 3 só precisam ser feitos se esta gerando novos dados para o QDEC.
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
|
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... |
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 |
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 &
|
asegstats2table --subjects bert ernie fred --meas volume --tablefile aseg_stats.txt |
O script irá gerar uma planilha do arquivo aseg.stats do freesurfer.
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 |