[med-svn] [python-mne] 282/353: evoked in separate file

Yaroslav Halchenko debian at onerussian.com
Fri Nov 27 17:25:16 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 8dc00424edc7a8d004d7d6f48ae9a41eb51b6d0d
Author: Martin Luessi <mluessi at nmr.mgh.harvard.edu>
Date:   Mon Jul 16 14:39:55 2012 -0400

    evoked in separate file
---
 mne/simulation/__init__.py |   4 +-
 mne/simulation/evoked.py   | 127 +++++++++++++++++++++++++++++++++++++++++++
 mne/simulation/source.py   | 132 +++------------------------------------------
 3 files changed, 138 insertions(+), 125 deletions(-)

diff --git a/mne/simulation/__init__.py b/mne/simulation/__init__.py
index e0d887b..70c5eba 100644
--- a/mne/simulation/__init__.py
+++ b/mne/simulation/__init__.py
@@ -1,6 +1,8 @@
 """Data simulation code
 """
 
+from .evoked import generate_evoked
+
 from .source import select_source_in_label, generate_sparse_stc, \
-                    generate_evoked, circular_source_labels
+                    circular_source_labels
 
diff --git a/mne/simulation/evoked.py b/mne/simulation/evoked.py
new file mode 100644
index 0000000..cdecb32
--- /dev/null
+++ b/mne/simulation/evoked.py
@@ -0,0 +1,127 @@
+# Authors: Alexandre Gramfort <gramfort at nmr.mgh.harvard.edu>
+#          Martin Luessi <mluessi at nmr.mgh.harvard.edu>
+#          Matti Hamalainen <msh at nmr.mgh.harvard.edu>
+#
+# License: BSD (3-clause)
+import copy
+
+import numpy as np
+from scipy import signal
+
+from ..fiff.pick import pick_channels_cov
+from ..utils import check_random_state
+from ..forward import apply_forward
+
+
+def generate_evoked(fwd, stc, evoked, cov, snr=3, tmin=None, tmax=None,
+                    fir_filter=None, random_state=None):
+    """Generate noisy evoked data
+
+    Parameters
+    ----------
+    fwd : dict
+        a forward solution
+    stc : SourceEstimate object
+        The source time courses
+    evoked : Evoked object
+        An instance of evoked used as template
+    cov : Covariance object
+        The noise covariance
+    snr : float
+        signal to noise ratio in dB. It corresponds to
+        10 * log10( var(signal) / var(noise) )
+    tmin : float | None
+        start of time interval to estimate SNR. If None first time point
+        is used.
+    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]
+    random_state : None | int | np.random.RandomState
+        To specify the random generator state.
+
+    Returns
+    -------
+    evoked : Evoked object
+        The simulated evoked data
+    """
+    evoked = apply_forward(fwd, stc, evoked)
+    noise = generate_noise_evoked(evoked, cov, fir_filter)
+    evoked_noise = add_noise_evoked(evoked, noise, snr, tmin=tmin, tmax=tmax)
+    return evoked_noise
+
+
+def generate_noise_evoked(evoked, noise_cov, fir_filter=None,
+                          random_state=None):
+    """Creates noise as a multivariate Gaussian
+
+    The spatial covariance of the noise is given from the cov matrix.
+
+    Parameters
+    ----------
+    evoked : evoked object
+        an instance of evoked used as template
+    cov : Covariance object
+        The noise covariance
+    fir_filter : None | array
+        FIR filter coefficients
+    random_state : None | int | np.random.RandomState
+        To specify the random generator state.
+
+    Returns
+    -------
+    noise : evoked object
+        an instance of evoked
+    """
+    noise = copy.deepcopy(evoked)
+    noise_cov = pick_channels_cov(noise_cov, include=noise.info['ch_names'])
+    rng = check_random_state(random_state)
+    n_channels = np.zeros(noise.info['nchan'])
+    n_samples = evoked.data.shape[1]
+    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)
+    return noise
+
+
+def add_noise_evoked(evoked, noise, snr, tmin=None, tmax=None):
+    """Adds noise to evoked object with specified SNR.
+
+    SNR is computed in the interval from tmin to tmax.
+
+    Parameters
+    ----------
+    evoked : Evoked object
+        An instance of evoked with signal
+    noise : Evoked object
+        An instance of evoked with noise
+    snr : float
+        signal to noise ratio in dB. It corresponds to
+        10 * log10( var(signal) / var(noise) )
+    tmin : float
+        start time before event
+    tmax : float
+        end time after event
+
+    Returns
+    -------
+    evoked_noise : Evoked object
+        An instance of evoked corrupted by noise
+    """
+    evoked = copy.deepcopy(evoked)
+    times = evoked.times
+    if tmin is None:
+        tmin = np.min(times)
+    if tmax is None:
+        tmax = np.max(times)
+    tmask = (times >= tmin) & (times <= tmax)
+    tmp = np.mean((evoked.data[:, tmask] ** 2).ravel()) / \
+                                     np.mean((noise.data ** 2).ravel())
+    tmp = 10 * np.log10(tmp)
+    noise.data = 10 ** ((tmp - float(snr)) / 20) * noise.data
+    evoked.data += noise.data
+    return evoked
+
+
diff --git a/mne/simulation/source.py b/mne/simulation/source.py
index de416b4..f0d1b9c 100644
--- a/mne/simulation/source.py
+++ b/mne/simulation/source.py
@@ -4,132 +4,16 @@
 #
 # License: BSD (3-clause)
 import os
