Recording层
实验设计回顾
本节中我们将编辑红色选框选中的部分。
首先,我们将在第一部分中构建一个只呈现1篇文章实验。随后我们将在第二部分通过
Datasource
和引用
构建出多个试次的循环。
1. 构建单个试次结构
本阶段中用到的所有控件其实已经在之前的部分介绍过了。我在这里会做一个最基本的叙述作为复习。
1.1 Display_TextPage
- 添加一个新的
DisplayScreen Action
空间,连接箭头,修改名称为“Display_TextPage”。
- 修改
Background Color
为中性灰128, 128, 128, 255
。
- 打开
Display_TextPage
的Screen Builder
,添加一个MultiLine_Text_Resource
。
- 设置
MultiLine_Text_Resource
的Margin
,编辑文本内容,设置文字为黑色 - 15号 - Courier New - Double行距
。
- 关闭
MultiLine_Text_Resource
窗口完成编辑。
⚠️注意⚠️:我们需要额外设置Use For Host Display
属性为True
,以配合Trial层
中的Prepare Sequence
的Draw to Eyelink Host
设置(传送门)。
1.2 Keyboard_of_TP
- 添加一个新的
Keyboard Trigger
,连接箭头,修改Label
为“Keyboard_of_TP”。设置触发按键为Space
。
1.3 Display_Question
-
添加一个新的
DisplayScreen Action
空间,连接箭头,修改名称为“Display_Question”。 -
在
Screen Builder
中添加MultiLine Text Resource
,设置Margin
,添加文本。 -
设置
黑色 - 15号 - Courier New
。
⬆️此处是操作动图,文件较大可能加载缓慢。
1.4 Keyboard_of_Question
-
添加一个新的
Keyboard Trigger
,连接箭头,修改Label
为“Keyboard_of_Question”。 -
此处我们的设计是让被试判断问题的对错,如果问题是对的,则按
f
键,反之则按j
键。因此我们设置Keyboard_of_Question
的触发按键为f
或j
。
设置按键多选时可以直接使用
Ctrl
或者Shift
进行多选。
至此,单一试次任务编写完成。
2. 测试程序
在完成但一试次任务编写之后,我们可以试运行我们的实验,以此来检测整个实验流程是否是按照我们的想法进行的。
这里要用到Experiment Builder
的Test Run
功能,你可以在工具栏中找到它。
无论是否连接眼动仪,我们都可以通过点击Test Run
按钮来试运行程序。
- 连接眼动仪 - 点击
Test Run
直接运行即可; - 未连接眼动仪 - 开启
Dummy Mode
后试运行实验。
很多时候我们都不能连接眼动仪来调试设备,那么Dummy Mode
的存在就非常有意义了。在Dummy Mode
下,可以不连接眼动仪、直接跳过眼动仪校准等环节运行试验。
当然这样做的代价是,在整个实验的运行过程中,和眼动相关的很多触发器等功能都无法使用了。
2.1 设置Dummy Mode
首先设置Dummy Mode
,如果您已经连接了眼动仪,请跳过此步骤直接进行2.2 Test Run试运行
。。
在Structure面板
中选中Devices
标签页,点击Eyelink
,在其Properties
面板中即可找到Dummy Mode
属性。
2.2 Test Run试运行
点击工具栏
中的Test Run
开始试运行。
首先会出现第一个提示,告知Test Run
会清空现存的所有数据,即之前Test Run
时采集的数据。
在这里强调一下,Test Run
仅仅适用于试运行程序,不能用于正式的数据采集。
之后会和正常运行程序一样,出现第二个提示窗口,输入.edf
文件的名称。
然后是最后一个提示框,告知Test Run
模式下部分眼动相关的功能可能会失效。
整个过程如下图所示(可能加载缓慢):
3. Datasource与引用
在前面的工作中,我们已经构建好了单试次的实验,只呈现了一篇文章和一个问题。
实验设计中共计划呈现4篇文章和4个问题,剩下的三个要怎么办呢?复制粘贴也许是个能解决问题的办法,但是这不是“正宗”的方案。
在这里我们要引入一个新的概念——Datasource
。
Datasource
实际上是一个表格,以当前实验任务为例:一共四个试次,每个试次的结构都是一样的,即“呈现文章 - 看完按空格 - 呈现问题 - 按f/j作答“。每个试次运行的时候都是套用这样一个格式,区别在于每次呈现的文章和问题不同。
我们将每个试次之间不同的部分放到一个表格里面,套用相同的流程格式,就成功创建了许多个试次。而这个表格就叫做Datasource
,如下表所示:
Trial ID | Text Page | Question | Correct Answer |
---|---|---|---|
1 | Buck did not read… | The heavy dogs are popular. | f |
2 | The house was… | There are 13 boys here in total. | f |
3 | They came and… | The fox terriers never yelp. | j |
4 | Among the terriers… | Elmo weight 100 pounds. | j |
-
Trial ID
为1的试次所呈现的文章是:“Buck did not read…”,被试按空格后所呈现的问题是:“The heavy dogs are popular.”,这道题的正确答案是“f”。 -
Trial ID
为2的试次所呈现的文章是:“The house was…”,被试按空格后所呈现的问题是:“There are 13 boys here in total.”,这道题的正确答案是“f”。 -
以此类推……
3.1 建立Datasource
我们如何将这个表格移植到我们的实验程序中呢?
熟悉E-Prime的朋友知道E-Prime的List功能,实际上Datasource
的逻辑也是类似的。
Datasource
实际上是Sequence
的一个属性,Sequence
在默认情况下是没有Datasource
的。
一旦我们给Sequence
添加了Datasource
属性,那么Sequence
也就开启了循环功能,Datasource
的表格有几行,Sequence
就会被执行几次。
在先前的实验编程中,我们已经设置了三个Sequence
——Block
、Trial
和Recording
。那应该让哪个Sequence
循环呢?
答案很简单,让Trial
循环。所以我们要把Datasource
创建到Trail
下面。
选择Trial层
的Sequence
,双击Properties窗口
的Data Source
属性。
3.1.1 Add Column
点击Add Column
,输入Column Name
,根据情况设置Column Type
,点击OK
即可。
成功添加Trial_ID
。
继续添加其他Column
。
3.1.2 Add Row
完成Column
的添加之后我们来添加行。点击Add Row
,添加4行。
完成添加。
⚠️注意⚠️:总的行数需要和Datasource
的实际行数完全一致,不能留有空行,否则会报错。
3.1.3 添加内容
把准备好的Datasource
内容复制粘贴进来即可。
⚠️注意⚠️:下图中绿框
和红框
中的数字虽然一样,但是绿框
仅代表行的编号。而红框
中的数字,即Trial_ID
的值,则是给每个条件的试次一个单独的编号,用作后面的数据分析与统计。
3.2 对刺激材料设置引用
引用
,英文叫做Reference
,通过引用
可以让某些内容或者属性动态变化。
此处我们要对随着试次变化的“阅读材料”和“问题”设置引用,引用到对应的Datasource
上。
3.2.1 设置Text_Page的引用(多行文本引用)
打开Display_TextPage
中的MultiLine Text Resource Editor
。选中全部文字,点击工具栏中的Add Reference
按钮。选中左侧列表中Trial
下面的Datasource
,此时中间的列表中就回出现Datasource
中所有Column
的名称。双击Text_Page
,看到上方的输入框变为“@parent.parent.parent.Trial_DataSource.Text_Page@”则成功引用,点击OK
即可。成功引用后,文字的内容将会变成@
。
注意事项:
Datasource
的位置是在Trial层
下面,因为Datasource
是Trial层
这个Sequence
的一个属性,由于Datasource
的存在,Trial
才会重复执行。如果Datasource
没有再Trial
下面的话,就说明建立错了位置。
- 在进行
Reference
操作时,双击目标才是正确的引用方法。
完成引用后,我们可以使用预览功能来查看Reference
的效果。也可以在点击Preview
之后按《
和》
逐一切换。
3.2.2 设置Question的引用
使用同样的方法对Question
屏的问题文字进行引用。详细解释略。
3.3 再次Test Run
再次执行Test Run
,我们就可以看到四个试次了。
4. 添加Message
Message
类似于脑电数据中的Marker,是一种数据标记。
在Recording层
中,我们先是呈现了Text Page
,接着呈现了Question
。在这个过程中,眼动数据是一直在记录的。如果不在眼动数据中添加一些特殊标记,眼动仪就不知道什么时候看的是Text Page
,什么时候看的是Question
。
Message
就是标记许多特殊事件的标记,内容通常是一些英文字符。
例如用“Text Page Start”、“Text Page End”来标记Text Page
的开始和结束。
几乎每一个控件都会有一个Message
属性,在这个控件生效的时候,会将Message
的内容发送到.edf文件
中,作为标记。所以我们要将特定的文本内容添加到特定控件的Message
属性中。
此处我举例设置Display_TextPage
的Message
。
完成全部Message
设置示例如下:
截止目前,完成了非随机的全试次编程。
Test Run
一下试试效果吧!
以上。