溫 菲,岳金星
(1.哈爾濱商業(yè)大學(xué)外語學(xué)院,哈爾濱 150028; 2.哈爾濱工業(yè)大學(xué) 語言文學(xué)學(xué)院,哈爾濱 150001)
?
基于MATLAB的神經(jīng)科學(xué)工具包Cogent及其編程實(shí)現(xiàn)
溫 菲1,岳金星2
(1.哈爾濱商業(yè)大學(xué)外語學(xué)院,哈爾濱 150028; 2.哈爾濱工業(yè)大學(xué) 語言文學(xué)學(xué)院,哈爾濱 150001)
神經(jīng)科學(xué)研究中,高質(zhì)量實(shí)驗(yàn)數(shù)據(jù)的采集依賴于時(shí)間精度高、功能強(qiáng)大的編程工具,從而精準(zhǔn)的呈現(xiàn)刺激材料和收集受試的反應(yīng)。Cogent便是這樣一款基于MATLAB平臺(tái)的神經(jīng)科學(xué)實(shí)驗(yàn)工具包。該工具包誕生于倫敦大學(xué)學(xué)院,可呈現(xiàn)并編寫聽覺、視覺以及動(dòng)畫刺激材料,以應(yīng)用于行為、腦電、功能磁共振成像等神經(jīng)科學(xué)實(shí)驗(yàn)中。Cogent程序編寫的核心有兩個(gè),第一,需要了解Cogent在呈現(xiàn)不同類型刺激時(shí)的特殊句法;其二,成功的編程還在于理解程序腳本、緩存分配和數(shù)據(jù)文件之間的分配與調(diào)用關(guān)系。由于Cogent編程語法接近自然語言,十分容易上手,非常適合不同背景的神經(jīng)科學(xué)研究人員使用。
神經(jīng)科學(xué);MATLAB工具包;編程;刺激呈現(xiàn)
在神經(jīng)科學(xué)研究中,通用實(shí)驗(yàn)編程工具種類繁多,既有像E-Prime,Presentation,Inquisit等付費(fèi)商業(yè)軟件,亦有如DMDX等免費(fèi)的開放程序[1-2]。隨著數(shù)學(xué)計(jì)算工具M(jìn)ATLAB (The MathWorks Inc.) 的不斷普及,基于該平臺(tái)編寫的實(shí)驗(yàn)工具包為神經(jīng)科學(xué)實(shí)驗(yàn)帶來了便利,例如呈現(xiàn)刺激常用的編程工具包Psychtoolbox[3]?;贛ATLAB的工具包具有免費(fèi),精度高,可擴(kuò)展性和研究適應(yīng)性強(qiáng)等特點(diǎn)。本文介紹另一種面世時(shí)間不長(zhǎng),面向?qū)嶒?yàn)編寫的MATLAB工具包,Cogent。
Cogent工具包誕生于英國(guó)倫敦大學(xué)學(xué)院,由于Cogent通過更加易懂的獨(dú)立語法調(diào)用MATLAB的底層函數(shù)[4],這極大降低了使用的難度[5]。Cogent以卓越三的視覺圖形刺激處理而著稱,亦可以呈現(xiàn)文字和聽覺刺激,并能夠精準(zhǔn)地收集受試的反應(yīng)時(shí)間。
Cogent分為三個(gè)層次結(jié)構(gòu)[4]。底層結(jié)構(gòu)包括MATLAB、Window操作系統(tǒng)和DirectX工具;中間結(jié)構(gòu)包括以.dll為后綴的低級(jí)函數(shù)以及MATLAB接口,面向編程人員和高級(jí)用戶;最上層為Cogent高級(jí)函數(shù)包,面向普通用戶,用戶只需要將指令寫入一個(gè)m文件(MATLAB腳本文件),執(zhí)行即可。
1.Cogent的安裝
在倫敦大學(xué)學(xué)院神經(jīng)生物學(xué)實(shí)驗(yàn)室的網(wǎng)站上(www.vislab.ac.uk/cogent.php)研究人員可以免費(fèi)下載Cogent。解壓縮Cogent壓縮包之后會(huì)在與壓縮包同名的文件夾中出現(xiàn)3個(gè)子文件夾,分別是:Documents,Samples,Toolbox。在Documents文件夾中包括所有和Cogent有關(guān)的使用手冊(cè);Samples文件夾中是經(jīng)過嚴(yán)格測(cè)試可運(yùn)行的代碼,供研究人員編程時(shí)參考;Toolbox中主要包括Cogent各函數(shù)的MATLAB腳本。在MATLAB環(huán)境下,用“Set Path”加載Cogent中各文件夾目錄至MATLAB路徑之后,即可運(yùn)行含有Cogent函數(shù)的程序腳本。
2.Cogent程序編寫基本原則
一個(gè)可以運(yùn)行的Cogent實(shí)驗(yàn)程序包括Cogent程序代碼、刺激材料和數(shù)據(jù)文件。Cogent代碼規(guī)定實(shí)驗(yàn)如何運(yùn)行(例如一個(gè)詞呈現(xiàn)時(shí)間的長(zhǎng)短);數(shù)據(jù)文件(可以為txt格式或dat格式)是程序代碼和刺激材料的中介,實(shí)驗(yàn)運(yùn)行中,Cogent通過讀取數(shù)據(jù)文件,決定呈現(xiàn)何種刺激;數(shù)據(jù)文件通常由兩列構(gòu)成,第一列是想要呈現(xiàn)的刺激(如一個(gè)詞)或刺激的文件名(刺激需加單引號(hào)),第二列則是為該種刺激分配的編號(hào)。
一段完整的Cogent程序代碼包括三部分:配置語句、實(shí)驗(yàn)起始提示語句和實(shí)驗(yàn)運(yùn)行語句,三部分缺一不可。
基礎(chǔ)的配置語句有config_display,config_sound, config_keyboard, config_mouse,等。這些配置語句告知Cogent在隨后的實(shí)驗(yàn)中所需要配置的屏幕顯示、聲音播放、輸入設(shè)備的參數(shù)。
下面以屏幕顯示配置命令config_display為例,介紹研究人員如何根據(jù)實(shí)驗(yàn)需要,進(jìn)行參數(shù)設(shè)置。在config_display之后添加括號(hào),并為其所包括的8個(gè)參數(shù)賦值,不同參數(shù)間用逗號(hào)分開。例如config_display(1,1,[0 0 0],[1 1 1],‘Helvetica’,50,4,0);表示實(shí)驗(yàn)中屏幕為全屏模式,分辨率為640*480,背景為純黑,前景為純白,字體為“Helvetica”,字號(hào)為50,分配緩存數(shù)為4,顯示每個(gè)像點(diǎn)最大像素值。
配置數(shù)據(jù)文件,同樣必不可少。若數(shù)據(jù)文件存放路徑與MATLAB環(huán)境中的當(dāng)前目錄相同,則通過命令config_data(‘文件名.dat’)即可配置數(shù)據(jù)文件,無須添加額外的路徑信息。
在配置語句之后需要用start_cogent提示計(jì)算機(jī)開始執(zhí)行cogent實(shí)驗(yàn)代碼,與之相對(duì)的是在腳本的最后,需要用stop_cogent語句提示計(jì)算機(jī)停止程序運(yùn)行。
在開始和結(jié)束提示語句的中間,寫入實(shí)驗(yàn)運(yùn)行語句。該部分主要包括編寫背景對(duì)象、編寫刺激對(duì)象和編寫受試反應(yīng)收集。背景對(duì)象主要指實(shí)驗(yàn)過程中呈現(xiàn)相對(duì)穩(wěn)定的對(duì)象,例如實(shí)驗(yàn)指導(dǎo)語、屏幕中央注視點(diǎn)“+”號(hào)等。針對(duì)背景對(duì)象編寫代碼最重要的原則是,先將對(duì)象放入相應(yīng)的緩存單元,然后再將其呈現(xiàn)。例如下邊這段代碼可以實(shí)現(xiàn)在屏幕上先呈現(xiàn)“+”號(hào),再呈現(xiàn)“&”號(hào),然后再呈現(xiàn)“+”號(hào)。
但是,如果之后需要使用相同編號(hào)的緩存單位呈現(xiàn)不同的刺激,需要及時(shí)將該單位清空,以防止對(duì)象重疊呈現(xiàn)。在上例中可以用clearpict(n)命令,其中n代表要清空的緩存單位號(hào)(例如1或2)。
與該邏輯相同,呈現(xiàn)實(shí)驗(yàn)刺激時(shí),需要經(jīng)歷刺激的提取、載入和呈現(xiàn)三個(gè)步驟。第一步提取刺激。由于刺激呈現(xiàn)往往需要參考數(shù)據(jù)文件,因此,通常首先用getdata(r,c)語句讀取數(shù)據(jù)文件中的內(nèi)容,括號(hào)中r定義的是讀取數(shù)據(jù)文件中矩陣的行數(shù),c對(duì)應(yīng)的是列數(shù)。如果刺激來自文件,載入文件的同時(shí)應(yīng)分配給其相應(yīng)的緩存單位。用loadpict( ‘文件名.擴(kuò)展名’,n)命令載入圖片文件,用loadsound( ‘文件名.wav’,n)載入聲音文件,文本刺激用preparestring( ‘文本’,n)語句載入,n代表編程人員為其分配的緩存單位編號(hào)。第一步與第二步的順序根據(jù)實(shí)驗(yàn)需要可以做相應(yīng)的調(diào)整。第三步呈現(xiàn)刺激。視覺刺激通過drawpict(n)來呈現(xiàn)。聲音刺激通過playsound(n)和waitsound(n)的命令組合來呈現(xiàn),前者指示Cogent播放緩存n中的聲音刺激,waitsound(n)表示直到緩存n中的聲音刺激播放完畢再進(jìn)行其他操作。
1.呈現(xiàn)文字刺激
在以語言為對(duì)象的神經(jīng)科學(xué)研究中,文字刺激的呈現(xiàn)必不可少,下邊結(jié)合Cogent自帶的范例1介紹關(guān)鍵語句(程序代碼中的%號(hào)后面的文字是對(duì)代碼語句的解釋說明)。
config_display; %采用缺省參數(shù)配置屏幕呈現(xiàn)
config_data('sample1.dat'); %從sample1.dat中讀入數(shù)據(jù)
start_cogent; for i=1:countdatarows
word = getdata(i,1); % word=表示賦值給word。
clearpict(1);
preparestring(word, 1);
drawpict(1); %此時(shí)刺激呈現(xiàn)在屏幕上。
wait(1000);
來自于阿美或自他承包商,有能力、經(jīng)驗(yàn)和資格識(shí)別腳手架安全風(fēng)險(xiǎn),驗(yàn)證腳手架是否符合阿美相關(guān)標(biāo)準(zhǔn)要求,同時(shí)記錄腳手架檢查及驗(yàn)收結(jié)果。腳手架檢查工程師也必須經(jīng)過阿美認(rèn)證,其證書有效期也是三年
drawpict(2);
wait(1000);
end %當(dāng)for循環(huán)在i所有可能的取值運(yùn)算結(jié)束后,在此結(jié)束for循環(huán),程序繼續(xù)向下運(yùn)行。
drawpict(2);
stop_cogent;
上述代碼第四行for i=1:countdatarows中是一個(gè)for循環(huán)語句,表示i的值從1開始取,“:” 表示“直到”,例如1:3表示1,2,3;countdatarows為Cogent語句,表示返回?cái)?shù)據(jù)文件中的行數(shù),如果數(shù)據(jù)文件中有3行數(shù)據(jù),則返回3。for循環(huán)語句將在i每取一個(gè)值的情況下運(yùn)行一次,每次運(yùn)行至end再重i的另一個(gè)取值開始運(yùn)行。當(dāng)運(yùn)行完i所有的取值后,for循環(huán)結(jié)束,并開始執(zhí)行end之后的代碼。
2.反應(yīng)時(shí)數(shù)據(jù)的收集
在神經(jīng)科學(xué)實(shí)驗(yàn)中,反應(yīng)時(shí)間對(duì)于研究至關(guān)重要。用Cogent可以通過編寫簡(jiǎn)單的代碼,精確地收集到這個(gè)指標(biāo)。收集到的數(shù)據(jù)將被存儲(chǔ)在與代碼同名但擴(kuò)展名為.res的結(jié)果文檔中,受試反應(yīng)的錄入情況將完整地記錄在擴(kuò)展名為.log,文件名為‘Cogent-YYYY-MM-DD-HH-MM-SS.log' 的日志文檔中,其中“YYYY-MM-DD-HH-MM-SS”分別以實(shí)驗(yàn)結(jié)束時(shí)的“年-月-日-小時(shí)-分鐘-秒”來命名。為了生成這兩個(gè)重要文件,需要在配置命令中添加針對(duì)結(jié)果文件和日志文件的配置語句。下面結(jié)合范例7,介紹具體代碼。該范例中,在文字刺激后,受試需按鍵盤錄入反應(yīng)。代碼實(shí)現(xiàn)的功能為呈現(xiàn)刺激,記錄不同試驗(yàn)(英文為trial,指實(shí)驗(yàn)中允許完成一次測(cè)量的實(shí)驗(yàn)單元)中受試的按鍵,并計(jì)算反應(yīng)時(shí)。實(shí)驗(yàn)結(jié)束后,日志文檔和結(jié)果文檔既可以直接在MATLAB中讀取,也可以通過Windows操作系統(tǒng)自帶的記事本打開,檢查結(jié)果十分方便。
config_display(0);%0表示在窗口而非全屏模式下顯示
config_data( 'sample7.dat' );
config_log; %配置日志文檔
config_results('sample7.res'); %配置結(jié)果文檔
config_keyboard; %配置鍵盤
start_cogent;
preparestring('+',2); %將注視點(diǎn)‘+’載入緩存2中央
for i=1:countdatarows
code=getdata(i,1); %在數(shù)據(jù)文件第i行第1列提取編碼信息存入變量code
word=getdata( ,2); %在數(shù)據(jù)文件第i行第2列提取文字刺激存入變量word
logstring(code); %將編碼信息寫入日志文檔
logstring(word); %將文字刺激寫入日志文檔
clearpict(1);
preparestring(word,1);
drawpict(2);
wait(1500);
drawpict(1);
t0=time; %記錄文字刺激呈現(xiàn)時(shí)間點(diǎn),并賦值給變量t0
logstring( t0 ); %將當(dāng)前時(shí)間點(diǎn)信息寫入日志文檔
clearkeys; %清除所有鍵盤錄入信息
waituntil(t0+500); %文字刺激呈現(xiàn)后持續(xù)(等待)500毫秒
drawpict(3);
waituntil(t0+1000); %清屏,直到文字刺激呈現(xiàn)后1000毫秒
readkeys; %讀入所有鍵盤輸入信息
logkeys; %將鍵盤輸入信息寫入日志文檔。以下代碼的功能是檢查鍵盤錄入并計(jì)算反應(yīng)時(shí)
[key,t,n]=getkeydown; %getkeydown命令檢查鍵盤輸入并計(jì)算反應(yīng)時(shí)
if n==0 % if-else語句的起始條件,通過“==”做邏輯判別,表示“當(dāng)沒有鍵盤輸入時(shí)”
response=0; %鍵盤錄入信息沒有,記為0
rt=0; %反應(yīng)時(shí)間無法計(jì)算,記為0
elseif n==1 %嵌套if語句,意義為:當(dāng)出現(xiàn)一個(gè)鍵盤輸入時(shí)
response=key(1); %鍵盤錄入信息記為key(1)的值
rt=t(1)-t0; %反應(yīng)時(shí)為鍵入反應(yīng)的時(shí)間點(diǎn)與刺激呈現(xiàn)開始時(shí)間點(diǎn)之差
else %if-else語句的其他條件,即其余情況(如同時(shí)按下多個(gè))按鍵
response=0; %鍵盤錄入信息記為0
rt=0; %反應(yīng)時(shí)記為0
end %if-else語句結(jié)束
addresults(word, response, rt); %將文字刺激,按鍵信息,反應(yīng)時(shí)寫入結(jié)果文檔
end %for循環(huán)結(jié)束
stop_cogent;
Cogent工具包具有免費(fèi)、精度高、編程上手容易、結(jié)果檢查便利等特點(diǎn),與其他實(shí)驗(yàn)軟件相比,Cogent在功能與操作上與商業(yè)軟件Presentation相當(dāng)[2];與免費(fèi)軟件DMDX相比[6],其功能更為全面,查看結(jié)果更容易。
但是,Cogent僅在Window2000操作系統(tǒng),MATLAB 6.0和6.1環(huán)境下經(jīng)過完整的測(cè)試[4]。與早期的E-Prime相似[7],Cogent不支持漢字顯示,呈現(xiàn)漢字時(shí)需將其轉(zhuǎn)換成為圖片格式。考慮到其諸多優(yōu)點(diǎn),對(duì)于編程經(jīng)驗(yàn)不多的學(xué)生和研究人員來說,Cogent無疑是一個(gè)很好的選擇。
[1]宮大志,李壽欣.多種心理學(xué)實(shí)驗(yàn)生成工具的比較分析[J].實(shí)驗(yàn)室研究與探索,2008,27(10).
[2]馮成志,賈鳳琴.心理學(xué)實(shí)驗(yàn)軟件Presentation的應(yīng)用[J].實(shí)驗(yàn)室研究與探索,2009,28(4).
[3]MATLAB[EB/OL].Natick,Massachusetts:The MathWorks Inc.,2012.
[4]Cooper, R, Yule, P. COGENT: An environment for the development of cognitive models[A].In Schmid,U.,Krems, J. F., & Wysotzki, F.(eds.) A Cognitive Science Approach to Reasoning, Learning and Discovery[C], Pabst Science Publishers,Lengerich,Germany.1997:55-82.
[5]Laboratory of Neurobiology[EB/OL].http://www.vislab.ucl.ac.uk/cogent.php,2012.
[6]更柳娜,張鵬.DMDX心理學(xué)教學(xué)平臺(tái)及其應(yīng)用[J].現(xiàn)代遠(yuǎn)距離教育,2009,(121).
[7]陳慶榮,單艷紅,鄧鑄.E-Prime實(shí)驗(yàn)系統(tǒng)及其在心理學(xué)中的應(yīng)用[J].實(shí)驗(yàn)室研究與探索,2006,25(12).
[責(zé)任編輯:趙天睿]
2015-11-20
教育部基金資助項(xiàng)目(12YJCZH262)
溫菲(1980-),女,黑龍江哈爾濱人,講師,主要從事神經(jīng)語言學(xué)、教學(xué)法研究;岳金星(1982-),男,吉林長(zhǎng)春人,講師,博士,主要從事言語的神經(jīng)基礎(chǔ)研究。
TP31
A
1008-7966(2016)01-0154-03