[med-svn] [python-mne] 123/376: ENH : reading events from a raw file

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 40beceabaa426af7ab141dbe20d11231b82a2f0f
Author: Alexandre Gramfort <alexandre.gramfort at inria.fr>
Date:   Wed Mar 9 17:06:08 2011 -0500

    ENH : reading events from a raw file
---
 examples/extract_events_from_raw.py | 30 ++++++++++++++++++++++++++++++
 examples/plot_read_epochs.py        | 26 +++++++++++++-------------
 mne/__init__.py                     |  2 +-
 mne/event.py                        | 32 ++++++++++++++++++++++++++++++++
 4 files changed, 76 insertions(+), 14 deletions(-)

diff --git a/examples/extract_events_from_raw.py b/examples/extract_events_from_raw.py
new file mode 100644
index 0000000..a512a35
--- /dev/null
+++ b/examples/extract_events_from_raw.py
@@ -0,0 +1,30 @@
+"""
+=========================
+Find events in a raw file
+=========================
+
+"""
+# Author: Alexandre Gramfort <gramfort at nmr.mgh.harvard.edu>
+#
+# License: BSD (3-clause)
+
+print __doc__
+
+import mne
+from mne.datasets import sample
+from mne.fiff import Raw
+
+data_path = sample.data_path('.')
+fname = data_path + '/MEG/sample/sample_audvis_raw.fif'
+
+# Reading events
+raw = Raw(fname)
+
+events = mne.find_events(raw, stim_channel='STI 014')
+
+# Writing events
+mne.write_events('events.fif', events)
+
+for ind, before, after in events[:5]:
+    print "At sample %d stim channel went from %d to %d" % (
+                                                    ind, before, after)
diff --git a/examples/plot_read_epochs.py b/examples/plot_read_epochs.py
index 500a45c..856dc7d 100644
--- a/examples/plot_read_epochs.py
+++ b/examples/plot_read_epochs.py
@@ -39,49 +39,49 @@ exclude = raw.info['bads'] + ['MEG 2443', 'EEG 053'] # bads + 2 more
 # EEG
 eeg_picks = fiff.pick_types(raw.info, meg=False, eeg=True, stim=False,
                                             include=include, exclude=exclude)
-eeg_epochs = mne.Epochs(raw, events, event_id,
-                            tmin, tmax, picks=eeg_picks, baseline=(None, 0))
+eeg_epochs = mne.Epochs(raw, events, event_id, tmin, tmax,
+                        picks=eeg_picks, baseline=(None, 0), preload=False)
 eeg_evoked = eeg_epochs.average()
 eeg_evoked_data = eeg_evoked.data
 
 # MEG Magnetometers
 meg_mag_picks = fiff.pick_types(raw.info, meg='mag', eeg=False, stim=False,
                                             include=include, exclude=exclude)
-meg_mag_epochs = mne.Epochs(raw, events, event_id,
-                           tmin, tmax, picks=meg_mag_picks, baseline=(None, 0))
+meg_mag_epochs = mne.Epochs(raw, events, event_id, tmin, tmax,
+                        picks=meg_mag_picks, baseline=(None, 0), preload=False)
 meg_mag_evoked = meg_mag_epochs.average()
 meg_mag_evoked_data = meg_mag_evoked.data
 
 # MEG
 meg_grad_picks = fiff.pick_types(raw.info, meg='grad', eeg=False,
                                 stim=False, include=include, exclude=exclude)
-meg_grad_epochs = mne.Epochs(raw, events, event_id,
-                        tmin, tmax, picks=meg_grad_picks, baseline=(None, 0))
+meg_grad_epochs = mne.Epochs(raw, events, event_id, tmin, tmax,
+                        picks=meg_grad_picks, baseline=(None, 0), preload=False)
 meg_grad_evoked = meg_grad_epochs.average()
 meg_grad_evoked_data = meg_grad_evoked.data
 
 ###############################################################################
 # View evoked response
-times = eeg_epochs.times
+times = 1e3 * eeg_epochs.times # time in ms
 import pylab as pl
 pl.clf()
 pl.subplot(3, 1, 1)
-pl.plot(1000*times, 1e13*meg_grad_evoked_data.T)
+pl.plot(times, 1e13*meg_grad_evoked_data.T)
 pl.ylim([-200, 200])
-pl.xlim([1000*times[0], 1000*times[-1]])
+pl.xlim([times[0], times[-1]])
 pl.xlabel('time (ms)')
 pl.ylabel('Magnetic Field (fT/cm)')
 pl.title('MEG (Gradiometers) evoked field')
 pl.subplot(3, 1, 2)
-pl.plot(1000*times, 1e15*meg_mag_evoked_data.T)
+pl.plot(times, 1e15*meg_mag_evoked_data.T)
 pl.ylim([-600, 600])
-pl.xlim([1000*times[0], 1000*times[-1]])
+pl.xlim([times[0], times[-1]])
 pl.xlabel('time (ms)')
 pl.ylabel('Magnetic Field (fT)')
 pl.title('MEG (Magnetometers) evoked field')
 pl.subplot(3, 1, 3)
-pl.plot(1000*times, 1e6*eeg_evoked_data.T)
-pl.xlim([1000*times[0], 1000*times[-1]])
+pl.plot(times, 1e6*eeg_evoked_data.T)
+pl.xlim([times[0], times[-1]])
 pl.xlabel('time (ms)')
 pl.ylabel('Potential (uV)')
 pl.title('EEG evoked potential')
diff --git a/mne/__init__.py b/mne/__init__.py
index 526774a..a7ecf59 100644
--- a/mne/__init__.py
+++ b/mne/__init__.py
@@ -1,7 +1,7 @@
 __version__ = '0.1.git'
 
 from .cov import read_cov, write_cov, write_cov_file, Covariance
-from .event import read_events, write_events
+from .event import read_events, write_events, find_events
 from .forward import read_forward_solution
 from .stc import read_stc, write_stc
 from .bem_surfaces import read_bem_surfaces
diff --git a/mne/event.py b/mne/event.py
index a13ab29..fc5abd3 100644
--- a/mne/event.py
+++ b/mne/event.py
@@ -6,11 +6,14 @@
 #
 # License: BSD (3-clause)
 
+import numpy as np
+
 from .fiff.constants import FIFF
 from .fiff.tree import dir_tree_find
 from .fiff.tag import read_tag
 from .fiff.open import fiff_open
 from .fiff.write import write_int, start_block, start_file, end_block, end_file
+from .fiff.pick import pick_channels
 
 
 def read_events(filename):
@@ -73,3 +76,32 @@ def write_events(filename, event_list):
     end_block(fid, FIFF.FIFFB_MNE_EVENTS)
 
     end_file(fid)
+
+
+def find_events(raw, stim_channel='STI 014'):
+    """Find events from raw file
+
+    Parameters
+    ----------
+    raw : Raw object
+        The raw data
+
+    stim_channel : string
+        Name of the stim channel
+
+    Returns
+    -------
+    events : array
+        The array of event onsets in time samples.
+    """
+
+    pick = pick_channels(raw.info['ch_names'], include=['STI 014'],
+                         exclude=[])
+    data, times = raw[pick,:]
+    data = data.ravel()
+    idx = np.where(np.diff(data.ravel()) > 0)[0]
+    n_events = len(idx)
+    events_id = data[idx+1].astype(np.int)
+    idx += raw.first_samp + 1
+    events = np.c_[idx, np.zeros_like(idx), events_id]
+    return events
\ No newline at end of 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