心理学/神经科学中的许多行为实验设计都需要条件分支(例如,如果在初始练习阶段达到了必要的表现水平,则仅进入测试阶段)。 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 的顺序需要可变):
关于python - 您如何在 PsychoPy Builder 中实现条件分支实验?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23418467/