狠狠撸

狠狠撸Share a Scribd company logo
PsychoPyを使った 
初学者向けの心理実験環境の構築 
! 
小川洋和 
関西学院大学 文学部 総合心理科学科
今日の内容 
自己绍介 
笔蝉测肠丑辞笔测とは? 
入门编:実験作成の基础 
応用编:コードコンポーネントについて 
実験実習?卒論実験に導入する際のノウハウ
自己绍介
専門:実験心理学(視覚的注意?顔認知など) 
自身の実験プログラム環境は、MATLAB+PTBを使用。 
毎年16~12名程度の卒論生を指導。その全員に別々実験 
のプログラムが必要となる。 
? 学生自身が自力で学べる心理実験のためのプログラミン 
グ環境の必要性
笔蝉测肠丑辞笔测とは?
PsychoPyの特徴 
心理実験用の刺激呈示?データ収集アプリケーション 
Python言語をベースとしている 
無料で利用できる(オープンソース) 
インストールが簡単 
プラットホームを問わない(Windows / Mac / Linux) 
GUI環境で実験を構築できる(もちろんコードを直接書くことも 
できる) 
パラレルポートなどを利用した外部トリガー出力も可能。
インストール 
PsychoPy Webpage(http://www.psychopy.org)からダウンロードページへ
Windows:「*-win32.exe」ファイルをダウンロード→ダブルクリック 
Mac:「*-OSX.dmg」ファイルをダウンロード 
   ディスクイメージ内のアイコンをアプリケーションフォルダにD&D
コーダ?(Coder)機能 
Pythonのコードを直接記述するかたちでプログラミン 
グする機能 
ビルダー(builder)機能 
GUIベースで刺激や反応取得のルーチンを配置していく 
ことで実験を作成する機能
Coder View 
通常のエディター機能に加 
え、Outputを表示したりや 
Shellコマンドを実行する機 
能が実装されている。 
CoderとBuilderはメニュー 
から随時切り替え可能。
Builder View ルーチンペイン 
フローペイン
ルーチンペイン 
実験を構成するイベントの時間的な流れが示されている 
注视点?刺激のタイミング 
反応取得の期間など 
フローペイン 
実験内でのルーチンの実行順序を示す。教示や刺激、繰り返し(ルー 
プ)など
コンポーネント 
実験の中で呈示される様々な刺激や反 
応取得のイベント(部品) 
これらを並べることによって試行をデ 
ザインすることができる。
刺激呈示に関するコンポーネント 
Image:画像ファイルを表示 
Text:文字を表示 
Polygon:多角形を表示 
Grating:縞模様を表示 
Dot:一様に運動するドットを表示 
Sound:音声ファイルを呈示 
Movie:動画ファイルを再生
反応取得に関するコンポーネント 
Keyboard:キーボードの反応を取得 
Mouse:マウスカーソルの座標?ボタン状態を取得 
Rating Scale: 
レーティングスケールを表示して反応を取得 
Microphone:マイクから音声を録音 
Cedrus button box:Cedrus社製ボタンボックス 
の制御 
ioLabs button box:ioLabsのボタンボックス制御
その他のコンポーネント 
Code: 
Pythonのコードを入力する。任意のタイミングで 
実行することによって、動的な制御を実現できる。 
ISI: 
大きなサイズの画像を読み込むなど時間が掛かる処 
理を行うための期間を設定 
Parallel out: 
パラレルポートからの信号出力を制御
入门编:実験作成の基础
実験課題 
二枚の画像の選好判断(2AFC) 
カーソルキーの左右で反応。反応キーと反応時間を記録。 
実験刺激 
10枚の顔画像(001.jpg~010.jpg) 
試行の流れ 
+ 
ブランク 
(500 ms) 
注视点 
(750 ms) 
刺激 
(反応まで)
ブランク
ブランク 
Durationなどを設定する 
この期間に呈示する画像ファ 
イルなどを先読みすることが 
可能(後述)
注视点 
Nameにコンポート名を設定 
(変数などと重複不可) 
呈示タイミング?じいじ時間 
などを設定 
文字の大きさをピクセル単位 
で設定(視覚?画面上での比 
率などでも設定可能) 
位置は画面中央が[0,0]
注视点 
Nameにコンポート名を設定 
(変数などと重複不可) 
呈示タイミング?じいじ時間 
などを設定 
文字の大きさをピクセル単位 
で設定(視覚?画面上での比 
率などでも設定可能) 
位置は画面中央が[0,0]
注视点
刺激画像 
image欄にファイル名を 
記入(プログラムと違う 
フォルダにある場合はパ 
ス名も) 
反応まで呈示し続ける場 
合にはStop欄を空白に 
位置、サイズなどを設定
刺激画像 
image欄にファイル名を 
記入(プログラムと違う 
フォルダにある場合はパ 
ス名も) 
反応まで呈示し続ける場 
合にはStop欄を空白に 
位置、サイズなどを設定
刺激画像
反応取得 
Start, Stopで反応を取得 
する期間を設定 
“Force end of Routine” 
にチェックを入れるとキー 
押しがあった時点でルー 
チンが終了する。 
“Allowed Keys”で受け付 
けるキー種類を設定
反応取得 
Start, Stopで反応を取得 
する期間を設定 
“Force end of Routine” 
にチェックを入れるとキー 
押しがあった時点でルー 
チンが終了する。 
“Allowed Keys”で受け付 
けるキー種類を設定
反応取得
繰り返しの処理(ループ) 
Flowペインから”Insert Loop”をクリック
繰り返しの処理(ループ) 
“LoopType”で繰り返しの 
種類(どのようにランダ 
マイズするか)を設定で 
きる 
“nReps”で繰り返し回数 
を設定 
“conditionsFile”で試行ご 
とのパラメタリストを読 
み込むことができる。
繰り返しの処理(ループ) 
一行目にPsychoPy内 
での変数名を記入 
二行目以降に変数に入 
る値を記入 
一行に記入する値が 
一試行の値となる。
繰り返しの処理(ループ) 
“conditionsFile”でExcel 
ファイルを指定すると、 
読み込まれて先ほど指定 
した変数名が認識されて 
いることがわかる。
繰り返しの処理(ループ)
刺激画像 
先ほど設定した画像のプ 
ロパティを再度開き、設 
定ファイルで指定した変 
数名($imageName1) 
を入力 
“set every repeat”に設 
定することを忘れずに!
完成!
結果の出力 
CSVファイルで各試行の刺激?反応が記録される 
日本語が含まれる場合、文字コードの関係で文字化けする。 
その場合はExcelファイルで出力するように設定を変更す 
ることで回避可能
結果の出力 
CSVファイルで各試行の刺激?反応が記録される 
日本語が含まれる場合、文字コードの関係で文字化けする。 
その場合はExcelファイルで出力するように設定を変更す 
ることで回避可能
Youtubeにストループ課題の作成チュートリアル動画が 
掲載されています。 
http://www.youtube.com/watch?v=VV6qhuQgsiI
応用编:コードコンポーネントについて
コードコンポーネント 
動的な刺激制御 
反応の結果に応じてフィードバックのメッセージを変 
えるなど、動的な刺激制御を行うためには、コードコ 
ンポーネントを利用する。 
Pythonのコードを直接記入することで、条件分岐など 
の複雑な処理を行うことが可能になる。
コード実行タイミング 
実験開始/終了時?ルーチン開始/終了時?各フレームの 
それぞれのタイミングで、スクリプトを実行することがで 
きる。
コードの記入例 
画像の呈示位置(左右)をランダマイズするには? 
先ほどの例では画像ペアの左右が固定なので、試行 
毎にランダムに左右位置を決定する 
反応に応じてフィードバックメッセージを呈示するに 
は? 
反応時間が3秒以上の場合に「Too late!」という 
メッセージを表示する。
乱数に応じてファイル名をスワップする 
Begin Routineに左の 
ようなコードを記入す 
る。 
Random()は0以上1未 
満の乱数を返す関数 
trials.addDataでここ 
で値を変更した変数を 
指定すると結果ファイ 
ルに書き出される。
乱数に応じてファイル名をスワップする 
Begin Routineに左の 
ようなコードを記入す 
る。 
Random()は0以上1未 
満の乱数を返す関数 
trials.addDataでここ 
で値を変更した変数を 
指定すると結果ファイ 
ルに書き出される。 
コードで指定した変数に変更
結果ファイルの確認 
trials.addDataで指定した変数が挿入されている。 
試行によって画像の呈示位置がスイッチされてることも確 
认できる。
コードの記入例 
画像の呈示位置(左右)をランダマイズするには? 
先ほどの例では画像ペアの左右が固定なので、試行 
毎にランダムに左右位置を決定する 
反応に応じてフィードバックメッセージを呈示するに 
は? 
反応時間が3秒以上の場合に「Too late!」という 
メッセージを表示する。
メッセージ用のルーチンを作成する 
“Insert routine”から新しくメッセージ呈示用のルーチン 
を作成し、テキストコンポーネントでメッセージを入力す 
る。
メッセージ用のルーチンを作成する 
“Insert routine”から新しくメッセージ呈示用のルーチン 
を作成し、テキストコンポーネントでメッセージを入力す 
る。
メッセージ用のルーチンを作成する 
“Insert routine”から新しくメッセージ呈示用のルーチン 
を作成し、テキストコンポーネントでメッセージを入力す 
る。
メッセージ用のルーチンを作成する 
“Insert routine”から新しくメッセージ呈示用のルーチン 
を作成し、テキストコンポーネントでメッセージを入力す 
る。
反応時間に応じてフラグを立てる 
Trialルーチンでコードを開 
き、”End Routine”のタブに 
左のようなコードを入力する 
各試行の反応時間は 
「response.rt」という変数 
に入っている(結果ファイル 
でも確認できる)。
ループ回数の設定で処理の分岐を行う 
メッセージのルーチンにループを設定し、繰り返し回数に 
先ほどのフラグ変数を指定する。 
? ループ回数が0の場合には処理をスキップすることを利 
用した処理分岐
完成!
実験実习?卒论実験などへの导入
関西学院大学文学部総合心理科学科での導入事例 
PsychoPyを学科保有のPC(60台前後)に加えて、全学 
のPC教室にインストール 
2014年度から3年生対象の実験実習科目の一環として 
PsychoPyを使った実験プログラム実習を実施
実際に導入してみた感想… 
UIが取っつきやすいこともあり、想定していたよりも学生 
の理解は早い。 
2週(各連続2コマ)で概容を説明し実験作成例を呈示 
することによって、基本的な実験作成が可能になる。 
もちろん細かい点については個別に説明?対応する必 
要あり 
エラーメッセージが非常にわかりにくいため、トラブルが 
あったときの対処に時間がかかる。
よくあるトラブル 
全般的にエラーメッセージとミスの内容が対応しておらず、 
プログラムの知識がないとデバグが困難である。 
プログラムのパス名(上位階層も含む)に2バイト文字が 
含まれているとプログラムを実行できない。しかも、その 
場合特にエラーメッセージが表示されない。 
コンポーネントで値を変数で指定する場合「Set every 
repeat」にセットする必要があるが、これを忘れることが 
多い。また、その場合に表示されるエラーメッセージから、 
このミスに気づくことが難しい。
PsychoPy導入のメリット?メリット 
学生自身が実験プログラムを手軽に作成できる 
実験に対する理解が深まりやすい 
作成済みのプログラムを渡されるよりも、自身の卒論 
研究に対してより動機づけが強まりやすい(?) 
厳密な時間制御が必要な実験(特に視聴覚刺激?動画)の 
精度には注意が必要。 
Coder機能を使ってコードを自分で書くか、他の実験 
環境の利用を検討した方がよい。
参考資料 
愛媛大学十河先生が非常に詳細(約400ページ!)かつわ 
かりやすいテキストをPDFで提供されているので是非ご覧 
ください。 
PsychoPy Builderで作る心理学実験 
http://www.s12600.net/psy/python/ppb/ 
私のサイトにも簡単な実験作成方法を紹介しています。 
PsychoPy講座 
http://ogwlab.org/?page_id=460

More Related Content

笔蝉测肠丑辞笔测を使った初学者向けの心理実験环境の构筑