2015-09-23 40 views
1

我正在使用編碼器和構建器的組合,並且似乎遇到了收集按鍵響應時間的問題。我對編碼相對不熟悉。我仍然處於實驗的測試階段,現在還不是最終形式。簡而言之,實驗應該以隨機順序呈現單詞列表,參與者獲得對單詞進行識別測試的說明,然後在按y或n看到之前的單詞時再次看到列表。實驗不記錄循環期間的反應時間

我有3個例程,依次爲:trial,recallinstructions和recallwords。試用和回憶詞有一個迭代循環。 studylista是一個列表,其中包含4個單詞,我在試用例程下的編碼器的beginexperiment選項卡下輸入。對於在日常開始標籤recallwords,我在編碼器:

studylista = ['balls','dingy','bear','shoe'];  
    import random 
    random.shuffle(studylista) 
    studylista 

    import time 
    for i in studylista: 
     text.setText(i) # Prepare stim 
     text.pos = (0, 0) 
     text.draw() # Draw to buffer 
     win.flip() # Display on monitor 
     response = event.getKeys(timeStamped=True) 
     time.sleep(5.0) 

出於同樣的recallwords日常我也有設置爲存儲最後一個鍵生成器一鍵響應項目。從一切顯示的意義上說,程序都能正常工作。它不會在上面的for循環中打印出一個包含響應的csv文件,但它確實在文本文件中提供了該文件。我還希望從for循環中提供的單詞的開始到參與者按下某個文件中記錄的某個關鍵點的響應時間,我相信時間戳會處理這個問題。謝謝。

編輯添加請求的信息關於studylista。

回答

2

您現有的代碼打破了Builder的繪製週期:Builder以連續循環的方式運行,它以與屏幕刷新相同的速率(例如60 Hz)更新刺激,收集按鍵等等。因此,您放入代碼組件中的任何代碼(除非它在實驗開始或結束時的時段內執行)必須能夠在單個屏幕刷新週期內(例如< 16.7 ms)。所以暫停5秒會導致Builder出現各種問題。

此外,您在每次迭代時都會重新整理列表,這意味着您可能會得到重複的單詞表達/缺少某些單詞。所以這應該只發生一次。您還在代碼中收集按鍵,這將與圖形鍵盤組件發生衝突,並且需要顯式保存在數據中。

所以不要打鬥建設者,但讓它爲你做大部分的辛苦工作。指定一個持續5秒的文本刺激,並且只使用鍵盤組件來收集響應(然後將自動保存到您的數據文件中)。

這可以讓你那麼只有這個簡約代碼:

# what iteration is this? (0 through 3) 
wordNumber = yourLoopName.thisN # insert the actual loop name here 

# only on the first iteration, shuffle the words: 
if wordNumber == 0: 
    shuffle(studylista) 

# on each iteration, get current word and update the stimulus with it: 
yourTextStimulus.setText(studylista[wordNumber]) 
+0

太好了!得到這個研究和認可部分演示文稿工作,它給了我現在的響應時間。謝謝。 – Anchises