2016-06-27 27 views
1

我是新來的編碼,並希望幫助理解PsychoPy程序使用的腳本。Understanding PsychoPy codes for trialHandler and responses

更具體地說,我想了解第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) 

我的第二個問題是關於獲取響應。這個ResRes等於None嗎?

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

非常感謝您的幫助。我很感激。

問候, 現金

+1

嗨,Cashel,回覆郵件列表的人和這裏的內容大致相同。所以只要在一個地方問,避免重複工作。如果您在電子郵件列表中獲得滿意的答案,那麼請在此回答您自己的問題,作爲未來讀者的指南(回答您自己的問題是確定的,實際上是鼓勵)。 –

回答

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

此代碼允許使用縮寫。例如,假設您的條件文件有一個名爲'angle'的字段,您可以直接引用該字段而不是通過該試用字典的鍵(例如thisTrial ['angle'])或使用點符號(thisTrial.angle)。即,在本例中:

角度= thisTrial.angle

for thisTrial in trialsAll: 

是運行psychoPy試驗循環的基礎。它將循環執行爲了管理試驗而創建的TrialHandler對象中包含的每個試驗,並將其連接到給定的條件文件。

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

該生產線的同時thisResp ==無:「要求變量「thisResp」如果我們要能夠檢查其值確實存在。所以在前一行中,它被創建並給出一個初始的空值,以便下一行將運行OK。請注意,在這個階段,它只是一個任意變量,與主體的響應沒有任何實際聯繫。當它被分配一個非None值時,這可能會在代碼後面出現。