*dicomからXfitに必要なbem-sol.fifとかを早く生成する

Xfitとかでbemを利用するのに、dicomからfreesurferで処理してその後mneのツールでbem-sol.fifとか生成するが、freesurferがrecon-all -allすると半日とか時間がかかる。

なので、最小限のfreesurferの処理をさせて、先にbem-sol.fifとかの処理を済ませてから残りのfreesurferの処理をするようなスクリプトを作ってみました。

注意: Xfitでhead coordinateにするのにmne_analyzeかMRIlabで位置合わせしたmri.fifが必要です。mne_analyzeで作業するときは、結局freesurferの処理が大半終わるまで待たないといけない(と思います)

---所要時間---

bem-sol.fifを吐き出すまでの時間はこちらのPC(core i7 2.8ghzくらい、ローカルのhdd)で30分ほどでした。

---このスクリプトでできること---

1. dicomから-bem.fif、-bem-sol.fifを生成して/neuro/databases/bemにコピー

2. freesurferのいわゆるrecon-all -allの処理

3. mneのcoregistrationに使うMRIデータ(COR.fif)の生成

---やってないこと(Xfitとかの利用では不要なので)---

mneのいわゆるグリッドの作成(mne_setup_source_space):lh.whiteとか必要で、ほぼ最後までfreesurferの処理が済まないと走らないようです。

---スクリプトを走らせる手順---

下のスクリプトを使って必要な情報(設定のexportの行)を変更した後、端末にコピペすればとりあえず動く. "なんとか.sh"とかの名前で保存して端末で"./なんとか.sh"とか入れて実行することももちろん可能.実行権与えないと(chmod 755とか)エラー吐きますが。

下記の内容を何かgeditみたいなソフトで書き換えてコピペするとよいでしょう。

---ちょっとした知識:ディレクトリのあるべき構造---

freesurfer(とかそれを利用するMNEなど)はMRIをどこか1か所のディレクトリ(SUBJECTS_DIRで指定するディレクトリ)にまとめて、その中に各被験者の名前のディレクトリ(SUBJECTで指定するディレクトリ)を作って、その中にmriとかbemとかディレクトリを作って処理データを格納することを想定しています。

イメージとしては MRIをまとめたディレクトリ / 被験者のディレクトリ / bem,mri,その他もろもろ

という感じ。

で、上記の構造をとってないとき(例. /a/b/hikenja/MRIの中にmri, bem、その他データが入ってくることを考えている場合)

SUBJECT=MRI

SUBJECTS_DIR=/a/b/hikenja

と指定しとけばとりあえず動きます。ただ混乱しやすいのでfreesurferの想定に沿って整理しとく方がよいでしょう。

追記: -bem-sol.fifにMRI->head coordinate変換の情報を付加する段取りはxfitのMEG.fif ファイルオープン時(リンク)にありました。

なのでxfitで使うbem.fifはMRI coordinateでよいようです。

以下もうそれほど必要がないので薄い字にしてます。

------------- 気になっていること---------------

T1.mgz(MRIのファイル)が

mne_watershed_bemでinner_skull.surfとかに変換されて

mne_setup_forward_modelで-bem.fif, -bem-sol.fifに変換される。

