PsychoPyで試行ごとにランダムな位置に刺激提示2 のバックアップ差分(No.1) - 井関龍太のページ

ホーム   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS

PsychoPyで試行ごとにランダムな位置に刺激提示2 のバックアップ差分(No.1)


  • 追加された行はこの色です。
  • 削除された行はこの色です。
**&color(#000080){画面内のランダムな位置に画像を配置したい}; [#a4abd05c]
PsychoPyのBuilderをベースとして使って,Codeコンポーネントを利用することで試行ごとに画面内のランダムな位置に刺激を配置するサンプルについては以前に紹介しました([[PsychoPyで試行ごとにランダムな位置に刺激提示]])。
しかし,このときのサンプルでは,個別の刺激要素をTextコンポーネントやPolygonコンポーネントで指定した場合にはあまり問題はないのですが,Imageコンポーネントを使った場合には限界がありました。
具体的には,Imageコンポーネントの数が多いと刺激が表示されません。
環境にもよると思いますが,私が試したPCでは,3~4個程度の画像ならすべての刺激が問題なく表示されますが,5個を超えると背景しか表示されなくなりました。
一般に,画面内にランダムに刺激を配置したい場合は10個程度の刺激を提示したいのではないでしょうか(さまざまな研究目的があるので一概にはいえませんが,経験的な感覚です)。

そこで,別のアプローチを使ってもっとたくさんの画像をランダムに配置できるサンプルを作ってみました。
[[PsychoPyで試行ごとにランダムな位置に刺激提示]]のサンプルでは,わかりやすさのために,刺激ひとつひとつに対応するコンポーネントをルーチン上に作成するというアプローチを採用していました。
しかし,すでに述べた通り,Imageコンポーネントをたくさん配置すると処理負荷が高くなりすぎるようです。
今回のサンプルでは,画像一つずつに対してImageコンポーネントを逐一用意することをやめ,ルーチン開始時に刺激画像を直接読み込んで提示画面を生成することにしました。
このようにすれば,もとの画像は複数ありますが,PsychoPyのプログラム上では一枚の画像として扱われるので負荷は軽減されるだろうと考えたからです。
その代わりに,ルーチン上に何もないと提示時間などの挙動を制御できないので,何も表示しない,ダミーのTextコンポーネントを用意しました。
このようにすることで,10個以上の画像を要素としても試行ごとにランダムな位置に配置した画面を提示できるようになりました。

**&color(#000080){サンプルの概要}; [#l80dcb6d]
まず,サンプルのファイルをダウンロードしてください。
下のアイコンを右クリックして「対象をファイルに保存」を選んでください。
または,保存のポップアップから「ファイルを保存する」を選んでください。
プログラムはPsychoPy v.1.84.2で作成しています。

&ref(RandomPosition2.zip);

ダウンロード対象はzipフォルダになっていますので,右クリックして「すべて展開」を選び,圧縮フォルダを展開してください。
PsychoPyで作成した実験ファイル(RandomPosition2.psyexp)のほかに,Excelファイルがひとつとpngファイルが6つ入っています。
これらは実験ファイルとリンクさせて使用する条件設定用のファイルと刺激として使用する画像ファイルです。
いずれのファイルも実験ファイルと同じディレクトリ(同じフォルダ)に配置してください。

サンプルの内容は,試行ごとに4つの刺激がランダムな位置に1秒間現れ,キーを押すたびに次の試行に移るというものです。
ダウンロードしたフォルダ内には6つの画像ファイルがありますが,各試行ではそのうち4つを表示するように条件ファイルによって設定しています。
サンプルなので画像は少なめにしてありますが,10個以上に増やしても動作することは確認してあります。

&ref(disp1.png,,,40%); 

上で説明した通り,ルーチン上の刺激要素はダミーのTextコンポートだけです。
このダミーのコンポーネントを編集すれば提示時間を変えることができます。
ダミーコンポーネントは削除しないでください。

&ref(disp2.png,,,60%); 

“実験開始時”のタブでrandomルーチンを呼び出しています。

&ref(disp3.png,,,60%); 

“Routine開始時”のタブに画像を読み込んで画像を生成するためのコードを書いています。
基本的な構成は,[[PsychoPyで試行ごとにランダムな位置に刺激提示]]のサンプルと同じで,仮想グリッド上に刺激を配置しています。
ただし,今回はルーチン上にあるコンポーネントの位置を指定するのではなく,画像を直接読み込んで画面上に表示するように指定しています。
読み込む画像ファイル名は条件ファイルで指定しています。

**&color(#000080){カスタマイズの方針}; [#kbe60d8f]
読み込む画像の数を増やすには,Codeコンポーネントの“stimList”の要素を増やします。
この“stimList”の要素は,条件ファイルのヘッダ名(一行目)と一致させる必要があります。
その他については,基本的に[[PsychoPyで試行ごとにランダムな位置に刺激提示]]と同じです。


TrackBack(0) | 外部リンク元 | このエントリーをはてなブックマークに追加