基于MATLAB的神经科学工具包Cogent及其编程实现

2016-03-15 03:10岳金星
关键词:工具包数据文件日志

温 菲,岳金星

(1.哈尔滨商业大学外语学院,哈尔滨 150028; 2.哈尔滨工业大学 语言文学学院,哈尔滨 150001)



基于MATLAB的神经科学工具包Cogent及其编程实现

温 菲1,岳金星2

(1.哈尔滨商业大学外语学院,哈尔滨 150028; 2.哈尔滨工业大学 语言文学学院,哈尔滨 150001)

神经科学研究中,高质量实验数据的采集依赖于时间精度高、功能强大的编程工具,从而精准的呈现刺激材料和收集受试的反应。Cogent便是这样一款基于MATLAB平台的神经科学实验工具包。该工具包诞生于伦敦大学学院,可呈现并编写听觉、视觉以及动画刺激材料,以应用于行为、脑电、功能磁共振成像等神经科学实验中。Cogent程序编写的核心有两个,第一,需要了解Cogent在呈现不同类型刺激时的特殊句法;其二,成功的编程还在于理解程序脚本、缓存分配和数据文件之间的分配与调用关系。由于Cogent编程语法接近自然语言,十分容易上手,非常适合不同背景的神经科学研究人员使用。

神经科学;MATLAB工具包;编程;刺激呈现

在神经科学研究中,通用实验编程工具种类繁多,既有像E-Prime,Presentation,Inquisit等付费商业软件,亦有如DMDX等免费的开放程序[1-2]。随着数学计算工具MATLAB (The MathWorks Inc.) 的不断普及,基于该平台编写的实验工具包为神经科学实验带来了便利,例如呈现刺激常用的编程工具包Psychtoolbox[3]。基于MATLAB的工具包具有免费,精度高,可扩展性和研究适应性强等特点。本文介绍另一种面世时间不长,面向实验编写的MATLAB工具包,Cogent。

一、Cogent简介

Cogent工具包诞生于英国伦敦大学学院,由于Cogent通过更加易懂的独立语法调用MATLAB的底层函数[4],这极大降低了使用的难度[5]。Cogent以卓越三的视觉图形刺激处理而著称,亦可以呈现文字和听觉刺激,并能够精准地收集受试的反应时间。

Cogent分为三个层次结构[4]。底层结构包括MATLAB、Window操作系统和DirectX工具;中间结构包括以.dll为后缀的低级函数以及MATLAB接口,面向编程人员和高级用户;最上层为Cogent高级函数包,面向普通用户,用户只需要将指令写入一个m文件(MATLAB脚本文件),执行即可。

二、Cogent的安装与程序基本编写原则

1.Cogent的安装

在伦敦大学学院神经生物学实验室的网站上(www.vislab.ac.uk/cogent.php)研究人员可以免费下载Cogent。解压缩Cogent压缩包之后会在与压缩包同名的文件夹中出现3个子文件夹,分别是:Documents,Samples,Toolbox。在Documents文件夹中包括所有和Cogent有关的使用手册;Samples文件夹中是经过严格测试可运行的代码,供研究人员编程时参考;Toolbox中主要包括Cogent各函数的MATLAB脚本。在MATLAB环境下,用“Set Path”加载Cogent中各文件夹目录至MATLAB路径之后,即可运行含有Cogent函数的程序脚本。

2.Cogent程序编写基本原则

一个可以运行的Cogent实验程序包括Cogent程序代码、刺激材料和数据文件。Cogent代码规定实验如何运行(例如一个词呈现时间的长短);数据文件(可以为txt格式或dat格式)是程序代码和刺激材料的中介,实验运行中,Cogent通过读取数据文件,决定呈现何种刺激;数据文件通常由两列构成,第一列是想要呈现的刺激(如一个词)或刺激的文件名(刺激需加单引号),第二列则是为该种刺激分配的编号。

一段完整的Cogent程序代码包括三部分:配置语句、实验起始提示语句和实验运行语句,三部分缺一不可。

基础的配置语句有config_display,config_sound, config_keyboard, config_mouse,等。这些配置语句告知Cogent在随后的实验中所需要配置的屏幕显示、声音播放、输入设备的参数。

