[med-svn] [python-mne] 121/376: API : mne.compute_inverse now takes as input an Evoked dataset + an inverse_operator
Yaroslav Halchenko
debian at onerussian.com
Fri Nov 27 17:22:19 UTC 2015
This is an automated email from the git hooks/post-receive script.
yoh pushed a commit to annotated tag v0.1
in repository python-mne.
commit e26d6d25d437c754bb06f27528fe4fff09c543fc
Author: Alexandre Gramfort <alexandre.gramfort at inria.fr>
Date: Tue Mar 8 22:00:16 2011 -0500
API : mne.compute_inverse now takes as input an Evoked dataset + an inverse_operator
---
examples/plot_compute_mne_inverse.py | 23 +++++++++++++---------
examples/read_inverse.py | 6 +++---
mne/inverse.py | 38 +++++++-----------------------------
mne/tests/test_inverse.py | 11 ++++-------
4 files changed, 28 insertions(+), 50 deletions(-)
diff --git a/examples/plot_compute_mne_inverse.py b/examples/plot_compute_mne_inverse.py
index 7cfb025..76f9115 100644
--- a/examples/plot_compute_mne_inverse.py
+++ b/examples/plot_compute_mne_inverse.py
@@ -1,9 +1,9 @@
"""
-=================================
-Compute MNE-dSPM inverse solution
-=================================
+================================================
+Compute MNE-dSPM inverse solution on evoked data
+================================================
-Compute dSPM inverse solution on MNE sample data set
+Compute dSPM inverse solution on MNE evoked dataset
and stores the solution in stc files for visualisation.
"""
@@ -18,25 +18,30 @@ import numpy as np
import pylab as pl
import mne
from mne.datasets import sample
+from mne.fiff import Evoked
data_path = sample.data_path('.')
fname_inv = data_path + '/MEG/sample/sample_audvis-meg-oct-6-meg-inv.fif'
-fname_data = data_path + '/MEG/sample/sample_audvis-ave.fif'
+fname_evoked = data_path + '/MEG/sample/sample_audvis-ave.fif'
setno = 0
snr = 3.0
lambda2 = 1.0 / snr**2
dSPM = True
-res = mne.compute_inverse(fname_data, setno, fname_inv, lambda2, dSPM,
- baseline=(None, 0))
+# Load data
+evoked = Evoked(fname_evoked, setno=setno, baseline=(None, 0))
+inverse_operator = mne.read_inverse_operator(fname_inv)
+# Compute inverse solution
+res = mne.compute_inverse(evoked, inverse_operator, lambda2, dSPM)
+
+# Save result in stc files
lh_vertices = res['inv']['src'][0]['vertno']
rh_vertices = res['inv']['src'][1]['vertno']
lh_data = res['sol'][:len(lh_vertices)]
rh_data = res['sol'][-len(rh_vertices):]
-# Save result in stc files
mne.write_stc('mne_dSPM_inverse-lh.stc', tmin=res['tmin'], tstep=res['tstep'],
vertices=lh_vertices, data=lh_data)
mne.write_stc('mne_dSPM_inverse-rh.stc', tmin=res['tmin'], tstep=res['tstep'],
@@ -45,7 +50,7 @@ mne.write_stc('mne_dSPM_inverse-rh.stc', tmin=res['tmin'], tstep=res['tstep'],
###############################################################################
# View activation time-series
times = res['tmin'] + res['tstep'] * np.arange(lh_data.shape[1])
-pl.plot(1000*times, res['sol'][::100,:].T)
+pl.plot(1e3*times, res['sol'][::100,:].T)
pl.xlabel('time (ms)')
pl.ylabel('dSPM value')
pl.show()
diff --git a/examples/read_inverse.py b/examples/read_inverse.py
index 6e5bcbd..df58d6b 100644
--- a/examples/read_inverse.py
+++ b/examples/read_inverse.py
@@ -1,7 +1,7 @@
"""
-===========================
-Reading an inverse operator
-===========================
+=======================================================
+Reading an inverse operator and view source space in 3D
+=======================================================
"""
# Author: Alexandre Gramfort <gramfort at nmr.mgh.harvard.edu>
#
diff --git a/mne/inverse.py b/mne/inverse.py
index b35260f..35014d9 100644
--- a/mne/inverse.py
+++ b/mne/inverse.py
@@ -12,7 +12,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.evoked import Evoked
from .fiff.pick import pick_channels_evoked
from .cov import read_cov
@@ -400,8 +399,7 @@ def prepare_inverse_operator(orig, nave, lambda2, dSPM):
return inv
-def compute_inverse(fname_data, setno, fname_inv, lambda2, dSPM=True,
- nave=None, baseline=None):
+def compute_inverse(evoked, inverse_operator, lambda2, dSPM=True):
"""Compute inverse solution
Computes a L2-norm inverse solution
@@ -410,27 +408,14 @@ def compute_inverse(fname_data, setno, fname_inv, lambda2, dSPM=True,
Parameters
----------
- fname: string
- File name of the data file
- setno: int
- Data set number
- fname_inv: string
- File name of the inverse operator
- nave: int
- Number of averages (scales the noise covariance)
- If negative, the number of averages in the data will be used XXX
+ evoked: Evoked object
+ Evoked data
+ inverse_operator: dict
+ Inverse operator read with mne.read_inverse_operator
lambda2: float
The regularization parameter
dSPM: bool
do dSPM ?
- baseline: None (default) or tuple of length 2
- The time interval to apply baseline correction.
- If None do not apply it. If baseline is (a, b)
- the interval is between "a ms" and "b ms".
- If a is None the beginning of the data is used
- and if b is None then b is set to the end of the interval.
- If baseline is equal ot (None, None) all the time
- interval is used.
Returns
-------
@@ -439,20 +424,11 @@ def compute_inverse(fname_data, setno, fname_inv, lambda2, dSPM=True,
"""
#
- # Read the data first
- #
- evoked = Evoked(fname_data, setno, baseline=baseline)
- #
- # Then the inverse operator
- #
- inv = read_inverse_operator(fname_inv)
- #
# Set up the inverse according to the parameters
#
- if nave is None:
- nave = evoked.nave
+ nave = evoked.nave
- inv = prepare_inverse_operator(inv, nave, lambda2, dSPM)
+ inv = prepare_inverse_operator(inverse_operator, nave, lambda2, dSPM)
#
# Pick the correct channels from the data
#
diff --git a/mne/tests/test_inverse.py b/mne/tests/test_inverse.py
index 09ce352..a4a8325 100644
--- a/mne/tests/test_inverse.py
+++ b/mne/tests/test_inverse.py
@@ -13,10 +13,6 @@ fname_inv = op.join(data_path, 'MEG', 'sample',
fname_data = op.join(data_path, 'MEG', 'sample',
'sample_audvis-ave.fif')
-def test_io_inverse():
- """Test IO for inverse operator
- """
- fwd = mne.read_inverse_operator(fname_inv)
def test_compute_mne_inverse():
"""Test MNE inverse computation
@@ -27,9 +23,10 @@ def test_compute_mne_inverse():
lambda2 = 1.0 / snr**2
dSPM = True
- res = mne.compute_inverse(fname_data, setno, fname_inv, lambda2, dSPM,
- baseline=(None, 0))
+ evoked = mne.fiff.Evoked(fname_data, setno=setno, baseline=(None, 0))
+ inverse_operator = mne.read_inverse_operator(fname_inv)
+
+ res = mne.compute_inverse(evoked, inverse_operator, lambda2, dSPM)
assert np.all(res['sol'] > 0)
assert np.all(res['sol'] < 35)
-
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-med/python-mne.git
More information about the debian-med-commit
mailing list