[med-svn] [python-mne] 163/353: EXG proj
Yaroslav Halchenko
debian at onerussian.com
Fri Nov 27 17:24:50 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 3b776ce105d808c37c8f3068b9f9b7a0c69682f9
Author: Martin Luessi <mluessi at nmr.mgh.harvard.edu>
Date: Mon Apr 30 10:56:30 2012 -0400
EXG proj
---
mne/preprocessing/ssp.py | 155 ++++++++++++++++++++++++++++++++++++++---------
1 file changed, 126 insertions(+), 29 deletions(-)
diff --git a/mne/preprocessing/ssp.py b/mne/preprocessing/ssp.py
index 24397fa..34adc41 100644
--- a/mne/preprocessing/ssp.py
+++ b/mne/preprocessing/ssp.py
@@ -9,21 +9,21 @@ import os
from .. import Epochs, compute_proj_evoked, compute_proj_epochs, \
write_events, write_proj
from ..fiff import Raw, pick_types, make_eeg_average_ref_proj
-from ..artifacts import find_ecg_events
+from ..artifacts import find_ecg_events, find_eog_events
-def compute_proj_ecg(in_fif_fname, tmin=-0.2, tmax=0.4,
- n_grad=2, n_mag=2, n_eeg=2, l_freq=5, h_freq=35,
- average=False, preload="tmp.mmap",
- filter_length=2048, n_jobs=1, ch_name=None,
- reject=dict(grad=2000e-13, mag=3000e-15, eeg=50e-6,
- eog=250e-6), bads=None,
- avg_ref=False, include_existing=False,
- ecg_proj_fname=None, ecg_event_fname=None):
- """Compute SSP/PCA projections for ECG artifacts
+def _compute_exg_proj(mode, in_fif_fname, tmin, tmax,
+ n_grad, n_mag, n_eeg, l_freq, h_freq,
+ average, preload, filter_length, n_jobs, ch_name,
+ reject, bads, avg_ref, include_existing,
+ proj_fname, event_fname):
+ """Compute SSP/PCA projections for ECG or EOG artifacts
Parameters
----------
+ mode: sting ('ECG', or 'EOG')
+ What type of events to detect
+
in_fif_fname: string
Input Raw FIF file
@@ -61,7 +61,7 @@ def compute_proj_ecg(in_fif_fname, tmin=-0.2, tmax=0.4,
Number of jobs to run in parallel
ch_name: string (or None)
- Channel to use for ECG detection (Required if no ECG found)
+ Channel to use for ECG event detection
reject: dict
Epoch rejection configuration (see Epochs)
@@ -75,10 +75,10 @@ def compute_proj_ecg(in_fif_fname, tmin=-0.2, tmax=0.4,
include_existing: bool
Inlucde the SSP projectors currently in the fiff file
- ecg_proj_fname: string (or None)
+ proj_fname: string (or None)
Filename to use for projectors (not saved if None)
- ecg_event_fname: string
+ event_fname: string
Filename to use for events (not saved if None)
Returns
@@ -86,8 +86,8 @@ def compute_proj_ecg(in_fif_fname, tmin=-0.2, tmax=0.4,
proj : list
Computed SSP projectors
- ecg_events : ndarray
- Detected ECG events
+ events : ndarray
+ Detected events
"""
# Reading fif File
raw = Raw(in_fif_fname, preload=preload)
@@ -102,11 +102,16 @@ def compute_proj_ecg(in_fif_fname, tmin=-0.2, tmax=0.4,
eeg_proj = make_eeg_average_ref_proj(raw.info)
projs.append(eeg_proj)
- print 'Running ECG SSP computation'
-
- ecg_events, _, _ = find_ecg_events(raw, ch_name=ch_name)
+ if mode == 'ECG':
+ print 'Running ECG SSP computation'
+ events, _, _ = find_ecg_events(raw, ch_name=ch_name)
+ elif mode == 'EOG':
+ print 'Running EOG SSP computation'
+ events = find_eog_events(raw)
+ else:
+ ValueError("mode must be 'ECG' or 'EOG'")
- print 'Computing ECG projector'
+ print 'Computing projector'
# Handler rejection parameters
if len(pick_types(raw.info, meg='grad', eeg=False, eog=False)) == 0:
@@ -127,29 +132,121 @@ def compute_proj_ecg(in_fif_fname, tmin=-0.2, tmax=0.4,
if l_freq is not None and h_freq is not None:
raw.band_pass_filter(picks, l_freq, h_freq, filter_length, n_jobs)
- epochs = Epochs(raw, ecg_events, None, tmin, tmax, baseline=None,
+ epochs = Epochs(raw, events, None, tmin, tmax, baseline=None,
picks=picks, reject=reject, proj=True)
if average:
evoked = epochs.average()
- ecg_projs = compute_proj_evoked(evoked, n_grad=n_grad, n_mag=n_mag,
+ ev_projs = compute_proj_evoked(evoked, n_grad=n_grad, n_mag=n_mag,
n_eeg=n_eeg)
else:
- ecg_projs = compute_proj_epochs(epochs, n_grad=n_grad, n_mag=n_mag,
+ ev_projs = compute_proj_epochs(epochs, n_grad=n_grad, n_mag=n_mag,
n_eeg=n_eeg)
- projs.extend(ecg_projs)
+ projs.extend(ev_projs)
if preload is not None and os.path.exists(preload):
os.remove(preload)
- if ecg_event_fname is not None:
- print "Writing ECG events in %s" % ecg_event_fname
- write_events(ecg_event_fname, ecg_events)
+ if event_fname is not None:
+ print "Writing events in %s" % event_fname
+ write_events(event_fname, events)
- if ecg_proj_fname is not None:
- print "Writing ECG projections in %s" % ecg_proj_fname
- write_proj(ecg_proj_fname, projs)
+ if proj_fname is not None:
+ print "Writing projections in %s" % proj_fname
+ write_proj(proj_fname, projs)
print 'Done.'
+ return projs, events
+
+
+def compute_proj_ecg(in_fif_fname, tmin=-0.2, tmax=0.4,
+ n_grad=2, n_mag=2, n_eeg=2, l_freq=1.0, h_freq=35.0,
+ average=False, preload="tmp.mmap",
+ filter_length=2048, n_jobs=1, ch_name=None,
+ reject=dict(grad=2000e-13, mag=3000e-15, eeg=50e-6,
+ eog=250e-6), bads=None,
+ avg_ref=False, include_existing=False,
+ ecg_proj_fname=None, ecg_event_fname=None):
+ """Compute SSP/PCA projections for ECG artifacts
+
+ Parameters
+ ----------
+ in_fif_fname: string
+ Input Raw FIF file
+
+ tmin: float
+ Time before event in second
+
+ tmax: float
+ Time after event in seconds
+
+ n_grad: int
+ Number of SSP vectors for gradiometers
+
+ n_mag: int
+ Number of SSP vectors for magnetometers
+
+ n_eeg: int
+ Number of SSP vectors for EEG
+
+ l_freq: float
+ Filter low cut-off frequency in Hz
+
+ h_freq: float
+ Filter high cut-off frequency in Hz
+
+ average: bool
+ Compute SSP after averaging
+
+ preload: string (or True)
+ Temporary file used during computaion
+
+ filter_length: int
+ Number of taps to use for filtering
+
+ n_jobs: int
+ Number of jobs to run in parallel
+
+ ch_name: string (or None)
+ Channel to use for ECG detection (Required if no ECG found)
+
+ reject: dict
+ Epoch rejection configuration (see Epochs)
+
+ bads: list
+ List with (additional) bad channels
+
+ avg_ref: bool
+ Add EEG average reference proj
+
+ include_existing: bool
+ Inlucde the SSP projectors currently in the fiff file
+
+ ecg_proj_fname: string (or None)
+ Filename to use for projectors (not saved if None)
+
+ ecg_event_fname: string (or None)
+ Filename to use for events (not saved if None)
+
+ Returns
+ -------
+ proj : list
+ Computed SSP projectors
+
+ ecg_events : ndarray
+ Detected ECG events
+ """
+
+ projs, ecg_events = _compute_exg_proj('ECG', in_fif_fname, tmin, tmax,
+ n_grad, n_mag, n_eeg, l_freq, h_freq,
+ average, preload, filter_length, n_jobs, ch_name,
+ reject, bads, avg_ref, include_existing,
+ ecg_proj_fname, ecg_event_fname)
+
+
return projs, ecg_events
+
+
+
+
--
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