[med-svn] [python-mne] 227/353: ENH: proj support in compute_raw_psd

Yaroslav Halchenko debian at onerussian.com
Fri Nov 27 17:25:02 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 34add6faf3bac0722285e0b6fdc3396a61a80804
Author: mluessi at nmr.mgh.harvard.edu <mluessi at nmr.mgh.harvard.edu>
Date:   Mon Jun 25 05:38:54 2012 -0400

    ENH: proj support in compute_raw_psd
---
 mne/time_frequency/psd.py            | 14 ++++++++++++--
 mne/time_frequency/tests/test_psd.py |  7 ++++++-
 2 files changed, 18 insertions(+), 3 deletions(-)

diff --git a/mne/time_frequency/psd.py b/mne/time_frequency/psd.py
index cc80874..32c5d47 100644
--- a/mne/time_frequency/psd.py
+++ b/mne/time_frequency/psd.py
@@ -4,11 +4,11 @@
 import numpy as np
 import pylab as pl
 from ..parallel import parallel_func
-
+from ..fiff.proj import make_projector_info
 
 def compute_raw_psd(raw, tmin=0, tmax=np.inf, picks=None,
                     fmin=0, fmax=np.inf, NFFT=2048, n_jobs=1,
-                    plot=False):
+                    plot=False, proj=False):
     """Compute power spectral density with multi-taper
 
     Parameters
@@ -42,6 +42,9 @@ def compute_raw_psd(raw, tmin=0, tmax=np.inf, picks=None,
     plot: bool
         Plot each PSD estimates
 
+    proj : bool
+        Apply SSP projection vectors
+
     Return
     ------
     psd: array of float
@@ -56,6 +59,13 @@ def compute_raw_psd(raw, tmin=0, tmax=np.inf, picks=None,
     else:
         data, times = raw[:, start:(stop + 1)]
 
+    if proj:
+        proj, _ = make_projector_info(raw.info)
+        if picks is not None:
+            data = np.dot(proj[picks][:, picks], data)
+        else:
+            data = np.dot(proj, data)
+
     NFFT = int(NFFT)
     Fs = raw.info['sfreq']
 
diff --git a/mne/time_frequency/tests/test_psd.py b/mne/time_frequency/tests/test_psd.py
index 5d70405..38a7936 100644
--- a/mne/time_frequency/tests/test_psd.py
+++ b/mne/time_frequency/tests/test_psd.py
@@ -27,8 +27,13 @@ def test_psd():
     fmin, fmax = 2, 70  # look at frequencies between 5 and 70Hz
     NFFT = 124 # the FFT size (NFFT). Ideally a power of 2
     psds, freqs = compute_raw_psd(raw, tmin=tmin, tmax=tmax, picks=picks,
-                                  fmin=fmin, fmax=fmax, NFFT=NFFT, n_jobs=1)
+                                  fmin=fmin, fmax=fmax, NFFT=NFFT, n_jobs=1,
+                                  proj=False)
+    psds_proj, freqs = compute_raw_psd(raw, tmin=tmin, tmax=tmax, picks=picks,
+                                  fmin=fmin, fmax=fmax, NFFT=NFFT, n_jobs=1,
+                                  proj=True)
 
+    assert_array_almost_equal(psds, psds_proj)
     assert_true(psds.shape == (len(picks), len(freqs)))
     assert_true(np.sum(freqs < 0) == 0)
     assert_true(np.sum(psds < 0) == 0)

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