This is an automated email from the git hooks/post-receive script. yoh pushed a commit to annotated tag upstream/0.8.3+dfsg in repository python-mne.
commit 42102788a769ae584bf43bd08254abbf6bf515e6 Author: Yaroslav Halchenko <[email protected]> Date: Sun Sep 21 23:44:47 2014 +0200 Imported Upstream version 0.8.3+dfsg --- doc/source/python_reference.rst | 30 ++++++++++++++++++++++++++++-- mne/__init__.py | 2 +- mne/channels.py | 9 +++++++-- mne/time_frequency/__init__.py | 1 + mne/time_frequency/tests/test_tfr.py | 16 ++++++++++++++++ mne/time_frequency/tfr.py | 5 ++++- 6 files changed, 57 insertions(+), 6 deletions(-) diff --git a/doc/source/python_reference.rst b/doc/source/python_reference.rst index 6101c43..3704cc9 100644 --- a/doc/source/python_reference.rst +++ b/doc/source/python_reference.rst @@ -132,7 +132,7 @@ Functions: get_head_surf get_meg_helmet_surf parse_config - read_annot + read_labels_from_annot read_bem_solution read_bem_surfaces read_cov @@ -151,7 +151,7 @@ Functions: read_surface read_trans save_stc_as_volume - write_annot + write_labels_to_annot write_bem_surface write_cov write_events @@ -723,7 +723,19 @@ Decoding .. automodule:: mne.decoding :no-members: + :no-inherited-members: + +Classes: + +.. autosummary:: + :toctree: generated/ + :template: class.rst + Scaler + ConcatenateChannels + PSDEstimator + FilterEstimator + CSP Realtime ======== @@ -732,6 +744,20 @@ Realtime .. automodule:: mne.realtime :no-members: + :no-inherited-members: + +Classes: + +.. autosummary:: + :toctree: generated/ + :template: class.rst + + RtEpochs + RtClient + MockRtClient + FieldTripClient + StimServer + StimClient MNE-Report ========== diff --git a/mne/__init__.py b/mne/__init__.py index a2d4884..a8c5268 100644 --- a/mne/__init__.py +++ b/mne/__init__.py @@ -1,7 +1,7 @@ """MNE for MEG and EEG data analysis """ -__version__ = '0.8.2' +__version__ = '0.8.3' # have to import verbose first since it's needed by many things from .utils import (set_log_level, set_log_file, verbose, set_config, diff --git a/mne/channels.py b/mne/channels.py index 1c525fd..d50dee2 100644 --- a/mne/channels.py +++ b/mne/channels.py @@ -92,10 +92,11 @@ def equalize_channels(candidates, verbose=None): from .io.base import _BaseRaw from .epochs import Epochs from .evoked import Evoked + from .time_frequency import AverageTFR - if not all([isinstance(c, (_BaseRaw, Epochs, Evoked)) + if not all([isinstance(c, (_BaseRaw, Epochs, Evoked, AverageTFR)) for c in candidates]): - valid = ['Raw', 'Epochs', 'Evoked'] + valid = ['Raw', 'Epochs', 'Evoked', 'AverageTFR'] raise ValueError('candidates must be ' + ' or '.join(valid)) chan_max_idx = np.argmax([c.info['nchan'] for c in candidates]) @@ -175,6 +176,8 @@ class PickDropChannelsMixin(object): from .io.base import _BaseRaw from .epochs import Epochs from .evoked import Evoked + from .time_frequency import AverageTFR + if isinstance(self, _BaseRaw): if not self.preload: raise RuntimeError('Raw data must be preloaded to drop or pick' @@ -197,6 +200,8 @@ class PickDropChannelsMixin(object): self._data = self._data[idx, :] elif isinstance(self, Epochs) and inst_has('_data'): self._data = self._data[:, idx, :] + elif isinstance(self, AverageTFR) and inst_has('data'): + self.data = self.data[idx, :, :] elif isinstance(self, Evoked): self.data = self.data[idx, :] diff --git a/mne/time_frequency/__init__.py b/mne/time_frequency/__init__.py index 806c44d..4e8837c 100644 --- a/mne/time_frequency/__init__.py +++ b/mne/time_frequency/__init__.py @@ -2,6 +2,7 @@ """ from .tfr import induced_power, single_trial_power, morlet, tfr_morlet +from .tfr import AverageTFR from .psd import compute_raw_psd, compute_epochs_psd from .csd import CrossSpectralDensity, compute_epochs_csd from .ar import yule_walker, ar_raw, iir_filter_raw diff --git a/mne/time_frequency/tests/test_tfr.py b/mne/time_frequency/tests/test_tfr.py index 653e43a..d9497cc 100644 --- a/mne/time_frequency/tests/test_tfr.py +++ b/mne/time_frequency/tests/test_tfr.py @@ -3,6 +3,7 @@ import os.path as op from numpy.testing import assert_array_almost_equal from nose.tools import assert_true, assert_false, assert_equal +import mne from mne import io, Epochs, read_events, pick_types from mne.time_frequency import single_trial_power from mne.time_frequency.tfr import cwt_morlet, morlet, tfr_morlet @@ -51,6 +52,10 @@ def test_time_frequency(): freqs = np.arange(6, 20, 5) # define frequencies of interest n_cycles = freqs / 4. + # Test first with a single epoch + power, itc = tfr_morlet(epochs[0], freqs=freqs, n_cycles=n_cycles, + use_fft=True, return_itc=True) + power, itc = tfr_morlet(epochs, freqs=freqs, n_cycles=n_cycles, use_fft=True, return_itc=True) @@ -91,3 +96,14 @@ def test_time_frequency(): n_cycles=2) assert_array_almost_equal(np.mean(single_power), power.data) + + power_pick = power.pick_channels(power.ch_names[:10:2]) + assert_equal(len(power_pick.ch_names), len(power.ch_names[:10:2])) + assert_equal(power_pick.data.shape[0], len(power.ch_names[:10:2])) + power_drop = power.drop_channels(power.ch_names[1:10:2]) + assert_equal(power_drop.ch_names, power_pick.ch_names) + assert_equal(power_pick.data.shape[0], len(power_drop.ch_names)) + + mne.equalize_channels([power_pick, power_drop]) + assert_equal(power_pick.ch_names, power_drop.ch_names) + assert_equal(power_pick.data.shape, power_drop.data.shape) diff --git a/mne/time_frequency/tfr.py b/mne/time_frequency/tfr.py index 6a16a9e..7653eed 100644 --- a/mne/time_frequency/tfr.py +++ b/mne/time_frequency/tfr.py @@ -386,7 +386,7 @@ def _induced_power(data, Fs, frequencies, use_fft=True, n_cycles=7, plf = np.empty((n_channels, n_frequencies, n_times), dtype=np.complex) for c in range(n_channels): - X = np.squeeze(data[:, c, :]) + X = data[:, c, :] this_psd, this_plf = _time_frequency(X, Ws, use_fft) psd[c], plf[c] = this_psd[:, ::decim], this_plf[:, ::decim] else: @@ -476,6 +476,9 @@ def _preproc_tfr(data, times, freqs, tmin, tmax, fmin, fmax, mode, freqs = freqs[ifmin:ifmax] + # crop data + data = data[:, ifmin:ifmax, itmin:itmax] + times *= 1e3 if dB: data = 20 * np.log10(data) -- 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
