top of page

GE: MNE Python

Se você nunca fez ou acompanhou processamento de EEG/ERP ou sabe pouco, recomendo antes de fazer o estudo de MNE, fazer pelo menos Chapter 1 e 2 do curso online de https://courses.erpinfo.org/courses/Intro-to-ERPs (a inscrição é de graça).

Também é bom dar uma olhada para todos os recursos no site de Acesin:

https://acesin.letras.ufrj.br/curso/erp-workshop-2022/

GE: MNE Python

sessão 1

sessão 2

sessão 3

sessão 4

sessão 5

sessão 6

Sessão 1: Familiarização com plataforma e MNE

Passo 1: baixar MNE: https://mne.tools/stable/install/index.html

Passo 2: familiar-se com o programa: Overview of MEG/EEG analysis with MNE-Python https://mne.tools/stable/auto_tutorials/intro/10_overview.html#sphx-glr-auto-tutorials-intro-10-overview-py

 

Dicas:

- recomendo que dê uma olhada para o powerpoint que anexei: depois vai fazer sentido!

- com tudo que você faz, paciência! As coisas levam tempo para instalar e para processar. O programa leva tempo para abrir.

- aborda seu primeiro contato com MNE como seguir uma receita cegamente. Da mesma forma que conseguimos fazer uma 

bolo seguindo a receita sem entender os detalhes químicos e culinários, conseguimos seguir os passos sem inicialmente entender 

exatamente o que está acontecendo.

- Os dados 'sample' que o script puxa para baixar e pesado! Veja se você tem esse 1,6GB no seu computador.

- se dá o tempo de conhecer o programa mexendo e errando, às vezes encontrar a janela certa ou o botão certa pode levar um

tempão, mas não desista! Isso faz com que você aos poucos se familiariza com o programa.

- na minha instalação, não apareceram ícones para iniciar o programa, busquei no explorador de arquivos o MNE, e apareceu o ícone para Spyder (MNE). Percebi que esse programa é uma espécie de RStudio. Ou seja, é uma interface um pouco mais amigável que tem 3 janelas importantes: o terminal em que você vai teclando ou copiando os comandos e que você depois pode salvar como script, um console, no qual são executados os comandos, e uma janela em que você pode trocar vendo figuras (gráficos ou plots que gerou) ou variáveis salvas (são os dados que você cria no script e fica listado lá os dados (objetos) que salvou). Tem também uma janela tipo pop up na qual aparecem visualização dos dados de EEG (ou MEG).

-Para quem quiser se familiarizar com Spyder, que é a interface de usuário que usaremos de Python, assista: https://youtu.be/E2Dap5SfXkI?si=o7E993cncs0LzpMD  (Esse tutorial não ensina processar EEG, ele explica como funciona o programa/interface Spyder)

