Visualização de RM com EEG

Beginner

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

Introdução

Este laboratório irá guiá-lo através da criação de uma visualização de uma imagem de ressonância magnética (MRI) com traços de eletroencefalograma (EEG) usando Python Matplotlib. Você aprenderá como carregar e exibir dados de MRI e EEG, plotar um histograma de intensidade da imagem de MRI e plotar traços de EEG com o tempo no eixo x e os canais de eletrodos no eixo y.

Dicas para a VM (Máquina Virtual)

Após a inicialização da VM, clique no canto superior esquerdo para mudar para a aba Notebook e acessar o Jupyter Notebook para praticar.

Às vezes, pode ser necessário aguardar alguns segundos para que o Jupyter Notebook termine de carregar. A validação das operações não pode ser automatizada devido a limitações no Jupyter Notebook.

Se você enfrentar problemas durante o aprendizado, sinta-se à vontade para perguntar ao Labby. Forneça feedback após a sessão, e resolveremos o problema prontamente para você.

Carregar Dados de MRI e Exibir a Imagem

O primeiro passo é carregar os dados de MRI e exibir a imagem. Usaremos a função imshow() para exibir a imagem e axis('off') para remover os rótulos dos eixos.

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')

Plotar o Histograma da Intensidade de MRI

Em seguida, plotaremos o histograma da intensidade de MRI usando a função hist(). Normalizaremos os valores de intensidade para variar entre 0 e 1.

## Plot the histogram of MRI intensity
ax1 = fig.add_subplot(2, 2, 2)
im = np.ravel(im)
im = im[np.nonzero(im)]  ## Ignore the background
im = im / im.max()  ## Normalize
ax1.hist(im, bins=100)
ax1.set_xlabel('Intensity (a.u.)')
ax1.set_ylabel('MRI density')

Carregar Dados de EEG e Plotar Traços

O próximo passo é carregar os dados de EEG e plotar os traços. Usaremos a função fromfile() para carregar os dados de um arquivo e LineCollection() para plotar os traços. Também definiremos os rótulos de marcação do eixo y para os canais dos eletrodos.

## 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  ## Crowd them a bit.
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)')

Exibir a Visualização

Finalmente, exibiremos a visualização usando a função show().

plt.tight_layout()
plt.show()

Resumo

Neste laboratório, você aprendeu como criar uma visualização de uma imagem de RM (Ressonância Magnética) com traços de EEG usando Python Matplotlib. Você carregou e exibiu a imagem de RM, plotou um histograma de intensidade da imagem de RM e plotou traços de EEG com o tempo no eixo x e os canais dos eletrodos no eixo y.