14. 付録

14.1. 本文未解説コンポーネント

PsychoPy Builder 2020.2.8で利用できるコンポーネントのうち、本文で取り上げなかったものの概要を示します。

Apertureコンポーネント

画面を「穴」で切り抜くコンポーネントです。このコンポーネントはルーチンペインにおける描画順序の影響を受けません。つまり、Apertureコンポーネントの上に他の刺激を重ね書きしようとしてもApertureコンポーネントに切り抜かれてしまいます。

Dotsコンポーネント

一様に運動する小さな点を大量に描くコンポーネントです。運動視の研究などに用います。Polygonコンポーネントを大量に用いるよりPCへの負担が軽く、高速に描画できます。以下の解説では、点が描画される範囲をフィールドと呼んでいます。また、指定された方向に動く点をターゲット、それ以外の方向に動く点をノイズと呼んでいます。

EnvelopeGratingコンポーネント

キャリアとエンベロープという2つの周期的なテクスチャをブレンドした刺激を描くコンポーネントです。

Noiseコンポーネント

様々なノイズ画像を描くコンポーネントです。ノイズの種類やパラメータ、更新タイミングなどを指定できます。

TextBoxコンポーネント

キーボードを使ってテキストを編集できるボックスを実現するコンポーネントです。日本語入力にも一応対応していますが、実行環境によっては「フォーマット」タブの [フォント] で日本語表示に対応したフォントを指定する必要があります。また、日本語の自動改行には対応していません。

Brushコンポーネント

画面上にマウスカーソルの軌跡を描けるようにするコンポーネントです。今のところ描いた軌跡を簡単に保存する方法がないので、使いどころが難しいかもしれません。

cedrusButtonBoxコンポーネント

Cedrus製の反応ボタンボックスを用いて反応を記録するコンポーネントです。Keyboardコンポーネントのように検出するボタンを指定してルーチンを終了させたりすることができます。

ioLabsButtonBoxコンポーネント

ioLabs Systems製のボタンボックスを用いて反応を記録するコンポーネントです。Keyboardコンポーネントのように検出するボタンを指定してルーチンを終了させたりすることができます。

Microphoneコンポーネント

マイクから音声を記録します。pyoライブラリを使用します(第10章)ので使用する機材でpyoが正常に動作する必要があります。

JoyButtonコンポーネント

ジョイスティックで反応を記録するコンポーネントです。Keyboardコンポーネントのように検出するボタンを指定してルーチンを終了させたりすることができます。

Joystickコンポーネント

ジョイスティックで反応を記録するコンポーネントです。JoyButtonコンポーネントと異なり、ボタンのみではなくスティックの状態も記録されます。ルーチンの実行中にジョイスティックの状態にアクセスするにはCodeコンポーネントを使ってJoystickオブジェクトにアクセスする必要があります。

EmotivMarkingコンポーネント

Emotive製のEEGにマーカーを送信するコンポーネントです。

EmotivRecordingコンポーネント

Emotive製のEEGで記録を行うコンポーネントです。

Unknownコンポーネント

新しいバージョンのBuilderで追加されたコンポーネントを使った実験を古いバージョンのBuilderで開いた時など、使用中のBuilderで利用できないコンポーネントが実験に含まれてる場合があります。このような時、利用できないコンポーネントがUnknownコンポーネントとして表示されます。実験を作成する際にこのコンポーネントを配置しても何も起きません。

ParallelOutコンポーネント

パラレルポートからのトリガー出力を行うためのコンポーネントです。

QmixPumpコンポーネント

Qmixライブラリ対応のシリンジユニットを制御するコンポーネントです。Python2には対応していないため、Python2ベースのPsychoPyを使用している時には表示されません。

14.2. 予約語

14.2.1. Pythonの予約語 (Python 3.7)

Pythonインタプリタを起動してkeywordをimportすると、keyword.kwlistというリストにPython予約語の一覧が格納されます。以下にPython3.7の予約語を示します。これらの語はBuilderにおいて [名前] や変数名として使用することはできません。

FALSE, None, TRUE, and, as, assert, async, await, break, class, continue, def, del, elif, else, except, finally, for, from, global, if, import, in, is, lambda, nonlocal, not, or, pass, raise, return, try, while, with, yield

