眼球運動計測装置EyeLink IIの眼球運動データ(SR Researchが提供しているedf2asc.exeによって.edfファイルからASCII形式に変換されたもの)を読み込んで解釈し,視線位置やボタン押しなどのデータをMATLABで利用可能な行列変数にした上で.matファイルとして保存します。
関数Text2CellArray.mを使用しますので,同じフォルダかパスの通ったフォルダに置いておいて下さい。
MATLAB on Windows環境で使っていました。他の環境では試していません。
関数ではなくスクリプトです。実行する前に,ファイル冒頭の数行にあるパラメータ変数を書き換えて下さい。各変数の内容は以下の通りです。
実行すると,処理の経過状況を時刻とともにコマンドウィンドウに逐次表示します。データが多いと長時間を要することがあります。
>> LoadELASC --- [LoadELASC.m] ------------------------------------------- 18:34:22 Loading the data from el_test.asc 18:34:22 ...done. 18:34:22 Splitting the data into rows 18:34:24 ...done. (20699 rows) 18:34:24 Classifying the rows 18:34:24 ... done. (4 blocks found) 18:34:24 Interpreting the raw data 18:34:25 ...done. (96% data remain available) 18:34:25 Detecting START/END timestamps of each block 18:34:25 ...done. 18:34:25 Interpreting the button-press data 18:34:25 ...done. (4 changes of the button-state) 18:34:25 Interpreting the fixation data 18:34:25 ...done. (47 fixations) 18:34:25 Interpreting the saccade data 18:34:25 ...done. (43 saccades) 18:34:25 Interpreting the blink data 18:34:25 ...done. (7 blinks) 18:34:25 Interpreting the MSG data 18:34:25 ...done. (388 MSG rows) 18:34:25 Save the data 18:34:25 ...done. (el_test_eye.mat) 18:34:25 Plotting the data 18:34:25 ...done. -------------------------------------------------------------
処理が完了すると,視線位置の軌跡(黒線)と固視位置(赤丸)をプロットします(変数WannaPlotが1のとき)。
変換すると,以下のような変数ができあがります。なお,元ファイルの各行がどのような意味を持っているのかについては,EyeLinkのマニュアル等を参照して下さい。
生データの行,すなわちタイムスタンプ・視線位置座標・瞳孔サイズ等が記録されている行を抜き出し,数値に変換したものです。なお,1列目にブロック数が加えられています。すなわち2列目がタイムスタンプ,3列目以降が視線位置座標や瞳孔サイズです。瞬目中の情報や,片眼しか記録していない場合の記録していない方の眼の瞳孔サイズのように,データがなく元ファイルでドット( . )のみが記録されている箇所については,かわりに0が代入されています(従って,もしScreenRectに座標(0,0)が含まれていないと,瞬目期間中の行は無視されてRawDataから除外されることになります)。
元ファイル内のMSGで始まる行の内容が1行ずつ文字列として保存されています。MSG{1}は,元ファイル内で1番目に登場するMSG行の内容です。
元ファイルのMSG行のブロック数が1列目に,タイムスタンプが2列目に保存されています。例えば100番目のMSG行(つまり,MSG{100})のタイムスタンプは,MSGtime(100,2)で与えられます。なお,第1ブロック開始前や最終ブロック終了後に記録されたMSG行については,ブロック数は0になっています。
ボタン押し反応の情報です。元ファイル内のBUTTONで始まる行を数値に変換したものです。1列目にブロック数が加えられています。2列目がタイムスタンプです。
固視開始。元ファイル内のSFIXで始まる行を数値に変換したものです。1列目にブロック数が加えられています。2行目は左右どちらの眼かで,Lが0,Rが1に変換されています。3列目はタイムスタンプです。
固視終了。元ファイル内のEFIXで始まる行を数値に変換したものです。SFIXと同様,1列目はブロック数,2列目は左右。3列目以降がタイムスタンプ等の情報です。
サッケード開始。元ファイル内のSSACCで始まる行を数値に変換したものです。内容はSFIXと同様。
サッケード終了。元ファイル内のESACCで始まる行を数値に変換したものです。EFIXと同様,1列目はブロック数,2列目は左右,3列目以降がタイムスタンプ等の情報です。
瞬目開始。元ファイル内のSBLINKで始まる行を数値に変換したものです。内容はSFIXと同様。
瞬目終了。元ファイル内のEBLINKで始まる行を数値に変換したものです。EFIXと同様,1列目はブロック数,2列目は左右,3列目以降がタイムスタンプ等の情報です。
元ファイル内のPRESCALERで始まる行の内容が1行ずつ文字列として保存されています。
元ファイル内のVPRESCALERで始まる行の内容が1行ずつ文字列として保存されています。
元ファイル内のEVENTSで始まる行の内容が1行ずつ文字列として保存されています。
元ファイル内のSAMPLESで始まる行の内容が1行ずつ文字列として保存されています。
ブロック開始。元ファイル内のSTARTで始まる行の内容が1行ずつ文字列として保存されています。START{1}は,元ファイル内で1番目に登場するSTART行の内容です。
MSGtimeと同様,START行のブロック数とタイムスタンプです。
ブロック終了。元ファイル内のENDで始まる行の内容が1行ずつ文字列として保存されています。END{1}は,元ファイル内で1番目に登場するEND行の内容です。
MSGtimeと同様,END行のブロック数とタイムスタンプです。
LoadELASC.m (17KB)
Text2CellArray.m (3KB) ※同じフォルダかパスの通ったフォルダに置いて下さい。