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 37d6f8e8ef125402d27add8f81d4d0d87c9a28fa Author: Martin Luessi <[email protected]> Date: Tue Jan 31 17:03:44 2012 -0500 ENH: adding function applY_forward() (not finished) --- mne/__init__.py | 2 +- mne/forward.py | 40 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 41 insertions(+), 1 deletion(-) diff --git a/mne/__init__.py b/mne/__init__.py index 2b3539c..df79675 100644 --- a/mne/__init__.py +++ b/mne/__init__.py @@ -4,7 +4,7 @@ from .cov import read_cov, write_cov, write_cov_file, Covariance, \ compute_raw_data_covariance, compute_covariance from .event import read_events, write_events, find_events, merge_events, \ pick_events -from .forward import read_forward_solution +from .forward import read_forward_solution, apply_forward from .source_estimate import read_stc, write_stc, read_w, write_w, \ SourceEstimate, morph_data, \ spatio_temporal_src_connectivity, \ diff --git a/mne/forward.py b/mne/forward.py index ab2520b..85bbd42 100644 --- a/mne/forward.py +++ b/mne/forward.py @@ -5,6 +5,7 @@ import numpy as np from scipy import linalg +import warnings from .fiff.constants import FIFF from .fiff.open import fiff_open @@ -443,3 +444,42 @@ def compute_depth_prior_fixed(G, exp=0.8, limit=10.0): wp = np.minimum(w, wmax) depth_prior = (wp / wmax) ** exp return depth_prior + + +def _stc_src_sel(src, stc): + """Select the vertex indices of a forward solution using a source estimate + """ + src_sel_lh = np.intersect1d(src[0]['vertno'], stc.vertno[0]) + src_sel_lh = np.searchsorted(src[0]['vertno'], src_sel_lh) + + src_sel_rh = np.intersect1d(src[1]['vertno'], stc.vertno[1]) + src_sel_rh = np.searchsorted(src[1]['vertno'], src_sel_rh)\ + + len(src[0]['vertno']) + + src_sel = np.r_[src_sel_lh, src_sel_rh] + + return src_sel + + +def apply_forward(fwd, stc, start=None, stop=None, include=[], exclude=[]): + + if fwd['source_ori'] != FIFF.FIFFV_MNE_FIXED_ORI: + raise ValueError('Only fixed-orientation forward operators are ' + 'supported') + + if np.all(stc.data > 0): + warnings.warn('Source estimate only contains currents with positive ' + 'values. Use pick_normal=True when computing the ' + 'inverse to compute currents not current magnitudes.') + + fwd = pick_channels_forward(fwd, include=include, exclude=exclude) + + src_sel = _stc_src_sel(fwd['src'], stc) + + gain = fwd['sol']['data'][:, src_sel] + + print 'Projecting source estimate to sensor space...', + sens_data = np.dot(gain, stc.data[:, start:stop]) + print '[done]' + + return sens_data -- 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
