This is an automated email from the git hooks/post-receive script. yoh pushed a commit to annotated tag v0.2 in repository python-mne.
commit 5252c42a0717895bdadd446cdcf5763713932bb9 Author: Manfred Kitzbichler <[email protected]> Date: Fri Nov 4 17:44:27 2011 -0400 First commit of my branch with my fixes. --- mne/artifacts/ecg.py | 18 ++++++++++++------ mne/epochs.py | 25 ++++++++++++++----------- mne/source_estimate.py | 1 + 3 files changed, 27 insertions(+), 17 deletions(-) diff --git a/mne/artifacts/ecg.py b/mne/artifacts/ecg.py index ede3990..b9756d0 100644 --- a/mne/artifacts/ecg.py +++ b/mne/artifacts/ecg.py @@ -29,7 +29,7 @@ def qrs_detector(sfreq, ecg, thresh_value=0.6, levels=2.5, n_thresh=3): """ win_size = round((60.0 * sfreq) / 120.0) - filtecg = band_pass_filter(ecg, sfreq, 5, 35) + filtecg = band_pass_filter(ecg, sfreq, 10, 35) n_points = len(filtecg) absecg = np.abs(filtecg) @@ -53,7 +53,7 @@ def qrs_detector(sfreq, ecg, thresh_value=0.6, levels=2.5, n_thresh=3): if window[0] > thresh1: maxTime = np.argmax(window) time.append(i + maxTime) - numcross.append(np.sum(np.diff(window > thresh1) == 1)) + numcross.append(np.sum(np.diff(1*(window > thresh1)) == 1)) rms.append(np.sqrt(np.mean(window ** 2))) i += win_size else: @@ -92,8 +92,14 @@ def find_ecg_events(raw, event_id=999): eog=False, ecg=True, emg=False) if len(ch_ECG) == 0: - # closest to the heart normally, In future we can search for it. - ch_ECG = fiff.pick_channels(raw.ch_names, include='MEG 1531') + ch_ECG = fiff.pick_types(info, meg=False, eeg=True, stim=False, + eog=False, ecg=False, emg=False) + if len(ch_ECG) != 0: + ch_ECG = ch_ECG[2:3] + else: + # closest to the heart normally, In future we can search for it. + ch_ECG = fiff.pick_channels(raw.ch_names, include='MEG 1511') + print 'Using channel index %d to identify heart beats' % ch_ECG else: print 'ECG channel index for this subject is: %s' % ch_ECG @@ -104,10 +110,10 @@ def find_ecg_events(raw, event_id=999): # detecting QRS and generating event file ecg_events = qrs_detector(info['sfreq'], ecg.ravel()) n_events = len(ecg_events) - average_pulse = 60.0 * (times[-1] - times[0]) / n_events + average_pulse = n_events * 60.0 / (times[-1] - times[0]) print ("Number of ECG events detected : %d (average pulse %d / min.)" % (n_events, average_pulse)) ecg_events = np.c_[ecg_events + raw.first_samp, np.zeros(n_events), event_id * np.ones(n_events)] - return ecg_events + return ecg_events, ch_ECG, average_pulse diff --git a/mne/epochs.py b/mne/epochs.py index b726985..30ca4a3 100644 --- a/mne/epochs.py +++ b/mne/epochs.py @@ -259,6 +259,8 @@ class Epochs(object): first_samp = self.raw.first_samp start = int(round(event_samp + self.tmin * sfreq)) - first_samp stop = start + len(self.times) + if start < 0: + return np.zeros((len(self.picks),len(self.times))) epoch, _ = self.raw[self.picks, start:stop] if self.proj is not None: @@ -384,7 +386,7 @@ class Epochs(object): return epochs - def average(self): + def average(self, dropCh=True): """Compute average of epochs Returns @@ -413,17 +415,18 @@ class Epochs(object): evoked.last = int(np.sum(self.times > 0)) # dropping EOG, ECG and STIM channels. Keeping only data - data_picks = pick_types(evoked.info, meg=True, eeg=True, - stim=False, eog=False, ecg=False, - emg=False) - if len(data_picks) == 0: - raise ValueError('No data channel found when averaging.') - - evoked.info['chs'] = [evoked.info['chs'][k] for k in data_picks] - evoked.info['ch_names'] = [evoked.info['ch_names'][k] + if(dropCh): + data_picks = pick_types(evoked.info, meg=True, eeg=True, + stim=False, eog=False, ecg=False, + emg=False) + if len(data_picks) == 0: + raise ValueError('No data channel found when averaging.') + + evoked.info['chs'] = [evoked.info['chs'][k] for k in data_picks] + evoked.info['ch_names'] = [evoked.info['ch_names'][k] for k in data_picks] - evoked.info['nchan'] = len(data_picks) - evoked.data = evoked.data[data_picks] + evoked.info['nchan'] = len(data_picks) + evoked.data = evoked.data[data_picks] return evoked diff --git a/mne/source_estimate.py b/mne/source_estimate.py index f5076b6..5edd92d 100644 --- a/mne/source_estimate.py +++ b/mne/source_estimate.py @@ -446,6 +446,7 @@ def morph_data(subject_from, subject_to, stc_from, grade=5, smooth=None, n_vertices = e.shape[0] e = e + sparse.eye(n_vertices, n_vertices) idx_use = stc_from.vertno[hemi] + if len(idx_use)==0: continue n_iter = 100 # max nb of smoothing iterations for k in range(n_iter): e_use = e[:, idx_use] -- 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