__builtin__という内部モジュールに含まれる以下の語はPythonの予約語ではありませんが、予約語と同様に扱われます(つまり [名前] や変数名として使用することはできません)。

ArithmeticError, AssertionError, AttributeError, BaseException, BlockingIOError, BrokenPipeError, BufferError, BytesWarning, ChildProcessError, ConnectionAbortedError, ConnectionError, ConnectionRefusedError, ConnectionResetError, DeprecationWarning, EOFError, Ellipsis, EnvironmentError, Exception, False, FileExistsError, FileNotFoundError, FloatingPointError, FutureWarning, GeneratorExit, IOError, ImportError, ImportWarning, IndentationError, IndexError, InterruptedError, IsADirectoryError, KeyError, KeyboardInterrupt, LookupError, MemoryError, ModuleNotFoundError, NameError, None, NotADirectoryError, NotImplemented, NotImplementedError, OSError, OverflowError, PendingDeprecationWarning, PermissionError, ProcessLookupError, RecursionError, ReferenceError, ResourceWarning, RuntimeError, RuntimeWarning, StopAsyncIteration, StopIteration, SyntaxError, SyntaxWarning, SystemError, SystemExit, TabError, TimeoutError, True, TypeError, UnboundLocalError, UnicodeDecodeError, UnicodeEncodeError, UnicodeError, UnicodeTranslateError, UnicodeWarning, UserWarning, ValueError, Warning, WindowsError, ZeroDivisionError, _, __build_class__, __debug__, __doc__, __import__, __loader__, __name__, __package__, __spec__, abs, all, anyascii, bin, bool, bytearray, bytes, callable, chr, classmethod, compile, complex, copyright, credits, delattr, dict, dir, divmod, enumerate, eval, exec, exit, filter, float, format, frozenset, getattr, globals, hasattr, hash, help, hex, id, input, int, isinstance, issubclass, iter, len, license, list, locals, map, max, memoryview, min, next, object, oct, open, ord, pow, print, property, quit, range, repr, reversed, round, set, setattr, slice, sorted, staticmethod, str, sum, super, tuple, type, vars, zip

14.2.2. PsychoPyの予約語(2020.2.9)

以下の語はPsychoPyで利用するモジュール名のため、Builderにおいて [名前] や変数名として使用することができません。

gui, misc, visual, core, event, data, sound, microphone, psychopy, os

以下の語はPsychoPyで予約されているため、Builderにおいて [名前] や変数名として使用することができません。

ENVIRON, FINISHED, FOREVER, NOT_STARTED, PAUSED, PLAYING, PRESSED, PSYCHOPY_USERAGENT, PY3, RELEASED, SKIP, STARTED, STOPPED, __builtins__, __cached__, __doc__, __file__, __loader__, __name__, __package__, __spec__, _gitStandalonePath, absolute_import, abspath, copy, gitExe, join, os, print_function, sys

以下の語はBuilderで予約されているため、Builderにおいて [名前] や変数名として使用することができません。

KeyResponse, keyboard, buttons, continueRoutine, expInfo, expName, thisExp, filename, logFile, paramName, t, frameN, currentLoop, dlg, _thisDir, endExpNow, globalClock, routineTimer, frameDur, theseKeys, win, x, y, level, component, thisComponent

以下の語はnumpyおよびnumpy.randomからimportされるのでBuilderにおいて [名前] や変数名として使用することはできません。

asarray, average, cos, deg2rad, linspace, log, log10, normal, np, pi, rad2deg, randint, random, shuffle, sin, sqrt, std, tan

14.2.3. Builderの内部変数(2020.2.9)

Builderで使用されている内部変数の概要を示します。

予約語

概要

KeyResponse

予約されています。

_thisDir

Builderを実行するときにカレントフォルダをpsyexpファイルに移動するために使用されます。

buttons

最後に取得したマウスのボタンの状態を示すリストが格納されています。

component

予約されています。

continueRoutine

実行中のルーチンを継続するか否かを示す真偽値が格納されています。→ 第7章

currentLoop

Loopの種類でstaircase、interleaved staircasesを選択したときに使用されます。→ 第11章

dlg

expInfoダイアログを作成するために使用します。

endExpNow

