心理学/神经科学中的许多行为实验设计需要条件分支(例如,如果在初始练习阶段已达到必要的性能水平,则仅进入测试阶段)。 PsychoPy的Builder视图允许我们生成一个Python脚本,使用大量的图形控件来运行实验。但它似乎没有内置支持条件分支。
通过在代码组件中使用Python代码段,可以在Builder中实现跳过特定运行的特定例程吗?还是需要转移到完整的Python Coder环境?
答案 0 :(得分:3)
PsychoPy中的Coder视图使您可以完全访问Python编程语言,因此您可以实现任意复杂的实验设计。
同时,PsychoPy的图形化构建器视图强调易用性和简单性而非灵活性。它不能直接满足的一件事是条件分支。但是,它可以被黑客间接地实现它。
假设你有一个三阶段实验:一个练习块,然后是两个可能的实验块,ConditionA或ConditionB。完成练习块后,高性能主题被分配到conditionA,而低性能主题被分配到conditionB。
要在Builder中实现此功能,请创建三个例程来表示每个任务块(Practice,conditionA和conditionB)。每个也将被一个循环(practice_loop,A_loop和B_loop)分别包围。还在Practice和conditionA之间插入一个例程(称为assignCondition)。
在assignCondition例程中,放置一个Code组件。在这种情况下假设在实践例程中维护了性能得分计数器。我们可以使用它来改变后续例程的重复次数。也就是说,通过将循环的重复次数设置为零,我们确保不会执行该循环内的例程。因此,这些循环的重复次数不是固定值,而是变量(例如,重复A和重复B)。
在assignCondition例程的Code组件的“Begin Routine”选项卡中,放置一个这样的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块设计为例,其中块的顺序需要变化):