Визуализация МРТ с ЭЭГ

Beginner

This tutorial is from open-source community. Access the source code

Введение

В этом практическом занятии вы научитесь создавать визуализацию изображения МРТ с трассами ЭЭГ с использованием Python и Matplotlib. Вы узнаете, как загружать и отображать данные МРТ и ЭЭГ, строить гистограмму интенсивности изображения МРТ и рисовать трассы ЭЭГ с осью времени по оси x и каналами электродов по оси y.

Советы по использованию ВМ

После запуска ВМ перейдите в левый верхний угол и переключитесь на вкладку Ноутбук, чтобы приступить к практике в Jupyter Notebook.

Иногда вам может потребоваться подождать несколько секунд, пока Jupyter Notebook полностью загрузится. Проверка операций не может быть автоматизирована из-за ограничений Jupyter Notebook.

Если вы столкнетесь с проблемами при обучении, не стесняйтесь обращаться к Labby. Оставьте отзыв после занятия, и мы оперативно решим проблему для вас.

Загрузка данных МРТ и отображение изображения

Первым шагом является загрузка данных МРТ и отображение изображения. Мы будем использовать функцию imshow() для отображения изображения и axis('off') для удаления подписей осей.

import matplotlib.pyplot as plt
import numpy as np

fig = plt.figure("MRI_with_EEG")

## Load the MRI data (256x256 16-bit integers)
im = np.load('mri_data.npy')

## Plot the MRI image
ax0 = fig.add_subplot(2, 2, 1)
ax0.imshow(im, cmap='gray')
ax0.axis('off')

Построение гистограммы интенсивности МРТ

Далее мы построим гистограмму интенсивности МРТ с использованием функции hist(). Мы нормализуем значения интенсивности в диапазоне от 0 до 1.

## Plot the histogram of MRI intensity
ax1 = fig.add_subplot(2, 2, 2)
im = np.ravel(im)
im = im[np.nonzero(im)]  ## Игнорируем фон
im = im / im.max()  ## Нормализация
ax1.hist(im, bins=100)
ax1.set_xlabel('Intensity (a.u.)')
ax1.set_ylabel('MRI density')

Загрузка данных ЭЭГ и построение трасс

Следующим шагом является загрузка данных ЭЭГ и построение трасс. Мы будем использовать функцию fromfile() для загрузки данных из файла и LineCollection() для построения трасс. Также мы установим метки делений по оси y для каналов электродов.

## Load the EEG data
n_samples, n_rows = 800, 4
data = np.load('eeg_data.npy')
t = 10 * np.arange(n_samples) / n_samples

## Plot the EEG
ax2 = fig.add_subplot(2, 1, 2)
ax2.set_xlim(0, 10)
ax2.set_xticks(np.arange(10))
dmin = data.min()
dmax = data.max()
dr = (dmax - dmin) * 0.7  ## Сгруппируем их немного.
y0 = dmin
y1 = (n_rows - 1) * dr + dmax
ax2.set_ylim(y0, y1)

segs = []
for i in range(n_rows):
    segs.append(np.column_stack((t, data[:, i])))

offsets = np.zeros((n_rows, 2), dtype=float)
offsets[:, 1] = np.arange(n_rows) * dr

lines = LineCollection(segs, offsets=offsets, transOffset=None)
ax2.add_collection(lines)

## Set the yticks to use axes coordinates on the y-axis
ax2.set_yticks(offsets[:, 1])
ax2.set_yticklabels(['PG3', 'PG5', 'PG7', 'PG9'])
ax2.set_xlabel('Time (s)')

Отображение визуализации

Наконец, мы отобразим визуализацию с использованием функции show().

plt.tight_layout()
plt.show()

Резюме

В этом практическом занятии вы узнали, как создавать визуализацию изображения МРТ с трассами ЭЭГ с использованием Python и Matplotlib. Вы загрузили и отобразили изображение МРТ, построили гистограмму интенсивности изображения МРТ и построили трассы ЭЭГ с осью x, соответствующей времени, и осью y, соответствующей каналам электродов.