python - 您如何在 PsychoPy Builder 中实现条件分支实验?

标签 python psychopy experimental-design

心理学/神经科学中的许多行为实验设计都需要条件分支(例如,如果在初始练习阶段达到了必要的表现水平,则仅进入测试阶段)。 PsychoPy 的 Builder View 允许生成 Python 脚本来运行主要使用图形控件的实验。但它似乎没有对条件分支的内置支持。

是否可以通过在代码组件中使用 Python 片段在 Builder 中实现在给定运行时跳过特定例程?还是需要迁移到完整的 Python Coder 环境?

最佳答案

PsychoPy 中的 Coder View 使您可以完全访问 Python 编程语言,因此您可以实现任意复杂的实验设计。

与此同时,PsychoPy 的图形化 Builder View 强调易用性和简单性而非灵 active 。它不直接满足的一件事是条件分支。然而,它可以被黑客攻击以间接实现它。

假设您有一个三阶段实验:一个练习 block ,然后是两个可能的实验 block ,ConditionA 或 ConditionB。完成练习 block 后,表现好的受试者被分配到条件 A,而表现不佳的受试者被分配到条件 B。

要在 Builder 中实现这一点,请创建三个例程来表示每个任务 block (练习、条件 A 和条件 B)。每个也将被一个循环包围(分别是 practice_loop、A_loop 和 B_loop。)还在 Practice 和 conditionA 之间插入一个例程(称为 assignCondition)。

在 assignCondition 例程中,放置一个代码组件。假设在这种情况下,在练习例程中维护了一个性能得分计数器。我们可以使用它来更改后续例程的重复次数。也就是说,通过将循环的重复次数设置为零,我们确保不会执行该循环内的例程。因此,这些循环的重复次数将不是固定值,而是一个变量(例如,repetitionsA 和 repetitionsB)。

在 assignCondition 例程的代码组件的“开始例程”选项卡中,放置如下 Python 片段:

if performanceScore > 25:
    repetitionsA = 50 # run this routine 50 times
    repetitionsB = 0 # don't run this condition at all
else:
    repetitionsA = 0 # vice versa: don't run this
    repetitionsB = 50 # do run this

Matt Wall 在此处的博客文章中更完整地描述了此技术(以 fMRI block 设计为例,其中 block 的顺序需要可变):

http://computingforpsychologists.wordpress.com/2013/11/12/how-to-hack-conditional-branching-in-the-psychopy-builder/

关于python - 您如何在 PsychoPy Builder 中实现条件分支实验?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23418467/

相关文章:

r - 使用 permute 包计算分块设计中的所有排列

python - Elastalert 无法从模块 stomp 中导入单调时间

python - Azure是否允许应用程序需要OpenGL,有什么办法可以解决吗?

python - 不同的心理持续时间

audio - 心理实验中音频的 Unicode 解码错误

javascript - CSS & Javascript 效果 : arraning characters justified with different spacing between letters. Mousemove 受影响

python - 当我使用 pygame 加载 Pillow 时,出现错误 : "ValueError: Unrecognized type of format"

python - 为什么 Django 1.0.2 和 Python 2.5 不能识别关键字 DateField.input_formats?

python - 了解 python 中的免费 OPC/UA 代码