This is an automated email from the git hooks/post-receive script. yoh pushed a commit to tag 0.4 in repository python-mne.
commit 5b9793d5daaa58ca3f21425eb13ba3651efca7b7 Author: Alexandre Gramfort <[email protected]> Date: Tue Jan 17 17:41:14 2012 +0100 ENH : raise Exception with inverse operator was computed with bad channels --- mne/minimum_norm/inverse.py | 24 ++++++++++++++++++++---- mne/minimum_norm/time_frequency.py | 4 ++-- 2 files changed, 22 insertions(+), 6 deletions(-) diff --git a/mne/minimum_norm/inverse.py b/mne/minimum_norm/inverse.py index 3e2760f..7d331da 100644 --- a/mne/minimum_norm/inverse.py +++ b/mne/minimum_norm/inverse.py @@ -15,7 +15,6 @@ from ..fiff.tag import find_tag from ..fiff.matrix import _read_named_matrix, _transpose_named_matrix from ..fiff.proj import read_proj, make_projector from ..fiff.tree import dir_tree_find -from ..fiff.pick import pick_channels from ..cov import read_cov, prepare_noise_cov from ..forward import compute_depth_prior @@ -25,6 +24,23 @@ from ..transforms import invert_transform, transform_source_space_to from ..source_estimate import SourceEstimate +def _pick_channels_inverse_operator(ch_names, inv): + """Gives the indices of the data channel to be used knowing + an inverse operator + """ + sel = [] + for name in inv['noise_cov']['names']: + if name in ch_names: + sel.append(ch_names.index(name)) + else: + raise ValueError('The inverse operator was computed with ' + 'channel %s which is not present in ' + 'the data. You should compute a new inverse ' + 'operator restricted to the good data ' + 'channels.' % name) + return sel + + def read_inverse_operator(fname): """Read the inverse operator decomposition from a FIF file @@ -555,7 +571,7 @@ def apply_inverse(evoked, inverse_operator, lambda2, dSPM=True, # # Pick the correct channels from the data # - sel = pick_channels(evoked.ch_names, include=inv['noise_cov']['names']) + sel = _pick_channels_inverse_operator(evoked.ch_names, inv) print 'Picked %d channels from the data' % len(sel) print 'Computing inverse...', @@ -625,7 +641,7 @@ def apply_inverse_raw(raw, inverse_operator, lambda2, dSPM=True, # # Pick the correct channels from the data # - sel = pick_channels(raw.ch_names, include=inv['noise_cov']['names']) + sel = _pick_channels_inverse_operator(raw.ch_names, inv) print 'Picked %d channels from the data' % len(sel) print 'Computing inverse...', @@ -690,7 +706,7 @@ def apply_inverse_epochs(epochs, inverse_operator, lambda2, dSPM=True, # # Pick the correct channels from the data # - sel = pick_channels(epochs.ch_names, include=inv['noise_cov']['names']) + sel = _pick_channels_inverse_operator(epochs.ch_names, inv) print 'Picked %d channels from the data' % len(sel) print 'Computing inverse...', diff --git a/mne/minimum_norm/time_frequency.py b/mne/minimum_norm/time_frequency.py index 049d63a..8b049ba 100644 --- a/mne/minimum_norm/time_frequency.py +++ b/mne/minimum_norm/time_frequency.py @@ -9,7 +9,7 @@ from ..fiff.constants import FIFF from ..time_frequency.tfr import cwt, morlet from ..baseline import rescale from .inverse import combine_xyz, prepare_inverse_operator, _assemble_kernel, \ - _make_stc + _make_stc, _pick_channels_inverse_operator from ..parallel import parallel_func @@ -180,7 +180,7 @@ def _source_induced_power(epochs, inverse_operator, frequencies, label=None, # # Pick the correct channels from the data # - sel = [epochs.ch_names.index(name) for name in inv['noise_cov']['names']] + sel = _pick_channels_inverse_operator(epochs.ch_names, inv) print 'Picked %d channels from the data' % len(sel) print 'Computing inverse...', # -- Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-med/python-mne.git _______________________________________________ debian-med-commit mailing list [email protected] http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/debian-med-commit
