探索脑电数据的宝藏:TUH EEG 数据集入门与实践

引言

脑电图 (Electroencephalography, EEG) 是一种重要的神经生理学技术,通过记录头皮上的电活动来研究大脑功能。大规模、高质量的 EEG 数据集对于推动神经科学研究、开发临床诊断工具以及训练人工智能模型至关重要。在众多的公开 EEG 数据集中,Temple University Hospital (TUH) EEG 数据集以其庞大的规模和丰富的临床信息而备受研究者的青睐。本文将带您全面了解 TUH EEG 数据集,从其核心作用到采集的特征,并提供一些使用 Python 进行数据加载和分析的入门代码。

数据集下载地址:machalKing/neuro-data-learn-main


TUH EEG:一个强大的临床脑电数据平台

1. 数据集概览

TUH EEG 数据集是由 Temple University Hospital 收集并公开的临床 EEG 记录集合。该数据集包含了来自大量患者的 EEG 数据,覆盖了各种临床适应症,例如癫痫、睡眠障碍、脑肿瘤等。其主要特点包括:

  • 庞大的数据量: 包含数万个 EEG 记录,总时长超过数千小时。

  • 丰富的临床信息: 每个 EEG 记录通常伴随着患者的基本信息、临床诊断、药物史等元数据。

  • 多样化的数据: 涵盖了不同年龄段、不同病症的患者数据,以及不同的 EEG 采集方案。

  • 公开可访问: 数据集可以公开下载,为研究者提供了便利。

2. 数据集的核心作用与采集的特征

TUH EEG 数据集并非专门用于采集某一特定方面的脑电特征,而是作为为神经科学研究和机器学习模型开发提供一个大规模、真实的脑电图数据资源库

它的核心作用体现在:

  • 推动神经科学研究: 研究人员可以利用这个数据集探索大脑活动的模式,研究各种神经系统疾病(如癫痫、脑卒中、睡眠障碍等)的病理生理机制。通过分析大量真实患者的 EEG 数据,可以发现疾病相关的生物标记,为临床诊断提供新思路。

  • 开发和验证机器学习模型: 数据集丰富的标注信息(如癫痫发作、正常与异常状态、患者信息等)是训练和测试人工智能模型的理想素材。研究人员可以利用它来开发 自动癫痫发作检测算法疾病诊断辅助系统脑状态分类器 等应用。

  • 教育与培训: 作为一个公开且结构化的数据集,它为学生和研究人员提供了学习和实践 EEG 信号处理、特征提取以及机器学习算法的绝佳平台。

关于采集的脑电特征:

TUH EEG 数据集采集的是电生理信号,即大脑神经元活动产生的电位变化。这些原始信号反映的是大脑在不同状态下(例如静息、任务执行、睡眠、癫痫发作等)的宏观电活动。

虽然数据集本身记录的是原始的、时域的电位信号,但研究人员和开发者可以从这些原始数据中提取出各种各样的特征,这些特征可以大致分为:

  • 时域特征: 信号的幅度、时延以及波形形态,如癫痫发作时常见的尖波和棘波。

  • 频域特征: 通过傅里叶变换等方法提取的功率谱密度,衡量不同频率段(如 δ, θ, α, β, γ 波段)的能量分布,这可以反映大脑的不同状态。

  • 时频域特征: 利用小波变换等技术同时分析信号在时间和频率上的变化。

  • 复杂性和非线性特征: 衡量信号复杂性的样本熵模糊熵等,可以反映大脑活动的复杂性。

  • 连接性特征: 衡量不同脑区之间电活动同步或相关的相干性,用于构建脑功能网络。

总而言之,TUH EEG 提供的是原始的、多通道的、时域的脑电信号数据,其真正价值在于它为研究者提供了一个基础平台,可以从中提取出上述各种复杂的、有意义的特征,用于深入的科学研究和应用开发。


使用 Python 进行数据分析入门

接下来,我们将演示如何使用 Python 和一些常用的神经科学数据处理库(如 mnenumpy)来加载和初步分析 TUH EEG 数据。

1. 安装必要的库

首先,确保您已经安装了以下 Python 库:

  • mne: 用于神经电生理数据的处理和分析。

  • numpy: 用于数值计算。

  • matplotlib: 用于数据可视化。

您可以使用 pip 进行安装:

Bash

pip install mne numpy matplotlib

2. 加载 EDF 文件

假设您已经下载了一个 TUH EEG 的 EDF 文件,我们可以使用 mne.io.read_raw_edf() 函数来加载它:

Python

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

# 替换为您的 EDF 文件路径
edf_file_path = 'path/to/your/sample.edf'

try:
    raw = mne.io.read_raw_edf(edf_file_path, preload=False)
    print("EDF 文件加载成功!")
except FileNotFoundError:
    print(f"错误:文件 {edf_file_path} 未找到!")
    exit()

# 打印原始数据的信息
print(raw)
print(raw.info)

3. 查看通道名称和采样率

我们可以通过 raw.ch_namesraw.info['sfreq'] 来获取通道名称和采样率:

Python

# 获取通道名称
channel_names = raw.ch_names
print("通道名称:", channel_names)

# 获取采样率
sampling_frequency = raw.info['sfreq']
print("采样率:", sampling_frequency, "Hz")

4. 加载数据并可视化

要进行数据分析,我们需要将数据加载到内存中。然后,我们可以选择一部分数据进行可视化:

Python

# 加载数据
raw.load_data()
print("数据已加载到内存!")

# 选择一段数据进行可视化 (例如前 10 秒)
duration = 10  # 秒
start_time = 0  # 秒
end_time = start_time + duration
sfreq = raw.info['sfreq']
start_sample = int(start_time * sfreq)
end_sample = int(end_time * sfreq)

# 获取所有通道的数据
data, times = raw[:, start_sample:end_sample]

# 绘制前几个通道的信号
n_channels_to_plot = 5
plt.figure(figsize=(12, 6))
for i in range(n_channels_to_plot):
    plt.plot(times, data[:n_channels_to_plot][i], label=channel_names[:n_channels_to_plot][i])

plt.xlabel("时间 (s)")
plt.ylabel("幅度 (µV)")
plt.title(f"前 {duration} 秒的 EEG 信号 (前 {n_channels_to_plot} 个通道)")
plt.legend()
plt.grid(True)
plt.show()

5. 提取事件信息(如果存在)

一些 TUH EEG 数据集可能包含事件标记,例如癫痫发作的起始和结束时间。mne 提供了处理事件的功能:

Python

# 尝试读取事件
events = mne.find_events(raw, stim_channel='auto')
if len(events) > 0:
    print("\n找到事件:")
    print(events[:10])  # 打印前 10 个事件

    # 绘制事件发生的时间点
    plt.figure(figsize=(10, 4))
    plt.plot(events[:, 0] / sfreq, np.ones(len(events)), 'o-')
    plt.xlabel("时间 (s)")
    plt.title("检测到的事件")
    plt.yticks([])
    plt.grid(True)
    plt.show()
else:
    print("\n未找到事件信息。")

结论与展望

本文从宏观到微观,全面介绍了 TUH EEG 数据集。它不仅是一个庞大的数据宝库,更是一个推动神经科学研究和人工智能发展的强大平台。希望本文能够帮助您入门 TUH EEG 数据集的探索之旅。在后续的学习和研究中,您可以深入了解 mne 库的更多功能,并结合其他机器学习和深度学习技术,挖掘 TUH EEG 数据集的巨大潜力。

相关资源

如果您有任何关于 TUH EEG 数据集的疑问或心得,欢迎在评论区交流!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值