*Fieldtrip
*********** MRIの処理の流れ(リンク) *************
***** data.gradとかがとれないことがある(ft_preprocessing, ft_read_header, etc)****
**** ft_timelockanalysisのcfg.blcはたぶん意味がない,のでマニュアルにない(exampleには出てくる)****
cfg.blc='yes';
cfg.blcwindow=[-0.1 0];
はcfg.baselineをセットしているのと同じらしい
参考:ttp://fieldtrip.googlecode.com/svn-history/r839/trunk/ft_timelockbaseline.m
**** fieldtripとmneのmatlab toolboxでfiffファイルが読み込める。一応同じ値が返ってくることを確認したので、そのスクリプト
**** fieldtripは内部でmneを使ってるぽいので(mneがあるときは)当たり前か
sFnamein='hogehoge.fif';% 入力するファイルの名前
% fieldtrip
cfg.dataset=sFnamein;
strDataFT=ft_preprocessing(cfg);
matDataFT=strDataFT.trial{1}; %matDataFTがデータ:MEG,EEG,トリガーのすべてのデータが含まれる
% mne
strHdrInfoMNE=fiff_setup_read_raw(sFnamein);
[matDataMNE vecTimesMNE]=fiff_read_raw_segment(strHdrInfoMNE);%matDataMNEがデータ
%subtract
subtr=max(max(abs(matDataMNE-matDataFT)));
%subtr=0だったら同じ数値になっているということ
基本的に0が返ってきて当たり前と思われるが一応確認した。
*** ft_volumerealignの座標系(mriから脳を切り出してvolume conduction model(=head model)なんか作るときに使う*****
cfg.coordsys='tal'だったらa,p,zを指定
cfg.coordsys='ALS_CTF'だったらl,r,nを指定
cfg.coordsysを指定しなかったら、cfg.method='interactive'にしてl,r,nを指定すればctfになる
cfg.coordsys='ctf'はどうもだめっぽい
cfg.coordsysには'neuromag'もある。ft_volumerealignのhelpを参照
cfg.coordsys = 'ctf' (default when specifying cfg.method = 'interactive' or 'fiducial') or 'spm' (default when specifying cfg.method = 'landmark'). Specifies the coordinate system of the head. This string specifies the origin and the axes of the coordinate system. supported coordinate systems are: 'ctf', '4d', 'yokogawa', 'neuromag', 'itab' 'spm', 'tal'.
***** 適当なエリア(amygdalaとか)のmaskを作るためのスクリプト*********
%% mriのロード. talでのrealign
cd('mriのデータ(チュートリアル参考)のあるディレクトリ');%mri.matのあるディレクトリ
load mri;
cfgRlgn=[];
cfgRlgn.method='interactive';%cfgRlgn.coordsysとかセットしているとうまくいかない
mri_realign_tal=ft_volumerealign(cfgRlgn,mri);%a,p,zをセット
%mri_realign.coordsys='RAS_TAL'になっているのを確認
%% mask情報を抽出:例 amygdala
cd('ここではaal_MNI_V4.imgのあるディレクトリ');%aal_MNI_V4.imgのあるディレクトリ
cfgVolLkup=[];
cfgVolLkup.atlas='aal_MNI_V4.img';%どっかのサイトから落としてくるテンプレートのファイル. afniかWFU atlases.これはWFU
cfgVolLkup.inputcoord='tal';%'tal'か'mni'か。mriのデータの座標系.ft_volumerealignでRAS_TALになるのでたぶんtal
cfgVolLkup.roi='Amygdala_L';%ft_read_atlasで上のaal_MNI_V4.imgから読み込んだラベルの1つ
%余談:ラベルは
%[atlas] = ft_prepare_atlas('aal_MNI_V4.img');
%のあとatlas.descr.nameで一覧できる
% 参考:fieldtripのチュートリアル(fieldtrip.fcdonders.nl/faq/how_can_i_determine_the_anatomical_label_of_a_source)
mask=ft_volumelookup(cfgVolLkup,mri_realign_tal);
%% ctf座標系でrealign
mri_realign_ctf=ft_volumerealign(cfgRlgn,mri);%l,r,nをセット:mri_realign_talをrealignしてもよいっぽい
%mri_realign_ctf.coordsys='ALS_CTF'になっているのを確認
%% ctf座標系のmriにmaskを付加
mri_realign_ctf.mask=mask;
mri_realign_ctf.seg=(mri_realign_ctf.mask)>0;%maskは0か1
%% 表示
cfgMRIplt=[];
cfgMRIplt.interactive='yes';%マウスでいろいろ場所を変えられる
cfgMRIplt.funparameter='seg';%上のmri_realign_ctf.segのsegのことだと思うので'mask'でもよいかも
cfgMRIplt.funcolormap='jet';%てきとー
cfgMRIplt.funcolorlim=[0 2];%色がほどよくなるよう上のjetと組み合わせて
cfgMRIplt.opacitylim=[0 1.5];%よくわかってない
ft_sourceplot(cfgMRIplt,mri_realign_ctf);%maskで決めた領域にmaskがかかっているか確認
*** 上のつながり:maskの1になっている座標をとってくる****
%% maskのデータの座標をとってくる
%% =3次元のmatrixから1の値の座標をとってくる
%% ここではsize(mask)=[255 255 255]
[nXsize nYsize nZsize]=size(mask);%nZsizeはいらないが
vecMask=find(mask);
nZ=floor((vecMask-1)/(nXsize*nYsize))+1;
nY=floor(mod((vecMask-1),(nXsize*nYsize))/nXsize)+1;
nX=mod((vecMask-1),nXsize)+1;
%nX,nY,nZがそれぞれの座標のベクトル
vecMaskValue=[];%実際に求めた座標の値が1になっているか
for ii=1:length(vecMask)
vecMaskValue(ii)=mask(nX(ii),nY(ii),nZ(ii));
end
% vecMaskValueが全部1になっているのを確認
*** beamformerとかでsource(脳)に落としたデータに時系列情報があるか?*******
Data at the source level usually has a single scalar value for each source location or voxel.
とあるので、普通はだめぽい
追記:It is possible to reconstruct the timecourses of sources in the brain using virtual channels. FieldTrip does not have functions that can plot that type of data.
やっぱりだめぽい
virtual sensorを置いた解析もできるようになっている(connectivity analysisのtutorialを参照)
******
***egi (128ch脳波計、netstation, net sensor)のファイルを読んだとき電極の位置情報が出てこないぽいが*****
http://mailman.science.ru.nl/pipermail/fieldtrip/2010-February/002620.html
the ".sfp" filesが必要だと
eeglabのsample_locsの中にGSN128.sfpとかGSN129.sfp(Czが入るのでこちらではないか)を読み込める
中身はただのテキスト
elec=ft_read_sens('GSN129.sfp')でおけ