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