-import copy
 
 import numpy as np
-from scipy import signal
 from scipy.sparse import csr_matrix
 
-from ..fiff.pick import pick_channels_cov
 from ..minimum_norm.inverse import _make_stc
 from ..utils import check_random_state
-from ..forward import apply_forward
 from ..surface import read_surface
 from ..source_estimate import mesh_edges
 
 
-def generate_evoked(fwd, stc, evoked, cov, snr=3, tmin=None, tmax=None,
-                    fir_filter=None, random_state=None):
-    """Generate noisy evoked data
-
-    Parameters
-    ----------
-    fwd : dict
-        a forward solution
-    stc : SourceEstimate object
-        The source time courses
-    evoked : Evoked object
-        An instance of evoked used as template
-    cov : Covariance object
-        The noise covariance
-    snr : float
-        signal to noise ratio in dB. It corresponds to
-        10 * log10( var(signal) / var(noise) )
-    tmin : float | None
-        start of time interval to estimate SNR. If None first time point
-        is used.
-    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]
-    random_state : None | int | np.random.RandomState
-        To specify the random generator state.
-
-    Returns
-    -------
-    evoked : Evoked object
-        The simulated evoked data
-    """
-    evoked = apply_forward(fwd, stc, evoked)
-    noise = generate_noise_evoked(evoked, cov, fir_filter)
-    evoked_noise = add_noise_evoked(evoked, noise, snr, tmin=tmin, tmax=tmax)
-    return evoked_noise
-
-
-def generate_noise_evoked(evoked, noise_cov, fir_filter=None,
-                          random_state=None):
-    """Creates noise as a multivariate Gaussian
-
-    The spatial covariance of the noise is given from the cov matrix.
-
-    Parameters
-    ----------
-    evoked : evoked object
-        an instance of evoked used as template
-    cov : Covariance object
-        The noise covariance
-    fir_filter : None | array
-        FIR filter coefficients
-    random_state : None | int | np.random.RandomState
-        To specify the random generator state.
-
-    Returns
-    -------
-    noise : evoked object
-        an instance of evoked
-    """
-    noise = copy.deepcopy(evoked)
-    noise_cov = pick_channels_cov(noise_cov, include=noise.info['ch_names'])
-    rng = check_random_state(random_state)
-    n_channels = np.zeros(noise.info['nchan'])
-    n_samples = evoked.data.shape[1]
-    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)
-    return noise
-
-
-def add_noise_evoked(evoked, noise, snr, tmin=None, tmax=None):
-    """Adds noise to evoked object with specified SNR.
-
-    SNR is computed in the interval from tmin to tmax.
-
-    Parameters
-    ----------
-    evoked : Evoked object
-        An instance of evoked with signal
-    noise : Evoked object
-        An instance of evoked with noise
-    snr : float
-        signal to noise ratio in dB. It corresponds to
-        10 * log10( var(signal) / var(noise) )
-    tmin : float
-        start time before event
-    tmax : float
-        end time after event
-
-    Returns
-    -------
-    evoked_noise : Evoked object
-        An instance of evoked corrupted by noise
-    """
-    evoked = copy.deepcopy(evoked)
-    times = evoked.times
-    if tmin is None:
-        tmin = np.min(times)
-    if tmax is None:
-        tmax = np.max(times)
-    tmask = (times >= tmin) & (times <= tmax)
-    tmp = np.mean((evoked.data[:, tmask] ** 2).ravel()) / \
-                                     np.mean((noise.data ** 2).ravel())
-    tmp = 10 * np.log10(tmp)
-    noise.data = 10 ** ((tmp - float(snr)) / 20) * noise.data
-    evoked.data += noise.data
-    return evoked
-
-
 def select_source_in_label(fwd, label, random_state=None):
     """Select source positions using a label
 
@@ -278,15 +162,15 @@ def _verts_within_dist(graph, source, max_dist):
 def circular_source_labels(subject, seeds, extents, hemis, subjects_dir=None):
     """ Generate circular labels in source space
 
-    This function generates a number of labels in source space by growing regions
-    starting from the vertices defined in "seeds". For each seed, a label is generated
-    containing all vertices within a maximum geodesic distance on the white matter
-    surface from the seed.
+    This function generates a number of labels in source space by growing
+    regions starting from the vertices defined in "seeds". For each seed, a
+    label is generated containing all vertices within a maximum geodesic
+    distance on the white matter surface from the seed.
 
-    Note: "extents" and "hemis" can either be arrays with the same length as seeds,
-          which allows using a different extent and hemisphere for each label, or
-          integers, in which case the same extent and hemisphere is used for each
-          label.
+    Note: "extents" and "hemis" can either be arrays with the same length as
+          seeds, which allows using a different extent and hemisphere for each
+          label, or integers, in which case the same extent and hemisphere is
+          used for each label.
 
     Parameters:
     ----------

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