第02回 心的回転課題

各試行のフィードバック

毎回の試行で反応した後で、それが正解だったかどうかをフィードバックしてあげましょう。そのために、まずフィードバック用のルーチンを挿入します。Flowウィンドウから”Insert Routine”を押して、trialルーチンの後ろに作成します。

mr.007

最初は何もコンポーネントがありませんので、Textコンポーネントを追加しておきます。名前は「fbMessage」とでもしておきましょう。ポイントはText欄に変数名(ここではfbMes)を指定しておくことです。反応によって毎回メッセージ内容が変わるので、文章を直接打ち込んでも意味がありません。毎試行の反応の結果を受けてこの変数の中身を書き換えることになります。

mr.008

 

Codeコンポーネント

mr.009毎試行の反応が正しかったかどうかに応じてメッセージを変えるために、新しくCodeコンポーネントというのを用います。PsychoPyはグラフィカルなインターフェイスで実験を組み立てていくことができますが、実際はPythonという言語で動いており、裏ではPythonのコード(プログラム)に変換されています。このCodeコンポーネントを使って部分的にコードを入力することによって、Builderだけで使用するよりもかなり高度なことが実現できるようになっています。

Codeコンポーネントを立ち上げると、下のような設定画面が現れます。5つの入力欄があり、そこにそれぞれコードを入力するわけですが、欄によってそのコードが実行されるタイミングが変わります。一番上の”Begin Experiment”に入力されたコードは、実験開始時に実行されます。ですから、なにか決まった値(定数)を設定する場合などに使うといいでしょう。次の”Begin Routine”はそのルーチンが始まるタイミングで実行されるものです。今回はfeedbackルーチンが実行される度にメッセージが変わるとよいので、ここにコードを入力することになります。次の”Each frame”というのは、画面のフレームが書き換わる度に実行するコードを記入する欄で、運動する刺激などを使う際には便利です。残りの”End Routine”と”End Experiment”はそれぞれルーチンと実験が終了するタイミングで実行するコードを記入します。

Codeコンポーネントを活用するためにはPython言語に関する知識が必要になります。基本的な記述方法は、第3回で詳しく説明しているのでそちらを参照してください。

mr.010

 

反応したキーの情報

細かいPython言語のルールを解説する前に、ひとまずフィードバックのメッセージを反応結果によって変えるためのコードを書いてみましょう。そのために必要となる反応したキーの情報は、以下の変数に入っています。

response.keys # 押されたキー
response.rt  # 最初に押されたキーに対する反応時間
response.corr # ‘store correct’にチェックが入っている場合、正解なら1、不正解なら0が代入される。

これの変数名は反応を取得したKeyboardコンポーネントの名前によって変わります。今回はコンポーネント名を「response」にしたのでこの変数名ですが、例えば「key_resp」とした場合にはそれぞれ「key_resp.keys」「key_resp.rt」「key_resp.corr」に なります。この変数を元にフィードバックのメッセージを設定し、被験者に提示します。

“Begin Routine”に以下の様に入力してください。

if response.corr==1:
    fbMes = 'Correct!'
else:
    fbMes = 'Oops! That was wrong'

1行目の「if response.corr==1:」というのはresponse.corrの中身が1であれば(つまり正解であれば)その次の行を実行するという意味です。次の行ではfbMesという変数に”Correct!”という文字列を代入しています。3行目の「else:」というのは1行目のif以下が正しくなかった場合(つまり1ではない=間違い)だった場合に、次の行を実行するというもので、ここではfbMesに間違えたときのメッセージを代入しています。

ちなみにRoutinesの中で、このcodeコンポーネントはfbMessageの上に来ていることを確認しておいてください。コンポーネントは基本的に上にあるものから順番に実行されるようです。メッセージを表示するTextコンポーネントよりもcodeコンポーネントを先に実行する必要があります。

1308201350これで基本的な実験の流れはできました。実行して結果がファイルに記録されるかどうか確認してください。あとは必要に応じて実験開始前の教示、終了時のメッセージなどを呈示すればより本格的な実験プログラムになるでしょう。

お疲れさまでした。