.. title:: Python関連 .. _portable: Windows用Portable VisionEgg/PsychoPy ---------------------------------------------------------------------- Pythonで心理実験 例題15-1で触れた、Portable PythonにVisionEggを導入したものです。 同様の手法でPsychoPyを導入したものも用意しました。 大学の情報処理室のWindows機など、PythonをインストールできないマシンでもVisionEggやPsychoPyを使用することが出来ます。 **一応、十河の研究室のPCおよび所属部局の端末室のPCで動作確認をしていますが、皆さんが使用しているPCでの動作は保証できません。** 使用するPCがvsyncへの同期に対応していない場合(Intelの統合グラフィックス搭載の端末など)はswap/flipの周期が予想できませんので、swap/flipの回数で時間を制御するような実験スクリプトを書くのは避けるべきです(60Hzのリフレッシュレートを前提として100ms刺激を提示するために6回swap/flipを行うなど)。 なお、MoveStim2(BuilderのMovieコンポーネントのopenccvバックエンド)を使う場合は別途Portable版のVLC Media Player ( `http://portableapps.com/apps/music_video/vlc_portable `_ )が必要です。ダウンロードして、Portable PsychoPyを入れているドライブのルートに展開してください。例えばPortable PsychoPyが入っているUSBメモリがG:ドライブとして認識されているならば、G:\\の直下に展開してください(G:\\VLCPortableとなるようにする)。 **32bitのPsychoPyには32bitのVLC、64bitのPsychoPyには64bitのVLCが必要** ですのでご注意ください。 + PsychoPy3 + `PortablePsychoPy3.0.2.zip `_ Python3, 32bit, pyoあり (最終更新日:2019/01/15 **302MB** ) + `PortablePsychoPy3.0.2_py2.zip `_ Python2, 32bit, pyoあり (最終更新日:2019/01/15 **382MB** ) + `PortablePsychoPy3.0.2_x64.zip `_ Python3, 64bit, pyoなし (最終更新日:2019/01/15 **251MB** ) + PsychoPy2 + `PortablePsychoPy1.90.3.zip `_ (最終更新日:2019/01/15 **187MB** ) + `PortablePsychoPy1.90.3_py3_x64.zip `_ (最終更新日:2019/01/15 **314MB** ) + PsychoPy2 旧バージョン + `PortablePsychoPy1.84.2.zip `_ (最終更新日:2016/10/28 **210MB** ) + `PortablePsychoPy1.83.01.zip `_ (最終更新日:2016/05/11 **190MB** ) + `PortablePsychoPy1.82.02.zip `_ (最終更新日:2015/09/30 **193MB** ) + `PortablePsychoPy1.82.01plus.zip `_ (最終更新日:2015/06/22 **183MB** ) + VisionEgg + `PortableVisionEgg1.2.1.zip `_ (最終更新日:2012/11/19 **70.5MB** ) 更新履歴 ~~~~~~~~ + 2019/01/24 + PsychoPy **3.0.2** を導入しました。Python2上でPsychoPy3.0.0がsounddeviceのエラーで動作しないので差し替えです。 + 2019/01/15 + PsychoPy **3.0.0** を導入しました。本家に従って無印の物をPython3ベースとし、Python2ベースの物には_py2と付けました。32bitのものにはpyoを導入してあります。 + PortablePsychoPy **1.90.3** に付属のランチャーを更新しました。ffmpegのダウンロードの安定性が向上しているはずです。 + 2018/08/24 + Visual Studio C++ 2015ランタイムが無いPCで実行すると「VCRUNTIME140.dllが見つからない」というエラーが出てPsychoPyが起動しないというご報告をいただきましたので、DLLが不要なようにビルドしなおしました(PortablePsychoPy1.90.3.zipおよびPortablePsychoPy1.90.3_py3_x64.zipのみ)。筆者のテスト環境ではこのエラーを再現できないのでエラーを解消できているか確認できないのですが、なおこのエラーが続くようでしたらご報告いただけますと幸いです。 + PsychoPy3のβ版はまだ安定していないようなので公開は一旦停止しました。 + 2018/08/02 + PsychoPy **1.90.3** を導入しました。また、PsychoPy3のβ版である **3.0.0b3** を導入したものも用意しました。 + 32bit Python2ベースのものと64bit Python3ベースのものがあります。py3_x64と書いてあるのが64bit Python3ベースで、何も書いていないのが32bit Python2ベースです。 + 例によって、Builder/Coderが起動していくつかのデモが動くことしか確認していません。不具合に気づかれた方は十河までご連絡ください。 + **3.0.0b3はベータ版(正式リリース前のテスト中)です。** + 2018/03/23 + PsychoPy **1.90.0** を導入しました。 + **64bit版Python3** を使用しています。32bit版Python2のものは要望があれば準備します。 + とりあえず導入しただけで、Builder/Coderが起動していくつかのデモが動くことしか確認していません。pyoが64bitに対応していないので、pyoに依存した機能(pyoを用いた音声刺激の再生、録音)は使用できません。libvlcを導入する場合は(恐らく)64bit版を用意する必要があります。 + 不具合に気づかれた方は十河までご連絡ください。 + 2016/10/28 + PsychoPy **1.84.2** を導入しました。 **多忙のため十分なテストが行えていません。不具合に気づかれた方は十河までご連絡ください。** + 2016/05/11 + PsychoPy **1.83.01** を導入しました。 + 2015/09/30 + PsychoPy **1.82.02** を導入しました。単に1.82.01plusに1.82.02のZipを入れただけです。もはや1.79.01、1.80.06を使う理由はないと思いますのでこれに伴ってサーバーから削除しました。 + 2015/06/22 + PsychoPy **1.82.01** を導入し、レポジトリの最新の更新を一部反映させたものを用意しました(バージョン名にplusと入っているのはそのため)。BuilderやCoderのメニューの日本語化、MovieStim2への対応など、大きくバージョンアップしています。アイトラッカーやI/Oボードなどのハードウェアを必要とするものは動作確認していません。また、残念ながら音声、動画関係の機能はPCによって動作したりしなかったりします。 + 2014/08/11 + PsychoPy1.80.06を **1.79.01** に差し替えたものも用意しておきました。Routineパネルの表示の乱れさえなければ1.79.01はよいバージョンだと思います。これに伴って1.75.01、1.78.01をサーバーから削除しました。 + 2014/08/11 + PsychoPyのバージョンを **1.80.06** にしました。Builderがかなり強化されていますが、 **動画を再生すると左右反転されてしまうというバグがある** ので動画を刺激として使う人は注意してください。 + 以下のパッケージを導入しました。これでioHubのサンプルのうち、アイトラッカーやI/Oボードなどのハードウェアを必要としないものが動作するようになりました。 + pyserial 2.7 + pyparallel 0.2.5 + pyyaml 3.11 + psutil 2.1.1 + msgpack-python 0.4.2 + numexpr 2.0.1 + pytables 2.4.0 + pyhook 1.5.1 + gevent 1.0b1 + greenlet 0.4.0 + 2013/11/21 + PsychoPy Builderを実行した時にpygameがないというエラーが出るので **pygame1.9.2a0** を組み込みました。公式でpygame依存はもうやめると宣言が出て久しいですが完全移行にはまだまだ時間がかかるのかもしれません。 + PsychoPy BuilderとIPythonを起動するためのランチャーを作りました。アイコンで区別できるのでバッチファイルよりは多少わかりやすいと思います。機能的にはバッチファイルのものと違いはありません。 + 2013/11/08 + PsychoPyのバージョンを **1.78.01** にしました。iohubの依存パッケージをインストールしていないので、iohubの機能は使用できません。とりあえず簡単な動作確認はしていますが、思わぬ不具合があるかも知れません。念のため旧バージョン(1.75.01)も残しておきます。 + 2012/11/19 + PsychoPy公式インストールガイドのDependenciesにPyOpenGLは含まれていないのですが、PyOpenGLがないとMonitor Centerが開かないので **PyOpenGL 3.0.2** を追加しました。 + PsychoPy Builder/Coderの設定ファイルをコピーする動作を追加したバッチファイル(psychopy_copyconfig.bat)を作成しました。 + ファイルのダウンロードおよび展開の負担を軽減するためにpycファイルを削除しました。初回の実行時には余分に時間がかかりますが、2回目以降は11/13バージョンと同様の速度で起動するはずです。 + 2012/11/13 + とりあえず公開。使用しているパッケージは以下の通りです。 + VisionEgg + **Portable Python1.1_py2.5.4** + setuptools 0.6c9 + pyopengl 2.0.2.01 + **VisionEgg 1.2.1** + PsychoPy + **Portable Python 2.7.2.1** + distribute 0.6.30 + pyreadline 2.0_dev1 + ipython 0.13.1 + pyglet 1.1.4 + avbin-5 + lxml 2.3.0 + openpyxl 1.6.1 + **psychopy 1.75.01** 使い方 ~~~~~~ ダウンロードしたzipファイルを展開してUSBメモリなどにコピーしてください。 **書き込み速度が遅いUSBメモリを使用している場合はまずHDD上で展開してからUSBメモリにコピーすることをお勧めします。** 展開すると、以下のようにPortable Pythonが格納されたディレクトリとIPythonを起動するバッチファイルがあるはずです。 PsychoPy版の場合はPsychoPy.bat、PsychoPy_copyconfig.batというバッチファイルもあるはずです。 .. figure:: img/portable01.png (注: 最初Zipファイルを展開した時にはpsychopy2というディレクトリはありませんが、PsychoPy_copyconfig.batを実行すると自動的に作成されます。) PsychoPy 1.78.01版ではバッチファイルの代わりにランチャーが入っています。アイコンで見分けやすいようにexe化しただけで、バッチファイル版と機能は同じです。 .. figure:: img/portable02.png PsychoPyのBuilderやCoderを使う場合は、PsychoPy.batをダブルクリックするとBuilderまたはCoderが起動します。 **特に最初の起動には時間がかかりますので気長にお待ちください。** PsychoPyの仕様上、Preferencesで設定した内容はPC本体の%AppData%\\psychopy2というディレクトリに保存されてしまい、USBメモリには残りません。 設定ファイルを一緒に持ち運びたい場合はPsychoPy.batの代わりにPsychoPy_copyconfig.batを使ってPsychoPyを起動してください。 このバッチファイルでは、PsychoPyを起動する前にまずPsychoPy_copyconfig.batと同じディレクトリにあるpsychopy2というディレクトリを%AppData%に保存します。 そしてPsychoPyが終了したときに%AppData%\\psychopy2をPsychoPy_copyconfig.batと同じディレクトリにコピーします。すでに設定ファイルがPCにある場合でも何もメッセージを出力せずに上書きしてしまいますのでご注意ください。上書き確認をするようにしたい場合は、バッチファイルを編集して以下の例のようにxcopyの/Yというオプションを/-Yに変更してください。 .. code-block:: bat xcopy /D /E /S /-Y psychopy2 %AppData%\psychopy2\ "Portable Python 2.7.2.1\App\python.exe" "Portable Python 2.7.2.1\App\Lib\site-packages\PsychoPy-1.75.01-py2.7.egg\psychopy\app\psychopyApp.py" xcopy /D /E /S /-Y %AppData%\psychopy2 psychopy2\ VisionEggを使う場合や、PsychoPyでもCoderを使わず直接スクリプトを実行したい場合などは、IPython.batをダブルクリックしてIPythonを起動し、run foo.pyという具合にrunコマンドでスクリプトを実行します。 **この方法を使う場合はスクリプトが終了しても自動的にVisionEggやPsychoPyのウィンドウが閉じないので、必ずスクリプトの中でcloseメソッドを使ってウィンドウを閉じるようにしてください。 スクリプトのエラーなどによりウィンドウをcloseする前に停止してしまった場合は、Alt+Tabなどを利用してIPythonのウィンドウをアクティブにし、IPythonから直接closeを実行してウィンドウを閉じてください。** .. code-block:: ipythonconsole In [1]: screen.close() #VisionEggでscreen = VisionEgg.Core.get_default_screen()としてウィンドウを作成した場合 In [1]: win.close() #PsychoPyでwin = psychopy.visual.Window()としてウィンドウを作成した場合 IPythonから実行すると上手く動作しない場合は、コマンドプロンプトを起動して直接実行することも出来ます。例えば、 + zipファイルを展開したUSBメモリがFドライブとしてマウントされている + カレントディレクトリがF:\\ + F:\\PortablePython_1.1_py2.5.4にPortable Pythonが展開されている + F:\\foo.pyが実験用のスクリプトである という状況ではコマンドプロンプトから以下のコマンドを実行すれば実験用スクリプトを走らせることが出来ます。 Windows7のコマンドプロンプト(cmd.exe)の場合、途中までパスを入力してTabを押すとパス名を補完する機能がありますので利用すると楽です。 .. code-block:: doscon F:\> PortablePython_1.1_py2.5.4\App\python.exe foo.py パスの中に空白文字を含む名前がある場合は" "でくくります。例えば上の例でPortable Python 2.7.2.1というディレクトリ(PortableとPythonの間にスペースが入っている)にPortable Pythonが展開されている場合は .. code-block:: doscon F:\> "Portable Python 2.7.2.1\App\python.exe" foo.py という具合にします。 .. _multiwebcam: 最大4台のwebカメラの映像をひとつの動画ファイルにまとめて保存するmultiwebcam (Windows用) ---------------------------------------------------------------------------------------------------------------- 題名の通りです。pythonで心理実験 :doc:`例題17-3 <../python/17-3>` からの派生です。本来py2exeとかを使ってpythonをインストールしていないマシンでも使えるexeファイルを作ろうとしていたのですが、VideoCaptureが問題となってうまくいかなかったので数時間で挫折しました。というわけで、python2.x本体(3.xは不可)と以下のモジュールをインストールしておく必要があります。 + PIL( `http://www.pythonware.com/products/pil/ `_ ) + VideoCapture( `http://videocapture.sourceforge.net/ `_ ) + pygame( `http://pygame.org/ `_ ) また、ffmpegの実行ファイルが必要ですのでダウンロードしておいてください。ffmpegは公式にはWindowsバイナリが配布されていないと思いますが、こちら( `お気に入りの動画を携帯で見よう `_ )で配布してくださっています。動作確認にはrev.31420を使用しています。 以下のファイル(multiwebcam.py)を適当な場所に保存してください。ffmpegの実行ファイルはパスが通った場所に置くか、multiwebcam.pyと同じ場所に置いてください。 `multiwebcam.py `_ (最終更新日:2012/2/17) 更新履歴 ~~~~~~~~ + 2012/2/17 + とりあえず公開。 使い方 ~~~~~~ 起動すると次のようなダイアログが表示されます。設定してOKボタンを押すと撮影が始まります。撮影時間が終了するかESCキーを押すと撮影した時間、保存したフレーム数、平均FPS、平均フレーム間時間が表示されます。なお、 **時間的精度はあまり高くありません。このスクリプトの使用によって生じるいかなる結果に関しても責任を負いかねます** 。ご了承ください。 .. figure:: img/multiwebcam01.png .. csv-table:: :delim: $ 1camera: 320x240$システムに接続されている最初のwebカメラの映像を320x240の解像度で保存します。 1camera: 640x480$システムに接続されている最初のwebカメラの映像を640x480の解像度で保存します。 2cameras: 640x240 (320x240x2)$システムに接続されているwebカメラ2台から320x240の解像度で撮影して並べて保存します。 3cameras: 640x480 (320x240x3)$システムに接続されているwebカメラ3台から320x240の解像度で撮影して並べて保存します。 4cameras: 640x480 (320x240x4)$システムに接続されているwebカメラ4台から320x240の解像度で撮影して並べて保存します。 Render time$チェックされていれば保存された動画の左上にプログラム開始からの時刻を出力します(単位:秒)。 FPS$動画のFPSを指定します。動画保存形式(H.264)でサポートされていない値を指定すると保存できません。。 Bitrate$動画のビットレートを指定します。デフォルトで入力されている'500k'のkはキロのkです。 Capture duration$動画を撮影する時間を指定します(単位:秒)。負の値を指定するとESCキーを押すまで記録し続けます。なお、Capture durationに正の値を指定した場合でもESCキーを押せば直ちに終了することが出来ます。 Save to$保存ファイル名を指定します。日本語のファイル名を入力することは考慮していません。 注意点 ~~~~~~ **USB2.0の帯域幅にご注意ください!** 特に320x240の解像度に対応していないカメラの場合、ひとつのUSBホストコントローラに複数台のwebカメラを接続するとデータ転送量がUSB2.0の限界を超えてしまい撮影が出来ません(真っ暗な画面のまま無反応になります)。使用するPCのどのUSBポートがどのホストコントローラに接続されているかわからない場合は、いろいろ接続ポートを変えて試行錯誤するしかありません。経験上、デスクトップPCでは背面のポートと前面のポートは別のホストコントローラに接続されていることが多いように思いますが、必ずそうとは限りません。 動画の画質が悪い場合はBitrateを上げてください。ただし、Bitrateを上げるとPCの処理が追いつかなくなる可能性が高くなります。時間分解能が低くても問題ない場合はfpsの値を下げてください。Core i7 920のPCで15fps/500kbpsはやや余裕がありますが、30fps/500fpsは時々追いつきません。10fps/1500kbpsもやや厳しいです。 pygameの画面更新が垂直同期信号に同期 **していない** ことを前提に作成してあります。時々コマ落ちするので実際の平均fpsは設定したfpsよりやや低めの値になってしまいます。低時間的精度はそれほど高くないので正確さが必要な場合はRender timeにチェックしておいて動画に出力された時刻を確認してください。気が向いたらVisionEggを使う形に書き換えて時間的精度を向上させたバージョンを作成するかもしれません。 カメラで撮影されてからPCに転送され、動画に出力されるまで数msから数十msのラグが生じます(pythonで心理実験 :doc:`例題17-3参照 <../python/17-3>` )。複数のカメラの映像間の同期は比較的信頼できますし(カメラのfps設定による)、動画のフレーム間で左上に表示されている時刻の **差** も比較的信頼できますが、それ以外のものとの間の同期はあまり信用出来ません。 使用しているwebカメラが指定した解像度での撮影に対応していない場合、解像度の設定に失敗したことを警告するダイアログが表示されます。この場合、カメラの標準解像度で撮影を行い、スクリプト内で指定した解像度に変換して保存します。 .. _fft2demo: 2次元Fourier変換で遊ぶFFT2demo ---------------------------------------------- 2次元Fourier変換を授業でどう説明したらいいかと困っていたところ、大澤先生のデモ( `http://www.youtube.com/watch?v=pCVdNYvORVw=plcp `_ )をYouTubeで拝見して、触発されてpythonでそれっぽいものを作ってみました。 機能面、特に速度はかなりしおしおですが、私が授業で使う分にはまあ許容範囲ですし、高速化して…とか言ってるといつまでかかるかわかんないので公開します。 `FFT2demo.py `_ (最終更新日:2012/10/13) 動作にはpython本体に加えて以下パッケージが必要です。 + PIL( `http://www.pythonware.com/products/pil/ `_ ) + matplotlib( `http://matplotlib.org/ `_ ) + numpy( `http://sourceforge.net/projects/numpy/files/ `_ ) + Tkinter(Windowsではpython本体をインストールすると標準でインストールされます) 更新履歴 ~~~~~~~~ + 2012/10/13 + とりあえず公開。 使い方 ~~~~~~ FFT2demo.pyを起動すると、ファイルを開くダイアログが表示されます。適当な画像ファイルを選択してください。PILが対応しているフォーマットなら読めるので、PCで扱える一般的な画像なら大抵読めるはずです。 .. figure:: img/fft2demo01.png 画像を開くと以下のようなプロットが表示されます。(1)は選択した画像をグレースケールに変換したものです。速度を稼ぐため、画像が大きい(横幅256px以上)場合は横幅が256pxになるように縮小します。(2)は(1)を2次元Fourier変換したものです。この(2)のプロット内でマウスを左クリックすると、クリックした位置に対応する正弦波が(3)のプロットに表示されます。(2)のさまざまな位置をクリックするとそのたびに(3)は更新されます。(4)は今までにクリックした位置に対応する正弦波を重ね合わせたものです。 .. figure:: img/fft2demo02.png 速度が非常に遅いので **アレ** なんですが、マウスの左ボタンを押しっぱなしにして(2)のプロット内でマウスを動かすと、次々と点が追加されていきます。 **とても遅いのでゆっくり動かしてあげてください** 。小さくて非常に見えにくいのですが、(2)のプロットでクリックした位置には赤い点が重ね書きされます。 .. figure:: img/fft2demo03.png まどろっこしくてこんなのやっていられない!という場合は **キーボードのCtrlキーを押しながら** (2)のプロット内でマウスの左ボタンをクリックしてください。クリックした位置の周辺の矩形領域がまとめて追加されます。Ctrlキー+左ボタン押しっぱなしでマウスを動かすと次々と矩形領域が追加されていきます。 .. figure:: img/fft2demo04.png **「あ、低周波数から高周波数領域までごっそり選択しちゃったけど、低周波数領域を除去したいなあ」** とか思ったら、(2)のプロット内でマウスを **右ボタン** をクリックしてください。マウスカーソルの位置の選択が解除されます。左ボタン同様、押しっぱなしでマウスを動かすと連続的に解除出来ますし、Ctrlキーを同時に押すとマウスカーソル近傍の矩形領域がまとめて解除されます。 終了させる時はウィンドウの閉じるボタンをクリックしてください。 **「デモに使用するPCの性能が低くて動作が遅くてお話しにならない!」という場合はFFT2demo.pyをテキストエディタで開いて冒頭のmaxWidth = 256の値を小さく(128とか64とか)にしてみてください** 。かなり画質は寂しくなりますが多少速くなると思います。 .. _TobiiController: PsychoPyからTobiiを使うTobiiController (Tobii Pro SDK対応版) -------------------------------------------------------------------------------------- PsychoPy/VisionEggからTobiiを使用するTobiiControllerというモジュールを公開していましたが、Tobii SDKが従来のものとは互換性がないTobii Pro SDKに更新されたので、Tobii Pro SDK対応版を新たに作成しました。githubに置いていますのでそちらからダウンロードしてください。 + `https://github.com/hsogo/psychopy_tobii_controller `_ 使用するためにはPsychoPyとtobii_researchが必要です。tobii_researchはpipを使ってインストールすることが出来ます。 旧バージョン (Tobii SDK 3.0対応) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 旧バージョンも一応残しておきます。 + `TobiiControllerP.py (PsychoPy用) `_ (最終更新日:2016/06/16) + `TobiiControllerV.py (VisionEgg用) `_ (最終更新日:2016/06/16) .. Tobiiには **謎のご縁** がありまして、 **自分ではTobiiを持っていないくせに** いくつかTobiiのプログラムを書かせていただきました。 ここで公開するTobiiControllerは、PsychoPyまたはVisionEggからTobii SDK 3.0を介してTobiiを使ってやろうというpython用モジュールです。 **一晩で書いたので最低限の機能しかありません** が、逆に言うと最低限の機能はあります。 また何かのご縁でTobiiのプログラムを書いてよと言われたときにもうちょっとブラッシュアップしてから公開しようと思っていたのですが、その機会がないまま時が流れていつまでも倉庫フォルダに抱えているのが嫌になってきたので放流することにしました。 Tobii SDKを使ったプログラムを書かないといけない方の参考になれば幸いです。 更新履歴 ~~~~~~~~ + 2016/06/16 + 京都大学文学部の矢追健先生によるtobii-analytics-sdk-3.1.0-win-Win32対応版を公開しました。Tobii SDKのモジュール名(tobii.sdk -> tobii.eye_tracking_io)と、データ属性名(validity -> status)が変更点です。 + 東京工業大学情報理工学院の徳永健伸先生より、TobiiControllerP.pyのバグのご指摘をいただきましたので修正しました。 + 2015/06/16 + 大阪大学人間科学部の松下戦具先生によるtobii-analytics-sdk-3.0.83-win-x32対応版を公開しました。Tobii SDKのモジュール名(tobii.sdk -> tobii.eye_tracking_io)と、データ属性名(validity -> status)が変更点です。 + 2013/02/22 + とりあえず公開。 使い方 ~~~~~~ まずPsychoPyまたはVisionEggを実行できる環境を整えてください。Tobii SDKをインストールしてpython用モジュールをPythonから利用できるようにしておいてください。 準備が整ったら、TobiiControllerP.pyまたはTobiiControllerV.pyのいずれか使いたい方を実行してみてください(注:データを保存しますので書き込み許可があるディレクトリから実行してください)。問題がなければキャリブレーションが始まります。キャリブレーションが終了したら、現在の視線位置に合わせて刺激が移動するデモが始まります。 wキーを押すとキー押しが記録されて、スペースキーを押すと計測が終わります。終了後、testdata.tsvというタブ区切りのテキストファイルが作成されていて、そこに視線位置のデータが記録されているはずです。 動作確認が出来たら、pythonのインストールディレクトリのLIB/site-packagesに、TobiiControllerP.pyまたはTobiiControllerV.pyをコピーしてください。 以後、スクリプトの中で以下のように書くとTobiiControllerの機能を利用できるはずです。 :: #PsychoPyの場合 import TobiiControllerP controller = TobiiControllerP.TobiiController(win) #winはpsychopy.visual.Windowのインスタンス #VisionEggの場合 import TobiiControllerV controller = TobiiControllerV.TobiiController(screen) #winはVisionEgg.Core.Screenのインスタンス TobiiControllerを使ったキャリブレーションや計測のサンプルはTobiiControllerP.pyまたはTobiiControllerV.pyの最後の方のif __name__ == "__main__":と書かれている行より後をご覧ください。 この部分が先ほどの動作確認のための処理です。 以下にTobiiControllerクラスのメソッドのうち、ユーザーが直接利用しそうなものの概要を示します。 .. csv-table:: :delim: $ メソッド$引数$概要 __init__$PsychoPyまたはVisionEggのウィンドウのインスタンス$TobiiControllerを初期化します。事前にPsychoPyまたはVisionEggのウィンドウを作成しておく必要があります。 waitForFindEyeTracker$なし$Tobiiアイトラッカーが見つかるのを待ちます。見つかるまで処理が停止するので注意してください。見つかればeyetrackersというデータ属性にアイトラッカーを列挙したdictオブジェクトがセットされます。 destroy$なし$Controllerを破棄します。終了直前に呼び出してください。 activate$eyetracker: アイトラッカーを指し示す文字列$アイトラッカーを使用できる状態にします。引数にはwaitForFindEyeTrackerで得られたdictオブジェクトのキーを使用します。 doCalibration$calibrationPoints: キャリブレーションターゲットが移動する点の座標を並べたリスト$キャリブレーションを行います。終了後、キャリブレーション結果が表示されて、accept、retry、abortを選べます。retryを選ぶともう一度すべての点をキャリブレーションしなおします(一部だけをしなおすことは出来ません)。acceptを選ぶと'accept'、abortを選ぶと'abort'という文字列が戻ってきますので、この戻り値を使って処理を振り分けてください。 startTracking$なし$計測を開始します。キャリブレーションを先に行っておく必要があります。 stopTracking$なし$計測を終了します。 setDataFile$filename: ファイル名$データを保存するファイル名を指定してファイルをオープンします。 closeDataFile$なし$データファイルにデータを出力してファイルをクローズします。 getCurrentGazePosition$なし$最新の視線位置データ(左眼X、左眼Y、右眼X、右眼Y)を返します。計測を開始している必要があります。 recordEvent$event: イベントを示す任意の文字列$任意のイベントをタイムスタンプ付きで記録します。例えば刺激を呈示した時に'TARGET,Blue,200,0'といった具合に刺激の属性や座標を埋め込んでおいたり、参加者が反応した時などに'RESPONSE:LEFT'などと埋め込んでおけば、タイムスタンプ付きで保存されますので後で分析する時に役立ちます。計測を開始している必要があります。