EEG Processor Users Manual

変更履歴

2007/08/10 ver 0.1A (Sako)
第一版

2007/08/23 ver 0.1B (Sako)
BDF ファイルロード時の BDF_SPEC 構造体に figure_info 構造体フィールドを追加した。

1. 概要... 5

1-1. はじめに... 5

1-1-1. 対象読者... 5

1-1-2. EEG_Toolkit 5

1-2. 環境... 5

1-3. 何ができるか... 5

2. チュートリアル... 6

2-1. 準備... 6

2-1-1. 環境の確認... 6

2-1-2. チュートリアルの実行... 6

2-2. BDFからチャネルデータを取り出す... 6

2-2-1. 概要... 6

2-2-2. 実行... 6

2-2-3. 入力... 7

2-2-4. 成果物... 7

2-2-5. 注意事項... 7

2-3. チャネルデータから、EEGデータを抽出する... 8

2-3-1. 概要... 8

2-3-2. 実行... 8

2-3-3. 入力... 8

2-3-4. 成果物... 8

2-4. トリガ情報を取得する... 9

2-4-1. 処理モード... 9

2-4-2. 留意事項... 9

2-4-3. 自動でトリガ情報を取得する... 9

2-4-4. 半自動でトリガ情報を取得する... 10

2-4-5. 手動でトリガ情報を取得する... 11

2-5. トリガ情報を基にEEGデータを分割する... 11

2-5-1. 概要... 11

2-5-2. 実行... 11

2-5-3. 入力... 12

2-5-4. 成果物... 12

3. 関数詳細... 13

3-1. vb_make_msrmnt_data. 13

3-1-1. 概要... 13

3-1-2. 引数... 13

3-1-3. 戻り値... 14

3-2. vb_mark_trigger. 15

3-2-1. 概要... 15

3-2-2. 引数... 15

3-2-3. 戻り値... 15

# 1. 概要

## 1-1. はじめに

この文書では、VBMEG が提供する EEG データ処理プログラムの使い方について解説します。

### 1-1-1. 対象読者

BDF ファイルを持つ EEG ユーザが対象です。

### 1-1-2. EEG_Toolkit

以下の文書中では、この EEG データ処理プログラムを EEG プロセッサと呼びます。

## 1-2. 環境

現状の実装で想定している環境は、次の通りです。

l BIOSEMI 社の EEG 測定器による BDF 形式ファイルを入力ファイルとする

l MATLAB6.5 以上

## 1-3. 何ができるか

EEG プロセッサは、次の処理をすることができます。

1) BDF ファイルから、チャネル毎のデータファイルを作成する

2) 対象となるチャネル、サンプルを指定して EEG データを抽出する

3) トリガ情報を取得する(自動または手動)

4) トリガ情報を基に、EEG データを分割する

# 2. チュートリアル

サンプルデータを用いて、典型的な使い方を実行してみましょう。

## 2-1. 準備

### 2-1-1. 環境の確認

チュートリアルの実行に先立ち、以下の環境を確認します。

l vbmeg パスを通します(vbmeg 関数を使用しているため)

l 以下に置いてあるサンプルデータを使用します
/home/cbi-data/sakot/eeg/sample_data/

l チュートリアルは次のテストプログラムを実行します
$VBMEG/script/eeg_tutorial.m
このプログラムが存在することを確認します

パラメータ設定例は、このテストプログラムの記述を参考にしてください。パラメータ設定については後述します。

### 2-1-2. チュートリアルの実行

チュートリアルの実行は、MATLAB コンソールからコマンドを入力することで行います。

(例)「コード 1 で実行する」
% eeg_tutorial(1)

## 2-2. BDFからチャネルデータを取り出す

### 2-2-1. 概要

処理内容は次の通りです。

1) BDF ファイルを読む

2) チャネルデータファイルを作成する

3) EEG-MAT ファイルを作成する

### 2-2-2. 実行

コード 1 で実行します。

% eeg_tutorial(1)