- Fiz um script que você pode usar pronto, mas recomendo que você monta o seu a partir do tutorial, pois você pode anotar comentários (precedidos por #), que podem te ajudar posteriormente a recuperar seu processo de aprendizagem.

Coloco aqui o script e um powerpoint com alguns screenshots e anotações que talvez possam ser úteis.

script: https://drive.google.com/file/d/1vWbZmOjxdou8idduEQtrSS6HNiCuKn1y/view?usp=sharing

powerpoint: https://docs.google.com/presentation/d/11Z0Ec0TZ_Dezu1XBCf8dUtiCuAP5XI75/edit?usp=sharing&ouid=117719387071468240758&rtpof=true&sd=true

Passo 3: importar dados do formato do Brainvision (nosso equipamento de EEG)

https://mne.tools/mne-bids/stable/auto_examples/rename_brainvision_files.html#sphx-glr-auto-examples-rename-brainvision-files-py

dados de teste nossos: Marije_TEST

Observe:

- para eu fazer esse tutorial, primeiro eu queria fazer com o exemplo deles para saber o que está acontecendo / o que fazer;

- para isso eu precisei liberar espaço no meu HD. Então deletei o sample que baixei no tutorial anterior antes de baixar os exemplos do tutorial atual.

Depois: vamos tentar plotar:

https://mne.tools/stable/auto_tutorials/raw/10_raw_overview.html#sphx-glr-auto-tutorials-raw-10-raw-overview-py

 

powerpoint com anotações: https://docs.google.com/presentation/d/1JXktRbKh5WU2zG3HKymZsugEyEySVGc0/edit?usp=sharing&ouid=117719387071468240758&rtpof=true&sd=true

script como copiado do tutorial para renomear dados do Brainvision: https://drive.google.com/file/d/1gpvasSuLprOPrbVik3d3MSZ3B2VlOj6y/view?usp=sharing 

script como copiado (com algumas alterações) para fazer algumas operações modificando os dados raw:

https://drive.google.com/file/d/1qYGZyi5mtZ9dS86HBDn_LT_QFlPV2xnP/view?usp=sharing

script que escrevi para testar importar e mexer com dados meus do BrainVision:

https://drive.google.com/file/d/1_W8SySvpXDsCS-8QxQDDAB3SjTMAC3KB/view?usp=drive_link

Passo 4: Working with events

https://mne.tools/stable/auto_tutorials/raw/20_event_arrays.html

Desta vez não fiz powerpoint, mas fiz alguns comentários no script para começar a entender melhor a estrutura dos comandos

script: https://drive.google.com/file/d/1r7MtQLIbyfGrTzv0OIFMWXtzh-d7SF3x/view?usp=sharing

Fiz uma versão do script em que fui mexendo nos nomes das variáveis para entender a estrutura do script:

https://drive.google.com/file/d/1ukNaPAt9Y8MwE2rrR27U4qVOZLwkfR7Y/view?usp=sharing

Informação importante!

  • Many of the MNE-Python objects have methods that operate in-place to save memory (i.e., the data in the Raw object is changed when you call raw.filter(lfreq, hfreq)). If you do not want this, it is always possible to first call the object’s copy() method (e.g., filtered_raw = raw.copy().filter(lfreq, hfreq)). In addition, some MNE-Python functions have a boolean copy parameter that achieves the same purpose.

-> uma outra solução para isso é sempre trabalhar em cima de uma pasta de arquivos copiados, deixando sempre uma pasta com arquivos crus virgens!

Recomendo também ler (sobre eventos):

https://mne.tools/stable/auto_tutorials/intro/20_events_from_raw.html#tut-events-vs-annotations

Consegui montar um script que importa arquivos de Brainvision e que lê os eventos codificados nesses arquivos:

https://drive.google.com/file/d/1AQMAFhTu8Dda0nDqwOumlOJMyJwVr1ES/view?usp=sharing

fonte: https://pybv.readthedocs.io/en/stable/

Passo 5: Annotating continuous data

https://mne.tools/stable/auto_tutorials/raw/30_annotate_raw.html

um termo que eu ficava encontrando e não estava sabendo o que era:

float: "A float in Python is a numeric data type that is used to represent real numbers. It allows you to work with numbers

that have a decimal point, providing a way to handle real numbers in your code. "

Acho que dessa seção, vamos entender mais tarde a sua utilidade.

Só fiz para ver o script rodar e entender os comandos de forma rudimentar. 

https://drive.google.com/file/d/1wq-WnNSeelBvZwO_Hx3xJ5gjGmxz1s1J/view?usp=sharing

Passo 6: Built-in plotting methods for Raw objects

https://mne.tools/stable/auto_tutorials/raw/40_visualize_raw.html

powerpoint: https://docs.google.com/presentation/d/1PSSaVI2dTcBFdebddvp8-wblgf3Wptlb/edit?usp=sharing&ouid=117719387071468240758&rtpof=true&sd=true

script: https://drive.google.com/file/d/1t-kylAvSpYEgSReR-CIIyUqe7qgpAGsS/view?usp=sharing

script com aplicação dos comandos para EEG Brainproducts: https://drive.google.com/file/d/16tXKQv3uyFyXz93WRCMb4orsvjSY-Qhb/view?usp=sharing

Ainda veja: Working with sensor locations

Isso é importante, pois precisamos importar ou chamar a localização dos sensores (canais/eletrodos) específicos da montagem de 

Brainproducts (nosso EEG)

Sessão 2: Preprocessamento

Passo 1: Overview of artifact detection

https://mne.tools/stable/auto_tutorials/preprocessing/10_preprocessing_overview.html#sphx-glr-auto-tutorials-preprocessing-10-preprocessing-overview-py

script feito a partir do tutorial: https://drive.google.com/file/d/16glJ_OfhQxFmF5IQOJQuOAMhxoAKcmHH/view?usp=sharing

script para a nossa amostra do Brain: https://drive.google.com/file/d/1cqT8wB3lpWN9cvXu7YlBUjs6vPfywvWO/view?usp=sharing

Passo 2: Handling bad channels

https://mne.tools/stable/auto_tutorials/preprocessing/15_handling_bad_channels.html

DICA:

If you want to build an interactive bad-channel-marking step into an analysis script, be sure to include the parameter block=True in your call to raw.plot() or epochs.plot(). This will pause the script while the plot is open, giving you time to mark bad channels before subsequent analysis or plotting steps are executed. This can be especially helpful if your script loops over multiple subjects.

#normalmente queremos que o script roda ´semi´ automaticamente, processando um sujeito depois do outro

mas se não 'pausamos' a execução do script na hora de selecionar canais ruins ou trechos ruins manualmente, essas seleções não serão gravadas para serem consideradas nos consecutivos passos do script.

script feito a partir do tutorial: https://drive.google.com/file/d/16glJ_OfhQxFmF5IQOJQuOAMhxoAKcmHH/view?usp=sharing

script para a nossa amostra do Brain: https://drive.google.com/file/d/1cqT8wB3lpWN9cvXu7YlBUjs6vPfywvWO/view?usp=sharing

Passo 3: Rejecting bad data spans and breaks + 

               Filtering and resampling data

               Setting the EEG reference

https://mne.tools/stable/auto_tutorials/preprocessing/20_rejecting_bad_data.html

Pulei várias partes desse trecho do tutorial para focar naquelas operações relevantes para o processamento que costumamos 

fazer. Nos scripts eu detalhei isso de forma mais clara: 

https://drive.google.com/file/d/1CBLKJrtjzHClMOCm8BaitD0yeTt5avBu/view?usp=sharing

https://drive.google.com/file/d/1mz5Ly5n0Tn8zYoa5tBjk44jIsBELxNNI/view?usp=sharing

https://drive.google.com/file/d/1sfnBkk06PzOOf4Uij1wvmenfUZRjqm7_/view?usp=sharing

Exercício para dia 28/02:
-importar dados Diane_TESTE
-checar informações: - num de canais, nomes de canais, nome de eventos
- filtrar passa alto 0.01Hz
- filtrar passa baixo 100Hz
- filtrar notch 60Hz
- marcar trechos ruins (grosso), ex. de pause entre blocos
- marcar canais ruins
- substituir canais ruins

Informações sobre costumamos fazer preprocessamento no lab:

http://acesin.letras.ufrj.br/wp-content/uploads/2023/08/cursoeeg_3o_dia.pdf

Anchor 1
Anchor 2
bottom of page