心理生理交互作用(PPI)分析批處理(含ROI制作)

引言

先前簡單介紹了PPI分析的基本原理,提到了ROI選取的問題谤逼,本文就ROI選取以及mask制作的流程進行詳細闡述再芋。為便于以后查閱,也將之前的PPI分析批處理code放在一起氓侧。

一脊另、ROI選取

在SPM12的示例數(shù)據(jù)中,針對單個被試的PPI處理约巷,選取ROI“V2”時偎痛,是采用的腦激活圖與V2的peak點坐標為核心的半徑為6mm的球的交集。

%示例數(shù)據(jù)VOI提取code
matlabbatch{5}.spm.util.voi.name = 'V2';
matlabbatch{5}.spm.util.voi.roi{1}.spm.spmmat = {''};
matlabbatch{5}.spm.util.voi.roi{1}.spm.contrast = 3;
matlabbatch{5}.spm.util.voi.roi{1}.spm.threshdesc = 'FWE';
matlabbatch{5}.spm.util.voi.roi{1}.spm.thresh = 0.05;
matlabbatch{5}.spm.util.voi.roi{1}.spm.extent = 0;
matlabbatch{5}.spm.util.voi.roi{2}.sphere.centre = [15 -78 -9];
matlabbatch{5}.spm.util.voi.roi{2}.sphere.radius = 6;
matlabbatch{5}.spm.util.voi.roi{2}.sphere.move.local.spm = 1;
matlabbatch{5}.spm.util.voi.expression = 'i1 & i2';

不過由于示例數(shù)據(jù)只是做了單個被試独郎,而我們分析的是兩組踩麦,具有對照組。所以參考吳士豪的博士論文氓癌,我們決定將兩組組分析結(jié)果的激活圖進行重疊谓谦,重疊后的區(qū)域再和選定的brodmann功能區(qū)或者說AAl解剖區(qū)域進行重疊,最后得到的mask作為感興趣區(qū)域贪婉。

二反粥、ROImask的制作

1.將RW組與SD組正激活、負激活的cluster在DPABI中分別保存為mask疲迂,得到文件如下:


1

2.這里演示兩組正激活圖像重疊code過程:

%-------------------------------
%時間:20220922
%程序員:wishing
%目的:求兩張激活圖cluster.nii的交集星压,
%--------------------------------------------
clear,clc;
cd 'D:\desk\speed\data_1\Dp_spm\PPI\ROImask\mask_make';
%重疊RW與SD兩組的激活圖
%讀取兩個nii文件信息
W1=spm_vol('rwred_mask.nii');
W2=spm_vol('sdred_mask.nii');
%讀取兩個nii文件的體積
Y1=spm_read_vols(W1);
Y2=spm_read_vols(W2);
%展示nii文件信息
%imshow(Y1(:,:,30));
%取交集
Y2=fillmissing(Y2,'constant',0);%將Y2中的nan值替換為0,若不存在則不替換
YY=Y1&Y2;
%命名鬼譬,保存為mask.nii
V=W1;
V.fname='RSred_mask.nii';
spm_write_vol(V,YY);

3.根據(jù)經(jīng)驗選取BA9區(qū)域娜膘,提取MRIcron中Brodmann模板的BA9區(qū)
1).打開DPABI的view界面

2).overlay選擇MRIcron中的BA模板

1

2

3).設(shè)置閾值,設(shè)置9就是BA9區(qū)优质,然后保存cluster就能得到BA9的mask

3

4.改變BA9mask文件的維度竣贪,使其和SPM處理結(jié)果的文件維度相同、
1)這里需要準備一個SPM處理結(jié)果的文件巩螃,這里我選取了GLM分析后的beta_0009.nii.
2)使用函數(shù)處理演怎。

P1='BA9.nii';P2='beta_0009.nii'避乏;  
spm_mask(P1,P2)爷耀;
%這樣P1的維度就和P2一樣了,而且生成了一個mP2文件拍皮,
%注意此函數(shù)格式為: FORMAT spm_mask(P1, P2, thresh)
%  P1     - matrix of input image filenames from which
 %        to compute the mask.
