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