了解TrialHandler和响应的PsychoPy代码

时间:2016-06-27 11:05:29

标签: psychopy

我是编码新手,希望能帮助理解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)

我的第二个问题是获得回复。是否有理由将此Resp等于None?

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

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

此致 现金

1 个答案:

答案 0 :(得分:1)

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

此代码允许使用缩写。例如,假设您的条件文件有一个名为' angle'的字段,您可以直接参考此而不是通过该试用词典的键(例如thisTrial [' angle&#39] ;])或使用点表示法(thisTrial.angle)。即,在这个例子中:

angle = thisTrial.angle

for thisTrial in trialsAll:

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

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

该行'而thisResp ==无:'要求变量' thisResp'如果我们能够检查它的价值,实际上是存在的。因此,在前一行中,它被创建并给出一个初始空值,以便下一行将运行OK。请注意,在此阶段,它只是一个任意变量,与主题的响应没有任何实际联系。这可能会在代码中稍后发生,当它被赋予除None之外的值时。