python-EEGツールライブラリMNE中国のコース(1)-MNE生データ構造とその使用方法の紹介

このチュートリアルでは、ローズが公衆番号に発表された脳とコンピュータの学習者である:BCIコミュニティ(マイクロ・シグナル:Brain_Computer).QQ交換基:903 290 195

生データ構造

生の連続オブジェクトは、主に店舗データ、コアデータに使用しても、情報オブジェクトを備え、タイムズn_channels。
以下は、生といくつかの例使用に関連するオブジェクトを示すことができます。
生の構造は見ます:

# 引入python库
import mne
from mne.datasets import sample
import matplotlib.pyplot as plt

# sample的存放地址
data_path = sample.data_path()
# 该fif文件存放地址
fname = data_path + '/MEG/sample/sample_audvis_raw.fif'

"""
如果上述给定的地址中存在该文件,则直接加载本地文件,
如果不存在则在网上下载改数据
"""
raw = mne.io.read_raw_fif(fname)

ここに画像を挿入説明
RAWを印刷することにより:
印刷(RAW)
<生| sample_audvis_raw.fifは、X-n_timesをn_channels:376 X-166800(277.7秒)、〜3.6メガバイト、データがロードされていない>
コアデータn_channelsとn_timesとして見ることができます

raw.info

<情報| 24非空のフィールドの
acq_pars:STR | 13886の項目
バッズ:リスト| MEG 2443、EEG 053
ch_names:リスト| MEG 0113、MEG 0112、MEG 0111、MEG 0122、MEG 0123、...
CHS:リスト| 376件のアイテム(GRAD:204、MAG:102、STIM:9、EEG:60、EOG:1)
カンプ:リスト| 0アイテム
custom_ref_applied:BOOL |
の説明:STR | 49件の商品
dev_head_t:トランスフォーム| 3つの項目
DIG:デジタル化| 146件のアイテム(3カーディナル、4 HPI、61 EEG、78 Extra)
イベント:リスト| 1つの項目
実験者:STR | 3つの項目
FILE_ID:辞書| 4つの項目
ハイパス:フロート| 0.10000000149011612 Hzの
hpi_meas:リスト| 1つの項目の
hpi_results:リスト| 1つの項目
ローパス:フロート| 172.17630004882812ヘルツ
meas_date:タプル| 2002年12月3日夜07時01分10秒GMTは
meas_id:辞書を| 4つの項目
nchan:int型| 376
proc_history:リスト| 0の項目が
PROJ_ID:ndarray | 1つの項目は
PROJ_NAME:STR | 4つの項目の
projs:リスト| PCA-V1:オフ、PCA-V2:オフ、PCA-V3:オフ
sfreq:フロート| 600.614990234375ヘルツ
acq_stim:NoneType
ctf_head_t:NoneType
dev_ctf_t:NoneType
DEVICE_INFO:NoneType
gantry_angle:NoneType
helium_info:NoneType
hpi_subsystem:NoneType
kit_system_id:NoneType
line_freq:NoneType
subject_info:NoneType
utc_offset:NoneType
xplotter_layout:NoneType

ch_names、sfreq:サンプリング周波数上記の情報は、情報レコードが悪い(BADS)である生チャネルに見ることができる情報の行、チャンネル名です。

典型的には、生データアクセスモードを次のように
データ、生タイムズ= [ピック、TIME_SLICE]

ピック:条件は、インデックスに応じて選択され;
TIME_SLICE:タイムスライス

すべての生データを取得したい、次の2つの方法が用意されています。
生データ、タイムズ紙は= [:]
のデータ、タイムズ紙は、生= [:、:]

"""
案例:
获取10-20秒内的良好的MEG数据

# 根据type来选择 那些良好的MEG信号(良好的MEG信号,通过设置exclude="bads") channel,
结果为 channels所对应的的索引
"""

picks = mne.pick_types(raw.info, meg=True, exclude='bads')
t_idx = raw.time_as_index([10., 20.])
data, times = raw[picks, t_idx[0]:t_idx[1]]
plt.plot(times,data.T)
plt.title("Sample channels")

ここに画像を挿入説明

"""
sfreq:采样频率

raw返回所选信道以及时间段内的数据和时间点,
分别赋值给data以及times(即raw对象返回的是两个array)
"""
sfreq=raw.info['sfreq']
data,times=raw[:5,int(sfreq*1):int(sfreq*3)]
plt.plot(times,data.T)
plt.title("Sample channels")

