Введение
В этом практическом занятии вы научитесь создавать визуализацию изображения МРТ с трассами ЭЭГ с использованием 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, соответствующей каналам электродов.