真是太久沒有更新PsychoPy相關(guān)的內(nèi)容了。不過最近在咨詢PsychoPy相關(guān)問題的人越來越多,覺得是件好事,因?yàn)樵絹碓蕉嗟娜碎_始在使用這款優(yōu)秀的實(shí)驗(yàn)工具了。
今天這篇推送算是又一個(gè)解決問題的例子,此處感謝@常浩 的提問。那么在PsychoPy的Builder模式中要如何設(shè)置返回重新練習(xí)呢?接下來將詳細(xì)說明。
首先,還是先設(shè)置一個(gè)簡(jiǎn)單的實(shí)驗(yàn)程序,當(dāng)然這里為了演示返回重新練習(xí)的效果,就只放置了練習(xí)階段的任務(wù),正式實(shí)驗(yàn)部分只有指導(dǎo)語。如圖所示:
例子中先呈現(xiàn)注視點(diǎn),之后在刺激界面按數(shù)字12345鍵反應(yīng),在練習(xí)結(jié)束的頁面,按“F”鍵繼續(xù),按“J”鍵返回重新練習(xí)。進(jìn)入正式階段后,呈現(xiàn)完指導(dǎo)語即結(jié)束程序。
接下來我們就看看在PsychoPy中這樣的要求需要如何進(jìn)行設(shè)置。
帖子里僅列出關(guān)鍵步驟和語句,完整示例文件請(qǐng)戳文末“閱讀原文”下載~
在上面的flow視圖中可以看到,在正常的練習(xí)loop之外,添加了一層practice_back的loop,這個(gè)loop就是用于返回到開頭重新進(jìn)行練習(xí)所使用的,所以它的位置需要涵蓋住開頭的instruction和練習(xí)結(jié)束時(shí)的practice_end。如圖所示:
在這個(gè)practice_back的loop中,我們需要設(shè)置它的循環(huán)次數(shù)為999。其實(shí)這里就是需要設(shè)置一個(gè)較大的數(shù),保證在可能出現(xiàn)的返回練習(xí)按鍵次數(shù)中,要小于我們?cè)O(shè)置的這個(gè)循環(huán)次數(shù):
接下來需要設(shè)置的就是practice_end的這個(gè)位置了。首先需要放置上3個(gè)控件——字符呈現(xiàn),鍵盤反應(yīng)和語句:
字符呈現(xiàn)就是寫明按“F”鍵繼續(xù),按“J”鍵返回重新練習(xí)。而在語句界面需要在end routine標(biāo)簽下寫上如下語句,如果在此界面收集到f,則practice_back這個(gè)循環(huán)結(jié)束:
if "f" inkey_resp_6.keys:
practice_back.finished = True
這樣一來,簡(jiǎn)單的返回重新練習(xí)便已設(shè)置完畢。
以上部分的示例將放在文末鏈接中的test1中。
再額外講另一種返回重新練習(xí)的情況,那就是必須要練習(xí)的正確率達(dá)到一定程度,才能夠開啟正式實(shí)驗(yàn)。
比如這里我們說要求練習(xí)的正確率為80%以上,才能夠進(jìn)入正式實(shí)驗(yàn)。程序的其它部分和上面的都是相同的,需要進(jìn)行調(diào)整的地方是以下兩個(gè):
首先在stimulate頁面添加語句控件,并且在begin routine標(biāo)簽下寫下如下語句,表示設(shè)置初始的存儲(chǔ)正確反應(yīng)個(gè)數(shù)的變量number_correct:
if trials.thisN == 0:
number_correct =
0
之后在end routine標(biāo)簽下寫下語句,表示如果反應(yīng)正確,則number_correct循環(huán)加1:
ifkey_resp_2.corr:
?number_correct = number_correct + 1
之后,在practice_end這個(gè)頁面下,語句中的begin routine標(biāo)簽下的代碼改為表示計(jì)算正確率,若正確率大于等于0.8,那么結(jié)束practice_back這個(gè)loop(這里的+1是因?yàn)閜ython中的計(jì)數(shù)默認(rèn)是從第0開始的,不是從第1開始,所以需要+1):
if number_correct/(trials.nTotal + 1) >= 0.80:
practice_back.finished = True
end_practice.setText(
"practice finished, press 'space' to continue")
這樣一來,計(jì)算正確率的返回重新練習(xí)便已設(shè)置完畢。
以上部分的示例將放在文末鏈接中的test2中。
如果在程序設(shè)置中遇到其它問題,歡迎在此公眾號(hào)留言與我聯(lián)系討論。
供大家參考。
這回應(yīng)該是拖更最久的一次了,感謝大家的不離不棄與后臺(tái)的提問和催促,Ryan又回來了!
似乎又到了一年做實(shí)驗(yàn)的季節(jié),祝愿大家實(shí)驗(yàn)順利,有問題可以在公眾號(hào)后臺(tái)留言或是掃描上方二維碼聯(lián)系Ryan。
祝好!
—Ryan的后記