PsychoPyの実験プログラムのサンプル の履歴(No.1)
- 履歴一覧
- 差分 を表示
- 現在との差分 を表示
- ソース を表示
- PsychoPyの実験プログラムのサンプル へ行く。
- 1 (2023-01-05 (木) 20:09:21)
PsychoPyで実験を作る†
PsychoPyは,無料で使えるオープンソースの心理学実験ソフトウェアです。
無料の実験ソフトはたくさんありますが,直接プログラムのコードを書くことなく,実用的な実験プログラムを簡単に作成できることがPsychoPyの特色です。
PsychoPyの基本については,PsychoPy講座やPsychoPyを使った初学者向けの心理実験環境の構築,PsychoPy Builderで作る心理学実験をご覧いただくのがよいと思います。
このページでは,PsychoPyの基本的な使用法を身に着けた方がより実践的な実験プログラムを作成するにあたってのヒントになるようなサンプルを提示したいと思います。
各コンテンツのタイトルは以下の通りです。
- PsychoPyでブロックランダマイズ
- PsychoPyで試行ごとにランダムな位置に刺激提示
- PsychoPyで試行ごとにランダムな位置に刺激提示2
- PsychoPyで試行ごとにランダムな位置に刺激提示3
- PsychoPyで調整法による回答
- PsychoPyでエラーフィードバック
- PsychoPyでランダムにイベント挿入
全般的なTips†
PsychoPyを使っていて気がついたことなど(必ずしも正しくはないかもしれません)。
基本的に,日本語は使わないようにしましょう†
PsychoPyはUnicodeに対応していますが,エンコード関係のトラブルは少なくありません。
つまり,日本語変換を経由して入力する文字を使うと,それだけの理由でプログラムがうまく動作しないことがあります。
日本語を使っていてもうまくいくこともあるのですが(これがややこしいところです),問題は,うまく動作しないときにその原因がプログラムの作り方にあるのか,日本語(2バイト文字)を使っていることにあるのか区別がつかなくなるところです。
ファイルの編集内容や指定におかしなところがないか何度も何度も確認してさんざん頭を悩ませた結果,結局のところ,ある一部分に日本語の名称をつけていたから動かなかっただけだとわかったときには相当の徒労感を味わうことになります。
ファイル名やファイル中のコンポーネントにつける名前,実験プログラムに関連づける刺激の画像や動画,条件を指定するcsvファイル,これらを格納するフォルダ名等々,関わりのあるものの名称には直接入力(英数半角)だけを使うのが無難です。
日本語を使うのは,提示するテキスト(文字・単語)や教示の中身として,つまり,刺激の内容として提示する場合に限定しましょう。
拡張子に気をつけましょう†
PsychoPyでは,刺激ファイル(画像や動画)や条件ファイルを指定する際に,拡張子まで明示的に記述する必要があります。
実験ファイルと同じ階層にあるファイルを指定したはずなのに読み込めないといったときには,拡張子を正しく記述しているか確認してみましょう。
可能ならOSで拡張子を表示する設定にしておきましょう(Windowsを使用している場合)。
PsychoPyのパフォーマンスは使用環境に依存します†
たとえば,きちんと設定したはずなのになぜか刺激が画面に表示されないと思ったら,指定した提示時間が短すぎてそのPCのスペック(CPU,メモリ,グラフィックボード等)では処理しきれないせいだったということがあります。
このときは,提示時間の設定を長くすると同じPCでも無事刺激を表示できるようになりました(しかし,それでは実験として困るわけですが)。
また,提示時間が短いままの設定でも,他のPCとモニターでは期待通りに動作しました。
つまり,あるプログラムがうまく動かなかったとしても,必ずしもプログラムに間違いがあるとは限らず,他のPCならうまくいくことがあります。
インストール直後の動作チェックの結果はよく確認しましょう。
また,画像ファイルが表示されない場合,画像形式を変えるとうまくいくことがあります(pngはダメでもjpgならOKなど)。
さらには,同じ画像形式でもアルファチャンネル(透明度の情報)を含むかどうかといった細かい設定を変えるとうまくいくことがあります。
動画ファイルの場合,mp4はダメだけどavi形式なら大丈夫,ただし,情報を圧縮していないaviのみ再生可能ということもありました(しかも,この動画形式の選好はOSによっても違います)。
うまくいかない場合は,プログラムのファイルをいじるだけでなく,できることをいろいろと試してみる必要があるということです。また,ユーザーフォーラムをよく確認しましょう。
PsychoPyの“予約語”に気をつけましょう†
Builderでプログラムのファイルを作った場合も,指定した内容はいったんPythonによるプログラムに置き換えられてから実行されます。
実行時に生成される”hogehoge_lastrun.py”ファイルがそれに当たります。
このlastrun.pyファイルを読んでみると,ユーザーが指定した変数以外にもさまざまな変数が使われていることに気がつきます。
これらの変数名とユーザーが指定した変数名がたまたま一致するとプログラムの動作に問題を生じることがあります。
こうした”予約語”については,通常のコンポーネントに同じ名前を付けようとすると編集の適用がロックされて”OK”ボタンを押せないようになっています。
しかし,条件ファイルやCodeコンポーネントを使う場合にはこれらの”予約語”と同じ変数名を付けることができてしまいます。
たとえば,”filename”という変数は,出力時のファイル名を指定するものです。
この”filename”という変数名を条件ファイルで使ってしまうと出力時のファイル名や出力先が意図したものとは違うものになってしまいます。
条件ファイルやCodeコンポーネントを使用する際には,使用する変数名にも注意する必要があります。
特に,以下のものなどは,うっかり使ってしまいそうな変数名かもしれません。
- filename:出力ファイルの名前(ファイルパスを含む)
- t:各試行(ルーチンの繰り返しごと)の経過時間
逆に,これらの変数の機能をよく把握していれば,Codeコンポーネントをより有効に活用することもできると思います。
その他の予約語については,PsychoPy Builderで作る心理学実験 が参考になります。
なお,Coderを使ってすべて自前でコードを書く場合にはこれらの変数名を特に気にする必要はありません。