3

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

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

4

1 回答 1

3

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

同时,PsychoPy 的图形构建器视图强调易用性和简单性而非灵活性。它不直接满足的一件事是条件分支。但是,它可以被黑客入侵以间接实现它。

假设您有一个三阶段的实验:一个练习块,然后是两个可能的实验块,条件 A 或条件 B。完成练习块后,表现优异的科目被分配到条件A,而表现不佳的科目被分配到条件B。

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

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

在 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 模块设计为例,其中模块的顺序需要是可变的):

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

于 2014-05-02T08:50:06.967 回答