跟踪眼动实验中编辑的注视点
gazel-devjeetr的Python项目详细描述
pyTrace公司
Pytrace提供了聚集注视点的固定算法,以及帮助您处理眼睛跟踪会话期间发生的编辑的工具。在
入门
安装
要求
pytrace需要python3.8.5
安装
可以使用安装pytrace
pip install pytrace
pyTrace提供了一个命令行界面和一个python库。在
要使用这两个版本,您需要三件事:
- itrace核心文件输出
- 凝视文件输出
- 变更日志
- 原始源文件
要开始:
^{pr2}$基本功能
Tracker
的主要目标是跟踪修订和跨编辑的源代码标记。一旦创建了Tracker
,就可以查询它以获取快照等
快照
Tracker
维护与原始文件和后续编辑相对应的快照列表。原始版本存储在索引0
中,第一次编辑存储在索引1
处。在
# get originaltracker.get_snapshot(0)# get first edittracker.get_snapshot(1)
每个快照由Snapshot
表示。Snapshot
定义为:
classSnapshot:id:intsource:Sourcetokens:Tuple[Token,...]changes:Tuple[TokenChange,...]=()time:float=0.0
Snapshot.time
表示创建快照的时间。它对应于changelog中用于创建此Snapshot
的时间戳。在
Snapshot.tokens
表示已解析的源代码标记。
Snapshot.changes
表示自上一个版本以来此{Snapshot
来说,Snapshot.changes
是空的。在
Snapshots.source
是一个Source
对象,包含源代码的原始文本,以及从文本索引到行号/列号的映射,反之亦然。定义如下:
@dataclass(frozen=True)classSource:text:strmapping:PositionMappinglanguage:str
凝视
您可以检索给定时间窗口的凝视,如下所示:
tracker.get_gazes()# all gazestracker.get_gazes(start,end)# returns a dataframe that is filtered
凝视数据帧只是一个包含原始凝视的pandas.DataFrame
,还有一些附加的列:
syntax_node
-与凝视相关联的语法节点。None
如果目光没有落在一个标记上。在syntax_node_id
-与此注视相关联的令牌的稳定id。None
如果目光没有落在一个标记上。在
syntax_node_id
是一个唯一的id,它在不同的快照中分配给源代码中的每个令牌。对于给定的令牌,此id在时间和空间上是唯一的。因此,您可以使用这个id来确定
差异
tracker.diff(0,2)# gives you the diff between version 0 & version 1
tracker.diff_time(2300,2400)# gives you the diff between time unit 2300 & time unit 2400
SnapshotDiff
的定义如下:
classSnapshotDiff(NamedTuple):old:Snapshotnew:Snapshottoken_changes:List[TokenChange]gaze_changes:List[GazeChange]gazes:pd.DataFrame
它会给你一个所有标记变化和注视变化的列表。在
{{cd26>标记可以是^ cd26}类型。在
注视变化可以有两种类型:deleted
或{deleted
表示凝视映射到的令牌已从源中移除。)
默认情况下,tracker.diff(start, end)
将包括从实验开始(记录第一次注视的时间)到end
快照时间的所有注视。如果只想在start
和end
快照的时间范围内包含凝视,可以传递一个可选参数:
diff=tracker.diff(0,3,window_only=True)
pytrace
还提供了一个漂亮的打印机来帮助您打印用于检查数据的差异。它支持打印注视改变,令牌改变和SnapshotDiffs
。在
frompytraceimportpprintdiff=tracker.diff(2,3)pprint(diff)pprint(diff.token_changes)pprint(diff.gaze_changes)
pytrace
提供了一个模块transforms
来帮助您操作pytrace
结构,包括Snapshots
和{
frompytraceimporttransformsasTdiff=tracker.diff(2,5)# TODO
- 项目
标签: