[med-svn] [python-mne] 124/376: increasing coverage + bug fix in read_source_spaces when add_geom = True

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 12b029ae872ad3a06118ec3299147093a5a18ef2
Author: Alexandre Gramfort <alexandre.gramfort at inria.fr>
Date:   Fri Mar 11 12:52:40 2011 -0500

    increasing coverage + bug fix in read_source_spaces when add_geom = True
---
 examples/plot_read_source_space.py | 30 ++++++++++++++++++++++++++++++
 mne/source_space.py                | 18 ++++++++----------
 mne/tests/test_cov.py              | 31 ++++++++++++++++++++++++++++---
 mne/tests/test_event.py            | 16 ++++++++++++++--
 mne/tests/test_source_space.py     | 23 +++++++++++++++++++++++
 5 files changed, 103 insertions(+), 15 deletions(-)

diff --git a/examples/plot_read_source_space.py b/examples/plot_read_source_space.py
new file mode 100644
index 0000000..eb216ef
--- /dev/null
+++ b/examples/plot_read_source_space.py
@@ -0,0 +1,30 @@
+"""
+==============================================
+Reading a source space from a forward operator
+==============================================
+"""
+# Author: Alexandre Gramfort <gramfort at nmr.mgh.harvard.edu>
+#
+# License: BSD (3-clause)
+
+print __doc__
+
+import os.path as op
+
+import mne
+from mne.datasets import sample
+
+data_path = sample.data_path('.')
+fname = op.join(data_path, 'MEG', 'sample', 'sample_audvis-eeg-oct-6-fwd.fif')
+
+add_geom = True # include high resolution source space
+src = mne.read_source_spaces(fname, add_geom=add_geom)
+
+# 3D source space (high sampling)
+lh_points = src[0]['rr']
+lh_faces = src[0]['tris']
+rh_points = src[1]['rr']
+rh_faces = src[1]['tris']
+from enthought.mayavi import mlab
+mlab.triangular_mesh(lh_points[:,0], lh_points[:,1], lh_points[:,2], lh_faces)
+mlab.triangular_mesh(rh_points[:,0], rh_points[:,1], rh_points[:,2], rh_faces)
diff --git a/mne/source_space.py b/mne/source_space.py
index 121018c..fceb24a 100644
--- a/mne/source_space.py
+++ b/mne/source_space.py
@@ -172,16 +172,16 @@ def _read_one_source_space(fid, this, open_here):
                     fid.close()
                 raise ValueError, 'Triangulation not found'
             else:
-                res['tris'] = tag.data
+                res['tris'] = tag.data - 1 # index start at 0 in Python
         else:
-            res['tris'] = tag.data
+            res['tris'] = tag.data - 1 # index start at 0 in Python
 
         if res['tris'].shape[0] != res['ntri']:
             if open_here:
                 fid.close()
             raise ValueError, 'Triangulation information is incorrect'
-        else:
-            res['tris'] = None
+    else:
+        res['tris'] = None
 
     #   Which vertices are active
     tag = find_tag(fid, this, FIFF.FIFF_MNE_SOURCE_SPACE_NUSE)
@@ -238,7 +238,7 @@ def complete_source_space_info(this):
     """Add more info on surface
     """
     #   Main triangulation
-    print '\tCompleting triangulation info...'
+    print '\tCompleting triangulation info...',
     this['tri_area'] = np.zeros(this['ntri'])
     r1 = this['rr'][this['tris'][:, 0], :]
     r2 = this['rr'][this['tris'][:, 1], :]
@@ -247,23 +247,21 @@ def complete_source_space_info(this):
     this['tri_nn'] = np.cross((r2-r1), (r3-r1))
 
     for p in range(this['ntri']): # XXX : can do better
-        size = sqrt(np.sum(this['tri_nn'][p,:] * this['tri_nn'][p,:]))
+        size = sqrt(np.sum(this['tri_nn'][p,:]**2))
         this['tri_area'][p] = size / 2.0
         this['tri_nn'][p,:] = this['tri_nn'][p,:] / size
 
     print '[done]'
 
     #   Selected triangles
-    print '\tCompleting selection triangulation info...'
+    print '\tCompleting selection triangulation info...',
     if this['nuse_tri'] > 0:
         r1 = this['rr'][this['use_tris'][:, 0],:]
         r2 = this['rr'][this['use_tris'][:, 1],:]
         r3 = this['rr'][this['use_tris'][:, 2],:]
         this['use_tri_cent'] = (r1 + r2 + r3) / 3.0
         this['use_tri_nn'] = np.cross((r2-r1), (r3-r1))
