Author Archives: Min Chieh

用PsychoPy玩實驗(5)

我們上次已經建立了一個指導語trial,接下來我們要來學習建立最關鍵的「實驗作業」。

這次的作業是小時候常玩的「數字比大小」遊戲,稍微想像一下,這個遊戲的內容或許是「左邊有一個數字,右邊有一個數字,然後請玩家選擇『數字比較大』的那一邊」。

如果要用小畫家來示意,應該就是類似這樣子的遊戲畫面:

示意圖

然後玩家可以使用「電腦鍵盤的方向鍵」來選擇左邊或右邊的數字,假如玩家覺得12比較大,那他就可以按下方向鍵的右鍵進行反應,並完成這一次的問答作業,非常直覺的作業形式。

那我們要如何使用PsychoPy來建立上述的作業呢?首先我們需要在原本的指導語後面,再建立一個新的trial。

建立新trial

我用紅色框起來的地方就是這個新的trial,建立的方式與先前的指導語相同,透過「Insert Routine」來添加。

這裡特別注意到畫面中「inst_resp」的圖示已經變化了,變成了電腦鍵盤!這是最近一次軟體更新中改變的部份,方便我們區分「Keyboard」和「Cedrusbuttonbox」的不同,所以未來要加入電腦鍵盤物件時,記得點選這個電腦鍵盤的圖示。

緊接著,我們點選剛才新建立的「trial」,也就是我們這個實驗的重頭戲。

空白的新trial

它目前還是一片空白,不過沒有關係,我們先試著加入一些東西,既然是數字比大小的遊戲,畫面上當然要有數字。我們比照先前撰寫指導語的方式,建立一個文字物件和一個鍵盤物件,並分別編輯它們的內容:

數字物件  trial鍵盤物件

按下ok之後,就試著「Run」一次看看。我們現在可以開始養成一個習慣,每完成一個小段落,就試著跑一下程式,這可以避免初學者在撰寫實驗的過程中累積許多小錯誤,最後卻找不到bug在哪裡。

數字1

 

這就是這個數字物件的內容,數字「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」的文字物件吧!

完成了嗎?完成之後的畫面應該是長這個樣子的:

13

然後我們再回到鍵盤物件的部份,按照以下的方式重新編輯這個物件:

重新編輯鍵盤

說明一下,其中「Allowed keys」的部份,代表的是我們允許玩家使用哪些按鍵作答,由於這個遊戲只需要「左鍵和右鍵」就能完成,因此我們留下這兩個鍵即可,其餘的按鍵就當作不允許使用,避免玩家誤觸。

而後「Store correct」的框框記得要打勾,並在下方的「Correct answer」填入「right」(畢竟3應該比1大)。因為這一題有標準答案,假如我們事先把標準答案設定好的話,程式就會自動幫我們對答案,省去我們核對的辛勞。

全都設定好之後,我們就可以把程式完整的Run下去啦!

 

run1

 

這是第一頁,指導語指示玩家要「從兩個數字當中選擇較大的一方」,按下「空白鍵」之後就可以繼續。

 

13

嗯,題目出現了!因為數字3比數字1還要大,這個時候就要按下「右鍵」才行呢!按鍵之後就會順利結束實驗。

大功告成!不過就只有一題似乎有點無趣,答對了也沒有成就感,所以我們下次會介紹如何運用循環清單的形式,一口氣製造出「100題」數字比大小遊戲!

敬請期待!

 

 

 

Leave a Comment

Filed under 用PsychoPy玩實驗

用PsychoPy玩實驗(4)

上次有介紹到如何撰寫簡單的指導語,由於PsychoPy無法接受中文字(儲存路徑也不能有中文),因此若要以「Text Components」來編輯指導語,我們就只能寫英文。

寫完指導語後,我們所看到的實驗流程應該是這樣的狀態:

text ok

緊接著,我們要設定指導語的結束條件,記得稍早編輯「inst」文字物件的時候,我們在「Stop」的地方留白嗎?

