Tutorial 11: Bad channels
Authors: Francois Tadel, Elizabeth Bock, Sylvain Baillet
It is common during the acquisition to have a few sensors that are recording values that will not be usable in the data analysis. In MEG, a sensor can be damaged or unstable. In EEG, the quality of the connection between the electrode and the scalp is sometimes too low to record anything interesting.
It is important to identify the sensors with poor signal quality at an early stage of the pre-processing, because the efficiency of the artifact removal will depend on it. If you try to remove blink and cardiac artifacts with some bad sensors it may not work very well, and worse, it will propagate the bad signals to all the channels.
This tutorial will explain the various ways we have to handle the bad channels. Note that the recordings from this auditory experiment do not contain any bad sensors, therefore the entire tutorial is optional. If you are not interested, you can skip it and will still be able to follow the next tutorials.
Identifying bad channels
Some bad channels are easy to detect, their signals look either completely off or totally flat compared with the other surrounding sensors. Some others are more difficult to identify. The examples below are taken from other datasets.
The power spectrum density (PSD) is usually a good way to spot a few bad channels, this is why we always recommend to compute it for all the datasets:
Simply looking at the signals traces, some channels may appear generally noisier than the others:
Looking at a 2D sensor topography, if one sensor shows very different values from its neighbors for extended periods of time, you can doubt of its quality:
- Double-click on the recordings for run #01 to open the MEG sensors.
Right-click on the time series figure > View topography (or press Ctrl+T).
Right-click on the topography figure > Channels > Display sensors (or press Ctrl+E).
If you can't see anything because the topography figure is too small, you can change the way the figures are automatically arranged. In the top-right corner of the Brainstorm figure, select the menu "Window layout options > Tiled".
You can select one channel by clicking on its signal or on the dot representing it in the topography figure. Note that the sensor selection is automatically reported to the other figure.
You can select multiple sensors at the same time the topography figure.
Right-click on the figure, then hold the mouse button and move the mouse.
Select a few sensors, then right-click on one of the figures and check out the Channels menu:
View selected: Show the time series of the selected sensors.
Mark selected as bad: Remove sensors from the display and all the further computations.
Mark non-selected as bad: Keep only the selected channels.
Reset selection: Unselect all the selected sensors.
Mark all channels as good: Brings back all the channels to display.
Edit good/bad channels: Opens an interface that looks like the channel editor, but with one extra column to edit the status (good or bad) of each channel.
Marking bad channels
Select a few channels, right-click > Channels > Mark selected as bad (or press the Delete key).
The selected channels disappear from the two views. In the time series figure, the signals are not visible anymore, in the topography the corresponding dots disappear and the values of the magnetic fields around the missing sensors get re-interpolated based on what is left.
With the time series figure, you can display the signals that have been tagged as bad.
In the Record tab, select the montage "Bad channels".
In this view, you cannot select the channels, they are not available anymore.
Right-click on a figure > Channels > Edit good/bad channels.
This menu open a window very similar to the Channel Editor window, with additional green and red dots to indicate the status of each channel. Click on the dot to switch it to good or bad.
From the database explorer
Many options to change the list of bad channels are available from the database explorer.
The menus are available if you right-click one data file (or link to raw file). In this case, the selected operation is applied only on the selected file.
The same menus are also available for all the folders. In this case, the selected operation is applied recursively to all the data files (and links to raw files) that are found in the folder.
With this batching ability of the database explorer, you can quickly tag some bad channels in all the recordings of a subject or for the entire protocol. You can also get a quick overview of all the bad channels in all the files at once with the menu View all bad channels.
Restore all the good channels before moving to the next tutorial. For instance, right-click on the protocol folder TutorialIntroduction > Good/bad channels > Mark all channels as good.
Epoching and averaging
The list of bad channels is saved separately for each dataset.
At this stage of the analysis, the database contains only links to continuous files. When you import epochs from a continuous file, the list of bad channels will be copied from the raw file to all the imported data files.
Then you will be able to redefine this list for each epoch individually, tagging more channels as bad, or including back the ones that are ok. This way it is possible to exclude from the analysis the channels that are too noisy in a few trials only, for instance because of some movement artifacts.
When averaging, if an epoch contains one bad channel, this bad channel is excluded from the average but all the other channels are kept. If the same channel is good in other trials, it will be considered as good in the average. This means that not all the channels have the same number of trials for calculating the average.
This may cause the different channels of an averaged file to have different signal-to-noise ratios, which may lead to confusing results. However, we decided to implement the average in this way to be able to keep more data in the studies with a low number of trials and a lot of noise.
On the hard drive
The list of bad channels is saved for each data file separately, in the field ChannelFlag.
This vector indicates for each channel #i if it is good (ChannelFlag(i)= 1) or bad (ChannelFlag(i)= -1).
Right-click on a link to a continuous file > File > View file contents:
This information is duplicated in the sFile structure (F field) in order to be passed easily to the low-level reading functions. If you are planning to modify the list of bad channels manually, you need to change two fields: mat.ChannelFlag and mat.F.channelflag