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