【问题标题】:Understanding PsychoPy codes for trialHandler and responses了解 trialHandler 和响应的 PsychoPy 代码
【发布时间】:2016-07-21 18:58:06
【问题描述】:

我是编码新手,希望帮助我理解 PsychoPy 程序使用的脚本。

更具体地说,我想了解第 6 到 15 行中的代码。我知道这是用来管理多个试验的,但我希望有人能帮助我澄清这些位吗?我还注意到从第 6-8 行删除代码不会改变实验,但从第 10-15 行删除代码实际上会阻止实验运行。

trialsAll = data.TrialHandler(trialList=data.importConditions('trialType.xlsx'), nReps=10, method='random', name='trialsAll', dataTypes='corr')
thisExp = data.ExperimentHandler(name='Ours')
thisExp.addLoop(trialsAll)  #adds a loop to the experiment
thisTrial = trialsAll.trialList[0]

if thisTrial != None:
    for paramName in thisTrial.keys():
        exec(paramName + '= thisTrial.' + paramName)

# Loop through trials
 for thisTrial in trialsAll:
     currentLoop=trialsAll
     if thisTrial != None:
        for paramName in thisTrial.keys():
            exec(paramName + '=thisTrial.' + paramName)

我的第二个问题是关于获得回复。 thisResp 等于 None 有什么原因吗?

#get response
thisResp=None
while thisResp==None:
    allKeys=event.waitKeys()

非常感谢您的帮助。我很感激。

问候, 现金

【问题讨论】:

  • 嗨 Cashel,在邮件列表中回答的人和这里的人基本相同。所以只问一处,避免重复劳动。如果您在电子邮件列表中得到满意的答复,那么请在此处回答您自己的问题,以作为未来读者的指南(回答您自己的问题是可以的,事实上,我们鼓励这样做)。

标签: psychopy


【解决方案1】:
if thisTrial != None:
    for paramName in thisTrial.keys():
        exec(paramName + '= thisTrial.' + paramName)

此代码允许使用缩写。例如,假设您的条件文件有一个名为“角度”的字段,您可以直接引用它,而不是通过该试验字典的键(例如 thisTrial['angle'] )或使用点表示法( thisTrial.angle )。即,在此示例中:

angle = thisTrial.angle

for thisTrial in trialsAll:

是运行 PsychoPy 试用循环的基础。它将循环通过 TrialHandler 对象中包含的每个试验,该对象是为管理试验而创建的,连接到给定的条件文件。

#get response
thisResp=None
while thisResp==None:
    allKeys=event.waitKeys()

'while thisResp==None:' 行要求变量 'thisResp' 确实存在,如果我们要能够检查它的值。因此,在前一行中,它被创建并赋予初始空值,以便下一行可以正常运行。请注意,在这个阶段,它只是一个任意变量,与受试者的反应没有任何实际联系。这可能会在代码的后面发生,当它被分配一个非 None 的值时。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-05
    • 2023-04-09
    • 2017-05-27
    • 2020-11-12
    相关资源
    最近更新 更多