心理学/神经科学中的许多行为实验设计都需要有条件的分支(例如,只有在初始实践阶段达到了必要的性能水平时,才能进入测试阶段)。graphical的Builder视图允许生成一个Python脚本来使用图形化控件来运行一个实验。但它似乎没有内置的支持有条件的分支。
在给定的运行中跳过特定的例程是否可以通过使用代码组件中的Python片段在Builder中实现?还是需要迁移到完整的Python环境?
发布于 2014-05-02 08:50:06
PsychoPy中的Coder视图允许您完全访问programming语言,因此您可以实现任意复杂的实验设计。
与此同时,meanwhile的图形生成器视图强调易用性和简单性,而不是灵活性。它不直接迎合的一件事是有条件的分支。然而,它可以被黑客攻击,以间接实现它。
假设您有一个三相实验:一个练习块,然后是两个可能的实验块,ConditionA或ConditionB。在完成练习块之后,高性能的科目被分配给conditionA,而表现不佳的科目被分配给conditionB。
要在Builder中实现这一点,请创建三个例程来表示每个任务块(Practice、conditionA和conditionB)。每个循环也将被一个循环包围(分别是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 thisMatt在这里的一篇博文(以fMRI块设计为例,其中块的顺序需要可变)给出了对这种技术的更全面的描述:
http://computingforpsychologists.wordpress.com/2013/11/12/how-to-hack-conditional-branching-in-the-psychopy-builder/
https://stackoverflow.com/questions/23418467
复制相似问题