なので-bem-sol.fifとかはhead coordinateの情報がないはず。 参照. mne cookbook (http://martinos.org/mne/manual/cookbook.html#cihdbfeg)

Setting up the boundary-element model

Note (mne_setup_forward_modelの説明)

Up to this point all processing stages depend on the anatomical (geometrical) information only and thus remain identical across different MEG studies.

ということで、やはりhead coordinateは入っていないらしい。

ということで、xfitのbemモデルをmri -> head coordinateに変換するプロセスは

xfitのprepare a new BEMのウィンドウ(下図)でメッシュ(2)と、coordinate systemを示すファイル(3)を指定して合わせる必要があるようである。

参照: xfitマニュアル5.6.3. preparation of the model

ということでMRIとheadの位置合わせは上記MRIlabを使うか(nasion, LPA, RPAの3点)、mne_analyzeを使うか(ICP)どちらかのようです。

急ぐ時はmrilabを使えばよいでしょう。mne_analyzeを使うにはsurfaceの処理が完了していないといけないので、freesurferの処理がほぼ全部終了することが必要です。

############################-ここから3行下(#!/bin/shの行)から使ってください####################

##余談:説明の前に#を入れてるのでそのまま使って大丈夫です。必要なとこだけ書き換えて端末にコピペしてください##

#!/bin/sh###1. 設定export SUBJECTS_DIR=/home/hogehoge/MRI # mriをまとめるディレクトリexport SUBJECT=hoge #被験者名 (e.g. suzumiya_haruhi: ディレクトリの名前になります ) # $SUBJECTS_DIR/$SUBJECTの中にデータを処理して格納していく.export DICOM_DIR=/net/sinuhe/daicom_files/hoge# dicomデータのあるディレクトリ:200枚以上ファイルがある # dicomデータのうち、一番下にある3つのファイル(PS_xxxとXX_xxx)は削除して次のステップに進みましょう# $SUBJECTS_DIR/$SUBJECTとは別のディレクトリに入れましょう:mksubdirsでエラーになります# ここはいじる必要はないと思いますが一応確認しておきましょうexport BEM_DIR=/neuro/databases/bem # -bem-sol.fifファイルをコピーする先のディレクトリexport FREESURFER_HOME=/opt/freesurfer #freesurferのインストールしてあるディレクトリ## 設定終わり## 準備# freesurfer関連のパスを通したり、たぶん初期化っぽい作業をしているsource $FREESURFER_HOME/SetUpFreeSurfer.sh # mriとかbemとかのディレクトリ一式作成 mksubjdirs $SUBJECTS_DIR/$SUBJECT# mri/T1に移動cd $SUBJECTS_DIR/$SUBJECT/mri/T1 # dicomデータをmri/T1にコピー cp -pR $DICOM_DIR/* . ###2. freesurferの処理(T1.mgzを作るまで)# 参考 ttp://surfer.nmr.mgh.harvard.edu/fswiki/ReconAllTableStableV5.1#フォルダ内の最初のファイル名を拾うMRIFILE=(*)# dicomを001.mgzに変換 mri_convert $MRIFILE ../orig/001.mgz cd $SUBJECTS_DIR/$SUBJECT/mri recon-all -motioncor -subjid $SUBJECT recon-all -talairach -subjid $SUBJECT recon-all -nuintensitycor -subjid $SUBJECT recon-all -normalization -subjid $SUBJECT #ここでT1.mgzができる-> bem-solの元になる###3. mneでT1.mgzからbemモデルの作成:xfitに使うならここまででもよい。終了するまでに概ね20ー30分くらいcd $SUBJECTS_DIR mne_watershed_bem --subject $SUBJECT #bem meshの作成(mneマニュアルappendix A) # bemディレクトリの下wastershedディレクトリに$SUBJECT_inner_skull_surfaceとかできる## bemディレクトリで必要なシンボリックリンクを張るcd $SUBJECT/bem ln -s watershed/${SUBJECT}_inner_skull_surface inner_skull.surf ln -s watershed/${SUBJECT}_outer_skull_surface outer_skull.surf ln -s watershed/${SUBJECT}_outer_skin_surface outer_skin.surf #bemモデルの計算(mneマニュアル chapter 3.7) mne_setup_forward_model --subject $SUBJECT --homog --surf --ico 4 #オプションの説明# --homog: single shellにする、--surf: .surfを使う(つけてないと.triを探してエラー)# -bem.fifと-bem-sol.fifを/neuro/databases/bemにコピー cp ${SUBJECT}-5120-bem.fif $BEM_DIR cp ${SUBJECT}-5120-bem-sol.fif $BEM_DIR## COR.fifを作っておく(MRIlabで*.pntとか重ねて出来具合を確認できるとか)# あとmne_analyzeを使ったpolhemusとのcoregistrationにも使うcd $SUBJECTS_DIR mne_setup_mri --subject $SUBJECT --mri T1 #T1.mgzからCOR.fifを作る# ここまで終了したらxfitに使うbem-solとかはできてるはず###4. freesurferに戻って残りの処理(skull stripからその他もろもろ):半日-1日かかります# 参考 ttp://surfer.nmr.mgh.harvard.edu/fswiki/ReconAllTableStableV5.1cd $SUBJECTS_DIR/$SUBJECT/mri recon-all -skullstrip -subjid $SUBJECT #skull strip recon-all -autorecon2 -subjid $SUBJECT #segmentationとか? recon-all -autorecon3 -subjid $SUBJECT #surface作ってるぽい

###################################################################################### 日本語が入っているとエラーを起こしやすいようなので 説明なしのバージョンを下に追加してます。########### geditなどにコピーした後、最初の3行に必要事項を書き込んで端末にコピペするとよいでしょう ############## mne_setup_mri の行まででxfitに必要なbemはできると思います #################################################################################################################export SUBJECTS_DIR=export SUBJECT=export DICOM_DIR=export BEM_DIR=/neuro/databases/bem export FREESURFER_HOME=/opt/freesurfer source $FREESURFER_HOME/SetUpFreeSurfer.sh mksubjdirs $SUBJECTS_DIR/$SUBJECTcd $SUBJECTS_DIR/$SUBJECT/mri/T1 cp -pR $DICOM_DIR/* . MRIFILE=(*) mri_convert $MRIFILE ../orig/001.mgz cd $SUBJECTS_DIR/$SUBJECT/mri recon-all -motioncor -subjid $SUBJECT recon-all -talairach -subjid $SUBJECT recon-all -nuintensitycor -subjid $SUBJECT recon-all -normalization -subjid $SUBJECTcd $SUBJECTS_DIR mne_watershed_bem --subject $SUBJECTcd $SUBJECT/bem ln -s watershed/${SUBJECT}_inner_skull_surface inner_skull.surf ln -s watershed/${SUBJECT}_outer_skull_surface outer_skull.surf ln -s watershed/${SUBJECT}_outer_skin_surface outer_skin.surf mne_setup_forward_model --subject $SUBJECT --homog --surf --ico 4 cp ${SUBJECT}-5120-bem.fif $BEM_DIR cp ${SUBJECT}-5120-bem-sol.fif $BEM_DIRcd $SUBJECTS_DIR mne_setup_mri --subject $SUBJECT --mri T1 cd $SUBJECTS_DIR/$SUBJECT/mri recon-all -skullstrip -subjid $SUBJECT recon-all -autorecon2 -subjid $SUBJECT recon-all -autorecon3 -subjid $SUBJECT