ここに画像を挿入説明

"""
绘制各通道的功率谱密度
"""
raw.plot_psd()
plt.show()

ここに画像を挿入説明

"""
绘制SSP矢量图
"""
raw.plot_projs_topomap()
plt.show()

ここに画像を挿入説明

"""
绘制通道频谱图作为topography
"""
raw.plot_psd_topo()
plt.show()

ここに画像を挿入説明

"""
绘制电极位置
"""
raw.plot_sensors()
plt.show()

ここに画像を挿入説明

ゼロから作成MNE生オブジェクト

実際のプロセスでは、時にはあなたは、生データオブジェクトを作成するためにゼロから構築する必要があります。
マナー:生がmne.io.RawArrayクラスによって手動で作成
注:あなたが唯一のコンストラクタ行列と情報オブジェクトを受け入れ、生mne.io.RawArrayを、使用してオブジェクトを作成する場合。
データユニットに対応:
V:EEG、EOG、SEEG、EMG、ECG、バイオ、ECOG
T:MAG
T / M:Gradの
M:HBO、HBrの
アム:ダイポール
AU:その他
生はオブジェクト、次の2つのデータを必要とする構築データはデータであり、一つは情報データであり、
データのデータは、二次元データ、形状(n_channels、n_times)であります

ケース1

import mne
import numpy as np
import matplotlib.pyplot as plt

"""
生成一个大小为5x1000的二维随机数据
其中5代表5个通道,1000代表times
"""
data = np.random.randn(5, 1000)

"""
创建info结构,
内容包括:通道名称和通道类型
设置采样频率为:sfreq=100
"""
info = mne.create_info(
    ch_names=['MEG1', 'MEG2', 'EEG1', 'EEG2', 'EOG'],
    ch_types=['grad', 'grad', 'eeg', 'eeg', 'eog'],
    sfreq=100
)
"""
利用mne.io.RawArray类创建Raw对象
"""
custom_raw = mne.io.RawArray(data, info)
print(custom_raw)

ここに画像を挿入説明
印刷された情報は、上から見ることができる
生物体n_channels = 5、n_times = 1000

"""
对图形进行缩放

对于实际的EEG / MEG数据,应使用不同的比例因子。
对通道eeg、grad,eog的数据进行2倍缩小
"""
scalings = {'eeg': 2, 'grad': 2,'eog':2}
custom_raw.plot(n_channels=5, 
                scalings=scalings,
                title='Data from arrays',
         show=True, block=True)

plt.show()

ここに画像を挿入説明

ケース2

import numpy as np
import neo

import mne
import matplotlib.pyplot as plt

正弦と余弦アナログデータMAGの構成とgrad信号
のサンプリング周波数が1000Hzを、10Sに時間0です。

# 创建任意数据
sfreq = 1000  # 采样频率
times = np.arange(0, 10, 0.001)  # Use 10000 samples (10s)

sin = np.sin(times * 10)  # 乘以 10 缩短周期
cos = np.cos(times * 10)
sinX2 = sin * 2
cosX2 = cos * 2

# 数组大小为 4 X 10000.
data = np.array([sin, cos, sinX2, cosX2])

# 定义 channel types and names.
ch_types = ['mag', 'mag', 'grad', 'grad']
ch_names = ['sin', 'cos', 'sinX2', 'cosX2']

情報オブジェクトを作成します。

"""
创建info对象
"""
info = mne.create_info(ch_names=ch_names,
                       sfreq=sfreq, 
                       ch_types=ch_types)

生を使用してオブジェクトを作成Mne.io.RawArray

"""
利用mne.io.RawArray创建raw对象
"""
raw = mne.io.RawArray(data, info)

"""
对图形进行缩放

对于实际的EEG / MEG数据,应使用不同的比例因子。

对通道mag的数据进行2倍缩小,对grad的数据进行1.7倍缩小
"""
scalings = {'mag': 2, 'grad':1.7}

raw.plot(n_channels=4, scalings=scalings, title='Data from arrays',
         show=True, block=True)

"""
可以采用自动缩放比例

只要设置scalings='auto'即可
"""
scalings = 'auto'
raw.plot(n_channels=4, scalings=scalings,
         title='Auto-scaled Data from arrays',
         show=True, block=True)
plt.show()

ここに画像を挿入説明
ここに画像を挿入説明

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

おすすめ

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