[med-svn] [python-mne] 63/353: ENH : allow the merge of evoked data obtain for example on different raw files

Yaroslav Halchenko debian at onerussian.com
Fri Nov 27 17:24:31 UTC 2015


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 04bfc74f3d1320b44ade37fb93dfeb7469042a85
Author: Alexandre Gramfort <alexandre.gramfort at inria.fr>
Date:   Mon Jan 23 11:41:28 2012 +0100

    ENH : allow the merge of evoked data obtain for example on different raw files
---
 mne/fiff/evoked.py       | 30 ++++++++++++++++++++++++++++++
 mne/tests/test_epochs.py | 17 +++++++++++++++++
 2 files changed, 47 insertions(+)

diff --git a/mne/fiff/evoked.py b/mne/fiff/evoked.py
index 18fa6ed..75c26fa 100644
--- a/mne/fiff/evoked.py
+++ b/mne/fiff/evoked.py
@@ -326,6 +326,36 @@ class Evoked(object):
         self.data = self.data[:, mask]
 
 
+def merge_evoked(all_evoked):
+    """Merge/concat evoked data
+
+    Data should have the same channels and the time instants.
+
+    Parameters
+    ----------
+    all_evoked : list of Evoked
+        The evoked datasets
+
+    Returns
+    -------
+    evoked : Evoked
+        The merged evoked data
+    """
+    evoked = deepcopy(all_evoked[0])
+
+    ch_names = evoked.ch_names
+    for e in all_evoked[1:]:
+        assert e.ch_names == ch_names, ValueError("%s and %s do not contain "
+                        "the same channels" % (evoked, e))
+        assert np.all(e.times == evoked.times), ValueError("%s and %s do not "
+                        "contain the same time instants" % (evoked, e))
+
+    all_nave = sum(e.nave for e in all_evoked)
+    evoked.data = sum(e.nave * e.data for e in all_evoked) / all_nave
+    evoked.nave = all_nave
+    return evoked
+
+
 def read_evoked(fname, setno=0, baseline=None):
     """Read an evoked dataset
 
diff --git a/mne/tests/test_epochs.py b/mne/tests/test_epochs.py
index ebf8ed8..fe589c0 100644
--- a/mne/tests/test_epochs.py
+++ b/mne/tests/test_epochs.py
@@ -7,6 +7,7 @@ from nose.tools import assert_true
 from numpy.testing import assert_array_equal, assert_array_almost_equal
 
 from .. import fiff, Epochs, read_events, pick_events
+from ..fiff.evoked import merge_evoked
 
 raw_fname = op.join(op.dirname(__file__), '..', 'fiff', 'tests', 'data',
                      'test_raw.fif')
@@ -45,6 +46,22 @@ def test_read_epochs():
     assert_true(data.shape[1] == (data_no_eog.shape[1] + len(eog_picks)))
 
 
+def test_merge_evoked():
+    """Merge evoked data"""
+    epochs1 = Epochs(raw, events[:4], event_id, tmin, tmax, picks=picks,
+                        baseline=(None, 0))
+    evoked1 = epochs1.average()
+    epochs2 = Epochs(raw, events[4:8], event_id, tmin, tmax, picks=picks,
+                        baseline=(None, 0))
+    evoked2 = epochs2.average()
+    epochs = Epochs(raw, events[:8], event_id, tmin, tmax, picks=picks,
+                        baseline=(None, 0))
+    evoked = epochs.average()
+    evoked_sum = merge_evoked([evoked1, evoked2])
+    assert_array_equal(evoked.data, evoked_sum.data)
+    assert_array_equal(evoked.times, evoked_sum.times)
+
+
 def test_reject_epochs():
     """Test of epochs rejection
     """

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