預告
即將於2021年2月起,開設新課程「心理學史」。請注意日後的公告!
長時間來,在我們實驗室使用PsychoPy一個無解的問題是使用中文。我們一直以來的solution就是把文字顯示的部分都做成圖檔來表示。但這樣一來,檔案較多也較缺彈性。最今在一個日文網站看到一個暫時的解決方式,雖然這是在Builder界面來解決,但同樣道理可以用在Coder界面中。以下詳細說明: Continue reading
Filed under 用PsychoPy玩實驗
今天的主題是想介紹 PsychoPy 的兩種界面間的關係,也就是 Builder 與 Coder 兩個部分的關聯性。
Filed under 用PsychoPy玩實驗
學習coder的第二篇文章。這一次要教大家如何自定義滑鼠,所使用的範例為CustomMouse。先打開PsychoPy的coder界面,然後找到Demos裡面的input之customMouse.py,按下Run,來看看coder怎麼運作吧!
哇,比起上一篇文章,程式的行數多了一些,不過大家莫急莫慌!接下來就一一解釋程式中各行的意思,解釋不完全的地方也請大家多多包含!
行9:__future__ 這模組是用來讓Python2與Python3相容。這次會使用到的division 是除法結果是可以含有小數點。
行13:PsychoPy模組中import進來visual與event,其中visual是顯示相關模組,event是接受反應的模組。
行15:賦予win的定義,方便接下來直接以win來表示=後面的指令(visual.window)。設定顯示螢幕,由於這次沒特別設定螢幕的大小,所以就照內建默認的大小設定,以便結果輸出到下面視窗時可以看到。
行18-20:賦予vm的定義,同時也設定vm的顯示內容。top、bottom、 left、及right Limit表示鼠標在上、下、左、右可移動的距離限制。showLimitBox代表顯示由上下左右之距離限制所形成的移動範圍,True代表pointer顯示鼠標可移動之範圍;False則與True相反,即不顯示。clickOnUp代表計算點擊滑鼠左鍵反應的時機,True代表點擊滑鼠後將要離開之時刻;False則代表一開始點擊滑鼠之當下。
**customMouse之詳細設定請參考:http://www.psychopy.org/api/visual/custommouse.html#psychopy.visual.CustomMouse
行22-23:賦予instr之定義,設定指導語顯示的文字內容(text)與顯示位置(pos)。\n代表換行。
行24:賦予new_pointer之定義。以字母o來顯示鼠標。
行25:利用函式print(),將下列三項數據輸出至output視窗。滑鼠點擊位置、滑鼠滾輪位置及點擊時間。
行26-42:是個迴圈,只是會根據反應的不同而進入不同的結果。
行26:表示當反應為非任一按鍵反應,
行27-28:則將指導語與鼠標的資訊輸出到緩衝器,等待由螢幕輸出。
行29:把緩衝器(即行27-28的instr與vm)的內容顯示在視窗中。
若反應為任一按鍵反應則直接跳至行44:關閉視窗。
行30:如果反應為點擊滑鼠反應,
行31:則重設滑鼠,
行33-35:輸出三項數據至output視窗。行33的%.2f意思為取到小數點後兩碼;行35的%.3f意思為取到小數點後三碼。
行38:更改鼠標可移動至範圍。
行39:更改指導語。
行42:賦予vm.pointer定義,即行24。
若反應為任一按鍵反應則直接跳至行44:關閉視窗。
行44:關閉視窗。
以上就是Demos裡面的input之customMouse的程式說明~
然後,希望大家可以試著動手跑跑看,可以有助於理解哦~若有疑問也請留言,我會盡自己所能地回答!如果上述有錯誤的地方,也請大家不吝嗇地指出錯誤,讓我們可以共同進步!感恩!
額,或許有人看不懂行26-42的迴圈是怎麼回事,不過沒關係,我也是研究了許久才了解的!在此附上我研究許久的簡易圖~希望大家別嫌棄它~
Filed under 用PsychoPy玩實驗
2018年暑假請同學一起來玩PsychoPy,為了不要忘記,在此留下筆記。這一篇是學習coder的第一篇。我們將PsychoPy安裝後打開 Demo(第一次會問我們要不要安裝 demo),由其中範例程式來學習。
Filed under 用PsychoPy玩實驗
我們上次已經建立了一個指導語trial,接下來我們要來學習建立最關鍵的「實驗作業」。
這次的作業是小時候常玩的「數字比大小」遊戲,稍微想像一下,這個遊戲的內容或許是「左邊有一個數字,右邊有一個數字,然後請玩家選擇『數字比較大』的那一邊」。
如果要用小畫家來示意,應該就是類似這樣子的遊戲畫面:
然後玩家可以使用「電腦鍵盤的方向鍵」來選擇左邊或右邊的數字,假如玩家覺得12比較大,那他就可以按下方向鍵的右鍵進行反應,並完成這一次的問答作業,非常直覺的作業形式。
那我們要如何使用PsychoPy來建立上述的作業呢?首先我們需要在原本的指導語後面,再建立一個新的trial。
我用紅色框起來的地方就是這個新的trial,建立的方式與先前的指導語相同,透過「Insert Routine」來添加。
這裡特別注意到畫面中「inst_resp」的圖示已經變化了,變成了電腦鍵盤!這是最近一次軟體更新中改變的部份,方便我們區分「Keyboard」和「Cedrusbuttonbox」的不同,所以未來要加入電腦鍵盤物件時,記得點選這個電腦鍵盤的圖示。
緊接著,我們點選剛才新建立的「trial」,也就是我們這個實驗的重頭戲。
它目前還是一片空白,不過沒有關係,我們先試著加入一些東西,既然是數字比大小的遊戲,畫面上當然要有數字。我們比照先前撰寫指導語的方式,建立一個文字物件和一個鍵盤物件,並分別編輯它們的內容:
按下ok之後,就試著「Run」一次看看。我們現在可以開始養成一個習慣,每完成一個小段落,就試著跑一下程式,這可以避免初學者在撰寫實驗的過程中累積許多小錯誤,最後卻找不到bug在哪裡。
這就是這個數字物件的內容,數字「1」確實呈現出來了,就跟先前的指導語一樣,然而光是這樣並沒有辦法做比較,如果要做比較的話,畫面上至少要有兩個數字才行。
假如我們按照之前的方式加入第二個文字物件,那麼這兩個文字物件將會重疊在一起(重疊在畫面的正中央),所以我們要設法讓它們有一些「位置上」的差異。此外目前畫面上的數字1也長得太矮小了,放大一點或許能看得比較清楚!
為了進行以上的調整,我們先打開剛才命名為「number」的文字物件,並且在它的編輯界面進行以下的更動:
首先在「Name」的地方,我們可以在後面加入「_left」的字串,表示這個數字是出現在畫面「左邊」的。注意!PsychoPy的命名系統不太接受空白鍵,因此當我們想要區隔字元時,請愛用「_」來做分隔。
其次,「Letter height」的框格,則把原本的0.1改成「0.3」,讓它的尺寸長大3倍。
最後在「Position」的部份,把X軸預設的0改成「-0.5」,將物件的位置定位在畫面左邊。在物件的定位方面,X軸和Y軸分別是從「-1~1」的範圍,兩軸的-1和1就是畫面的上、下、左、右邊界處。
然後按下OK之後,我們可以再「Run一次看看」!
一個位於畫面左側的大型數字,這應該是比較符合我們需求的物件,接下來就請按照以上的介紹,試著自己完成另一個以「number_right」為名,而且文字內容為「3」的文字物件吧!
完成了嗎?完成之後的畫面應該是長這個樣子的:
然後我們再回到鍵盤物件的部份,按照以下的方式重新編輯這個物件:
說明一下,其中「Allowed keys」的部份,代表的是我們允許玩家使用哪些按鍵作答,由於這個遊戲只需要「左鍵和右鍵」就能完成,因此我們留下這兩個鍵即可,其餘的按鍵就當作不允許使用,避免玩家誤觸。
而後「Store correct」的框框記得要打勾,並在下方的「Correct answer」填入「right」(畢竟3應該比1大)。因為這一題有標準答案,假如我們事先把標準答案設定好的話,程式就會自動幫我們對答案,省去我們核對的辛勞。
全都設定好之後,我們就可以把程式完整的Run下去啦!
這是第一頁,指導語指示玩家要「從兩個數字當中選擇較大的一方」,按下「空白鍵」之後就可以繼續。
嗯,題目出現了!因為數字3比數字1還要大,這個時候就要按下「右鍵」才行呢!按鍵之後就會順利結束實驗。
大功告成!不過就只有一題似乎有點無趣,答對了也沒有成就感,所以我們下次會介紹如何運用循環清單的形式,一口氣製造出「100題」數字比大小遊戲!
敬請期待!
Filed under 用PsychoPy玩實驗