ESCキーによる実験の中断を有効にしているときに、この変数を利用してESCキー以外のキーで実験を終了できます。

expInfo

expInfoダイアログの項目と値が辞書オブジェクトとして格納されています。→ 第4章第5章

expName

実験設定ダイアログの[Experiment name]に入力した実験名が格納されています。

filename

各種実験記録ファイルやログファイルのファイル名を生成するために利用されます。

frameDur

フレームレートの実測値を保持しています。計測に失敗した場合は1/60secにセットされます。

frameN

現在のフレーム番号を格納しています。→ 第5章

globalClock

実験開始からの経過時間を計測するためのpsychopy.core.Clockのインスタンスが格納されています。→ 第12章

keyboard

キーボード用のライブラリの読み込みのために使用されています。

level

Loopの種類でstaircase、interleaved staircasesを選択したときに使用されます。→ 第11章

logFile

ログファイルを作成するためのpsychopy.logging.LogFileのインスタンスが格納されています。

paramName

Loopの種類でinterleaved staircasesを選択したときに使用されます。→ 第11章

routineTimer

ルーチン終了までの残り時間を計測するためのpsychopy.core.CountdownTimerのインスタンスが格納されています。

t

ルーチンが開始してからの経過時間を格納しています。→ 第5章

theseKeys

最後に取得したキーの状態を示すリストを格納しています。→ 第7章

thisComponent

現在処理中のコンポーネントに対応するインスタンスが格納されています。

thisExp

フローの制御ややデータの保存に関与するpsychopy.data.ExperimentHandlerのインスタンスが格納されています。

win

刺激提示スクリーン本体であるpsychopy.visual.Windowのインスタンスを格納しています。

x

最後に取得したマウスカーソルのX座標を格納しています。Mouseコンポーネントの マウスの状態を保存 の設定によって単独の値であったりリストであったりします。

y

最後に取得したマウスカーソルのY座標を格納しています。Mouseコンポーネントの マウスの状態を保存 の設定によって単独の値であったりリストであったりします。

以上に加えて、以下の語は正常なルーチンの実行に必須の変数名と一致するのでBuilderにおいて [名前] や変数名として使用することはできません。

trialComponents (trialはルーチン名)

当該ルーチンでフレーム毎に処理する必要があるコンポーネントのインスタンスを並べたリストが格納されています。→ 第8章

trialClock (trialはルーチン名)

当該ルーチンが開始されてからの経過時間を計測するpsychopy.core.Clockのインスタンスが格納されています。→ 第9章

14.3. ログファイル

PsychoPy Builderで実験を実行すると、拡張子 .log のログファイルが作成されます。実験が十分な精度で実行されているかどうかを確認したい場合や、どうも意図している通りに刺激が提示されないといった問題が生じている時に、このログファイルから情報が得られる場合があります。ただし、Builderの実験がどのようなコードにコンパイルされて実行されるのかある程度知識がないと対策をとることまでは難しいかも知れません。

ログには以下のレベルがあります。実験設定ダイアログでログの出力レベルを選択すると、選択されたレベル以上のログがログファイルに出力されます。例えばwarningを選択すると、waringとerrorのレベルのログが出力されます。infoを選択すると、info、exp、data、warning、errorのレベルのログが出力されます。

  1. error

  2. warning

  3. data

  4. exp

  5. info

  6. debug

以下にdebugを選択した場合のログファイルの先頭部分の例を示します。非常に長い行は中略してあります。 各行の最初の数値が実験開始からの経過時間(秒)、続いてログのレベルが示されています。レベルに続いてその時刻に生じたイベントの内容が書かれています。

