【问题标题】:How do you implement experiments with conditional branching in PsychoPy Builder?您如何在 PsychoPy Builder 中实现条件分支实验?
【发布时间】:2014-06-18 13:36:30
【问题描述】:

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

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

【问题讨论】:

  • Stack Overflow 是一个很好的地方,可以询问有关不起作用的特定源代码的问题,其中代码是共享的,以便每个人都可以查看。对于仅由少数人使用的库的问题,特别是如果开发人员不在这里闲逛,这不是很好。也许试试 PsychoPy 的邮件列表:groups.google.com/forum/#!forum/psychopy-users
  • 我还注意到 Python 有 'if' 语句,Python 有一个称为 'dictionary' 的数据类型,可用于链接函数以根据关键变量应用。我不知道 PsychoPy 是否利用了这一点,或者希望最终用户能够对其进行编程。
  • @Paul PsychoPy 有 7000 个注册用户:psychopy.org/usage.php。 StackOverflow 是一个更好的问答系统,从现在开始,开发人员将在这里闲逛。如果您有任何想法/cmets,请告诉我们是否应该以不同的方式完成。
  • @Jonas 我在这里为你创建了一个 pyschopy 标签。您或其他感兴趣的人应该edit the psychopy tag's wiki 并添加一些基本信息和文档链接。这样,您的小组将能够使用此标签监控问题。
  • 非常感谢,保罗!这将使组织我们对 SO 的帮助变得更加容易。

标签: python psychopy experimental-design


【解决方案1】:

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 sn-p,如下所示:

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-11-04
    • 2015-01-30
    • 2016-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多