[med-svn] [python-mne] 172/353: ENH : changing filtering default parameters + adding option to pass ECG proj in mne_compute_proj_eog.py + adding EXG name to SSPs

Yaroslav Halchenko debian at onerussian.com
Fri Nov 27 17:24:52 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 e403e1b03634b7d4ac22b2af47864b1b9c89b003
Author: Alexandre Gramfort <alexandre.gramfort at inria.fr>
Date:   Fri May 4 10:30:48 2012 +0200

    ENH : changing filtering default parameters + adding option to pass ECG proj in mne_compute_proj_eog.py + adding EXG name to SSPs
---
 bin/mne_compute_proj_ecg.py         |  6 +++---
 bin/mne_compute_proj_eog.py         | 26 ++++++++++++++++++++------
 mne/preprocessing/ssp.py            | 10 +++++++---
 mne/preprocessing/tests/test_ssp.py | 11 +++++++----
 4 files changed, 37 insertions(+), 16 deletions(-)

diff --git a/bin/mne_compute_proj_ecg.py b/bin/mne_compute_proj_ecg.py
index a32292b..350b2d6 100755
--- a/bin/mne_compute_proj_ecg.py
+++ b/bin/mne_compute_proj_ecg.py
@@ -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=5)
+                    default=1)
     parser.add_option("--h-freq", dest="h_freq",
                     help="Filter high cut-off frequency in Hz",
-                    default=35)
+                    default=100)
     parser.add_option("-p", "--preload", dest="preload",
                     help="Temporary file used during computation (to save memory)",
                     default=True)
@@ -137,7 +137,7 @@ if __name__ == '__main__':
 
     raw.close()
 
-    if isinstance(preload, str) and os.path.exists(preload):
+    if isinstance(preload, basestring) and os.path.exists(preload):
         os.remove(preload)
 
     print "Writing ECG projections in %s" % ecg_proj_fname
diff --git a/bin/mne_compute_proj_eog.py b/bin/mne_compute_proj_eog.py
index cf6d66f..9fd2cfa 100755
--- a/bin/mne_compute_proj_eog.py
+++ b/bin/mne_compute_proj_eog.py
@@ -3,7 +3,13 @@
 
 You can do for example:
 
-$mne_compute_proj_eog.py -i sample_audvis_raw.fif --l-freq 1 --h-freq 100 --rej-grad 3000 --rej-mag 4000 --rej-eeg 100
+$mne_compute_proj_eog.py -i sample_audvis_raw.fif --l-freq 1 --h-freq 35 --rej-grad 3000 --rej-mag 4000 --rej-eeg 100
+
+or
+
+$mne_compute_proj_eog.py -i sample_audvis_raw.fif --l-freq 1 --h-freq 35 --rej-grad 3000 --rej-mag 4000 --rej-eeg 100 --proj sample_audvis_ecg_proj.fif
+
+to exclude ECG artifacts from projection computation.
 """
 
 # Authors : Alexandre Gramfort, Ph.D.
@@ -23,10 +29,10 @@ if __name__ == '__main__':
                     help="Input raw FIF file", metavar="FILE")
     parser.add_option("--tmin", dest="tmin",
                     help="Time before event in seconds",
-                    default=-0.15)
+                    default=-0.2)
     parser.add_option("--tmax", dest="tmax",
                     help="Time after event in seconds",
-                    default=0.15)
+                    default=0.2)
     parser.add_option("-g", "--n-grad", dest="n_grad",
                     help="Number of SSP vectors for gradiometers",
                     default=2)
@@ -38,7 +44,7 @@ if __name__ == '__main__':
                     default=2)
     parser.add_option("--l-freq", dest="l_freq",
                     help="Filter low cut-off frequency in Hz",
-                    default=5)
+                    default=1)
     parser.add_option("--h-freq", dest="h_freq",
                     help="Filter high cut-off frequency in Hz",
                     default=35)
@@ -48,6 +54,9 @@ if __name__ == '__main__':
     parser.add_option("-a", "--average", dest="average", action="store_true",
                     help="Compute SSP after averaging",
                     default=False)
+    parser.add_option("--proj", dest="proj",
+                    help="Use SSP projections from a fif file.",
+                    default=None)
     parser.add_option("--filtersize", dest="filter_length",
                     help="Number of taps to use for filtering",
                     default=2048)
@@ -76,7 +85,7 @@ if __name__ == '__main__':
                     help="Text file containing bad channels list (one per line)",
                     default=None)
     parser.add_option("--event-id", dest="event_id", type="int",
-                    help="ID to use for events", default=999)
+                    help="ID to use for events", default=998)
 
     options, args = parser.parse_args()
 
@@ -105,6 +114,7 @@ if __name__ == '__main__':
     no_proj = options.no_proj
     bad_fname = options.bad_fname
     event_id = options.event_id
+    proj_fname = options.proj
 
     if bad_fname is not None:
         bads = [w.rstrip().split()[0] for w in open(bad_fname).readlines()]
@@ -126,6 +136,10 @@ if __name__ == '__main__':
 
     raw = mne.fiff.Raw(raw_in, preload=preload)
 
+    if proj_fname is not None:
+        print 'Including SSP projections from : %s' % proj_fname
+        raw.info['projs'] += mne.read_proj(proj_fname)
+
     projs, events = mne.preprocessing.compute_proj_eog(raw, tmin, tmax,
                             n_grad, n_mag, n_eeg, l_freq, h_freq, average,
                             filter_length, n_jobs, reject, bads,
@@ -133,7 +147,7 @@ if __name__ == '__main__':
 
     raw.close()
 
-    if isinstance(preload, str) and os.path.exists(preload):
+    if isinstance(preload, basestring) and os.path.exists(preload):
         os.remove(preload)
 
     print "Writing EOG projections in %s" % eog_proj_fname
diff --git a/mne/preprocessing/ssp.py b/mne/preprocessing/ssp.py
index bd3a476..d851d29 100644
--- a/mne/preprocessing/ssp.py
+++ b/mne/preprocessing/ssp.py
@@ -140,6 +140,10 @@ def _compute_exg_proj(mode, raw, tmin, tmax,
     else:
         ev_projs = compute_proj_epochs(epochs, n_grad=n_grad, n_mag=n_mag,
                                         n_eeg=n_eeg)
+
+    for p in ev_projs:
+        p['desc'] = mode + "-" + p['desc']
+
     projs.extend(ev_projs)
 
     print 'Done.'
@@ -151,7 +155,7 @@ def compute_proj_ecg(raw, 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, filter_length=2048, n_jobs=1, ch_name=None,
                      reject=dict(grad=2000e-13, mag=3000e-15, eeg=50e-6,
-                     eog=250e-6), bads=[], avg_ref=False, no_proj=True,
+                     eog=250e-6), bads=[], avg_ref=False, no_proj=False,
                      event_id=999):
     """Compute SSP/PCA projections for ECG artifacts
 