下面以屏幕显示配置命令config_display为例,介绍研究人员如何根据实验需要,进行参数设置。在config_display之后添加括号,并为其所包括的8个参数赋值,不同参数间用逗号分开。例如config_display(1,1,[0 0 0],[1 1 1],‘Helvetica’,50,4,0);表示实验中屏幕为全屏模式,分辨率为640*480,背景为纯黑,前景为纯白,字体为“Helvetica”,字号为50,分配缓存数为4,显示每个像点最大像素值。

配置数据文件,同样必不可少。若数据文件存放路径与MATLAB环境中的当前目录相同,则通过命令config_data(‘文件名.dat’)即可配置数据文件,无须添加额外的路径信息。

在配置语句之后需要用start_cogent提示计算机开始执行cogent实验代码,与之相对的是在脚本的最后,需要用stop_cogent语句提示计算机停止程序运行。

在开始和结束提示语句的中间,写入实验运行语句。该部分主要包括编写背景对象、编写刺激对象和编写受试反应收集。背景对象主要指实验过程中呈现相对稳定的对象,例如实验指导语、屏幕中央注视点“+”号等。针对背景对象编写代码最重要的原则是,先将对象放入相应的缓存单元,然后再将其呈现。例如下边这段代码可以实现在屏幕上先呈现“+”号,再呈现“&”号,然后再呈现“+”号。

但是,如果之后需要使用相同编号的缓存单位呈现不同的刺激,需要及时将该单位清空,以防止对象重叠呈现。在上例中可以用clearpict(n)命令,其中n代表要清空的缓存单位号(例如1或2)。

与该逻辑相同,呈现实验刺激时,需要经历刺激的提取、载入和呈现三个步骤。第一步提取刺激。由于刺激呈现往往需要参考数据文件,因此,通常首先用getdata(r,c)语句读取数据文件中的内容,括号中r定义的是读取数据文件中矩阵的行数,c对应的是列数。如果刺激来自文件,载入文件的同时应分配给其相应的缓存单位。用loadpict( ‘文件名.扩展名’,n)命令载入图片文件,用loadsound( ‘文件名.wav’,n)载入声音文件,文本刺激用preparestring( ‘文本’,n)语句载入,n代表编程人员为其分配的缓存单位编号。第一步与第二步的顺序根据实验需要可以做相应的调整。第三步呈现刺激。视觉刺激通过drawpict(n)来呈现。声音刺激通过playsound(n)和waitsound(n)的命令组合来呈现,前者指示Cogent播放缓存n中的声音刺激,waitsound(n)表示直到缓存n中的声音刺激播放完毕再进行其他操作。

三、范例

1.呈现文字刺激

在以语言为对象的神经科学研究中,文字刺激的呈现必不可少,下边结合Cogent自带的范例1介绍关键语句(程序代码中的%号后面的文字是对代码语句的解释说明)。

config_display; %采用缺省参数配置屏幕呈现

config_data('sample1.dat'); %从sample1.dat中读入数据

start_cogent; for i=1:countdatarows

word = getdata(i,1); % word=表示赋值给word。

clearpict(1);

preparestring(word, 1);

drawpict(1); %此时刺激呈现在屏幕上。

wait(1000);

来自于阿美或自他承包商,有能力、经验和资格识别脚手架安全风险,验证脚手架是否符合阿美相关标准要求,同时记录脚手架检查及验收结果。脚手架检查工程师也必须经过阿美认证,其证书有效期也是三年

drawpict(2);

wait(1000);

end %当for循环在i所有可能的取值运算结束后,在此结束for循环,程序继续向下运行。

drawpict(2);

stop_cogent;

上述代码第四行for i=1:countdatarows中是一个for循环语句,表示i的值从1开始取,“:” 表示“直到”,例如1:3表示1,2,3;countdatarows为Cogent语句,表示返回数据文件中的行数,如果数据文件中有3行数据,则返回3。for循环语句将在i每取一个值的情况下运行一次,每次运行至end再重i的另一个取值开始运行。当运行完i所有的取值后,for循环结束,并开始执行end之后的代码。

2.反应时数据的收集

