Note
Click here to download the full example code
Compute source power using DICS beamfomer¶
Compute a Dynamic Imaging of Coherent Sources (DICS) 1 filter from single-trial activity to estimate source power across a frequency band. This example demonstrates how to source localize the event-related synchronization (ERS) of beta band activity in the “somato” dataset.
References¶
- 1
Gross et al. Dynamic imaging of coherent sources: Studying neural interactions in the human brain. PNAS (2001) vol. 98 (2) pp. 694-699
# Author: Marijn van Vliet <w.m.vanvliet@gmail.com>
# Roman Goj <roman.goj@gmail.com>
# Denis Engemann <denis.engemann@gmail.com>
#
# License: BSD (3-clause)
import numpy as np
import mne
from mne.datasets import somato
from mne.time_frequency import csd_morlet
from mne.beamformer import make_dics, apply_dics_csd
print(__doc__)
Out:
Reading the raw data and creating epochs:
data_path = somato.data_path()
raw_fname = data_path + '/MEG/somato/sef_raw_sss.fif'
fname_fwd = data_path + '/MEG/somato/somato-meg-oct-6-fwd.fif'
subjects_dir = data_path + '/subjects'
raw = mne.io.read_raw_fif(raw_fname)
# Set picks, use a single sensor type
picks = mne.pick_types(raw.info, meg='grad', exclude='bads')
# Read epochs
events = mne.find_events(raw)
epochs = mne.Epochs(raw, events, event_id=1, tmin=-1.5, tmax=2, picks=picks,
preload=True)
# Read forward operator
fwd = mne.read_forward_solution(fname_fwd)
Out:
Opening raw data file /home/circleci/mne_data/MNE-somato-data/MEG/somato/sef_raw_sss.fif...
Range : 237600 ... 506999 = 791.189 ... 1688.266 secs
Ready.
Current compensation grade : 0
111 events found
Event IDs: [1]
111 matching events found
Applying baseline correction (mode: mean)
Not setting metadata
0 projection items activated
Loading data for 111 events and 1052 original time points ...
0 bad epochs dropped
Reading forward solution from /home/circleci/mne_data/MNE-somato-data/MEG/somato/somato-meg-oct-6-fwd.fif...
Reading a source space...
[done]
Reading a source space...
[done]
2 source spaces read
Desired named matrix (kind = 3523) not available
Read MEG forward solution (8155 sources, 306 channels, free orientations)
Source spaces transformed to the forward solution coordinate frame
We are interested in the beta band. Define a range of frequencies, using a log scale, from 12 to 30 Hz.
freqs = np.logspace(np.log10(12), np.log10(30), 9)
Computing the cross-spectral density matrix for the beta frequency band, for different time intervals. We use a decim value of 20 to speed up the computation in this example at the loss of accuracy.
csd = csd_morlet(epochs, freqs, tmin=-1, tmax=1.5, decim=20)
csd_baseline = csd_morlet(epochs, freqs, tmin=-1, tmax=0, decim=20)
# ERS activity starts at 0.5 seconds after stimulus onset
csd_ers = csd_morlet(epochs, freqs, tmin=0.5, tmax=1.5, decim=20)
Out:
Computing cross-spectral density from epochs...
Computing CSD matrix for epoch 1
Computing CSD matrix for epoch 2
Computing CSD matrix for epoch 3
Computing CSD matrix for epoch 4
Computing CSD matrix for epoch 5
Computing CSD matrix for epoch 6
Computing CSD matrix for epoch 7
Computing CSD matrix for epoch 8
Computing CSD matrix for epoch 9
Computing CSD matrix for epoch 10
Computing CSD matrix for epoch 11
Computing CSD matrix for epoch 12
Computing CSD matrix for epoch 13
Computing CSD matrix for epoch 14
Computing CSD matrix for epoch 15
Computing CSD matrix for epoch 16
Computing CSD matrix for epoch 17
Computing CSD matrix for epoch 18
Computing CSD matrix for epoch 19
Computing CSD matrix for epoch 20
Computing CSD matrix for epoch 21
Computing CSD matrix for epoch 22
Computing CSD matrix for epoch 23
Computing CSD matrix for epoch 24
Computing CSD matrix for epoch 25
Computing CSD matrix for epoch 26
Computing CSD matrix for epoch 27
Computing CSD matrix for epoch 28
Computing CSD matrix for epoch 29
Computing CSD matrix for epoch 30
Computing CSD matrix for epoch 31
Computing CSD matrix for epoch 32
Computing CSD matrix for epoch 33
Computing CSD matrix for epoch 34
Computing CSD matrix for epoch 35
Computing CSD matrix for epoch 36
Computing CSD matrix for epoch 37
Computing CSD matrix for epoch 38
Computing CSD matrix for epoch 39
Computing CSD matrix for epoch 40
Computing CSD matrix for epoch 41
Computing CSD matrix for epoch 42
Computing CSD matrix for epoch 43
Computing CSD matrix for epoch 44
Computing CSD matrix for epoch 45
Computing CSD matrix for epoch 46
Computing CSD matrix for epoch 47
Computing CSD matrix for epoch 48
Computing CSD matrix for epoch 49
Computing CSD matrix for epoch 50
Computing CSD matrix for epoch 51
Computing CSD matrix for epoch 52
Computing CSD matrix for epoch 53
Computing CSD matrix for epoch 54
Computing CSD matrix for epoch 55
Computing CSD matrix for epoch 56
Computing CSD matrix for epoch 57
Computing CSD matrix for epoch 58
Computing CSD matrix for epoch 59
Computing CSD matrix for epoch 60
Computing CSD matrix for epoch 61
Computing CSD matrix for epoch 62
Computing CSD matrix for epoch 63
Computing CSD matrix for epoch 64
Computing CSD matrix for epoch 65
Computing CSD matrix for epoch 66
Computing CSD matrix for epoch 67
Computing CSD matrix for epoch 68
Computing CSD matrix for epoch 69
Computing CSD matrix for epoch 70
Computing CSD matrix for epoch 71
Computing CSD matrix for epoch 72
Computing CSD matrix for epoch 73
Computing CSD matrix for epoch 74
Computing CSD matrix for epoch 75
Computing CSD matrix for epoch 76
Computing CSD matrix for epoch 77
Computing CSD matrix for epoch 78
Computing CSD matrix for epoch 79
Computing CSD matrix for epoch 80
Computing CSD matrix for epoch 81
Computing CSD matrix for epoch 82
Computing CSD matrix for epoch 83
Computing CSD matrix for epoch 84
Computing CSD matrix for epoch 85
Computing CSD matrix for epoch 86
Computing CSD matrix for epoch 87
Computing CSD matrix for epoch 88
Computing CSD matrix for epoch 89
Computing CSD matrix for epoch 90
Computing CSD matrix for epoch 91
Computing CSD matrix for epoch 92
Computing CSD matrix for epoch 93
Computing CSD matrix for epoch 94
Computing CSD matrix for epoch 95
Computing CSD matrix for epoch 96
Computing CSD matrix for epoch 97
Computing CSD matrix for epoch 98
Computing CSD matrix for epoch 99
Computing CSD matrix for epoch 100
Computing CSD matrix for epoch 101
Computing CSD matrix for epoch 102
Computing CSD matrix for epoch 103
Computing CSD matrix for epoch 104
Computing CSD matrix for epoch 105
Computing CSD matrix for epoch 106
Computing CSD matrix for epoch 107
Computing CSD matrix for epoch 108
Computing CSD matrix for epoch 109
Computing CSD matrix for epoch 110
Computing CSD matrix for epoch 111
[done]
Computing cross-spectral density from epochs...
Computing CSD matrix for epoch 1
Computing CSD matrix for epoch 2
Computing CSD matrix for epoch 3
Computing CSD matrix for epoch 4
Computing CSD matrix for epoch 5
Computing CSD matrix for epoch 6
Computing CSD matrix for epoch 7
Computing CSD matrix for epoch 8
Computing CSD matrix for epoch 9
Computing CSD matrix for epoch 10
Computing CSD matrix for epoch 11
Computing CSD matrix for epoch 12
Computing CSD matrix for epoch 13
Computing CSD matrix for epoch 14
Computing CSD matrix for epoch 15
Computing CSD matrix for epoch 16
Computing CSD matrix for epoch 17
Computing CSD matrix for epoch 18
Computing CSD matrix for epoch 19
Computing CSD matrix for epoch 20
Computing CSD matrix for epoch 21
Computing CSD matrix for epoch 22
Computing CSD matrix for epoch 23
Computing CSD matrix for epoch 24
Computing CSD matrix for epoch 25
Computing CSD matrix for epoch 26
Computing CSD matrix for epoch 27
Computing CSD matrix for epoch 28
Computing CSD matrix for epoch 29
Computing CSD matrix for epoch 30
Computing CSD matrix for epoch 31
Computing CSD matrix for epoch 32
Computing CSD matrix for epoch 33
Computing CSD matrix for epoch 34
Computing CSD matrix for epoch 35
Computing CSD matrix for epoch 36
Computing CSD matrix for epoch 37
Computing CSD matrix for epoch 38
Computing CSD matrix for epoch 39
Computing CSD matrix for epoch 40
Computing CSD matrix for epoch 41
Computing CSD matrix for epoch 42
Computing CSD matrix for epoch 43
Computing CSD matrix for epoch 44
Computing CSD matrix for epoch 45
Computing CSD matrix for epoch 46
Computing CSD matrix for epoch 47
Computing CSD matrix for epoch 48
Computing CSD matrix for epoch 49
Computing CSD matrix for epoch 50
Computing CSD matrix for epoch 51
Computing CSD matrix for epoch 52
Computing CSD matrix for epoch 53
Computing CSD matrix for epoch 54
Computing CSD matrix for epoch 55
Computing CSD matrix for epoch 56
Computing CSD matrix for epoch 57
Computing CSD matrix for epoch 58
Computing CSD matrix for epoch 59
Computing CSD matrix for epoch 60
Computing CSD matrix for epoch 61
Computing CSD matrix for epoch 62
Computing CSD matrix for epoch 63
Computing CSD matrix for epoch 64
Computing CSD matrix for epoch 65
Computing CSD matrix for epoch 66
Computing CSD matrix for epoch 67
Computing CSD matrix for epoch 68
Computing CSD matrix for epoch 69
Computing CSD matrix for epoch 70
Computing CSD matrix for epoch 71
Computing CSD matrix for epoch 72
Computing CSD matrix for epoch 73
Computing CSD matrix for epoch 74
Computing CSD matrix for epoch 75
Computing CSD matrix for epoch 76
Computing CSD matrix for epoch 77
Computing CSD matrix for epoch 78
Computing CSD matrix for epoch 79
Computing CSD matrix for epoch 80
Computing CSD matrix for epoch 81
Computing CSD matrix for epoch 82
Computing CSD matrix for epoch 83
Computing CSD matrix for epoch 84
Computing CSD matrix for epoch 85
Computing CSD matrix for epoch 86
Computing CSD matrix for epoch 87
Computing CSD matrix for epoch 88
Computing CSD matrix for epoch 89
Computing CSD matrix for epoch 90
Computing CSD matrix for epoch 91
Computing CSD matrix for epoch 92
Computing CSD matrix for epoch 93
Computing CSD matrix for epoch 94
Computing CSD matrix for epoch 95
Computing CSD matrix for epoch 96
Computing CSD matrix for epoch 97
Computing CSD matrix for epoch 98
Computing CSD matrix for epoch 99
Computing CSD matrix for epoch 100
Computing CSD matrix for epoch 101
Computing CSD matrix for epoch 102
Computing CSD matrix for epoch 103
Computing CSD matrix for epoch 104
Computing CSD matrix for epoch 105
Computing CSD matrix for epoch 106
Computing CSD matrix for epoch 107
Computing CSD matrix for epoch 108
Computing CSD matrix for epoch 109
Computing CSD matrix for epoch 110
Computing CSD matrix for epoch 111
[done]
Computing cross-spectral density from epochs...
Computing CSD matrix for epoch 1
Computing CSD matrix for epoch 2
Computing CSD matrix for epoch 3
Computing CSD matrix for epoch 4
Computing CSD matrix for epoch 5
Computing CSD matrix for epoch 6
Computing CSD matrix for epoch 7
Computing CSD matrix for epoch 8
Computing CSD matrix for epoch 9
Computing CSD matrix for epoch 10
Computing CSD matrix for epoch 11
Computing CSD matrix for epoch 12
Computing CSD matrix for epoch 13
Computing CSD matrix for epoch 14
Computing CSD matrix for epoch 15
Computing CSD matrix for epoch 16
Computing CSD matrix for epoch 17
Computing CSD matrix for epoch 18
Computing CSD matrix for epoch 19
Computing CSD matrix for epoch 20
Computing CSD matrix for epoch 21
Computing CSD matrix for epoch 22
Computing CSD matrix for epoch 23
Computing CSD matrix for epoch 24
Computing CSD matrix for epoch 25
Computing CSD matrix for epoch 26
Computing CSD matrix for epoch 27
Computing CSD matrix for epoch 28
Computing CSD matrix for epoch 29
Computing CSD matrix for epoch 30
Computing CSD matrix for epoch 31
Computing CSD matrix for epoch 32
Computing CSD matrix for epoch 33
Computing CSD matrix for epoch 34
Computing CSD matrix for epoch 35
Computing CSD matrix for epoch 36
Computing CSD matrix for epoch 37
Computing CSD matrix for epoch 38
Computing CSD matrix for epoch 39
Computing CSD matrix for epoch 40
Computing CSD matrix for epoch 41
Computing CSD matrix for epoch 42
Computing CSD matrix for epoch 43
Computing CSD matrix for epoch 44
Computing CSD matrix for epoch 45
Computing CSD matrix for epoch 46
Computing CSD matrix for epoch 47
Computing CSD matrix for epoch 48
Computing CSD matrix for epoch 49
Computing CSD matrix for epoch 50
Computing CSD matrix for epoch 51
Computing CSD matrix for epoch 52
Computing CSD matrix for epoch 53
Computing CSD matrix for epoch 54
Computing CSD matrix for epoch 55
Computing CSD matrix for epoch 56
Computing CSD matrix for epoch 57
Computing CSD matrix for epoch 58
Computing CSD matrix for epoch 59
Computing CSD matrix for epoch 60
Computing CSD matrix for epoch 61
Computing CSD matrix for epoch 62
Computing CSD matrix for epoch 63
Computing CSD matrix for epoch 64
Computing CSD matrix for epoch 65
Computing CSD matrix for epoch 66
Computing CSD matrix for epoch 67
Computing CSD matrix for epoch 68
Computing CSD matrix for epoch 69
Computing CSD matrix for epoch 70
Computing CSD matrix for epoch 71
Computing CSD matrix for epoch 72
Computing CSD matrix for epoch 73
Computing CSD matrix for epoch 74
Computing CSD matrix for epoch 75
Computing CSD matrix for epoch 76
Computing CSD matrix for epoch 77
Computing CSD matrix for epoch 78
Computing CSD matrix for epoch 79
Computing CSD matrix for epoch 80
Computing CSD matrix for epoch 81
Computing CSD matrix for epoch 82
Computing CSD matrix for epoch 83
Computing CSD matrix for epoch 84
Computing CSD matrix for epoch 85
Computing CSD matrix for epoch 86
Computing CSD matrix for epoch 87
Computing CSD matrix for epoch 88
Computing CSD matrix for epoch 89
Computing CSD matrix for epoch 90
Computing CSD matrix for epoch 91
Computing CSD matrix for epoch 92
Computing CSD matrix for epoch 93
Computing CSD matrix for epoch 94
Computing CSD matrix for epoch 95
Computing CSD matrix for epoch 96
Computing CSD matrix for epoch 97
Computing CSD matrix for epoch 98
Computing CSD matrix for epoch 99
Computing CSD matrix for epoch 100
Computing CSD matrix for epoch 101
Computing CSD matrix for epoch 102
Computing CSD matrix for epoch 103
Computing CSD matrix for epoch 104
Computing CSD matrix for epoch 105
Computing CSD matrix for epoch 106
Computing CSD matrix for epoch 107
Computing CSD matrix for epoch 108
Computing CSD matrix for epoch 109
Computing CSD matrix for epoch 110
Computing CSD matrix for epoch 111
[done]
Computing DICS spatial filters using the CSD that was computed on the entire timecourse.
filters = make_dics(epochs.info, fwd, csd.mean(), pick_ori='max-power')
Out:
Computing inverse operator with 204 channels.
204 out of 306 channels remain after picking
Selected 204 channels
Creating the depth weighting matrix...
Whitening the forward solution.
Computing data rank from covariance with rank=None
Using tolerance 4.5e+08 (2.2e-16 eps * 204 dim * 1e+22 max singular value)
Estimated rank (grad): 204
GRAD: rank 204 computed from 204 data channels with 0 projectors
Setting small GRAD eigenvalues to zero (without PCA)
Creating the source covariance matrix
Adjusting source covariance matrix.
Computing DICS spatial filters...
Applying DICS spatial filters separately to the CSD computed using the baseline and the CSD computed during the ERS activity.
baseline_source_power, freqs = apply_dics_csd(csd_baseline.mean(), filters)
beta_source_power, freqs = apply_dics_csd(csd_ers.mean(), filters)
Out:
Computing DICS source power...
[done]
Computing DICS source power...
[done]
Visualizing source power during ERS activity relative to the baseline power.
stc = beta_source_power / baseline_source_power
message = 'DICS source power in the 12-30 Hz frequency band'
brain = stc.plot(hemi='both', views='par', subjects_dir=subjects_dir,
time_label=message)

Out:
Using control points [1.49740671 1.57775391 1.85215653]
Total running time of the script: ( 0 minutes 46.836 seconds)
Estimated memory usage: 552 MB