@@ -228,11 +232,11 @@ def compute_proj_ecg(raw, tmin=-0.2, tmax=0.4,
     return projs, ecg_events
 
 
-def compute_proj_eog(raw, tmin=-0.15, tmax=0.15,
+def compute_proj_eog(raw, tmin=-0.2, tmax=0.2,
                      n_grad=2, n_mag=2, n_eeg=2, l_freq=1.0, h_freq=35.0,
                      average=False, filter_length=2048, n_jobs=1,
                      reject=dict(grad=2000e-13, mag=3000e-15, eeg=500e-6,
-                     eog=np.inf), bads=[], avg_ref=False, no_proj=True,
+                     eog=np.inf), bads=[], avg_ref=False, no_proj=False,
                      event_id=998):
     """Compute SSP/PCA projections for EOG artifacts
 
diff --git a/mne/preprocessing/tests/test_ssp.py b/mne/preprocessing/tests/test_ssp.py
index 6277a6e..5032e57 100644
--- a/mne/preprocessing/tests/test_ssp.py
+++ b/mne/preprocessing/tests/test_ssp.py
@@ -15,9 +15,10 @@ def test_compute_proj_ecg():
         raw = Raw(raw_fname, preload=True)
         projs, events = compute_proj_ecg(raw, n_mag=2, n_grad=2, n_eeg=2,
                                          ch_name='MEG 1531', bads=['MEG 2443'],
-                                         average=average)
+                                         average=average, avg_ref=True,
+                                         no_proj=True)
         raw.close()
-        assert_true(len(projs) == 6)
+        assert_true(len(projs) == 7)
         #XXX: better tests
 
 
@@ -25,8 +26,10 @@ def test_compute_proj_eog():
     """Test computation of EOG SSP projectors"""
     for average in [False, True]:
         raw = Raw(raw_fname, preload=True)
+        n_projs_init = len(raw.info['projs'])
         projs, events = compute_proj_eog(raw, n_mag=2, n_grad=2, n_eeg=2,
-                                     bads=['MEG 2443'], average=average)
+                                     bads=['MEG 2443'], average=average,
+                                     avg_ref=True, no_proj=False)
         raw.close()
-        assert_true(len(projs) == 6)
+        assert_true(len(projs) == (7 + n_projs_init))
         #XXX: better tests

-- 
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