其實這是為了透過留白的方式,另外插入一個由反應鍵所控制的結束條件。一般而言,讓一個物件結束的方式有很多種,我們可以讓它時間到就自然結束,或是在實驗參與者「進行反應」後結束。

以指導語來說,我們通常會讓實驗參與者有足夠的時間閱讀,因此比較理想的作法,應該是讓實驗參與者可以自由控制它的結束時間,為了達到這個目的,我們要先插入一個反應物件。

在旁邊的Components欄位,選擇「Responses」,這裡有許多的反應種類,由於我們要使用「鍵盤」進行反應,所以我們可以先點選紅色框框裡的「Cedrus」。

responses
在這裡特別注意,在Linux系統當中,物件欄裡的「Keyboard」和「Cedrusbuttonbox(註1)」都是用同樣的圖示,這應該是錯誤的,但最近幾次的版本卻都沒有更新,我們如果不確定自己是否選到鍵盤,就要看開啟後的物件標題。

keyboard

物件的標題是「Keyboard Properties」,表示我們選對了。

我們這時候就可以開始編輯它的內容,和剛才的「Text Components」很像,從上而下分別是「物件名稱」、「起始條件」、「結束條件」、「使Routine結束(勾選)」、「允許使用的按鍵」、「儲存的時機」、「設定正確的反應」以及「捨棄此物件之前的反應(勾選)」。

由於這只是用來控制指導語結束的時機,我們不必把它設定得太複雜:

1、「Name」的部份可以輸入「inst_resp」,表示它是用來控制「inst」的「response」。

2、「Start」的地方維持原樣即可。目前的意思是以「時間」為起始條件,並在「0.0」秒的時候開始。

3、「Stop」的條件,預設是空白,保持這樣就可以了。

4、「Force end of Routine」的框格,預設是勾選,因為我們是打算讓實驗參與者「按鍵反應則結束指導語」,所以就維持在勾選的狀態。

5、「Allowed keys」的部份,我們只留下「’spece’」,這表示實驗參與者只能按空白鍵做反應,否則它不會接受。

6、「Store」的部份,我們可以設定電腦儲存反應的時機,預設條件是儲存實驗參與者所進行的最後一個反應,但這只是個指導語,所以我們可以選擇「nothing」,避免之後的data太過雜亂。

7、「Store correct」的部份,可以幫我們設定這個反應的「正確答案」,由於這只是指導語,我們就不必理會它。

8、「Discard previous」的部份,預設是打勾,顯示為捨棄先前的反應,我們保持原樣即可。

把上述的條件都設定完成後,我們只要再按下「OK」,就會在這個trial裡得到一個名為「inst_resp」的反應物件。

inst resp

設定好反應鍵後,我們可以先回到稍早編輯過的「inst」文字物件,並把其中文字內容的「Choose the larger of two numbers.」下面再多補充一行「Press ‘space’ to continue.」,讓實驗參與者知道該按什麼鍵來繼續實驗。

編輯完成後,我們可以試著執行目前的實驗,看效果如何。按下上欄「綠色圓裡有白色小人在跑」的「Run」圖示,或是按下鍵盤的「Ctrl+R」,都可以執行實驗。

此時,如果我們是第一次執行,就需要先把實驗存檔,設定它的名稱與儲存路徑(我現在是將它命名為「sample」),然後儲存即可。
注意!這個路徑不能包含任何的中文字,否則可能會無法執行。

start

完成儲存後,緊接著會跳出一個視窗,詢問實驗參與者的名稱與預設為001的session。此時我們只要輸入「participant」的名稱,按下「OK」即可執行!

run1

這就是按下「Run」之後的畫面,如果無法順利執行,請確認之前所介紹的部份是否都有正確編輯。

在進入這個畫面後,除非按下我們預先設定的「space」鍵,否則無法結束指導語,反過來說,一旦按下「space」鍵,也就達成了結束指導語的條件。

