PsychoPyで画像の印象評定

前回は、[PsychoPyのインストールから教示を呈示するまで](https://qiita.com/kurokida/items/c175c79e48227ab45065)を説明しました。今回は、いよいよ実験のメイン部分を作成します。

まずは、ファイルとフォルダの構成を確認しましょう。前回作成したファイルに、insyoという名前をつけているとします。

|ファイル/フォルダ名|説明|
|:---|:---|
|insyo.psyexp|前回作成したBuilderで開くファイル|
|insyo_lastrun.py|プログラムを実行すると自動で作成される。Pythonで書かれており、テキストエディタで開ける|
|data|実験結果のファイルが保存されるフォルダ。自動で作成|
|conditions.xlsx|手動で作成。実験条件を記述|

またこれに加えて、プログラムと同じ場所に、実験で呈示したいすべての画像を保存してください。ここでは、

- image1.jpg
- image2.jpg
- image3.jpg 

の３枚の画像が保存されているとします。

#実験条件
心理学の実験では、実験条件（独立変数）を設けて、条件間の比較を行いますね。今回の実験については、実験条件という表現は適切ではないかもしれませんが、呈示する画像を実験条件と見なしたいと思います。

PsychoPyではエクセルファイルに実験条件を記述します。それをPsychoPyに読み込ませると、条件をランダムな順番に並べ替えて実験を行うことができます。今回の例でいえば、画像の呈示順序がランダムになります。

では次のような内容のエクセルファイルを作成してください。作成したファイルは、conditions.xlsxとしてプログラムと同じ場所に保存してください。

<img width="507" alt="スクリーンショット 2019-09-30 10.29.01.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/495823/dba9d467-3189-bf4c-2fef-21763ddc0a23.png">

#Routine（ルーチン）を挿入
前回の作業で教示は呈示できるようになっていますね。これは言い方を変えれば、教示を呈示するためのルーチンを作成したことになります。今回は、刺激を呈示するためのルーチンを作成します。

Routineを挿入をクリックして(new)を選択します。名前は何でもよいのですが、ここではstimulusとしています。

<img width="434" alt="スクリーンショット 2019-09-30 10.34.55.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/495823/40aa46e9-b813-c0e3-2263-9e65304d103a.png">

ルーチンを挿入する場所をクリックします。

<img width="427" alt="スクリーンショット 2019-09-30 10.37.52.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/495823/6fe43ca5-1ef3-ceab-5dd2-b09d5433f528.png">

以下の図のようになればOKです。ここでは分かりやすくするため、もともとあったルーチンtrialをinstructionに変更しました。trialを右クリックすると名前を変更できます。ちなみにこの図はFlow（フロー）と呼ばれます。

<img width="598" alt="スクリーンショット 2019-09-30 10.40.18.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/495823/55555ff0-9f38-02d2-56de-df36273a6da9.png">

#Imageコンポーネント
stimulusルーチンを開いて、画像を呈示する準備をしていきましょう。

<img width="440" alt="スクリーンショット 2019-09-30 10.43.29.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/495823/42fcb7dd-1bd2-2ec8-5e6b-c7520681e40d.png">

Imageコンポーネントをクリック

<img width="1178" alt="スクリーンショット 2019-09-30 10.45.51.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/495823/58bfbbee-9583-f2b1-b6e5-99fa3c54a3b7.png">

Imageコンポーネントを次のように設定します。

- 反応するまで画像を呈示し続けたいので実行時間を空白に
- 画像を**$stimulus**に変更。 $記号を忘れずに。これはエクセルファイルでつけた見出しと一致させる必要があります。
- **繰り返し毎に更新**に変更。こうすることで、次の試行に移り変わったときに、刺激が自動的に変わります。

<img width="666" alt="スクリーンショット 2019-09-30 10.49.53.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/495823/ec5c755b-ef92-3528-1713-5334ff6d9153.png">

#Rating scaleコンポーネント
今回は、Rating scaleコンポーネントを使って反応を記録することにします。このコンポーネントは**反応**カテゴリーのなかに入っています。

<img width="1275" alt="スクリーンショット 2019-09-30 16.23.58.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/495823/1cfb8382-a868-590f-eb74-b5c13089bb06.png">

Rating scaleの設定内容は変更せずにそのままOKを押しましょう。

#Textコンポーネント
画像と尺度は表示されるようになりましたが、このままだと何について質問されているか分からないので、Textコンポーネントを使って質問項目を表示します。

実行時間を空白にして、文字列に質問項目を記入します。

位置も重要で、刺激画像に重ならない場所に呈示する必要があるでしょう。このときの数字ですが、初期設定では画面の高さを1.0として、その割合で指定します。0.5であれば、画面の高さの半分です。また、(0,0)が画面の中央を表し、正の数は右と上を表します。適当に数値を指定して、文字列が呈示される場所を確認してみてください。

<img width="624" alt="スクリーンショット 2019-10-03 15.09.09.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/495823/f18939e3-e0ce-ce3f-2797-296f18c2bca3.png">


# Loopを挿入
今回の実験では画像の呈示を何度も繰り返し行います。繰り返し行う作業は、PsychoPyではLoopと呼ばれています。Loopを挿入してみましょう。

<img width="554" alt="スクリーンショット 2019-09-30 11.06.44.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/495823/da92556b-73c2-ca18-218e-37862eda397e.png">

教示は繰り返す必要がないので、stimulusルーチンだけを繰り返すようにします。**Loopを挿入**をクリックしたあと、Loopの開始点としてstimulusの前を、Loopの終了点としてstimulusの後をクリックします。

すると以下のような小さなウィンドウが表示されます。選択をクリックして、すでに作成済みのエクセルファイル(condtions.xlsx)を選択します。

<img width="556" alt="スクリーンショット 2019-09-30 11.10.07.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/495823/5c2ad132-8161-b065-954e-c18e2264c1f5.png">

下の図のように、1パラメータ, 3条件 [stimulus]と表示されればOKです。また繰り返し回数を2に減らしています。

<img width="556" alt="スクリーンショット 2019-09-30 11.14.36.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/495823/6547e3ef-58f1-cf00-ba53-dad6500430dc.png">

下のようなフロー図になればOKです。画像を呈示するルーチンstimulsだけが繰り返されるのが分かりますね。

<img width="621" alt="スクリーンショット 2019-09-30 11.15.51.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/495823/41068ea8-9cf7-fab5-213b-6837af1fd56b.png">

実験の結果はdataフォルダに自動的に保存されます。ひとつの実験を行うたびに、dataフォルダに3種類のファイルが作成されます。ファイル名は実験の開始時に入力した名前を元につけられます。

現時点ではcsvファイルを見ればよいと思います。csvファイルを見て、呈示された画像の名前と反応が適切に記録されているかを確認してください。

さて、実験プログラムとしてはこれでだいたい完成していますが、このままではひとつの質問しかたずねることができませんね。複数の質問について回答させる方法については、[PsychoPyのRoutine（ルーチン）のコピーと貼り付け](https://qiita.com/kurokida/items/8f72654dc7c638c16ac7)をご覧ください。