[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