目前我們已經把指導語完成,也把實驗存檔了,接下來會開始進入實驗的本體部份,我們下次再見!

***

註1:Cedrusbuttonbox

Leave a Comment

Filed under 用PsychoPy玩實驗

用Blender製作雙眼立體圖-練習

在進入正題前,先「非常簡單」的介紹一下所謂的「立體視覺」,以便形成完整的閱讀脈絡。
人類看到的世界之所以有「立體感」,能分辨每個東西距離我們多遠,是因為我們擷取並整合了放眼所見的各種線索,其中包含單眼線索與雙眼線索。

所謂「單眼線索」,指的是單一眼睛就能獲得的立體感訊息,例如最典型的:「近大遠小」,「近的遮蔽遠的」,「直線透視的位置差異」等(當然還有其它的種類),我們用一隻眼睛就能清楚看出「誰在近處而誰在遠處」。這些線索也能幫助我們分辨「照片裡的物件」的遠近。

至於「雙眼線索」,則是兩隻眼睛同時觀看物體所產生的立體感,主要有兩種:第一是「雙眼輻輳」,指的是我們兩隻眼睛在看東西時,為了要把兩眼的視線對準在物體上,因此需要轉動眼球。觀看距離我們越近的物體,我們兩隻眼睛就會越聚合。

第二則是「雙眼像差」,也是今天的重點。事實上,雖然我們平常沒有自覺,但是由於正常人的兩隻眼睛位置不同,因此看到的世界也有些微差異(像差),若交互開關(或遮蔽)兩隻眼睛,這個現象會非常明顯。觀看距離我們越近的物體,兩隻眼睛的像差就越大,反之則越小。

有一種立體影像技術,就是運用兩台攝影機從不同角度(但沒有差很多,主要模擬兩隻眼睛的差距)拍攝物體,得到兩幅影像後,再透過實體鏡(stereoscope)觀察,讓左右眼分別接收到其中一幅影像。當兩隻眼睛看到的影像疊合,我們就會產生效果逼真的立體感。

由此衍生出來的立體投影技術有幾種,有些是使用紅綠眼鏡來過濾左右影像,有些則是使用快門眼鏡來開關左右影像,無論是哪一種技術,它們的目的都是「讓左眼接收到左邊影像」,同時「讓右眼接收到右邊影像」,而且兩邊影像還要可以合而為一。

今次,我們就是要介紹如何用立體繪圖軟體Blender來製作雙眼立體圖,並且使用支援stereoscope功能的播放軟體,再加上立體投影設備進行呈現。

***

首先,我們先打開Blender軟體,因為我不是專業的立體繪圖先生,所以本篇重點並不是如何雕出個漂亮的物件,先做練習即可。

起始

打開軟體之後就是這樣,空無一物。我們可以先鋪個地板,打造一些明顯的「單眼線索」。

地板

我們可以看出這些磁磚由近至遠,產生了密度的「質地梯度」效果,這也是一種單眼線索,可以協助我們判斷遠近差異。在我們鋪好地板後,我們可以隨便的放一些東西上去。

雪人眾

我們先放5個雪人,外加一些光源,並把每個雪人套上不同的顏色,以便區分。從上帝視角可以看出,從近到遠分別是黃色雪人、藍色雪人,綠色雪人,紫色雪人、粉紅色雪人。

我們目前放置了一台攝影機,但是這樣還不夠,我們若要拍攝左右眼畫面,就需要使用兩台攝影機。

兩台攝影機

用紅色圈起來的部份就是攝影機,我們放置兩台攝影機之後,可以調整這兩台攝影機的位置和角度,我們現在先把他們的水平差異調整為十公分。

我們可以切換左右兩台攝影機的畫面,看看它們各拍到了什麼。

 

combine

