[med-svn] [python-mne] 316/353: FIX: fir->iir, time index bug
Yaroslav Halchenko
debian at onerussian.com
Fri Nov 27 17:25:23 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 e420093f825f84e57dbceef263610a8c3c321a0b
Author: Martin Luessi <mluessi at nmr.mgh.harvard.edu>
Date: Fri Jul 27 15:32:33 2012 -0400
FIX: fir->iir, time index bug
---
examples/plot_simulate_evoked_data.py | 6 +++---
mne/simulation/evoked.py | 14 +++++++-------
mne/time_frequency/__init__.py | 2 +-
mne/time_frequency/ar.py | 27 +++++++++++++++++++--------
4 files changed, 30 insertions(+), 19 deletions(-)
diff --git a/examples/plot_simulate_evoked_data.py b/examples/plot_simulate_evoked_data.py
index e3d2506..4ba2fc4 100644
--- a/examples/plot_simulate_evoked_data.py
+++ b/examples/plot_simulate_evoked_data.py
@@ -15,7 +15,7 @@ import pylab as pl
import mne
from mne.fiff.pick import pick_types_evoked, pick_types_forward
from mne.datasets import sample
-from mne.time_frequency import fir_filter_raw, morlet
+from mne.time_frequency import iir_filter_raw, morlet
from mne.viz import plot_evoked, plot_sparse_source_estimates
from mne.simulation import generate_sparse_stc, generate_evoked
@@ -69,9 +69,9 @@ stc = generate_sparse_stc(fwd['src'], labels, stc_data, tmin, tstep,
###############################################################################
# Generate noisy evoked data
picks = mne.fiff.pick_types(raw.info, meg=True)
-fir_filter = fir_filter_raw(raw, order=5, picks=picks, tmin=60, tmax=180)
+iir_filter = iir_filter_raw(raw, order=5, picks=picks, tmin=60, tmax=180)
evoked = generate_evoked(fwd, stc, evoked_template, cov, snr,
- tmin=0.0, tmax=0.2, fir_filter=fir_filter)
+ tmin=0.0, tmax=0.2, iir_filter=iir_filter)
###############################################################################
# Plot
diff --git a/mne/simulation/evoked.py b/mne/simulation/evoked.py
index 348bcfe..db4a15c 100644
--- a/mne/simulation/evoked.py
+++ b/mne/simulation/evoked.py
@@ -14,7 +14,7 @@ from ..forward import apply_forward
def generate_evoked(fwd, stc, evoked, cov, snr=3, tmin=None, tmax=None,
- fir_filter=None, random_state=None):
+ iir_filter=None, random_state=None):
"""Generate noisy evoked data
Parameters
@@ -36,8 +36,8 @@ def generate_evoked(fwd, stc, evoked, cov, snr=3, tmin=None, tmax=None,
tmax : float
start of time interval to estimate SNR. If None last time point
is used.
- fir_filter : None | array
- FIR filter coefficients e.g. [1, -1, 0.2]
+ iir_filter : None | array
+ IIR filter coefficients (denominator) e.g. [1, -1, 0.2]
random_state : None | int | np.random.RandomState
To specify the random generator state.
@@ -52,7 +52,7 @@ def generate_evoked(fwd, stc, evoked, cov, snr=3, tmin=None, tmax=None,
return evoked_noise
-def generate_noise_evoked(evoked, noise_cov, fir_filter=None,
+def generate_noise_evoked(evoked, noise_cov, iir_filter=None,
random_state=None):
"""Creates noise as a multivariate Gaussian
@@ -64,8 +64,8 @@ def generate_noise_evoked(evoked, noise_cov, fir_filter=None,
an instance of evoked used as template
cov : Covariance object
The noise covariance
- fir_filter : None | array
- FIR filter coefficients
+ iir_filter : None | array
+ IIR filter coefficients (denominator)
random_state : None | int | np.random.RandomState
To specify the random generator state.
@@ -82,7 +82,7 @@ def generate_noise_evoked(evoked, noise_cov, fir_filter=None,
noise.data = rng.multivariate_normal(n_channels, noise_cov.data,
n_samples).T
if fir_filter is not None:
- noise.data = signal.lfilter([1], fir_filter, noise.data, axis=-1)
+ noise.data = signal.lfilter([1], iir_filter, noise.data, axis=-1)
return noise
diff --git a/mne/time_frequency/__init__.py b/mne/time_frequency/__init__.py
index cee6d90..10494a1 100644
--- a/mne/time_frequency/__init__.py
+++ b/mne/time_frequency/__init__.py
@@ -3,4 +3,4 @@
from .tfr import induced_power, single_trial_power, morlet
from .psd import compute_raw_psd
-from .ar import yule_walker, ar_raw, fir_filter_raw
+from .ar import yule_walker, ar_raw, iir_filter_raw
diff --git a/mne/time_frequency/ar.py b/mne/time_frequency/ar.py
index 17e7a5a..b495959 100644
--- a/mne/time_frequency/ar.py
+++ b/mne/time_frequency/ar.py
@@ -101,8 +101,12 @@ def ar_raw(raw, order, picks, tmin=None, tmax=None):
coefs : array
Sets of coefficients for each channel
"""
- start, stop = raw.time_to_index(tmin, tmax)
- data, times = raw[picks, start:(stop + 1)]
+ start, stop = None, None
+ if tmin is not None:
+ start = raw.time_to_index(tmin)[0]
+ if tmax is not None:
+ stop = raw.time_to_index(tmax)[0] + 1
+ data, times = raw[picks, start:stop]
coefs = np.empty((len(data), order))
for k, d in enumerate(data):
@@ -111,10 +115,17 @@ def ar_raw(raw, order, picks, tmin=None, tmax=None):
return coefs
-def fir_filter_raw(raw, order, picks, tmin=None, tmax=None):
- """Fits an AR model to raw data and creates corresponding FIR filter
+def iir_filter_raw(raw, order, picks, tmin=None, tmax=None):
+ """Fits an AR model to raw data and creates the corresponding IIR filter
- The returned filter is the average filter for all the picked channels.
+ The computed filter is the average filter for all the picked channels.
+ The returned filter coefficents are the denominator of the filter
+ (the numerator is 1). The frequency response is given by
+
+ jw 1
+ H(e) = --------------------------------
+ -jw -jnw
+ a[0] + a[1]e + ... + a[n]e
Parameters
----------
@@ -131,11 +142,11 @@ def fir_filter_raw(raw, order, picks, tmin=None, tmax=None):
Returns
-------
- fir : array
+ a : array
filter coefficients
"""
picks = picks[:5]
coefs = ar_raw(raw, order=order, picks=picks, tmin=tmin, tmax=tmax)
mean_coefs = np.mean(coefs, axis=0) # mean model accross channels
- fir = np.r_[1, -mean_coefs] # filter coefficient
- return fir
+ a = np.r_[1, -mean_coefs] # filter coefficients
+ return a
--
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