%P2     - matrix of input image filenames on which
%           to apply the mask.
 %thresh - optional threshold(s) for defining the mask.
 %The masked images are prepended with the prefix `m'.
%有時需要設(shè)置thresh為1

5.再將重疊后的圖像與BA9(根據(jù)經(jīng)驗選取的模板)重疊歹叮,這里與第2步的code類似跑杭,注意BA9圖像中可能有空值,這時就需要用到Y(jié)2=fillmissing(Y2,'constant',0);這個函數(shù)咆耿。
6.最后得到生成的mask文件德谅。

三、批量生成批處理需要的文件夾

%時間:20220919
%程序員:wishing
%優(yōu)化后的批量制作文件夾
%--------------------------------------------------------------------------
% 設(shè)置循環(huán)
clear,clc;
%————————————————————————————————
for i=1:37
p(i) = string(num2str(i, "%02d"));%生成“01”“02”一直到“37”的字符串
end
%--------------------------------------------------------------------------
% 設(shè)置文件夾
%————————————————————————————————
for n=1:length(p)
   filename=string(append('D:\desk\speed\data_1\Dp_spm\PPI\RSBA18\RW\sub_1',p(n)));
   mkdir(filename);
end

四萨螺、PPI批處理流程code

%-----------------------------------------------------------------------
% Job saved on 19-Sep-2022 11:16:50 by cfg_util (rev $Rev: 7345 $)
% spm SPM - SPM12 (7771)
% cfg_basicio BasicIO - Unknown
%時間:20220919
%程序員:wishing
%目的:實現(xiàn)任務(wù)態(tài)腦區(qū)激活分析后的PPI全流程循環(huán)處理窄做,包含VOI提取,PPI變量制作慰技,PPIGLM模型設(shè)計與contrast設(shè)計

%-----------------------------------------------------------------------
% Initialise SPM
%--------------------------------------------------------------------------
clear,clc;
spm('Defaults','fMRI');
spm_jobman('initcfg');
% spm_get_defaults('cmdline',true);
%--------------------------------------------------------------------------
% 設(shè)置循環(huán)
%—————————————————————————————————————
for i=1:37
p(i) = string(num2str(i, "%02d"));%生成“01”“02”一直到“37”的字符串
end
for n=1:length(p)
% 設(shè)置文件路徑
%--------------------------------------------------------------------------
filename_out=char(append('D:\desk\speed\data_1\Dp_spm\PPI\RSBA18\RW\sub_1',p(n)));
filename_spm=char(append('D:\desk\speed\data_1\Dp_spm\RW\FunImg\sub_1',p(n),'\SPM.mat'));
filename_in=char(append('D:\desk\speed\data_1\Dp_spm\RW\FunImg\sub_1',p(n),'\'));
filename_rp=char(append('D:\desk\speed\data_1\Dp_spm\RW\FunImg\sub_1',p(n),'\rp_1',p(n),'_speed_00001.txt'));
file_ppi=char(append('D:\desk\speed\data_1\Dp_spm\RW\FunImg\sub_1',p(n),'\PPI_s-b_RSBA18.mat'));
file_mask='D:\desk\speed\data_1\Dp_spm\PPI\ROImask\mask_make\mask\RSred_ba18_mask.nii,1';
%--------------------------------------------------------------------------
% VOI提取
%--------------------------------------------------------------------------
matlabbatch{1}.spm.util.voi.spmmat = {filename_spm};
matlabbatch{1}.spm.util.voi.adjust = 0;
matlabbatch{1}.spm.util.voi.session = 1;
matlabbatch{1}.spm.util.voi.name = 'RSBA18';
% matlabbatch{1}.spm.util.voi.roi{1}.spm.spmmat = {''};
% matlabbatch{1}.spm.util.voi.roi{1}.spm.contrast = 1;
% matlabbatch{1}.spm.util.voi.roi{1}.spm.threshdesc = 'FWE';
% matlabbatch{1}.spm.util.voi.roi{1}.spm.thresh = 0.05;
% matlabbatch{1}.spm.util.voi.roi{1}.spm.extent = 0;
matlabbatch{1}.spm.util.voi.roi{1}.mask.image = {file_mask};
matlabbatch{1}.spm.util.voi.roi{1}.mask.threshold = 0.5;
matlabbatch{1}.spm.util.voi.expression = 'i1';
%--------------------------------------------------------------------------
% PPI交互作用變量生成
%--------------------------------------------------------------------------
matlabbatch{2}.spm.stats.ppi.spmmat = {filename_spm};
matlabbatch{2}.spm.stats.ppi.type.ppi.voi(1) = cfg_dep('Volume of Interest:  VOI mat File', substruct('.','val', '{}',{1}, '.','val', '{}',{1}, '.','val', '{}',{1}), substruct('.','voimat'));
matlabbatch{2}.spm.stats.ppi.type.ppi.u = [1 1 1
                                           2 1 -1];%這里還不確定椭盏,第一列是condition數(shù),第二列是con_name,第三列是權(quán)重
matlabbatch{2}.spm.stats.ppi.name = 's-b_RSBA18';
matlabbatch{2}.spm.stats.ppi.disp = 0;
%--------------------------------------------------------------------------
% GLM PPImodel設(shè)計
%--------------------------------------------------------------------------
matlabbatch{3}.spm.stats.fmri_spec.dir = {filename_out};
matlabbatch{3}.spm.stats.fmri_spec.timing.units = 'secs';
matlabbatch{3}.spm.stats.fmri_spec.timing.RT = 2;
matlabbatch{3}.spm.stats.fmri_spec.timing.fmri_t = 35;
matlabbatch{3}.spm.stats.fmri_spec.timing.fmri_t0 = 18;
%session
f = spm_select('FPList',filename_in, '^swr.*\.nii$');
matlabbatch{3}.spm.stats.fmri_spec.sess.scans = cellstr(f);
%regressors PPI交互項和頭動參數(shù)
matlabbatch{3}.spm.stats.fmri_spec.sess.cond = struct('name', {}, 'onset', {}, 'duration', {}, 'tmod', {}, 'pmod', {}, 'orth', {});
matlabbatch{3}.spm.stats.fmri_spec.sess.multi = {''};
matlabbatch{3}.spm.stats.fmri_spec.sess.regress = struct('name', {}, 'val', {});
matlabbatch{3}.spm.stats.fmri_spec.sess.multi_reg = {...
    file_ppi;...
    filename_rp};
matlabbatch{3}.spm.stats.fmri_spec.sess.hpf = 192;
matlabbatch{3}.spm.stats.fmri_spec.fact = struct('name', {}, 'levels', {});
matlabbatch{3}.spm.stats.fmri_spec.bases.hrf.derivs = [0 0];
matlabbatch{3}.spm.stats.fmri_spec.volt = 1;
matlabbatch{3}.spm.stats.fmri_spec.global = 'None';
matlabbatch{3}.spm.stats.fmri_spec.mthresh = 0.8;
matlabbatch{3}.spm.stats.fmri_spec.mask = {''};
matlabbatch{3}.spm.stats.fmri_spec.cvi = 'AR(1)';
%--------------------------------------------------------------------------
% GLM PPImodel估計
%--------------------------------------------------------------------------
matlabbatch{4}.spm.stats.fmri_est.spmmat(1) = cfg_dep('fMRI model specification: SPM.mat File', substruct('.','val', '{}',{3}, '.','val', '{}',{1}, '.','val', '{}',{1}), substruct('.','spmmat'));
matlabbatch{4}.spm.stats.fmri_est.write_residuals = 0;
matlabbatch{4}.spm.stats.fmri_est.method.Classical = 1;
%--------------------------------------------------------------------------
% PPI contrast
%--------------------------------------------------------------------------
matlabbatch{5}.spm.stats.con.spmmat(1) = cfg_dep('Model estimation: SPM.mat File', substruct('.','val', '{}',{4}, '.','val', '{}',{1}, '.','val', '{}',{1}), substruct('.','spmmat'));
matlabbatch{5}.spm.stats.con.consess{1}.tcon.name = 'PPI_interaction';
matlabbatch{5}.spm.stats.con.consess{1}.tcon.weights = [1 0 0 0];
matlabbatch{5}.spm.stats.con.consess{1}.tcon.sessrep = 'none';
matlabbatch{5}.spm.stats.con.delete = 0;
%--------------------------------------------------------------------------
% SPM run
%--------------------------------------------------------------------------
spm_jobman('run',matlabbatch);
end

五吻商、批量移動結(jié)果庸汗,準備統(tǒng)計分析

%時間:20220919
%程序員:wishing
%批量復制結(jié)果文件
%--------------------------------------------------------------------------
% 設(shè)置循環(huán)
clear,clc;
%————————————————————————————————
for i=[2:4,6:7,11:13,15:22,24:31,34:37]
p(i) = string(num2str(i, "%02d"));%生成“01”“02”一直到“37”的字符串,剔除1, 5, 8, 9, 10, 14, 23, 32, 33)
end
p = rmmissing(p);%刪除跳過產(chǎn)生的缺失值
%----------------------------------------------------------------
% 設(shè)置文件夾
%————————————————————————————————
for n=1:length(p)
    sourcepath=string(append('D:\desk\speed\data_1\Dp_spm\PPI\RSBA18\RW\sub_1',p(n),'\con_0001.nii'));
    targetpath=string(append('D:\desk\speed\data_1\Dp_spm\PPI\RSBA18\RW\RW28CON\sub_1',p(n),'.nii'));
    copyfile(sourcepath,targetpath);
end
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市手报,隨后出現(xiàn)的幾起案子蚯舱,更是在濱河造成了極大的恐慌,老刑警劉巖掩蛤,帶你破解...
    沈念sama閱讀 211,042評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件枉昏,死亡現(xiàn)場離奇詭異,居然都是意外死亡揍鸟,警方通過查閱死者的電腦和手機兄裂,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,996評論 2 384
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來阳藻,“玉大人晰奖,你說我怎么就攤上這事⌒饶啵” “怎么了匾南?”我有些...
    開封第一講書人閱讀 156,674評論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長蛔外。 經(jīng)常有香客問我蛆楞,道長,這世上最難降的妖魔是什么夹厌? 我笑而不...
    開封第一講書人閱讀 56,340評論 1 283
  • 正文 為了忘掉前任豹爹,我火速辦了婚禮,結(jié)果婚禮上矛纹,老公的妹妹穿的比我還像新娘臂聋。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 65,404評論 5 384
  • 文/花漫 我一把揭開白布孩等。 她就那樣靜靜地躺著艾君,像睡著了一般。 火紅的嫁衣襯著肌膚如雪瞎访。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,749評論 1 289
  • 那天吁恍,我揣著相機與錄音扒秸,去河邊找鬼。 笑死冀瓦,一個胖子當著我的面吹牛伴奥,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播翼闽,決...
    沈念sama閱讀 38,902評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼拾徙,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了感局?” 一聲冷哼從身側(cè)響起尼啡,我...
    開封第一講書人閱讀 37,662評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎询微,沒想到半個月后崖瞭,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,110評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡撑毛,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年书聚,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片藻雌。...
    茶點故事閱讀 38,577評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡雌续,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出胯杭,到底是詐尸還是另有隱情驯杜,我是刑警寧澤,帶...
    沈念sama閱讀 34,258評論 4 328
  • 正文 年R本政府宣布做个,位于F島的核電站艇肴,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏叁温。R本人自食惡果不足惜再悼,卻給世界環(huán)境...
    茶點故事閱讀 39,848評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望膝但。 院中可真熱鬧冲九,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,726評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至灭贷,卻和暖如春温学,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背甚疟。 一陣腳步聲響...
    開封第一講書人閱讀 31,952評論 1 264
  • 我被黑心中介騙來泰國打工仗岖, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人览妖。 一個月前我還...
    沈念sama閱讀 46,271評論 2 360
  • 正文 我出身青樓轧拄,卻偏偏與公主長得像,于是被迫代替她去往敵國和親讽膏。 傳聞我的和親對象是個殘疾皇子檩电,可洞房花燭夜當晚...
    茶點故事閱讀 43,452評論 2 348

推薦閱讀更多精彩內(nèi)容