用于眼睛跟踪的端到端python分析工具包
PyTrack-NTU的Python项目详细描述
pytrack
这是一个分析和可视化眼睛跟踪数据的工具包。它提供以下功能:
特征提取
这包括提取与眨眼、注视、眼跳、微距和瞳孔直径相关的参数或元数据。提取的特征如下:
<表><广告>统计分析
特征提取后,pytrack可以进行student t检验、welch t检验、方差分析、rmanova、n-way方差分析和混合方差分析。可以指定组间和组内因素。
可视化
pytrack可以生成多种图。可视化是通过一个交互式的图形用户界面。可以生成的绘图如下:
- 固定图
- 个体被试注视热图
- 聚合对象注视热图
- 动态瞳孔大小和注视图
- 微卫星位置和速度图
- 微卫星主序列图
目录
- pytrack
- 特征提取
- 统计分析
- 可视化
- 目录
- 文档
- 安装
- 样本数据
- 使用pytrack
- 设置
- 运行pytrack
- 高级功能
- 统计测试
- 将提取的特征作为字典进行访问
- 在独立模式下使用pytrack" rel="nofollow">在独立模式下使用pytrack
- 作者
- 许可证
- 确认
文档
pytrack方法和类的详细文档可以在这里找到
安装
pytrack是为python3建造的,因为对python2的支持将在2019年底停止。要安装pytrack,请使用以下任一选项:
python3 -m pip install PyTrack-NTU
pip install PyTrack-NTU
pip3 install PyTrack-NTU
请确保pip是针对python3而不是python2。蟒蛇3可以在这里找到,或者蟒蛇3可以在这里找到。
注意:python3可以与python2一起安装
示例数据
为了测试工具包,可以在这里找到SMI、Eyelink和TOBII格式的一些示例数据。文件夹中的.txt文件描述了找到的数据。SMI和TOBII文件取自此处
使用pytrack
设置
在运行框架之前,让我们设置文件夹,以便pytrack可以在一个中心位置读取和保存所有生成的图形,并对其进行组织。
创建如下所示的目录结构。为了使pytrack正常工作,列出的目录必须存在。
注意:样本数据有一个名为"NTU实验"的文件夹,该文件夹已按以下方式组织。它可以作为参考。
[Experiment-Name]
|
â""â"€â"€ Data/
â"‚ â"‚ subject_001.[asc/txt/tsv/...]
â"‚ â"‚ subject_002.[asc/txt/tsv/...]
| |__ ......
â"‚
â""â"€â"€ Stimulus/
â"‚ â"‚ stim_1.[jpg/jpeg]
â"‚ â"‚ stim_2.[jpg/jpeg]
| |__ ......
|
â""â"€â"€ [Experiment-Name].json
[实验名称]代表您的实验名称。其余步骤将使用NTU实验作为[实验名称]文件夹。
现在,请执行以下步骤:
将所有受试者的数据放在数据文件夹下的NTU实验主文件夹下。确保每个数据文件的名称都是主题/参与者的名称。将所有空格()替换为下划线(。
例如,华夫饼饼.asc或受试者.asc
为了正确地显示凝视数据,最好将实验中呈现的刺激包含在stimuli文件夹中。确保图像具有jpg、jpeg或png扩展名,并且名称与记录数据中的刺激名称相匹配。
例如,stim_1.jpg或random_picture.png
设置实验目录的最后一步也是最后一步是包含实验描述json文件。这个文件应该包含实验的基本细节。它包含关于你的实验的规范,比如你想要分析的刺激物或者你想要包括的参与者/受试者。下面提到的是json文件结构。下面的内容可以复制并粘贴到一个名为ntu\experience.json的文件中。
- "实验名"应与不带扩展名的json文件同名,"路径"应是到实验目录的绝对路径,结尾不带最后的"/"。
- 应在"主题"字段下添加主题。您可以为受试者指定一个或多个分组(建议用于组间统计分析)。必须至少有一个组
- 刺激物的名字应该加在下面"刺激"字段,然后您可以再次指定一个或多个类型(建议用于刺激类型之间/内部的统计分析)。必须至少有一种类型
- "控制问题"字段是可选的。如果您有一些刺激物,应该用来标准化/标准化从所有刺激物中提取的特征,请在此处指定名称。这些刺激必须出现在其中一种类型下的"刺激"字段下
- 标记为"感兴趣的列"的字段不应更改。
- 在"分析参数"下,只需更改"采样频率"、"显示高度"和"显示宽度"的值即可与实验值匹配。
- 标记为"感兴趣的列"的字段不应更改。
注意:如果您只想分析刺激或主题的一个子集,请在json文件中只指定感兴趣的部分。分析和可视化将只对json文件中提到的那些进行。
注意:示例数据中的ntu_u实验文件夹中存在一个示例json文件。您可以编辑它使您的工作更简单。
{"Experiment_name":"NTU_Experiment","Path":"abcd/efgh/NTU_Experiment","Subjects":{"group1":["Subject_01","Subject_02"],"group2":["Subject_03","Subject_04"]},"Stimuli":{"Type_1":["Stim_1","Stim_2"],"Type_2":["Stim_3","Stim_4"],},"Control_Questions":["Stim_1"],"Columns_of_interest":{"EyeTracker":["GazeLeftx","GazeLefty","GazeRightx","GazeRighty","PupilLeft","PupilRight","FixationSeq","GazeAOI"],"Extra":["EventSource"]},"Analysis_Params":{"EyeTracker":{"Sampling_Freq":1000,"Display_width":1920,"Display_height":1280}}}
运行pytrack
注意:下面显示的所有样本段都是样本数据中的NTU实验文件夹。
为了使用这些功能,第一步是将原始数据转换为可读格式。为此,可以使用以下代码段:
fromPyTrack.formatBridgeimportgenerateCompatibleFormat# For windows the path will look like # a. exp_path="complete\\path\\to\\NTU_Experiment"# or b. exp_path=r"complete\path\to\NTU_Experiment"generateCompatibleFormat(exp_path="complete/path/to/NTU_Experiment",device="eyelink",stim_list_mode='NA',start='start_trial',stop='stop_trial',eye='B')
要详细了解GenerateCompatibleFormats的参数并根据需要对其进行修改,请参见文档此处
第二步是创建实验类的对象
fromPyTrack.ExperimentimportExperiment# Creating an object of the Experiment classexp=Experiment(json_file="complete/path/to/NTU_Experiment/NTU_Experiment.json")
现在您可以运行特征提取和统计测试
# Instantiate the meta_matrix_dict of an Experiment to find and extract all features from the raw dataexp.metaMatrixInitialisation()# Calling the function for the statistical analysis of the dataexp.analyse(parameter_list={"all"},between_factor_list=["Subject_type"],within_factor_list=["Stimuli_type"],statistical_test="anova",file_creation=True)# Does not run any statistical test. Just saves all the data as csv files.exp.analyse(parameter_list={"all"},statistical_test="None",file_creation=True)
要详细了解analyse函数的参数,请点击此处
要详细了解metamatrixinitialization函数的参数,请点击这里
用于可视化
# This function call will open up a GUI which you can use to navigate the entire visualization processexp.visualizeData()
高级功能
统计检验
实验类包含一个名为analyze()的函数,该函数用于执行统计分析(例如:方差分析或t检验),默认情况下,只考虑1个组内因素(subject_type)和1个组内因素(stimuli_type)。如果需要考虑其他因素,则需要将它们添加到json文件中。
例如,如果要将性别视为组间因子,那么在json文件的"subjects"下,对于每个主题,必须创建一个相应的dicitionary,其中提到因子名和相应的值。还请注意,组类型后的方括号('[',']')需要更改为花括号('{','}')。
类似地,对于刺激,例如,如果您显示文字和图片以引起用户的不同反应,并且您另外具有两个不同的亮度级别("高"和"低"),则将亮度作为组内因素提及。
{"Subjects":{"group1":{"Subject_01":{"Gender":"M"},"Subject_02":{"Gender":"F"}},"group2":{"Subject_03":{"Gender":"F"},"Subject_04":{"Gender":"M"}}},"Stimuli":{"Type_1":{"Stim_1":{"Brightness":"High"},"Stim_2":{"Brightness":"Low"}},"Type_2":{"Stim_3":{"Brightness":"Low"},"Stim_4":{"Brightness":"High"}},},}
使用高级统计测试的示例代码段:
fromPyTrack.ExperimentimportExperimentexp=Experiment(json_file="abcd/efgh/NTU_Experiment/NTU_Experiment.json")exp.metaMatrixInitialisation()exp.analyse(parameter_list={"all"},between_factor_list=["Subject_type","Gender"],within_factor_list=["Stimuli_type","Brightness"],statistical_test="anova",file_creation=True)
将提取的特征作为字典访问
如果您希望获取特定刺激下特定对象的提取特征:
python3 -m pip install PyTrack-NTU
pip install PyTrack-NTU
pip3 install PyTrack-NTU
0
在独立模式下使用pytrack
独立设计只需要与刺激类交互。如果要提取特征,建议使用此选项或仅对一个受试者的特定刺激的数据进行可视化。
python3 -m pip install PyTrack-NTU
pip install PyTrack-NTU
pip3 install PyTrack-NTU
1
有关函数的更多详细信息,请参见stimulators类:此处
作者
另请参见参与此项目的贡献者列表。
许可证
此项目在GPL3许可下获得许可-有关详细信息,请参见license.txt文件
致谢
感谢dominique makowski博士帮助我们开发这个工具包。
formatsBridge模块改编自edwin dalmaijer在pygazeanalyser中所做的工作。
这项工作是在新南威尔士大学计算机科学与工程学院的Chng Eng Siong博士的监督下,并与新南威尔士大学计算机科学与工程学院的XuHong博士合作完成的。人文社会科学南大。
感谢计算机科学与工程系和计算机系。科学和信息系统BITS PILANI,海得拉巴校区