[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