#### 2-2-2-1. 実行主体

内部では vb_make_msrmnt_data 関数が呼ばれます。vb_make_msrmnt_data 関数については後述します。

### 2-2-3. 入力

#### 2-2-3-1. 追加情報(2007/08/23)

bdf_spec.figure_info を新規に追加しました。

これは従来の”digit_file” および “face_file” に代わるもので、それぞれのファイルから取得していたパラメータを直接指定することができます。これにより、ファイルがなくても動かすことができるようになりました。この構造体の仕様は次のとおりです。

l .SensorPosition : センサー位置座標 [Nsensor x 3] (digit_file)

l .CoordType : コードタイプ<文字列> (例) “SPM_Right_m” 等 (digit_file)

l ChannelLabel : チャネルラベル <文字列のセル配列> {NChannel x 1} (digit_file)

l .Vcenter : 中心座標 [1 x 3] (face_file)

#### 2-2-3-2. ファイル

l bdf_spec.bdf_file = BDF ファイル(.bdf) : (sample) sample_mrmt.bdf

l bdf_spec.digit_file = DIGITIZER ファイル(.digit.mat) : (sample) sample_mrmt.digit.mat

l bdf_spec.face_file = FACE ファイル(.face.mat) : (sample) sample_mrmt.face.mat

#### 2-2-3-3. パラメータ

l bdf_spec.device = [] (default)

l bdf_spec.primary_path = ‘../test_dir/test’

l bdf_spec.label_type = [] (default)

l bdf_spec.eeginfo_version = [] (default)

l ch_spec = [] (チャネルデータファイルの読み込みは行わない)

### 2-2-4. 成果物

カレントディレクトリ以下の’test_dir’ディレクトリに、以下のデータが作成されます。

l test.primary.eeg.mat (初期 EEG-MAT ファイル)

l test_${channel_label}.ch.dat

### 2-2-5. 注意事項

#### 2-2-5-1. チャネルラベル

センサの位置情報は、DIGIT ファイルが保持しています。一方、各センサの測定データは BDF ファイルが保持しています。センサのことをチャネルとも呼びます。それぞれのファイルで、それぞれのチャネルに名前が付けられています。これを「チャネルラベル」と言います。

EEG プロセッサでは、DIGIT ファイルに記録されているチャネルラベルと BDF ファイルに記録されているチャネルラベルとを照会することにより、位置情報と測定データとを統合します。DIGIT ファイルのチャネルラベルと BDF ファイルのチャネルラベルとが一致しない場合には、位置座標として無効値が入ります。

2007/08/10 現在、このチュートリアルが提供しているデータは、チャネルラベルが不一致のものであるため、成果物に含まれる座標値が正しくありません。とりあえず正しい座標値を入れるためには、Matlab デバッガを使い、次のように操作します。

l vb_read_bdf_save_ch_bin.m(L.97)、inner_rearrange_channel_label 関数の呼び出し箇所にブレイクポイントを張る

l Matlab コンソール(Command Window)で次のように入力する

l > ChannelLabel_hardware(1:64) = ChannelLabel_standard’;

## 2-3. チャネルデータから、EEGデータを抽出する

### 2-3-1. 概要

処理内容は次の通りです。

1) 初期 EEG-MAT ファイルを読む

2) チャネルデータファイルから EEG データを抽出する

3) EEG-MAT ファイルを作成する

### 2-3-2. 実行

テストコード 2 で実行します。

% eeg_tutorial(2)

#### 2-3-2-1. 実行主体

内部では vb_make_msrmnt_data 関数が呼ばれます。vb_make_msrmnt_data 関数については後述します。

### 2-3-3. 入力

#### 2-3-3-1. ファイル

l 初期 EEG-MAT ファイル(EEGinfo 構造体をロードして使用する)

#### 2-3-3-2. パラメータ

l ch_spec.old_info = 初期 EEG-MAT ファイル(.primary.eeg.mat)からロードした EEGinfo 構造体
./test_dir/test.primary.eeg.mat