-        for p in range(this['nuse_tri']): # XXX can do better
-            this['use_tri_area'][p] = sqrt(np.sum(this['use_tri_nn'][p,:]
-                                           * this['use_tri_nn'][p,:])) / 2.0
+        this['use_tri_area'] = np.sqrt(np.sum(this['use_tri_nn']**2, axis=1)) / 2.0
 
     print '[done]'
 
diff --git a/mne/tests/test_cov.py b/mne/tests/test_cov.py
index 3613fa3..c9e4436 100644
--- a/mne/tests/test_cov.py
+++ b/mne/tests/test_cov.py
@@ -3,9 +3,12 @@ import os.path as op
 from numpy.testing import assert_array_almost_equal
 
 import mne
-from ..fiff import fiff_open
+from ..fiff import fiff_open, read_evoked
+from ..datasets import sample
+
+fname = op.join(op.dirname(__file__), '..', 'fiff', 'tests', 'data',
+                'test-cov.fif')
 
-fname = op.join(op.dirname(__file__), '..', 'fiff', 'tests', 'data', 'test-cov.fif')
 
 def test_io_cov():
     """Test IO for noise covariance matrices
@@ -21,4 +24,26 @@ def test_io_cov():
     cov2 = mne.read_cov(fid, tree, cov_type)
     fid.close()
 
-    print assert_array_almost_equal(cov['data'], cov2['data'])
\ No newline at end of file
+    assert_array_almost_equal(cov['data'], cov2['data'])
+
+
+def test_whitening_cov():
+    """Whitening of evoked data and leadfields
+    """
+    data_path = sample.data_path('.')
+    fwd_fname = op.join(data_path, 'MEG', 'sample',
+                        'sample_audvis-meg-eeg-oct-6-fwd.fif')
+    ave_fname = op.join(data_path, 'MEG', 'sample',
+                        'sample_audvis-ave.fif')
+    cov_fname = op.join(data_path, 'MEG', 'sample',
+                        'sample_audvis-cov.fif')
+
+    # Reading
+    ave = read_evoked(ave_fname, setno=0, baseline=(None, 0))
+    fwd = mne.read_forward_solution(fwd_fname)
+
+    cov = mne.Covariance()
+    cov.load(cov_fname)
+
+    ave_whiten, fwd_whiten, W = cov.whiten_evoked_and_forward(ave, fwd)
+    # XXX : test something
diff --git a/mne/tests/test_event.py b/mne/tests/test_event.py
index 3e9680b..b902a6d 100644
--- a/mne/tests/test_event.py
+++ b/mne/tests/test_event.py
@@ -8,11 +8,23 @@ import mne
 fname = op.join(op.dirname(__file__), '..', 'fiff', 'tests', 'data',
                 'test-eve.fif')
 
+raw_fname = op.join(op.dirname(__file__), '..', 'fiff', 'tests', 'data',
+                'test_raw.fif')
 
-def test_io_cov():
-    """Test IO for noise covariance matrices
+
+def test_io_events():
+    """Test IO for events
     """
     events = mne.read_events(fname)
     mne.write_events('events.fif', events)
     events2 = mne.read_events(fname)
     assert_array_almost_equal(events, events2)
+
+
+def test_find_events():
+    """Test find events in raw file
+    """
+    events = mne.read_events(fname)
+    raw = mne.fiff.Raw(raw_fname)
+    events2 = mne.find_events(raw)
+    assert_array_almost_equal(events, events2)
diff --git a/mne/tests/test_source_space.py b/mne/tests/test_source_space.py
new file mode 100644
index 0000000..46d8193
--- /dev/null
+++ b/mne/tests/test_source_space.py
@@ -0,0 +1,23 @@
+import os.path as op
+
+# from numpy.testing import assert_array_almost_equal
+
+import mne
+from mne.datasets import sample
+
+examples_folder = op.join(op.dirname(__file__), '..', '..', 'examples')
+data_path = sample.data_path(examples_folder)
+fname = op.join(data_path, 'MEG', 'sample', 'sample_audvis-eeg-oct-6-fwd.fif')
+
+def test_read_source_spaces():
+    """Testing reading of source space meshes
+    """
+    src = mne.read_source_spaces(fname, add_geom=False)
+    src = mne.read_source_spaces(fname, add_geom=True)
+
+    # 3D source space
+    lh_points = src[0]['rr']
+    lh_faces = src[0]['use_tris']
+    rh_points = src[1]['rr']
+    rh_faces = src[1]['use_tris']
+    # XXX : test something

-- 
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