- MNE version: 1.1.0
- operating system: Windows 10
Hi erverybody !
First of all I want to deeply thank everybody who contributes to this forum and the different tutorials available on the website
I started from scratch few days ago and, little by little, I get to have an overview of all the possibilities MNE gives us !
I’m working on some EEG datas recorded from one subject performing some hand motor imagery (IM) (wrist extension) and physical practice (PP) of the same mouvement.
My first objective is to visualize / compare the PSD for some band of frequency in different areas of the brain, but mainly over C3, CZ, C4 in the condition of PP vs the condition of IM.
To begin I load my raw data using a gdf file : 59 minutes recording (!), 32 channels EEG.
First problem : I probably have some kind of unit conversion problem somewhere between recording and data loading ! when I simply plot the raw data (see below), the signal amplitude is really low ! I have to zoom in before seeing a signal, or to re define the value of “eeg” in dict_plot (usually set on 20e-6, I have to set it to 20e-11 in order to have a signal without zooming).
For some reason I have 50 channels, but channels 33 to 50 show an horrible signal that doesn’t look like anything (see below).
So I added them to bad channels.
My GDF file does not contain any information about EEG electrodes location, so I used a generic (built-in) standard montage using
I renamed the channels name using
raw.rename and was then able to set this standard montage to my raw data using
These first steps allowed me to plot the PSD of the raw signal for each channels
Then I filtered my signal using a low pass (40Hz) and high pass filter (1Hz)
Second question : I am well below the power-line frequency (50 Hz) so I don’t need any notch filter, right ?
Next step was to create Epochs object based on this raw file.
I don’t have a stim channels, but do have 3 types of annotations corresponding to : “Beginning of Mental imagery”, “Beginning of physical practice”, “stop”.
mne.Events_from_annotations, I was able to “extract” the event of interest, which gave me 162 events:
- 12 tasks of PP,
- 69 tasks of IM,
- and 81 “stop” annotations
From this events, I was able to “epoch” my data (5 seconds epochs, from -1s to +4s around the event of interest), and I used a rejection criteria to reject any epoch where peak-to-peak signal amplitude is beyond reasonable limit.
I saved the 69 epochs correspond to IM in a new objects “mi_epochs” and the 12 epochs corresponding to PP in an object “pp_epochs”
To clean up my signal, I’m kindoff confused on the next steps to operate.
I do not have EOG channel or ECG channels which make it difficult to remove these artifacts.
Is it always necessary to set a reference electrode ? If no such electrode had been set during recordings, should I use an average reference ?
Can I apply ICA to remove blink artifact using ica.find_bads_eog, using the channel Fp1 ?
Is there any other way to improve the signal / noise ratio in my case ?
Then, i’m going to get an estimate of evoked responses for the 2 conditions (MI and PP) by averaging together the epochs created using
And I will be able to plot some data from this epoch / evoked objects such as psd, psd topomap, evoked difference etc.
It might be a good start to compare both conditions…
But before that, i’m really not sure of which preprocessing steps I have to go through for a good preparation of my data …
Some help would be greatly appreciated