3.0528  WARNING  Movie2 stim could not be imported and won't be available
7.8399  INFO  Loaded monitor calibration from ['2015_06_02 16:25']
8.9837  EXP  Created window1 = Window(allowGUI=False, allowStencil=False, ... ()
8.9838  EXP  window1: recordFrameIntervals = False
9.1467  EXP  window1: recordFrameIntervals = True
9.3343  DEBUG  Screen (0) actual frame rate measured at 58.77
9.3344  EXP  window1: recordFrameIntervals = False
9.9161  EXP  Created text = TextStim(alignHoriz='center', alignVert= ... ()
9.9274  EXP  Created stimulus = Polygon(autoDraw=False, autoLog=True, ... ()
9.9286  EXP  <method-wrapper '__getattribute__' of attributeSetter object ... ()
(中略)
13.8202  EXP  Created sequence: fullRandom, trialTypes=4, nReps=25, seed=None
13.8229  EXP  New trial (rep=0, index=0): {u'correct_ans': u'slash', ... ()
13.8499  EXP  text: autoDraw = False
13.8499  EXP  stimulus: fillColor = u'green (named)'
13.8499  EXP  stimulus: pos = array([-400.,    0.])
13.8499  EXP  stimulus: lineColor = u'green (named)'
13.8499  EXP  cross1: autoDraw = True
13.8499  EXP  cross2: autoDraw = True
14.8756  EXP  stimulus: autoDraw = True
15.4022  DATA  Keypress: slash
15.4382  EXP  New trial (rep=0, index=1): {u'correct_ans': u'slash', ... ()
15.4778  EXP  stimulus: autoDraw = False
15.4778  EXP  cross1: autoDraw = False
15.4778  EXP  cross2: autoDraw = False
15.4778  EXP  stimulus: fillColor = u'green (named)'
15.4778  EXP  stimulus: pos = array([-400.,    0.])
15.4778  EXP  stimulus: lineColor = u'green (named)'
15.4778  EXP  cross1: autoDraw = True
15.4778  EXP  cross2: autoDraw = True
16.4711  EXP  stimulus: autoDraw = True
17.0442  DATA  Keypress: slash

もしこの実験をログレベル exp で実行していたら、exp以上のレベルのみが出力されるので、以下のような出力になります。上の例の2行目のINFOと6行目のDEBUGが抜けている点にご注意ください。

3.0528  WARNING  Movie2 stim could not be imported and won't be available
8.9837  EXP  Created window1 = Window(allowGUI=False, allowStencil=False, ... ()
8.9838  EXP  window1: recordFrameIntervals = False
9.1467  EXP  window1: recordFrameIntervals = True
9.3344  EXP  window1: recordFrameIntervals = False
9.9161  EXP  Created text = TextStim(alignHoriz='center', alignVert= ... ()
9.9274  EXP  Created stimulus = Polygon(autoDraw=False, autoLog=True, ... ()
9.9286  EXP  <method-wrapper '__getattribute__' of attributeSetter object ... ()
(中略)
13.8202  EXP  Created sequence: fullRandom, trialTypes=4, nReps=25, seed=None
13.8229  EXP  New trial (rep=0, index=0): {u'correct_ans': u'slash', ... ()
13.8499  EXP  text: autoDraw = False
13.8499  EXP  stimulus: fillColor = u'green (named)'
13.8499  EXP  stimulus: pos = array([-400.,    0.])
13.8499  EXP  stimulus: lineColor = u'green (named)'
13.8499  EXP  cross1: autoDraw = True
13.8499  EXP  cross2: autoDraw = True
14.8756  EXP  stimulus: autoDraw = True
15.4022  DATA Keypress: slash
15.4382  EXP  New trial (rep=0, index=1): {u'correct_ans': u'slash', ... ()
15.4778  EXP  stimulus: autoDraw = False
15.4778  EXP  cross1: autoDraw = False
15.4778  EXP  cross2: autoDraw = False
15.4778  EXP  stimulus: fillColor = u'green (named)'
15.4778  EXP  stimulus: pos = array([-400.,    0.])
15.4778  EXP  stimulus: lineColor = u'green (named)'
15.4778  EXP  cross1: autoDraw = True
15.4778  EXP  cross2: autoDraw = True
16.4711  EXP  stimulus: autoDraw = True
17.0442  DATA Keypress: slash

ログレベルがwarningなら、以下のような出力になります。

3.0528  WARNING  Movie2 stim could not be imported and won't be available

infoやdebugのレベルのログはBuilderの新機能の開発などの際に便利な内容が多く、おそらく一般ユーザーが必要とすることは少ないでしょう。expのレベルは刺激オブジェクトの作成やパラメーターの変更、ループの実行状況などに関する情報が出力されます。dataのレベルは実験記録ファイルへのデータ出力に関する情報が出力されます。expのログの時刻を確認したら、もしかすると刺激提示のタイミングなどに関するトラブルの情報が得られる可能性があります。

warningのレベルでは、致命的ではないかも知れないけれども問題が生じていることが報告されます。上の例ではMovieStim2が利用できないという問題が報告されています。今実行している実験の中で動画刺激を使用していなければ問題ありませんが、今後動画刺激を使いたいと思った時には利用できるようにインストールの問題などを解決しなければいけないことを示しています。

warningのレベルで最も注意すべきは、以下のようにlast frame was XX msというログが出力されている場合です。このようなログが出力されている場合は、フレームの描画に問題があって一定のスピードで描画ができていません。アニメーションする刺激の描画がカクカクしてしまったり、刺激の出現、消去のタイミングがずれてしまっている可能性があります。常駐プログラムの停止、グラフィックデバイスドライバの更新や、高性能グラフィックボードの追加などの対策が必要となる可能性があります。

16.5660  WARNING  t of last frame was 30.22ms (=1/33)
16.5974  WARNING  t of last frame was 31.41ms (=1/31)
16.6285  WARNING  t of last frame was 31.09ms (=1/32)

14.4. PsychoPy設定ダイアログ

PsychoPy設定ダイアログの各項目について簡単にまとめました。

14.4.1. 一般

[ウィンドウ描画ライブラリ]

ウィンドウの描画に使うライブラリを指定します。pyglet、glfw、pygameが選択できますが、pygameは旧バージョンで作成した実験との互換性のために残されているものなので、これからPsychoPyを使う人は選択すべきではありません。

[単位]

実験の設定ダイアログで [単位] を「PsychoPyの設定を用いる」に設定した場合、ここで選択した単位が使用されます。

[フルスクリーン]

チェックしておくと標準でフルスクリーンウィンドウで刺激を描画しようとします。実験の設定ダイアログで「フルスクリーンウィンドウ」のチェックを外している場合は、実験の設定ダイアログが優先されます。

[GUIを使用]

チェックしておくと標準でマウス等を有効にします。

[パス]

独自のPythonモジュールを使用したい場合、モジュールが置かれているパスをここに列挙しておくとimportできます。

[fracオーディオ圧縮]

fracを利用したい場合、ここへfracへのパスを設定します。

[実験終了キー]

実験を終了させるキーをESC以外にしたい時にここに指定します。pygletのキー名でなければいけません。

[実験終了キーのモディファイア]

「Shiftを押しながらESC」のようにモディファイアキーを押しながら終了するようにしたい時にここに指定します。

[ガンマエラーの処理]

ガンマ補正が出来なかった時に終了するか警告するかを指定します。

[スタートアッププラグイン]

PsychoPy起動時に追加で読み込むプラグインを指定します。

14.4.2. アプリケーション

[起動時にチップを表示]

チェックしておくとPsychoPy Builder/Coderを起動したときに「今日のチップ」を表示します。

[標準で開くウィンドウ]

PsychoPyを起動したときに開くウィンドウを指定します。

[設定の初期化]

設定を初期化したいときは、ここにチェックをしてPsychoPyを再起動してください。

[設定の自動保存]

ウィンドウを閉じるときに、未保存の設定を自動的に保存します。

[デバッグモード]

PsychoPyのデバッグ用機能を有効化します。PsychoPyそのもののデバッグであって、ユーザーが作成した実験スクリプトのデバッグではありません。

[ロケール]

PsychoPyのメニュー等の表示に使う言語を選択します。「システムの言語設定」にしておくと、OSの言語の設定を利用します。

[エラーダイアログ]

PsychoPyの動作中にエラーが生じた際にダイアログを表示します。バグの報告をする際はこのダイアログの情報を伝えると開発チームによる問題の把握に役立ちます。

[テーマ]

起動時に適用するテーマを指定します。旧バージョンの見た目に近づけたい場合はClassicを選択するとよいでしょう。

[前回の実験を開く]

チェックしておくと、前回開いていた実験を自動的に開きます。

[Codeコンポーネントの言語]

Codeコンポーネントの標準のコードタイプを指定します。JavaScriptへの自動変換に問題がある場合や、JavaScript用入力欄が不要な場合などに設定を変更してください。

[名前空間の整理]

コードのコンパイルに関連するオプションです。通常は変更する必要はないでしょう。

[コンポーネントフォルダ]

パスを列挙したリストを指定します。パス内に含まれる拡張子.pyのファイルをBuilderのコンポーネントとして読み込みます。

[表示しないコンポーネント]

特定のハードウェア用コンポーネントなど、使用しないコンポーネントの名前をここに書いておくと、コンポーネントペインに表示されなくなります。ロケールが日本語に設定されていて、プロパティ設定ダイアログのタイトルバーに「Fooコンポーネント」と表示されているコンポーネントを非表示にしたい場合はFooComponentと書く必要があります。

[デモのディレクトリ]

Builderのデモが展開されているディレクトリを指定します。Builderウィンドウのメニューの「デモ」メニューから「デモを展開...」すると自動的に設定されます。展開されたデモを手作業で別の場所に移したりしない限り、通常は変更する必要はありません。

[データ保存フォルダ]

Builderの実験を実行したときに、記録ファイルやログファイルが保存されるフォルダ名を指定します。

[builderlayout]

Builderの各ペインの配置を指定します。

[常にreadmeを表示]

psyexpファイルと同一のフォルダにreadme.txtというファイルが存在している場合、この項目をチェックしておくとreadme.txtの内容が表示されます。

[お気に入りの最大登録数]

コンポーネントペインの「お気に入り」に登録できるコンポーネント数の上限を指定します。

[読み込み専用で開く]

実験を実施する際に、不用意にコードが変更されてしまうのを防ぎたいときにチェックします。

[出力用フォント]

出力パネルの表示に使用するフォント名を指定します。複数のフォントを列挙すると、最初に読み込むことができたフォントを使用します。

[コード用フォント]

コードの表示に使用するフォント名を指定します。複数のフォントを列挙すると、最初に読み込むことができたフォントを使用します。

[コード用フォントサイズ]

フォントサイズを6から24の整数で指定します。

[出力用フォントサイズ]

フォントサイズを6から24の整数で指定します。

[行間スペース]

行間を整数で指定します。

[ソースアシスタントを表示]

チェックするとCoder起動時にソースアシスタントを表示します。変数に格納されているクラスのヘルプなどが表示されます。

[出力パネルを表示]

チェックを外してPsychoPyを再起動すると、Coderウィンドウの下部に出力パネルが表示されません。

[自動補完]

入力時にコード補完の候補と関数呼び出しのヒントを表示するか否かを指定します。

[前回のファイルを開く]

前回終了時に開いていたファイルを自動的に開きます。

[優先するシェル]

Coderウィンドウ下部のシェルパネルで優先するシェルを指定します。

14.4.3. キー設定

ショートカットキーを編集することができます。個々の項目については省略します。

14.4.4. ハードウェア

[オーディオライブラリ]

音声刺激の再生に使用するライブラリを列挙します。実験の設定ダイアログで「PsychoPyの設定を用いる」を選択した場合、ここに列挙されたものを順番にロードして最初にロードできたものを利用します。

[オーディオドライバ]

音声刺激の再生に使用するドライバを列挙します。最初にロードできたものを利用します。

[オーディオデバイス]

音声刺激の再生に使用するデバイスを指定します。PCに複数のオーディオデバイスがある場合、適切なものを選択しないと音声が再生されないので注意してください。

[パラレルポート]

パラレルポートのアドレスを列挙します。ここへアドレスを記入しておかないとParallelOutコンポーネントでアドレスを選択できません。

[Qmixの設定]

Qmix pump(シリンジ制御ライブラリ)の設定を指定します。

14.4.5. ネットワーク

[プロキシ]

ネットワークアクセスにプロキシが必要な場合、ここへアドレスとポートを記入します。

[プロキシの自動構成]

自動的にプロキシを構成しようとします。自動構成が利用可能な場合は「プロキシ」の設定に優先します。

[利用統計の送信を許可]

PsychoPy開発チームへ利用統計を送信することを許可します。開発の参考にするため、可能な限りチェックしておいてください。

[更新の確認]

起動時に新しいバージョンのPsychoPyが公開されていないか確認します。

[タイムアウト]

ネットワーク接続のタイムアウト時間を指定します。