Info
data structure¶from __future__ import print_function
import mne
import os.path as op
The Info
data object is typically created
when data is imported into MNE-Python and contains details such as:
- date, subject information, and other recording details
- the sampling rate
- information about the data channels (name, type, position, etc.)
- digitized points
- sensor–head coordinate transformation matrices
and so forth. See the the API reference
for a complete list of all data fields. Once created, this object is passed
around throughout the data analysis pipeline.
It behaves as a nested Python dictionary:
# Read the info object from an example recording
info = mne.io.read_info(
op.join(mne.datasets.sample.data_path(), 'MEG', 'sample',
'sample_audvis_raw.fif'), verbose=False)
List all the fields in the info object
print('Keys in info dictionary:\n', info.keys())
Out:
('Keys in info dictionary:\n', ['acq_stim', 'kit_system_id', 'lowpass', 'description', 'xplotter_layout', 'dev_ctf_t', 'projs', 'meas_date', 'meas_id', 'subject_info', 'sfreq', 'chs', 'events', 'dev_head_t', 'line_freq', 'proj_id', 'hpi_results', 'highpass', 'hpi_subsystem', 'comps', 'custom_ref_applied', 'experimenter', 'file_id', 'proj_name', 'acq_pars', 'nchan', 'bads', 'hpi_meas', 'dig', 'ctf_head_t', 'ch_names'])
Obtain the sampling rate of the data
print(info['sfreq'], 'Hz')
Out:
(600.614990234375, 'Hz')
List all information about the first data channel
print(info['chs'][0])
Out:
{'loc': array([-0.1066 , 0.0464 , -0.0604 , -0.0127 , 0.0057 ,
-0.99990302, -0.186801 , -0.98240298, -0.0033 , -0.98232698,
0.18674099, 0.013541 ]), 'kind': 1, 'unit_mul': 0, 'ch_name': u'MEG 0113', 'range': 0.00030517578125, 'coord_frame': 1, 'unit': 201, 'cal': 3.1600000394149674e-09, 'coil_type': 3012, 'scanno': 1, 'logno': 113}
There are a number of convenience functions to obtain channel indices, given
an mne.Info
object.
Get channel indices by name
channel_indices = mne.pick_channels(info['ch_names'], ['MEG 0312', 'EEG 005'])
Get channel indices by regular expression
channel_indices = mne.pick_channels_regexp(info['ch_names'], 'MEG *')
Get channel indices by type
channel_indices = mne.pick_types(info, meg=True) # MEG only
channel_indices = mne.pick_types(info, eeg=True) # EEG only
MEG gradiometers and EEG channels
channel_indices = mne.pick_types(info, meg='grad', eeg=True)
Get a dictionary of channel indices, grouped by channel type
channel_indices_by_type = mne.io.pick.channel_indices_by_type(info)
print('The first three magnetometers:', channel_indices_by_type['mag'][:3])
Out:
('The first three magnetometers:', [2, 5, 8])
# Channel type of a specific channel
channel_type = mne.io.pick.channel_type(info, 75)
print('Channel #75 is of type:', channel_type)
Out:
('Channel #75 is of type:', 'grad')
Channel types of a collection of channels
meg_channels = mne.pick_types(info, meg=True)[:10]
channel_types = [mne.io.pick.channel_type(info, ch) for ch in meg_channels]
print('First 10 MEG channels are of type:\n', channel_types)
Out:
('First 10 MEG channels are of type:\n', ['grad', 'grad', 'mag', 'grad', 'grad', 'mag', 'grad', 'grad', 'mag', 'grad'])
It is possible to limit the info structure to only include a subset of
channels with the mne.pick_info()
function:
# Only keep EEG channels
eeg_indices = mne.pick_types(info, meg=False, eeg=True)
reduced_info = mne.pick_info(info, eeg_indices)
print(reduced_info)
Out:
<Info | 23 non-empty fields
acq_pars : unicode | 13886 items
bads : list | 0 items
ch_names : list | EEG 001, EEG 002, EEG 003, EEG 004, EEG 005, EEG 006, ...
chs : list | 59 items (EEG: 59)
comps : list | 0 items
custom_ref_applied : bool | False
description : unicode | 49 items
dev_head_t : 'mne.transforms.Transform | 3 items
dig : list | 146 items
events : list | 1 items
experimenter : unicode | 3 items
file_id : dict | 4 items
highpass : float | 0.10000000149 Hz
hpi_meas : list | 1 items
hpi_results : list | 1 items
lowpass : float | 172.176300049 Hz
meas_date : numpy.ndarray | 2002-12-03 19:01:10
meas_id : dict | 4 items
nchan : int | 59
proj_id : numpy.ndarray | 1 items
proj_name : unicode | 4 items
projs : list | PCA-v1: off, PCA-v2: off, PCA-v3: off
sfreq : float | 600.614990234 Hz
acq_stim : NoneType
ctf_head_t : NoneType
dev_ctf_t : NoneType
hpi_subsystem : NoneType
kit_system_id : NoneType
line_freq : NoneType
subject_info : NoneType
xplotter_layout : NoneType
>
Total running time of the script: ( 0 minutes 0.057 seconds)