决定给定的注视点是否代表扫视、注视或某种未知的模式
gazeclassifier的Python项目详细描述
python包gazeclassifier提供了一些函数,用于确定给定的注视点是否表示眼跳、注视或某种未知的模式。
这个包gazeclassifier是在坦佩雷大学的Infant Cognition Laboratory开发的。
2.用法
导入库:
>>> import gazeclassifier as gaze
将注视点定义为点列表:
>>> g1 = [[0,0], [0,0], [1,1], [2,2], [2,2]] # a saccade >>> g2 = [[1,1], [1,1], [1,1], [1,1], [1,1]] # a fixation >>> g3 = [[1,1], [2,2], [0,0], [4,4], [1,1]] # an unknown
创建分类器。它已经过预训练,因此能够predict:
>>> gc = gaze.GazeClassifier() >>> gc.predict(g1) 'saccade' >>> gc.predict(g2) 'fixation' >>> gc.predict(g3) 'unknown'
在内部,predict首先从分类之前的点列表中提取功能。这些特性可以用extract_features和extract_raw_features显式提取:
>>> gaze.extract_features(g1) { 'saccade_reaction': 1, 'saccade_duration': 3, 'saccade_mse': 0.000623, 'fixation_mse': 0.232406 } >>> gaze.extract_raw_features(g1) { 'saccade': { 'source_points': [[0,0]], 'saccade_points': [[0,0], [1,1], [2,2]], 'target_points': [[2,2]], 'mean_squared_error': 0.000623 }, 'fixation': { 'centroid': [[1.0,1.0]] 'mean_squared_error': 0.232406, } }
作为使用默认预训练分类器的替代方法,您可以训练一个:
>>> training_data = [g1, g2, g3] >>> classes = ['saccade', 'fixation', 'unknown'] >>> gc = gaze.GazeClassifier() >>> gc.fit(training_data, classes)
经过训练的分类器的api与默认值相同:
>>> gc.predict(g1) 'saccade'
三。API
3.1条。gazeClassifier.predict(点列表)
参数:
- 点列表:点列表,即列表
- 或者是来自extract_features的结果dict。 如果您需要访问这些功能并希望 防止predict重新提取它们。
返回一个字符串,该字符串可以是以下之一:
- 'saccade':凝视从A点移动到B点,其他方式保持静止
- 'fixation':凝视主要停留在静止状态
- 'unknown':凝视不能被视为以上任何一种
3.2条。gazeClassifier.提取特征(点列表)
参数:
- 点列表:一个[x,y]点列表,即列表列表
返回包含每个假设的平均错误和详细信息的dict。dict可以输入classify进行分类。
3.3条。gazeClassifier.提取原始特征(点列表)
参数:
- 点列表:一个[x,y]点列表,即列表列表
返回包含每个假设的平均错误和详细信息的dict。dict可以输入predict进行分类。
3.4条。gazeClassifier.gazeClassifier()
一个新的未经训练的分类器。
3.5条。gazeClassifier.gazeClassifier适合(点列表,类)
3.6条。gazeClassifier.gazeClassifier预测(点列表或特征)
3.7条。gazeClassifier.version
当前版本字符串:
>>> gazeclassifier.version '1.2.3'
四。对于开发人员
为软件包开发人员提供的提示。
4.1条。使用git
要进行开发,请从github克隆存储库:
$ git clone https://github.com/infant-cognition-tampere/gazeclassifier-py
对文件进行更改,将其添加到提交,然后执行提交:
(edit README.rst) $ git add README.rst $ git commit -m "Improved documentation"
列出未添加或未提交的文件:
$ git status
将本地提交推送到github:
$ git push
通过编辑.gitignore:
$ nano .gitignore
4.2条。virtualenv
使用virtualenv来管理python版本和需求:
$ virtualenv -p python3.5 gazeclassifier-py $ cd gazeclassifier-py $ source bin/activate ... $ deactivate
4.3条。测试
按照instructions to install pyenv操作,然后运行快速测试:
$ python3.5 setup.py test
或者对tox.ini:
中列出的多个python版本运行全面的测试$ pyenv local 2.6.9 2.7.10 3.3.6 3.4.3 3.5.0 $ eval "$(pyenv init -)" $ pyenv rehash $ tox
安装新的pyenv环境,例如:
$ pyenv install 3.5.0
在http://rst.ninjs.org/处验证readme.rst
4.4条。发布到pypi
跟随python packaging instructions:
- 创建一个未打包的sdist:$ python setup.py sdist
- 创建通用控制盘:$ python setup.py bdist_wheel --universal
- 通过上载转到PyPI and register the project by filling the package formgazeclassifier.egg-info/PKG_INFO文件。
- 用绳线上传包裹:
- 在距离上签名:$ gpg --detach-sign-adist/gazeclassifier-1.2.3*
- 上传:twine upload dist/gazeclassifier-1.2.3*(将询问您的pypi密码)
- 包已发布!
更新软件包的步骤与第三步相同。
4.5版本发布
- 更改版本S在gazeclassifier/version.py和setup.py中字符串到 '1.2.3'
- 进行毒物测试。见4.3。测试。
- git提交:$ git commit --all-m "v1.2.3 release"
- 创建标记:$ git tag -a 1.2.3 -m "v1.2.3 stable"
- 推送提交和标记:$ git push && git push --tags
- 发布到pypi。见4.4。发布到pypi。