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 <[email protected]> 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 _______________________________________________ debian-med-commit mailing list [email protected] http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/debian-med-commit