左邊就是左攝影機的畫面,右邊則是右攝影機的畫面,因為兩台攝影機的位置沒有差很多,所以畫面看起來也沒有明顯差異,但仔細比對之下,我們仍然可以看出些微不同,而這些差異就是「像差」。

現在,我們只要透過立體投影機把這兩幅畫面疊起來,分別呈現於「左眼」與「右眼」即可。

重合

 

Leave a Comment

Filed under 未分類

用PsychoPy玩實驗(3)

上次簡介了PsychoPy的圖形界面結構,我們接下來要進一步用這個界面逐步編輯一個實驗。

當然,一開始的舉例不宜太複雜,我們先從簡單到爆的小遊戲實驗開始。
事實上,目前圖形界面在操作上仍有其限制,不能像寫code一樣天馬行空,也有許多功能難以完美客製化,只能說它非常適合初學者。

所以,我們就先來寫一個「數字比大小」的實驗好了!(這是什麼笨蛋實驗?)

首先,我們一樣打開我們熟悉的PsychoPy工具,進入圖形界面,如下圖所示:

builder

我們可以看到上次提過的「Components」、「trial」和「Flow」,而我們先從「Flow」開始。

在我們每次開啟新的實驗後,我們就會免費得到一個預設的trial,顯示為綠色。
預設的trial的名稱就是「trial」,而下面的括號則表示這個trial耗時0.50秒,我們可以選擇直接使用它,或是自己再創一個新的trial,並取一個自己喜歡的名字。

如果我們要自己創一個新的,我們就可以把贈送的這個移除掉,移除的方法很簡單,只要在上面的trial(紅色框起來的地方)按下「x」即可。

刪除trial

移除它之後,我們會得到一片空空如也的Flow,如下圖所示:

nothing

緊接著,我們要創建一個新的trial,請點選Flow欄位的「Insert Routine」,並選擇「new」。
補充一下,假如這是我們在這次實驗當中創建的第一個trial,其實也沒有除了new以外的選項。

然後它會請我們輸入這個trial的名稱,我們可以決定要先設定招呼語、指導語、實驗作業或是感謝詞,通常我的習慣是按照實驗的進行流程,從實驗招呼語和指導語開始。

new routine

於是在名稱的框格裡面,我們就可以先輸入「instruction」,並按下「確定」。

接著,原本一片空白的Flow出現了一個黑點,顯示我們可以任意安排這個「instruction」的位置,但由於現在整個實驗的時間軸都還沒有任何物件,因此我們不用特別選擇什麼位置,反正就是先放中間再說。

insert instruction

滑鼠點擊黑點後,它就會成為這個名為「instruction」的新trial,目前它還沒有任何內容。

之前有提到,構成trial的單位是「Components」、所以我們現在看到右邊欄位的Components,目前顯示出來的圖示是我最常使用的物件。

圖示從左上方開始分別是「呈現圖片」、「設定鍵盤反應鍵」、「呈現文字」與「呈現聲音」,而我們現在想要編輯的是實驗指導語,因此我們要先選擇「呈現文字」的圖示。(就是那對黑色和紅色的T。)

text

點選T圖示之後,就會出現文字的詳細設定,從上而下分別是「物件名稱」、「起始條件」、「結束條件」、「顏色」、「字形」、「尺寸」、「位置」以及最重要的「文字內容」。

1、「Name」的部份可以輸入「inst」。注意,因為我們剛才已經用「instruction」當成這個trial的名稱,所以我們現在就不能再取一個相同的名字,當然,要隨便取名為「123」或「abc」也可以,只是以後可能會認不出來。

2、「Start」的地方維持原樣即可。目前的意思是以「時間」為起始條件,並在「0.0」秒的時候開始。

3、「Stop」的條件,我們要先把框格裡的「1.0」刪掉。畢竟指導語只呈現1秒真是太折磨人了。在這裡保持空白,可以讓我們後續設定其他的結束條件。(這裡之後會再提到。)

4、「Color」的部份,預設是白色,我們維持原樣就好,字形和字體大小也可以先不調整,之後覺得怪怪再回頭設定。

