[med-svn] [python-mne] 44/353: ENH : adding pick_events function
Yaroslav Halchenko
debian at onerussian.com
Fri Nov 27 17:24:29 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 3b273f6ab90e5d33db6d6a22b114c3d1c26673d6
Author: Alexandre Gramfort <alexandre.gramfort at inria.fr>
Date: Fri Jan 6 08:41:47 2012 +0100
ENH : adding pick_events function
---
examples/read_events.py | 5 ++++-
mne/__init__.py | 3 ++-
mne/event.py | 55 +++++++++++++++++++++++++++++++++++++++++++++++--
mne/tests/test_event.py | 10 ++++++++-
4 files changed, 68 insertions(+), 5 deletions(-)
diff --git a/examples/read_events.py b/examples/read_events.py
index 2e3fbb3..9c3c2b6 100644
--- a/examples/read_events.py
+++ b/examples/read_events.py
@@ -16,7 +16,10 @@ data_path = sample.data_path('.')
fname = data_path + '/MEG/sample/sample_audvis_raw-eve.fif'
# Reading events
-events = mne.read_events(fname)
+# events = mne.read_events(fname) # all
+events = mne.read_events(fname, include=1) # restricted to event 1
+events = mne.read_events(fname, include=[1, 2]) # restricted to event 1 or 2
+events = mne.read_events(fname, exclude=[4, 32]) # keep all but 4 and 32
# Writing events
mne.write_events('events.fif', events)
diff --git a/mne/__init__.py b/mne/__init__.py
index 9679ff5..07e8088 100644
--- a/mne/__init__.py
+++ b/mne/__init__.py
@@ -2,7 +2,8 @@ __version__ = '0.2.git'
from .cov import read_cov, write_cov, write_cov_file, Covariance, \
compute_raw_data_covariance, compute_covariance
-from .event import read_events, write_events, find_events, merge_events
+from .event import read_events, write_events, find_events, merge_events, \
+ pick_events
from .forward import read_forward_solution
from .source_estimate import read_stc, write_stc, read_w, write_w, \
SourceEstimate, morph_data, \
diff --git a/mne/event.py b/mne/event.py
index fefd59a..a2d67ed 100644
--- a/mne/event.py
+++ b/mne/event.py
@@ -16,13 +16,61 @@ from .fiff.write import write_int, start_block, start_file, end_block, end_file
from .fiff.pick import pick_channels
-def read_events(filename):
+def pick_events(events, include=None, exclude=None):
+ """Select some events
+
+ Parameters
+ ----------
+ include: int | list | None
+ A event id to include or a list of them.
+ If None all events are included.
+ exclude: int | list | None
+ A event id to exclude or a list of them.
+ If None no event is excluded. If include is not None
+ the exclude parameter is ignored.
+
+ Returns
+ -------
+ events: array, shape (n_events, 3)
+ The list of events
+ """
+ if include is not None:
+ if not isinstance(include, list):
+ include = [include]
+ mask = np.zeros(len(events), dtype=np.bool)
+ for e in include:
+ mask = np.logical_or(mask, events[:, 2] == e)
+ events = events[mask]
+ elif exclude is not None:
+ if not isinstance(exclude, list):
+ exclude = [exclude]
+ mask = np.ones(len(events), dtype=np.bool)
+ for e in exclude:
+ mask = np.logical_and(mask, events[:, 2] != e)
+ events = events[mask]
+ else:
+ events = np.copy(events)
+
+ if len(events) == 0:
+ raise RuntimeError("No events found")
+
+ return events
+
+
+def read_events(filename, include=None, exclude=None):
"""Reads events from fif file
Parameters
----------
filename: string
name of the fif file
+ include: int | list | None
+ A event id to include or a list of them.
+ If None all events are included.
+ exclude: int | list | None
+ A event id to exclude or a list of them.
+ If None no event is excluded. If include is not None
+ the exclude parameter is ignored.
Returns
-------
@@ -54,6 +102,9 @@ def read_events(filename):
raise ValueError('Could not find any events')
event_list = event_list.reshape(len(event_list) / 3, 3)
+
+ event_list = pick_events(event_list, include, exclude)
+
return event_list
@@ -129,4 +180,4 @@ def merge_events(events, ids, new_id):
events_numbers = events[:, 2]
for i in ids:
events_numbers[events_numbers == i] = new_id
- return events
\ No newline at end of file
+ return events
diff --git a/mne/tests/test_event.py b/mne/tests/test_event.py
index 965fb61..ccb21bc 100644
--- a/mne/tests/test_event.py
+++ b/mne/tests/test_event.py
@@ -1,6 +1,6 @@
import os.path as op
-from numpy.testing import assert_array_almost_equal
+from numpy.testing import assert_array_almost_equal, assert_array_equal
from .. import read_events, write_events, find_events
from .. import fiff
@@ -21,6 +21,14 @@ def test_io_events():
events2 = read_events('events.fif')
assert_array_almost_equal(events, events2)
+ a = read_events('events.fif', include=1)
+ b = read_events('events.fif', include=[1])
+ c = read_events('events.fif', exclude=[2, 3, 4, 5, 32])
+ d = read_events('events.fif', include=1, exclude=[2, 3])
+ assert_array_equal(a, b)
+ assert_array_equal(a, c)
+ assert_array_equal(a, d)
+
def test_find_events():
"""Test find events in raw file
--
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