1) ch_spec.output_file = 出力される EEG-MAT ファイル

2) ch_spec.to_read_swt = [] (default)

3) ch_spec.ch_list = [] (default)

4) ch_spec.time_from = [] (default)

l ch_spec.time_to = [] (default)

l bdf_spec = [] (BDF ファイル読み込み処理をスキップする)

ch_spec の初期設定では、全チャネルの全サンプルデータを読み出します。

### 2-3-4. 成果物

カレントディレクトリ以下の’test_dir’ディレクトリに、以下のデータが作成されます。

l test.eeg.mat

## 2-4. トリガ情報を取得する

取得した EEG データから、トリガ情報を抽出、取得することができます。

### 2-4-1. 処理モード

この処理には大きく次の三つのモードがあります。

1) (自動) 自動でトリガチャネル(トリガ情報出力チャネル)を認識し、トリガポイントを取得する

2) (半自動) ユーザが指定したトリガチャネルからトリガポイントを取得する

3) (手動) トリガチャネルに依らず、ユーザの目視によりトリガポイントを取得する

内部では vb_mark_trigger 関数が呼ばれます。vb_mark_trigger 関数については後述します。

### 2-4-2. 留意事項

#### 2-4-2-1. トリガとするサンプル

一つのトリガ信号は数ミリ秒の幅を持っています。どの時点のサンプルを以て「トリガ」とするかを決めなければいけません。

デフォルトでは「開始サンプル番号」が適用されています。

開始サンプル番号以外には、終了サンプル番号、全サンプル番号が用意されていますが、現在、切替用ユーザインタフェイスを備えていません。変更する場合は、プログラムを一部書き換える(１行だけですが)必要があります。

#### 2-4-2-2. GUI 操作概要

指定した EEG データの eeg_data('A1','B2', 'GSR1')をプロットした figure が表示されます。

X 軸がサンプル、Y 軸が EEG 値です。

[RANGE]/[LINE]ボタンを[LINE]にするとマウスクリックでトリガをポイントすることができます。トリガラインを再クリックすると削除できます。

[SAVE]ボタンでトリガリストを保存することができます。

### 2-4-3. 自動でトリガ情報を取得する

#### 2-4-3-1. 概要

処理内容は次の通りです。

4) 指定されたチャネルの EEG データをプロットする

5) EEGinfo ヘッダを読んで、自動でトリガチャネルを認識する

6) トリガチャネルからトリガポイント情報を取得する

7) 取得したトリガポイントにラインを引く

8) トリガリストファイルを作成する(手動)

#### 2-4-3-2. 実行手順

1) コード 3 で実行します。
% eeg_tutorial(3)

2) 指定した EEG データの eeg_data('A1','B2','GSR1')をプロットした figure が表示されます。X 軸がサンプル、Y 軸が EEG 値です。

3) そのグラフの上に、垂直線(X 値一定)でトリガの線が引かれます。

4) [SAVE]ボタンをクリックして、トリガ情報を保存します。保存ファイルを’./test_dir/trigger_list.mat’としてください。

#### 2-4-3-3. 入力

l measurement_file = EEG-MAT ファイル("./test_dir/test.eeg.mat" c.f. 2-3-4.)

l target_list = {'A1', 'B2', 'GSR1'}

l to_read_swt = ON

l output_file = [] (unused)

l auto_info.auto_detect = ON

#### 2-4-3-4. 成果物

カレントディレクトリ以下の’test_dir’ディレクトリに、以下のデータが作成されます

trigger_list.mat (トリガリストファイル)

### 2-4-4. 半自動でトリガ情報を取得する

#### 2-4-4-1. 概要

処理内容は次の通りです。

5) 指定されたチャネルの EEG データをプロットする

6) 指定されたトリガチャネルを読み、トリガポイント情報を取得する

7) 取得したトリガポイントにラインを引く

8) トリガリストファイルを作成する(手動)

