[med-svn] [python-mne] 160/353: added missing files

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 f9fc4ac8e6e77b13dd7a84bfd5f6a2c4449c9b88
Author: Martin Luessi <mluessi at nmr.mgh.harvard.edu>
Date:   Thu Apr 26 16:01:49 2012 -0400

    added missing files
---
 bin/mne_compute_proj_ecg.py   |  10 +--
 mne/preprocessing/__init__.py |   9 +++
 mne/preprocessing/ssp.py      | 155 ++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 169 insertions(+), 5 deletions(-)

diff --git a/bin/mne_compute_proj_ecg.py b/bin/mne_compute_proj_ecg.py
index a054aa1..1418810 100755
--- a/bin/mne_compute_proj_ecg.py
+++ b/bin/mne_compute_proj_ecg.py
@@ -22,10 +22,10 @@ if __name__ == '__main__':
     parser.add_option("-i", "--in", dest="raw_in",
                     help="Input raw FIF file", metavar="FILE")
     parser.add_option("--tmin", dest="tmin",
-                    help="time before event in seconds",
+                    help="Time before event in seconds",
                     default=-0.2)
     parser.add_option("--tmax", dest="tmax",
-                    help="time before event in seconds",
+                    help="Time after event in seconds",
                     default=0.4)
     parser.add_option("-g", "--n-grad", dest="n_grad",
                     help="Number of SSP vectors for gradiometers",
@@ -38,10 +38,10 @@ if __name__ == '__main__':
                     default=2)
     parser.add_option("--l-freq", dest="l_freq",
                     help="Filter low cut-off frequency in Hz",
-                    default=None)  # XXX
+                    default=5)
     parser.add_option("--h-freq", dest="h_freq",
                     help="Filter high cut-off frequency in Hz",
-                    default=None)  # XXX
+                    default=35)
     parser.add_option("-p", "--preload", dest="preload",
                     help="Temporary file used during computaion",
                     default='tmp.mmap')
@@ -49,7 +49,7 @@ if __name__ == '__main__':
                     help="Compute SSP after averaging",
                     default=False)
     parser.add_option("--filtersize", dest="filter_length",
-                    help="Number of SSP vectors for EEG",
+                    help="Number of taps to use for filtering",
                     default=2048)
     parser.add_option("-j", "--n-jobs", dest="n_jobs",
                     help="Number of jobs to run in parallel",
diff --git a/mne/preprocessing/__init__.py b/mne/preprocessing/__init__.py
new file mode 100644
index 0000000..1bfc6d2
--- /dev/null
+++ b/mne/preprocessing/__init__.py
@@ -0,0 +1,9 @@
+"""Preprocessing module"""
+
+# Authors: Alexandre Gramfort <gramfort at nmr.mgh.harvard.edu>
+#          Matti Hamalainen <msh at nmr.mgh.harvard.edu>
+#          Martin Luessi <mluessi at nmr.mgh.harvard.edu>
+#
+# License: BSD (3-clause)
+
+from .ssp import compute_proj_ecg
diff --git a/mne/preprocessing/ssp.py b/mne/preprocessing/ssp.py
new file mode 100644
index 0000000..24397fa
--- /dev/null
+++ b/mne/preprocessing/ssp.py
@@ -0,0 +1,155 @@
+# Authors: Alexandre Gramfort <gramfort at nmr.mgh.harvard.edu>
+#          Matti Hamalainen <msh at nmr.mgh.harvard.edu>
+#          Martin Luessi <mluessi at nmr.mgh.harvard.edu>
+#
+# License: BSD (3-clause)
+
+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
+
+
+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
+
+    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
+        Filename to use for events (not saved if None)
+
+    Returns
+    -------
+    proj : list
+        Computed SSP projectors
+
+    ecg_events : ndarray
+        Detected ECG events
+    """
+    # Reading fif File
+    raw = Raw(in_fif_fname, preload=preload)
+
+    if include_existing:
+        projs = raw.info['projs']
+    else:
+        projs = []
+
+    if avg_ref:
+        print "Adding average EEG reference projection."
+        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)
+
+    print 'Computing ECG projector'
+
+    # Handler rejection parameters
+    if len(pick_types(raw.info, meg='grad', eeg=False, eog=False)) == 0:
+        del reject['grad']
+    if len(pick_types(raw.info, meg='mag', eeg=False, eog=False)) == 0:
+        del reject['mag']
+    if len(pick_types(raw.info, meg=False, eeg=True, eog=False)) == 0:
+        del reject['eeg']
+    if len(pick_types(raw.info, meg=False, eeg=False, eog=True)) == 0:
+        del reject['eog']
+
+    picks = pick_types(raw.info, meg=True, eeg=True, eog=True,
+                       exclude=raw.info['bads'] + bads)
+    if l_freq is None and h_freq is not None:
+        raw.high_pass_filter(picks, h_freq, filter_length, n_jobs)
+    if l_freq is not None and h_freq is None:
+        raw.low_pass_filter(picks, h_freq, filter_length, n_jobs)
+    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,
+                    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,
+                                        n_eeg=n_eeg)
+    else:
+        ecg_projs = compute_proj_epochs(epochs, n_grad=n_grad, n_mag=n_mag,
+                                        n_eeg=n_eeg)
+    projs.extend(ecg_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 ecg_proj_fname is not None:
+        print "Writing ECG projections in %s" % ecg_proj_fname
+        write_proj(ecg_proj_fname, projs)
+
+    print 'Done.'
+
+    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