[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