5、「Position」的部份,預設是在畫面正中間,前後兩個數字分別代表X軸和Y軸,可以調整文字的水平和垂直位置。

6、最後是最重要的「Text」,也就是文字內容,我們在這裡輸入「Choose the larger of two numbers.」,請實驗參與者選擇兩個數字之中較大的一方。

把上述的條件都設定完成後,我們只要再按下「OK」,就會在這個trial裡得到一個名為「inst」的文字物件。

text ok

哇!指導語完成嗎?

當然還沒有,我們下次會再進一步把指導語物件的內容編輯得更仔細!我們下次再見!

***

註:

稍微令人悲傷的是,目前Ubuntu系統的PsychoPy並不支援中文的文字物件,所以我沒辦法在Text的框格裡輸入中文字,即使用複製貼上的消極方式,也無法順利顯示。

因此,假如你和我一樣使用Ubuntu電腦,而且需要呈現中文指導語,目前我想到較簡便的作法還是以簡報軟體編輯中文,並將簡報匯出成圖檔,再從Components設定圖檔(之後會介紹)。

 

1 Comment

Filed under 用PsychoPy玩實驗

用PsychoPy玩實驗(2)

上次在介紹軟體更新的時候,忘了提到一個重點,如果你和我一樣是Ubuntu的使用者,就要先安裝NeuroDebian這個套件,否則會無法在Synaptic上面取得PsychoPy的新版本。
雖然更新好像很麻煩,但是如果不更新,這個軟體是沒辦法跑的,所以請務必更新。

我們先假設大家都已經更新好了,在打開軟體後,按照之前提到的方式,打開Builder界面。因為這一系列是寫給和我相同程度的超初學者,所以我的介紹都會以圖形化的Builder view為主。

builder

這就是Builder界面,我們先來看看這個界面有什麼特別的。

***

1. trial

builder_trial

我用紅色框起來的部份就是「trial」,trial是放物件的地方,我們的實驗需要用到哪些項目,就要把它放進trial裡面。它其實是一個時間軸,我們可以看到它是以秒為單位,而這段時間軸被切成了十個刻度,每個刻度是0.1秒。

酒紅色背景的部份是「ISI」,也就是刺激間隔,一開始預設是0.5秒,我們可以直接在酒紅色背景按滑鼠右鍵編輯它,或是把它刪除掉也可以。

***

2. components

builder_components

接下來是「components」,這是構成實驗的基本單位,也就是各式各樣的物件。物件的種類很多樣,主要是刺激與反應,以及其他自定義項目,我們可以把自己常用的物件抓到最上面的favorites,比較方便尋找。

關於這些物件的詳細內容,之後會慢慢介紹,大致上會以「用到哪裡就講到哪裡」這種苟且的態度介紹。

***

3. Flow

builder_flow

最後是「Flow」,這是比trial更上層的時間軸,也可以說是實驗的完整流程。

左邊的部份有「Insert Routine」和「Insert Loop」兩個項目,前者可以幫我們添加一個trial(既有的或是新的),後者則可以幫我們設定一個循環(起始點與終點)。

當我們一次實驗有多個題目的時候,我們就可以設定同一系列的題目循環,而不是辛苦的逐一編輯。

***

總之,PsychoPy編輯的架構大概是這樣:
「Flow」包含「trial」再包含「components」,或是「components」構成「trial」再構成「Flow」。假如我們已經有明確的實驗藍圖,從哪裡開始著手都可以。

下一次開始,我會以實際的例子操作PsychoPy,和大家分享簡單實驗的編寫過程,雖然PsychoPy有內建範本,不過那是成品,我想過程也很重要。

Leave a Comment

Filed under 用PsychoPy玩實驗

用PsychoPy玩實驗(1)

這個系列是以「PsychoPy」編輯心理學實驗的記錄,一開始先隨便寫,之後可能會再統整。
(因為是隨便寫的版本,所以偶爾可能不太方便閱讀,請多包含。)