#### 2-4-4-2. 実行

コード 4 で実行します。

% eeg_tutorial(4)

トリガマーク用の GUI が表示されます。

#### 2-4-4-3. 入力

l measurement_file = EEG-MAT ファイル("./test_dir/test.eeg.mat" c.f. 2-3-4.)

l target_list = {'A1', 'B2', 'GSR1'}

l to_read_swt = ON

l output_file = [] (unused)

l auto_info.auto_detect = OFF

l auto_info.trigger_channel = 'Status'

#### 2-4-4-4. 成果物

カレントディレクトリ以下の’test_dir’ディレクトリに、以下のデータが作成されます

(トリガリストファイル)

### 2-4-5. 手動でトリガ情報を取得する

#### 2-4-5-1. 概要

処理内容は次の通りです。

9) 指定されたチャネルの EEG データをプロットする

10) 手作業でトリガポイントをクリックし、ラインを引く

11) トリガリストファイルを作成する(手動)

#### 2-4-5-2. 実行

コード 5 で実行します。

% eeg_tutorial(5)

トリガマーク用の GUI が表示されます。

#### 2-4-5-3. 入力

l measurement_file = EEG-MAT ファイル("./test_dir/test.eeg.mat" c.f. 2-3-4.)

l target_list = {'A1', 'B2', 'GSR1'}

l to_read_swt = ON

l output_file = [] (unused)

l auto_info.auto_detect = OFF

l auto_info.trigger_channel = []

#### 2-4-5-4. 成果物

カレントディレクトリ以下の’test_dir’ディレクトリに、以下のデータが作成されます

(トリガリストファイル)

## 2-5. トリガ情報を基にEEGデータを分割する

### 2-5-1. 概要

処理内容は次の通りです。

1) ベースとなる EEG データを読む

2) トリガポイント、プレトリガ、ポストトリガ情報から、トライアル単位にデータを分割する

3) 分割して取り出したデータを、新規ファイルとして EEG-MAT ファイルに保存する

% output : .\test_dir\test_segmented.eeg.mat

%

% --------------------------------------------------------------------- %

### 2-5-2. 実行

コード 6 で実行します。

% eeg_tutorial(6)

<spec>

: 切り出す幅は trial_spec の二つのフィールド

: pre_trigger(トリガ前)

: post_trigger(トリガ後)

: で指定できます。

: 切り出す時間幅を指定できる segmented_ti (time interval)フィールド

: も用意してあります。

### 2-5-3. 入力

#### 2-5-3-1. ファイル

l EEG-MAT ファイル (./test_dir/test.eeg.mat) EEGinfo をロードする

l トリガリストファイル (./test_dir/trigger_list.mat – c.f. 2-4-3-4) trigger_list をロードする

#### 2-5-3-2. パラメータ

ch_spec に trial_spec 構造体を渡します。

l bdf_spec = [] (BDF ファイル読み込み処理はスキップする)

l BASE_EEG_FILE = [BASE_DIR filesep TEST_PREFIX '.eeg.mat']

l load(BASE_EEG_FILE, 'EEGinfo')

l ch_spec.old_info = EEGinfo

l ch_spec.output_file = './test_dir/test_segmented.eeg.mat'

l ch_spec.to_read_swt = OFF

l ch_spec.ch_list = []

l ch_spec.time_from = []

l ch_spec.time_to = []

l trial_spec.trigger_list = trigger_sample_list

l trial_spec.pre_trigger = 100

l trial_spec.post_trigger = 500

l trial_spec.segmented_ti = []

l trial_spec.segment_rule = 1

l ch_spec.trial_spec = trial_spec

### 2-5-4. 成果物

カレントディレクトリ以下の’test_dir’ディレクトリに、以下のデータが作成されます

test_segmented.eeg.mat

このファイルに保存されている eeg_data データは、各チャネル毎に、サンプル数が 601(トリガ前 100、トリガ後 500)、トライアル数 186 個のデータに分割されています。

