心理物理实验的适应性实验
项目描述
AEPsych
AEPsych是一个用于心理物理实验及相关领域的自适应实验框架和库。
安装
AEPsych
只支持python 3.8+。我们建议在类似Anaconda的虚拟环境中安装AEPsych
。一旦为AEPsych
创建了一个虚拟环境并激活它,您可以使用pip安装AEPsych
。
pip install aepsych
如果您是开发者或想使用最新功能,可以使用以下方式从GitHub安装:
git clone https://github.com/facebookresearch/aepsych.git
cd aepsych
pip install -e .[dev]
用法
请参阅此处的代码示例。
使用AEPsych的标准方式是在服务器模式下启动它(您可以通过运行aepsych_server
--help查看更多参数)
aepsych_server --port 5555 --ip 0.0.0.0 --db mydatabase.db
服务器通过Unix套接字接收消息,所有消息都使用JSON格式进行格式化。所有消息都具有以下格式
{
"type":<TYPE>,
"message":<MESSAGE>,
}
有五种消息类型:setup
、resume
、ask
、tell
和exit
(请参阅aepsych/server/message_handlers以获取完整消息集)。
Setup
setup
消息为服务器准备提出建议和接受数据。setup消息可以格式化为INI或Python字典(类似于JSON)格式,并在configs/single_lse_example.ini
中给出了心理测量阈值估计的示例。它看起来像这样
{
"type":"setup",
"message":{"config_str":<PASTED CONFIG STRING>}
}
在接收到设置消息后,服务器会响应一个策略索引,该索引可用于恢复此设置(例如,用于交错多个实验)。
恢复
resume
消息指示服务器从同一运行中较早的阶段恢复策略。它看起来像这样
{
"type":"resume",
"message":{"strat_id":"0"}
}
接收到恢复消息后,服务器会响应已恢复的策略索引。
询问
ask
消息查询服务器以获取下一个试验配置。它看起来像这样
{
"type":"ask",
"message":""
}
接收到询问消息后,服务器以 JSON 格式响应配置,例如 {"frequency":100, "intensity":0.8}
告知
tell
消息将试验配置的结果更新到服务器。请注意,tell
不需要与之前 ask
的试验匹配。例如,如果您正在交错 AEPsych 运行和经典阶梯,您仍然可以向 AEPsych 提供阶梯数据。消息看起来像这样
{
"type":"tell",
"message":{
"config":{
"frequency":100,
"intensity":0.8
},
"outcome":"1",
}
}
退出
exit
消息指示服务器关闭套接字连接,将策略写入数据库并终止当前会话。消息如下
{
"type":"exit",
}
服务器关闭连接。
数据导出和可视化
数据记录到磁盘上的 SQLite 数据库中(默认为 databases/default.db
)。数据库包含一个表,其中包含所有运行的实验会话。然后,对于每个实验,有一个表包含服务器发送和接收的所有消息,能够从服务器的角度完整回放实验。此表可以总结为数据框输出(文档待定)并用于可视化数据(文档待定)。
贡献
有关如何帮助的说明,请参阅 CONTRIBUTING 文件。
许可
AEPsych 许可 CC-BY-NC 4.0,如 LICENSE 文件中所述。
引用
AEPsych 论文目前正在审阅中。在此期间,您可以引用我们的 预印本
Owen, L., Browder, J., Letham, B., Stocek, G., Tymms, C., & Shvartsman, M. (2021). Adaptive Nonparametric Psychophysics. http://arxiv.org/abs/2104.09549
项目详细信息
下载文件
下载您平台上的文件。如果您不确定选择哪个,请了解有关 安装包 的更多信息。