Pythonの-EEGツールライブラリMNE中国のコース(14)-Epochメタデータ(メタデータ)オブジェクト

ディレクトリ

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

この場合はエポックメタデータの使用方法を示します。エポックのデータ構造について:あなたは、資料を表示することができますPythonの-EEGツールライブラリMNE中国のチュートリアル(2)-MNEデータ構造エポックとどのように作成すると、Pythonの-EEGツールライブラリMNE中国のチュートリアル(3)-MNEデータ構造とその使用法エポックを簡単な紹介

MNEメタデータプロパティは、時にはデータを格納するのに使用され、カプセル化データpandas.DataFrameに使用されるメタデータ、特に有用です。前記1つのエポックの各行に相当する、メタデータプロパティエポックに各列に相当します。列は、文字列、整数または浮動小数点が含まれている必要があります。

このデータセットにおいて、対象は、画面上の単一の単語、記録EEG活動に対応する各単語を参照します。我々は、各エポックのディスプレイのためのどのワード、ならびにこのワード(例えば、ワード頻度)に関する追加情報を知っています。

#导入工具
import mne
import numpy as np
import matplotlib.pyplot as plt

#加载数据
path = mne.datasets.kiloword.data_path() + '/kword_metadata-epo.fif'
epochs = mne.read_epochs(path)

印刷された情報は、上記のデータは、960件のサンプルデータを設定することから知ることができます。

epochs.metadata[:10]

# 元数据以panda.DataFrame的形式存储数据
# 获取前10条记录
print(epochs.metadata.head(10))

私たちは、エポックのサブセットを選択するメタデータ属性を使用することができます。これは、パンダのpandas.DataFrame.query()メソッドを使用します。任意の有効なクエリ文字列が動作します。以下では、比較するために、2つの図形を描画します:

av1 = epochs['Concreteness < 5 and WordFrequency < 2'].average()
av2 = epochs['Concreteness > 5 and WordFrequency > 2'].average()

joint_kwargs = dict(ts_args=dict(time_unit='s'),
                    topomap_args=dict(time_unit='s'))
av1.plot_joint(show=False, **joint_kwargs)
av2.plot_joint(show=False, **joint_kwargs)
plt.show()

words = ['film', 'cent', 'shot', 'cold', 'main']
epochs['WORD in {}'.format(words)].plot_image(show=False)
plt.show()

"""
注意,传统的epoch子选择仍然有效。
传统的选择epoch的MNE方法将取代丰富的元数据查询。
"""
epochs['cent'].average().plot(show=False, time_unit='s')
plt.show()

以下は、各エポックのためのメタデータの例を使用して、より複雑な例を示します。私たちは、メタデータオブジェクトの新しい列を作成し、テストサブセットの数の平均値を生成するためにそれを使用します。

metadata = epochs.metadata
is_concrete = metadata["Concreteness"] > metadata["Concreteness"].median()
metadata["is_concrete"] = np.where(is_concrete, 'Concrete', 'Abstract')
is_long = metadata["NumberOfLetters"] > 5
metadata["is_long"] = np.where(is_long, 'Long', 'Short')
epochs.metadata = metadata
"""
现在我们可以快速提取(并绘制)数据的子集。例如,看按单词长度和具体程度划分的单词:
"""
query = "is_long == '{0}' & is_concrete == '{1}'"
evokeds = dict()
for concreteness in ("Concrete", "Abstract"):
    for length in ("Long", "Short"):
        subset = epochs[query.format(length, concreteness)]
        evokeds["/".join((concreteness, length))] = list(subset.iter_evoked())

# 为了进行实际的可视化,下面存储了许多共享参数。
style_plot = dict(
    colors={"Long": "Crimson", "Short": "Cornflowerblue"},
    linestyles={"Concrete": "-", "Abstract": ":"},
    split_legend=True,
    ci=.68,
    show_sensors='lower right',
    legend='lower left',
    truncate_yaxis="auto",
    picks=epochs.ch_names.index("Pz"),
)

fig, ax = plt.subplots(figsize=(6, 4))
#绘制诱发响应
mne.viz.plot_compare_evokeds(evokeds, axes=ax, **style_plot)
plt.show()

誘発反応得られた単語の長さ(文字の数)は、次の異なる文字の比較。4,5,6,7または8文字の単語の長さを比較します:

letters = epochs.metadata["NumberOfLetters"].unique().astype(int).astype(str)

evokeds = dict()
for n_letters in letters:
    evokeds[n_letters] = epochs["NumberOfLetters == " + n_letters].average()

style_plot["colors"] = {n_letters: int(n_letters)
                        for n_letters in letters}
style_plot["cmap"] = ("# of Letters", "viridis_r")
del style_plot['linestyles']

fig, ax = plt.subplots(figsize=(6, 4))
mne.viz.plot_compare_evokeds(evokeds, axes=ax, **style_plot)
plt.show()

最後に、特定の抵抗と相互作用文字との間の連続した長さのために:

evokeds = dict()
query = "is_concrete == '{0}' & NumberOfLetters == {1}"
for concreteness in ("Concrete", "Abstract"):
    for n_letters in letters:
        subset = epochs[query.format(concreteness, n_letters)]
        evokeds["/".join((concreteness, n_letters))] = subset.average()

style_plot["linestyles"] = {"Concrete": "-", "Abstract": ":"}

fig, ax = plt.subplots(figsize=(6, 4))
mne.viz.plot_compare_evokeds(evokeds, axes=ax, **style_plot)
plt.show()

参考
メタデータ(メタデータ)エポックオブジェクト

903 290 195:この記事は、脳とコンピュータの学習ローズノート、QQ交換基によって共有された
公衆号により共有に、してください注意を払います

おすすめ

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