在神经科学实验中,反应时间对于研究至关重要。用Cogent可以通过编写简单的代码,精确地收集到这个指标。收集到的数据将被存储在与代码同名但扩展名为.res的结果文档中,受试反应的录入情况将完整地记录在扩展名为.log,文件名为‘Cogent-YYYY-MM-DD-HH-MM-SS.log' 的日志文档中,其中“YYYY-MM-DD-HH-MM-SS”分别以实验结束时的“年-月-日-小时-分钟-秒”来命名。为了生成这两个重要文件,需要在配置命令中添加针对结果文件和日志文件的配置语句。下面结合范例7,介绍具体代码。该范例中,在文字刺激后,受试需按键盘录入反应。代码实现的功能为呈现刺激,记录不同试验(英文为trial,指实验中允许完成一次测量的实验单元)中受试的按键,并计算反应时。实验结束后,日志文档和结果文档既可以直接在MATLAB中读取,也可以通过Windows操作系统自带的记事本打开,检查结果十分方便。

config_display(0);%0表示在窗口而非全屏模式下显示

config_data( 'sample7.dat' );

config_log; %配置日志文档

config_results('sample7.res'); %配置结果文档

config_keyboard; %配置键盘

start_cogent;

preparestring('+',2); %将注视点‘+’载入缓存2中央

for i=1:countdatarows

code=getdata(i,1); %在数据文件第i行第1列提取编码信息存入变量code

word=getdata( ,2); %在数据文件第i行第2列提取文字刺激存入变量word

logstring(code); %将编码信息写入日志文档

logstring(word); %将文字刺激写入日志文档

clearpict(1);

preparestring(word,1);

drawpict(2);

wait(1500);

drawpict(1);

t0=time; %记录文字刺激呈现时间点,并赋值给变量t0

logstring( t0 ); %将当前时间点信息写入日志文档

clearkeys; %清除所有键盘录入信息

waituntil(t0+500); %文字刺激呈现后持续(等待)500毫秒

drawpict(3);

waituntil(t0+1000); %清屏,直到文字刺激呈现后1000毫秒

readkeys; %读入所有键盘输入信息

logkeys; %将键盘输入信息写入日志文档。以下代码的功能是检查键盘录入并计算反应时

[key,t,n]=getkeydown; %getkeydown命令检查键盘输入并计算反应时

if n==0 % if-else语句的起始条件,通过“==”做逻辑判别,表示“当没有键盘输入时”

response=0; %键盘录入信息没有,记为0

rt=0; %反应时间无法计算,记为0

elseif n==1 %嵌套if语句,意义为:当出现一个键盘输入时

response=key(1); %键盘录入信息记为key(1)的值

rt=t(1)-t0; %反应时为键入反应的时间点与刺激呈现开始时间点之差

else %if-else语句的其他条件,即其余情况(如同时按下多个)按键

response=0; %键盘录入信息记为0

rt=0; %反应时记为0

end %if-else语句结束

addresults(word, response, rt); %将文字刺激,按键信息,反应时写入结果文档

end %for循环结束

stop_cogent;

四、结语

Cogent工具包具有免费、精度高、编程上手容易、结果检查便利等特点,与其他实验软件相比,Cogent在功能与操作上与商业软件Presentation相当[2];与免费软件DMDX相比[6],其功能更为全面,查看结果更容易。

但是,Cogent仅在Window2000操作系统,MATLAB 6.0和6.1环境下经过完整的测试[4]。与早期的E-Prime相似[7],Cogent不支持汉字显示,呈现汉字时需将其转换成为图片格式。考虑到其诸多优点,对于编程经验不多的学生和研究人员来说,Cogent无疑是一个很好的选择。

[1]宫大志,李寿欣.多种心理学实验生成工具的比较分析[J].实验室研究与探索,2008,27(10).

[2]冯成志,贾凤琴.心理学实验软件Presentation的应用[J].实验室研究与探索,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心理学教学平台及其应用[J].现代远距离教育,2009,(121).

[7]陈庆荣,单艳红,邓铸.E-Prime实验系统及其在心理学中的应用[J].实验室研究与探索,2006,25(12).

[责任编辑:赵天睿]

2015-11-20

教育部基金资助项目(12YJCZH262)

温菲(1980-),女,黑龙江哈尔滨人,讲师,主要从事神经语言学、教学法研究;岳金星(1982-),男,吉林长春人,讲师,博士,主要从事言语的神经基础研究。

TP31

A

1008-7966(2016)01-0154-03

猜你喜欢
工具包数据文件日志
一名老党员的工作日志
慢性病健康工具包研究进展
扶贫日志
谷歌云与Digital Asset合作推出区块链工具包
雅皮的心情日志
数据文件恢复专题问答
数据文件安全管控技术的研究与实现
SQL数据文件恢复工具
游学日志
运用MATLAB软件求解高中数学中的线性和非线性规划问题