# 3. 関数詳細

## 3-1. vb_make_msrmnt_data

### 3-1-1. 概要

vb_make_msrmnt_data 関数は、大きく二つの処理を担当します。

1) BDF ファイルを読んでチャネルデータファイルを作成する

2) チャネルデータファイルから、指定チャネル、指定サンプルのデータを抽出する

### 3-1-2. 引数

#### 3-1-2-1. read_bdf_spec

BDF ファイルを読む処理の仕様を定義する構造体。これが empty の場合は、BDF ファイルを読む処理がスキップされる。フィールドは次の通り。

· . bdf_file : BDF ファイル(.bdf)

l .digit_file : DIGITIZER ファイル(.digit.mat)

l .face_file : FACE ファイル(.face.mat)

l .device : デバイス文字列、初期値は’BIOSEMI’

l .primary_path : 初期 EEG-MAT ファイルおよびチャネルデータのパス＋プレフィクス
(例) ‘./test_dir/test’ ならば、./test_dir/test.primary.eeg.mat ファイルと、./test_dir/test_${チャネルラベル}.ch.dat ファイルができる

l .label_type : 使用するラベルタイプ、現在使用されていません

l .eeginfo_version : EEGinfo 構造体のバージョン、現在、有効活用されていません

#### 3-1-2-2. read_ch_spec

チャネルデータファイルを読む処理の仕様を定義する構造体。これが empty の場合は、チャネルデータファイルを読む処理がスキップされる。フィールドは次の通り。

l .old_info : 基礎となる EEGinfo 構造体

l .output_file : 出力 EEG-MAT ファイル

l .to_read_swt : 読取スイッチ、ch_list フィールドで渡されるチャネルリストが読取なのか無視なのかを指定するスイッチ、boolean、true ならば ch_list は読取チャネルリスト

l .ch_list : チャネルラベル文字列を羅列したリスト

l .time_from : 読み取る開始サンプル番号

l .time_to : 読み取る終了サンプル番号

l .trial_spec : トライアル分割時に分割仕様を規定する構造体、フィールドは次の通り

· .pre_trigger : トリガ前サンプル数 (A)

· .post_trigger : トリガ後サンプル数 (B)

· .segmented_ti : セグメント時間長 (C)

· .segment_rule : セグメントルール(1 or 2 or 3)
切り出すデータのサンプル数は(A)(B)(C)の三つのうち二つが与えられていることが必要。
セグメントルールでは、三つが与えられた場合に適用されるルールを指定する。
1) (A)と(B)
2) (A)と(C)
3) (B)と(C)

### 3-1-3. 戻り値

l MSRMNTfile : 更新されたファイル名

l MSRMNTinfo : 更新された情報構造体(EEGinfo)

## 3-2. vb_mark_trigger

### 3-2-1. 概要

トリガを取得する際に用いる関数です。測定データとトリガポイントを表示・操作できる GUI を起動します。

### 3-2-2. 引数

l msrmnt_file : 測定ファイルを指定します、通常は EEG-MAT(.eeg.mat)ファイルです

l target_list : 表示する測定データのチャネルラベルを文字列を羅列して指定します

l to_read_swt : target_list で指定されるチャネルを読み取るのか無視するのかを指定する boolean 値です、true ならば読み取ります

l output_file : 現在使用されていません

l auto_info : トリガを自動的にポイントする際の仕様を規定する構造体です、フィールドは次の通りです

· .auto_detect : 自動取得スイッチです、ON or OFF

· .trigger_channel : トリガ情報が出力されたチャネルを指定します。

· .trigger_file : トリガ情報 MAT ファイルを指定します

· .how : トリガ取得方法を以下の文字列で指定します、指定されない場合は他のフィールド指定状況から判断します
‘FULL’: 自動
‘SEMI’: 半自動
‘FILE’: トリガ情報 MAT ファイル
‘MANUAL’ : 手動

### 3-2-3. 戻り値

戻り値はありません。