python-EEGツールライブラリMNE中国語コース(11) - 信号空間突起SSPアプリケーション

@

この共有は、ローズは公共の数に発表された仕上げ脳とコンピュータの学習者である:BCIコミュニティ(マイクロ・シグナル:Brain_Computer).QQ交換基:903 290 195

信号空間射影(SSP)

目の前でのシェア投影信号空間SSP数学的な原則は、その投影行列は、ノイズのようなものを投影するあなたの試みによって異なります言及しました。信号空間射影(SSP)がどのような方法である射影行列は、目的の信号の有無の測定値を比較することによって推定されるべきです。たとえば、オブジェクトが存在するセンサー上のアクティビティがないとき、記録するために、追加の「空室」の測定を行うことができます。各アクティブMEGセンサの空間パターンを測定することにより、空孔を参照して、一つ以上のN次元ベクトルを作成することができ、上記の例と同様のセンサ空間内の周囲ノイズ(「影響トリガ」ベクトルの「向き」を与えるために)。SSPはまた、一般的に、抽出時間アーチファクトはエポック(周りに、モーションアーチファクトを除去するための心と眼の場合、レコードは空室を通るが、アーチファクトを検出することによってではなく、モーションアーチファクトのハートビートと目を除去するために使用します)とノイズの方向を推定するために平均化されます。たとえば、SSPの修理作業の使い方を参照してください。

もし雑音ベクトルを知っていると、これに垂直な超平面を作成し、投影行列を構築することができ、テスト記録は、超平面上に投影されます。このように、周囲雑音に関連する測定部を除去することができます。あなたはまだ、センサ信号の同じ番号を持っているが、彼らは直線的に独立していない - - しかし、通常は、センサの数十または何百もある、とあなたは排除したい同様に、投影データの次元を減らすことは明らかです雑音部分空間の次元は3-5ですので、自由の喪失は、通常は問題ではありません。

MNE Pythonのプロジェクター(プロジェクター)

サンプルデータにSSP空孔を使用して実行され記録されているが、元の投影データとともに格納され、適用されていない(又は投影が活性化されていません)。
ここで、私はサンプルデータをロードすると、60秒のカットです。

投影は、以下の出力read_raw_fif()の中に見ることができます。

1.インポートツールライブラリ

import os
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D  # noqa
from scipy.linalg import svd
import mne

2.負荷データ

sample_data_folder = mne.datasets.sample.data_path()
sample_data_raw_file = os.path.join(sample_data_folder, 'MEG', 'sample',
                                    'sample_audvis_raw.fif')
raw = mne.io.read_raw_fif(sample_data_raw_file)
raw.crop(tmax=60).load_data()

ここに画像を挿入説明

MNE-Pythonで、周囲雑音ベクトルは、プロジェクタSSP名「PCA-V1」は、通常、ある理由である主成分分析(PCAしばしば略記する)計算、です。(ちなみに、主成分分析の実行にそう発表された論文では、舞台裏で特異値分解を用いにより、多くの場合、このフレーズを「プロジェクターは、SVDを使用して計算される」類似を参照。)プロジェクターが中に保存されていますprojsフィールドのraw.info:

MNE-Pythonで、(一般に「PCA」と略す)分析物は、一般的にので、「PCA-V1」主成分状突起SSP名が使用される環境雑音ベクトルを算出します。
(それほど頻繁にあなたが発表された論文で、フレーズ「SVDを用いて計算した投影」のようなものを参照してください、バックグラウンドで特異値分解を使用してPCAの実行のために、ところで。)
プロジェクション(プロジェクター)は、生に格納されます。 projsフィールドの情報:

print(raw.info['projs'])

[<プロジェクション| PCA-V1、アクティブ:偽、n_channels:102>、
<プロジェクション| PCA-V2、アクティブ:偽、n_channels:102>、
<プロジェクション| PCA-V3、アクティブ:偽、n_channels:102>]

raw.info [「projs」]一般的なPythonの投影オブジェクトのリストであり、各突起は、インデックスによってアクセスすることができます。投影対象(投影対象)自体は、使用.keys()メソッドは、それが(通常はそのプロパティに直接アクセスする必要はありませんが、必要であれば、それができる)のフィールドが含まれていますかを確認することができ、Pythonの辞書のようになります。

first_projector = raw.info['projs'][0]
print(first_projector)
print(first_projector.keys())

<プロジェクション| PCA-V1、活性:×、n_channels:102>
dict_keys([ '種類'、 'アクティブ'、 'DESC'、 'データ'、 'explained_var'])

生、エポックと誘発オブジェクトは、オブジェクトは、任意の未適用/非アクティブ投影に格納されていることを示す、projのプロパティのブールタイプを有しています。換言すれば、少なくとも一つの突起とプロジェクタが全てアクティブである場合、TrueにPROJプロパティ。また、各プロジェクタはまた、ブールフィールド活動があります。

