视觉情景范式eb编程.docx
《视觉情景范式eb编程.docx》由会员分享,可在线阅读,更多相关《视觉情景范式eb编程.docx(15页珍藏版)》请在冰豆网上搜索。
视觉情景范式eb编程
使用眼动触发器
必需ExperimentBuilder版本:
1.4.0.226或更高版本
所需的EyeLink:
是
类型:
概念示例
难度级别:
初级
请注意,使用以下组件需要连接眼动仪才能运行。
从左往右,我将依次进行介绍:
注视(FixationTrigger)、眼跳(Saccade)、采样速度(SampleVelocity)以及眨眼(Blink)
注视(FixationTrigger):
当注视发生在刺激屏幕上的特定区域内一定时间后,注视触发。
触发器的“EventType”属性决定了触发器是在注视开始(STARTFIXATION))、结束(ENDFIXATION),还是在注视超过指定的最小持续时间(UPDATEFIXATION)后触发。
默认情况下,使用的是最小持续时间(UPDATEFIXATION)(如)
使用方法:
此trigger只能在Recording层内使用,可参考如
红圈内的属性设置:
首先明确你修改的是Fixationtrigger的属性,那么在左边栏中出现的属性如上图。
当你需要在刺激屏幕上的某个位置进行注视触发的时候,请修改红圈内的属性。
RegionType:
矩形、椭圆形
RegionLocation:
注视区域的TopLeft坐标(
RegionWidth:
注视的宽度(100)
RegionHeight:
注视的高度(100)
MinimumDuration:
50(ms)
那么如果是以上参数的设置,它代表的意义是,当注视区域左上角(300,300)到(400,400)的区域范围内,最小注视持续时间达到50ms以上即就会触发该屏幕到下一屏幕的呈现。
眼跳(SaccadeTrigger):
眼跳触发器,只能在眼动实验中使用,在检测到扫视进入刺激屏幕上的指定区域后触发。
该触发器等待来自眼动仪的“ENDSACC”在线解析器号。
使用方法:
此trigger只能在Recording层内使用,可参考如
红圈内属性设置:
RegionDirection:
区域限制的方向(如)
RegionType:
矩形、椭圆形
RegionLocation:
眼跳区域的TopLeft坐标(参考以上FixationTrigger)
RegionWidth:
眼跳宽度(参考以上FixationTrigger)
RegionHeight:
眼跳高度(参考以上FixationTrigger)
MinimumAmplitude:
最小的眼跳幅度值
采样速度(SampleVelocity)
采样速度触发器,只能在眼动实验中使用,通过逐个采样检查速度(如果需要,还可以检查加速度)来实现扫视或注视检测算法。
使用方法:
此trigger只能在Recording层内使用,可参考如
红圈内属性参数设置:
相同参数可参考以上注视、扫视的设置。
TriggerAboveThreshold:
如果“True”(默认值),当前速度和加速度值超过阈值时,触发器将被触发。
如果“False”,当速度和加速度低于阈值时,触发器将被触发。
VelocityThreshold:
速度的阈值。
认知研究通常为30°/秒。
UseAcceleration:
是否使用加速度
眨眼(BlinkTrigger)
当在刺激区域内检测到凝视位置的丢失后,就会触发无形边界触发器。
该触发器可用于实现基于凝视位置的显示更改。
使用方法:
此trigger只能在Recording层内使用,可参考如
红圈内属性参数设置:
TrackingEye:
追踪的眼睛
EventType:
事件类型(startblink、endblink)
UseParsedEvent:
是否使用集成的事件。
MinimumMissingSample:
最小丢失的采样点
ResetThreshold(msec):
重置时间范围
EB模板|视觉世界范式(visualworldparadigm)
所需的实验生成器版本:
2.3.3或更高版本
需要EyeLink:
是
类型:
示例
难度级别:
中等
此示例演示:
靶刺激目标、标准刺激目标和干扰刺激的定位
如何同步音频号
说明重点(鼠标点击区域设置):
实验程序模板样例:
视觉世界范式模板样例,可在以下网页或软件example中查找。
EB软件(2.3.3版本)中——example,此示例使用自带的电脑声卡即可运行该程序,示例为鼠标点击选择
EyeLink英文论坛示例库(需注册免费账户即可进入下载)
此示例使用ASIO声卡来播放同步声音,需提前在电脑安装该声卡方可使用。
以EB软件中自带example用法说明:
在recording层中,重点要设置鼠标点击的position的设置,若使用四个不同的目标,则需要四个对应的鼠标,设置不同的点击区域即可完成。
在此示例中设置的RegionType为矩形区域,width为16像素点;height为16像素点,设置的初始位置则使用的调用某个变量。
此变量需要提前设置,如
则对应鼠标1的点击区域起始位置为(257,124)坐标,然后加上对应的width和height即可获得鼠标1的点击区域,以此类推其它的鼠标位置即可。
另外需要注意的是设置重置起始位置。
在trial层中设置X=Y赋值起始位置。
其它设置,可参考以上实验程序设置。
实验设计|ExperimentBuilder中如何设置兴趣区?
ExperimentBuilder内置的三个种类兴趣区的方法:
参考EB手册.3章节——ManuallyCreatinganInterestArea、AutomaticSegmentation、UsingInterestAreaFiles
ManuallyCreatinganInterestArea(手动创建兴趣区)
可以通过DisplayScreen界面上的三种图形(矩形、椭圆、自由形状)来手动划定兴趣区域,这跟在DataViewer中的画法一致。
AutomaticSegmentation
自动切分兴趣区,它也有三种方式:
GridSegment、AutoSegment和WordSegment
GridSegment:
生成一组矩形兴趣区域,将整个工作空间划分为网格。
在所需的屏幕下,右键选择CreateInterestAreaSet,当选择GridSegment时,即会展示如所示的矩形兴趣区。
AutoSegment:
能为屏幕上的刺激自动划定兴趣区。
,选择需要的画兴趣区的刺激内容右键选择Create
当选择AutoSegment时,即可分别为同一屏幕上的不同刺激划定兴趣区。
对于时划定矩形框还是椭圆形,可在软件的首选项中找到如下界面进行修改其参考即可。
WordSegment:
对于文本类,非常有用的切分方法。
第一类切分,在首选项(可参看上图),调整word_Segment的属性,勾选上EnableCharacterSegment,即展示字符的切分。
第二类切分,仅选择上EnableInterestAreaDelimiter,默认参数则会以空格为分界线,将词与词间分开,这比较适用于非汉语类的文本刺激显示。
对于汉语类的文本刺激,可在此选项上进行修改,在需要切分的位置添加上特殊的字符,如*、#、%等,然后在首选项wordsegment中选择上EnableInterestAreaDelimiter和DeleteDelimiter(在显示刺激屏幕时删去特殊字符),并将DelimiterCharacter的特殊字符修改为在句子中添加的一致,包括DataSource里存放的材料。
然后在选中的屏幕上的文本或多行文本组件,将其属性UseRuntimeWordSegment勾选上。
UsingInterestAreaSetFiles:
使用已有的IA模板
这种方式是利用在DataViewer软件中,生成IA模板,然后将其导入在实验设计阶段。
可在librarymanager里导入后使用。
至此,以上是在EB实验设计过程中,可进行兴趣区划定的方法
实验设计|如何在实验中同步音频视频刺激?
今日文章基于window操作系统进行讲述:
假设呈现刺激电脑(DisplayPC)是Windows系统,则在ExperimentBuilder中有两个音频驱动程序选项:
ASIO或DirectX(如)。
ASIO是专业声卡驱动模式的一种简称,全称是AudioStreamInputOutput,直接翻译过来就是音频流输入输出接口。
通常这是专业声卡或高档音频工作站才会具备的性能。
采用ASIO技术可以减少系统对音频流号的延迟,增强声卡硬件的处理能力。
简单的来说,ASIO的目的是降低音频延迟;同时ASIO作为系统中独立的音频通道可以避开DirectSound(或其他通道)的干扰,从而使得ASIO应用程序可以不受系统中正在运行的其它程序的干扰。
请确保安装好专业声卡后,正确安装好对应的驱动程序。
如果DisplayPC在macOS上运行,则没有可供选择的音频驱动程序,因为Mac硬件的驱动程序仅有OSX驱动。
假设,我们需要在某一屏幕中进行视觉材料和听觉材料的同步呈现时,那么我们需要同步开始呈现,在EB中如何进行配置?
如果您使用的是带有ASIO兼容声卡的Windows刺激呈现电脑(DisplayPC)且已经安装好ASIO声卡驱动程序,则可以通过选中“SynchronizeAudio”属性来将音频与特定的“screen”节点同步,勾选上如红框中的内容,将进一步显示其属性,包括使用的声卡和待选择的声音文件等,可以包含单个WAV文件,也可以通过指向“datasource”列进行关联,该属性中还包括音量,声像(平衡)和偏移也可进行设置,偏移可设置为负值,在此情况下,声音文件将在显示屏幕之前开始播放。
如果您使用的是不带有ASIO兼容声卡的Windows刺激呈现电脑(DisplayPC),那么就只能使用电脑自带的声卡驱动程序DirectX,当实验使用DirectX作为音频驱动程序时,“DisplayScreen”节点的“同步音频”属性将不可用。
要实现DirectX的最佳同步方法,请在所需要的“DisplayScreen”节点之后直接放置一个“playsound”组件,并将其连接起来然后添加其声音文件进行同步(如)。
实验设计|在特定阅读材料上添加理解性问题
对于此类实验设计,我们的想法是可以再DataSource中添加分别的两列,一列存放阅读材料;另一列存放“问题”材料,同时在Recording中添加两个DisPlay控件进行调用DataSource中的材料。
这样我们就实现了一屏呈现阅读材料后紧跟着出现“问题”材料,这是第一步设计。
第二步想法是我们只想在特定的实验Trial中出现问题,那么我们还需要在DataSource中再添加一列,用于进行判断,当出现特定字,才会出现“问题”材料。
实现设计图:
第一步,在DataSource中分别添加三列材料,。
1、用于阅读材料的一列;
2、用于判断是否出现问题的一列;3、“问题”出现的一列
第二步,在Recording层实现调用
在recording层添加不同的组件来实现材料的调用。
1、阅读材料的调用
2、判断条件3、“问题”出现4、仅发送message到数据中
EB模板|同步使用EyeLink与第三方设备(EEG、biopac、近红外等)
所需的实验生成器版本:
2.3.3或更高版本
需要EyeLink:
是
类型:
完整示例
难度级别:
简单
此示例演示:
如何使用TTL号来实现同步眼动仪和EEG/fnirs/biopac等设备
EEG/fnirs/biopac与TTL号同步的注意事项
如何发送号以标记实验事件/条件
说明:
第三方设备中需使用TTL号来接收触发标记号
实验生成TTL号的组件
用法:
TTL通的工作原理是检测接收端引脚状态的变化。
通常应在发送预期的TTL号后发送清除号(例如,0x0)。
清除号可以在试次结束时或在初始TTL号之后的某个时间使用第二个SET_TTL操作发送(建议至少有20毫秒的间隔)。
如果重复发送相同的TTL值,则接收端不会检测到任何变化。
在EB实验软件中,有两个组件可生成TTL号(使用方法上略有不同)
1、
Set_TTL发送TTL号,不会自动清零
SET_TTL,通过在MacOS/WindowsPC上使用并行端口,USB-120HS或USB2TTL发送TTL号。
因此使用此控件时,一定要及时的设置清零。
选择对应的并口设备和修改此处的data,如需要调用,即在dataSource里列数字列表即可(数字列表范围0-255)
SetTTL示例,可回复关键字“TTL”即可获取以上示例程序
2、
BiometricTTL发送TTL号,会自动清零,默认是20ms间隔
生物识别TTL控制操作用于将事件标记发送到能接收TTL号的生物识别记录设备,是SET_TTL操作的改进版本,生物识别TTL控制操作包括增强的设备支持,并简化了配置事件标记并将事件标记发送到生物识别记录设备的过程。
生物识别TTL控制还提供了可操作的“开始记录”和“停止记录”选项可以发送号,控制实验生成器中许多记录设备的记录开始和停止,前提是记录的设备能支持TTL号的触发记录。
实验刺激标记的发送,仅需添加一个BiometricTTL即可完成。
对应修改其属性,选择操作、ttl设备以及发送的数字data。
BiometricTTL示例可参考eb2.3版本以上中的example程序
实验设计|EB软件中使用if条件语句
必需ExperimentBuilder版本:
1.4.0.226或更高版本
所需的EyeLink:
是
类型:
概念示例
难度级别:
中级
在EB软件的Trigger栏中,使用ConditionalTrigger就可以实现if....else...的条件判断语句。
接下来我将进行用法介绍:
在实验设计过程中始终离不开的是逻辑思维构建图法,EB软件是在Python程序语法的基础上进行开发建立的GUI实验设计软件,Python中的ifelse语句可以细分为三种形式,分别是if语句、ifelse语句和ifelifelse语句,它们的语法和执行流程如下所示。
也许你在实验设计中见过这样的构建图:
图1
它的实际语句判断是:
if条件满足继续运行
也许还是这样的:
它的实际语句判断是:
if条件是正确的就运行代码块1else条件是错误的,就进行代码块2
它的实际语句判断是:
if条件满足就进入代码块1elif条件不满足继续判断直到满足某条件,就进入代码块n。
在实际的实验程序中,我们该如何运行它呢?