在進入正式的內容之前,先進行一些簡單的說明。

目前我的PsychoPy版本是1.81.03,安裝於Ubuntu作業系統。如果是用Ubuntu軟體中心下載PsychoPy,可能會遇到的最大問題就是版本更新,因為這個軟體中心並不提供更新服務。
在此建議的方法是先從軟體中心下載「Synaptic套件管理程式」,並透過此程式更新PsychoPy,至於詳細的流程,則可以參考官方網站的介紹。

等軟體更新完成後,我們就可以開始使用PsychoPy了!

首先,打開軟體之後,我們會看到以下的畫面:

起始畫面

可以看到我的軟體版本是1.81.03,這其實並不是目前最新的官方版本,而是Synaptic套件管理程式找得到的最新版本。

在這裡,如果是熟悉Python語法的coder,就可以直接按左上角的「New」來編輯實驗了,不過如果是不太會coding的初學者(例如我),可以把游標移到最上方的功能列(目前被隱藏起來了),循以下的路徑進入Builder界面:

「View→Go to Builder view」。

然後,我們就會得到以下的Builder界面:

builder

這個Builder界面相對直覺而友善,也是我目前進行實驗編輯的主要平台,至於接下來要如何開始玩實驗,因為我的筆電快要沒電了,我們下次再談!

Leave a Comment

Filed under 用PsychoPy玩實驗

2014/07/30 Lab 週記

上週三(7/23)由於今年第十號颱風麥德姆侵台,停止上班上課,所以lab meeting暫停。

今天(7/30)首先測試實驗室Ubuntu電腦的Psychtoolbox的Demo,發現有些Demo不能順利運作,但暫時沒有詳細追究各種原因。

此外,目前發現在Ubuntu上的Qt Octave有一些操作上的問題,由於目前是參考Matlab的書進行操作,所以可能是兩款工具本身的差異導致部分功能無法運行。

也有發現Qt的繪圖介面一打開就關不起來的問題,不僅無法單獨關閉,介面也無法進一步操作。(只有關閉Qt Octave,繪圖介面才會跟著關閉。)

實驗室目前的規劃是先找到Demo裡的實用功能,主要是視覺刺激如何呈現,先學習如何讀取和顯示影像,之後再學習如何運用工具本身產出材料。

 

Leave a Comment

Filed under 未分類

2014/07/10 安裝 Octave+Psychtoolbox 於 Windows

首先介紹Octave的部分:

1. 直接找到Octave for Microsoft Windows的WIKI頁面。

2.點選Octave 3.8 MXE Builds當中的http://mxeoctave.osuv.de

3.點選Download最新版本的Octave。(目前是3.8.1)

完成Octave 3.8.1的安裝。

***

接著介紹Psychtoolbox的部分:

(首先聲明這是一次失敗的嘗試,目前Octave+Psychtoolbox並不支援Windows OS,但還是先把流程寫出來)

(以下流程適用於Matlab。)

1.找到Psychtoolbox的WIKI頁面。

2.點選Downloading and Installing the Toolbox

3.找到Installation Instruction,下載Windows的Subversion installer。(上面是寫for 32-bit,但是還是下載看看。)

4.下載Psychtoolbox installer到桌面上,它是一個M檔案。

5.下拉找到Windows的部分,首先在C槽建立一個toolbox資料夾。

6.把剛才的Psychtoolbox installer從桌面放進toolbox資料夾。

7.如果是64-bit的Psychtoolbox,還要另外下載64-bit GStreamer SDK,下載的頁面在這裡

8.確認電腦裡面有MSVC 2010,如果沒有,請到Microsofts官網安裝。

9.打開Octave,輸入cd C:/toolbox

10.再輸入DownloadPsychtoolbox(‘C:/toolbox’)

11.安裝失敗。

 

 

 

Leave a Comment

Filed under Lab meeting