print(raw.proj)
print(first_projector['active'])


3.計算投影

MNE Pythonでは、SSPベクターは、以下の一般的な関数を用いて計算することができます
mne.compute_proj_raw
mne.compute_proj_epochs;
mne.compute_proj_evoked
通常、これらの機能は、仮定、修復時間、または平均値を投影することによって、ワークピースへのデータ転送を含む元のデータです。
実際には、これは通常連続記録又は空孔の平均生データ又はECG EOGアーチファクトを含みます。

"""
通过比较使用和不使用投影的曲线图,可以看到投影仪对测量信号的影响。
默认情况下,`raw.plot()`将在绘图前在后台应用投影仪(不修改:class:`mne.io.Raw`对象);
可以通过如下所示的布尔``proj``参数来控制它,
也可以通过绘图窗口右下角的:kbd:`Proj`按钮访问投影界面,
以交互方式打开和关闭它们.
这里我们只看磁力计,还有一个文件开头的2秒样本。
"""
mags = raw.copy().crop(tmax=2).pick_types(meg='mag')
for proj in (False, True):
    fig = mags.plot(butterfly=True, proj=proj)
    fig.subplots_adjust(top=0.9)
    fig.suptitle('proj={}'.format(proj), size='xx-large', weight='bold')


上記のように、投影データがPROJ = Flase効果インプレッションを行わない、ベクターは、活性化を選択していない見つけることができるSSPプロジェクタポップ「projの」赤のボックスをクリックして、データが投影されたグラフがproj = Trueをクリック「projの」赤いボックスはで見つけることができます情報を投影。

4.読み込みと保存の投影

周囲の騒音を低減するSSP添加、信号はまた、洗浄、他のタイプのために使用することができます。磁力計信号は、図の一つで見つけることができ、二つの大きなオフセットがあり、これらのオフセットは、ハートビート・アーチファクトの主題である空室を排除するために投影されていません。SSPはまた、アーティファクトを除去するために用いることができます。サンプルデータは、ビートノイズ低減突出部を含む、別のファイルに格納されたオリジナルデータの投影は、ファイルをロードするmne.read_proj()関数を使用することができます。

ecg_proj_file = os.path.join(sample_data_folder, 'MEG', 'sample',
                             'sample_audvis_ecg-proj.fif')
ecg_projs = mne.read_proj(ecg_proj_file)
print(ecg_projs)

"""
利用mne.write_proj()函数,可用于将投影数据以.fif格式保存到磁盘:

MNE Python推荐使用以-proj.fif(或-proj.fif.gz)来保存投影数据
"""
mne.write_proj('heartbeat-proj.fif', ecg_projs)

5. [追加と削除スライド

上面,当我们打印从文件加载的ecg_projs列表时,它显示了两台用于梯度计的投影(前两台,标为"planar"),两台用于磁力计的投影(中两台,标为"axial"),两台用于EEG 传感器(最后两个,标记为"eeg")。我们可以使用add_proj()方法将它们添加到Raw对象:

raw.add_proj(ecg_projs)

要删除投影,可以利用del_proj()方法,它是根据raw.info['projs']列表中的索引删除投影。
如果想要用新的投影替换现有投影,可以使用raw.add_proj(ecg_projs,remove_existing = True)来实现。

想要了解心电图(ECG)投影仪如何影响测量的信号,我们可以再次对使用投影和不使用投影的数据进行绘图(注:plot()方法只能临时应用投影进行可视化,而不会永久更改基础数据)。我们将上面创建的mags变量(只有空房间SSP投影)与空房间和ECG投影仪的数据进行比较:

mags_ecg = raw.copy().crop(tmax=2).pick_types(meg='mag')
for data, title in zip([mags, mags_ecg], ['Without', 'With']):
    fig = data.plot(butterfly=True, proj=True)
    fig.subplots_adjust(top=0.9)
    fig.suptitle('{} ECG projector'.format(title), size='xx-large',
                 weight='bold')


在without ECG projector中,meg数据中的ECG部分没有进行projector,而在with ECG projector中,meg数据中ECG部分进行了projector,结果要平滑一些。

参考
Uusitalo MA and Ilmoniemi RJ. (1997). Signal-space projection method for separating MEG or EEG into components. Med Biol Eng Comput 35(2), 135–140. doi:10.1007/BF02534144

Python-EEG工具库MNE中文教程(11)-信号空间投影SSP 应用

脑机学习者Rose笔记分享,QQ交流群:903290195
更多分享,请关注公众号

おすすめ

転載: www.cnblogs.com/RoseVorchid/p/12069495.html