- Add possibility to pass dict of floats as argument to :func:`mne.make_ad_hoc_cov` by `Nathalie Gayraud`_
- Add support for metadata in :class:`mne.Epochs` by `Chris Holdgraf`_, `Alex Gramfort`_, `Jona Sassenhagen`_, and `Eric Larson`_
- Add support for plotting a dense head in :func:`mne.viz.plot_alignment` by `Eric Larson`_
- Allow plotting in user-created mayavi Scene in :func:`mne.viz.plot_alignment` by `Daniel McCloy`_
- Reduce memory consumption and do not require data to be loaded in :meth:`mne.Epochs.apply_baseline` by `Eric Larson`_
- Add option
render_bem
to :meth:`mne.Report.parse_folder` by `Eric Larson`_ - Add to :func:`mne.viz.plot_alignment` plotting of coordinate frame axes via
show_axes
and terrain-style interaction viainteraction
, by `Eric Larson`_ - Add option
initial_event
to :func:`mne.find_events` by `Clemens Brunner`_ - Left and right arrow keys now scroll by 25% of the visible data, whereas Shift+left/right scroll by a whole page in :meth:`mne.io.Raw.plot` by `Clemens Brunner`_
- Add support for gantry tilt angle determination from Elekta FIF file header by `Chris Bailey`_
- Add possibility to concatenate :class:`mne.Annotations` objects with
+
or+=
operators by `Clemens Brunner`_ - Add support for MaxShield raw files in :class:`mne.Report` by `Eric Larson`_
- Add ability to plot whitened data in :meth:`mne.io.Raw.plot`, :meth:`mne.Epochs.plot`, :meth:`mne.Evoked.plot`, and :meth:`mne.Evoked.plot_topo` by `Eric Larson`_
- Workaround for reading EGI MFF files with physiological signals that also present a bug from the EGI system in :func:`mne.io.read_raw_egi` by `Federico Raimondo`_
- Add support for reading subject height and weight in
info['subject_info']
by `Eric Larson`_ - Improve online filtering of raw data when plotting with :meth:`mne.io.Raw.plot` to filter in segments in accordance with the default
skip_by_annotation=('edge', 'bad_acq_skip')
of :meth:`mne.io.Raw.filter` to avoid edge ringing by `Eric Larson`_ - Add support for multiple head position files, plotting of sensors, and control of plotting color and axes in :func:`mne.viz.plot_head_positions` by `Eric Larson`_
- Add ability to read and write :class:`Annotations` separate from :class:`mne.io.Raw` instances via :meth:`Annotations.save` and :func:`read_annotations` by `Eric Larson`_
- Add option to unset a montage by passing None to :meth:`mne.io.Raw.set_montage` by `Clemens Brunner`_
- Add sensor denoising via :func:`mne.preprocessing.oversampled_temporal_projection` by `Eric Larson`_
- Add
mne.io.pick.get_channel_types
which returns all available channel types in MNE by `Clemens Brunner`_ - Use standard PCA instead of randomized PCA whitening prior to ICA to increase reproducibility by `Clemens Brunner`_
- Plot sEEG electrodes in :func:`mne.viz.plot_alignment` by `Alex Gramfort`_
- Add support for any data type like sEEG or ECoG in covariance related functions (estimation, whitening and plotting) by `Alex Gramfort`_ and `Eric Larson`_
- Add function
mne.io.read_annotations_eeglab
to allow loading annotations from EEGLAB files, by `Alex Gramfort`_ - :meth:`mne.io.Raw.set_montage` now accepts a string as its
montage
argument; this will set a builtin montage, by `Clemens Brunner`_ - Add 4D BTi phantom dataset :func:`mne.datasets.phantom_4dbti.data_path`, by `Alex Gramfort`_
- Changed the background color to grey in :func:`mne.viz.plot_alignment` to make helmet more visible, by `Alex Gramfort`_
- Add :meth:`mne.io.Raw.reorder_channels`, :meth:`mne.Evoked.reorder_channels`, etc. to reorder channels, by `Eric Larson`_
- Add to
mne coreg
and :func:`mne.gui.coregistration` by `Eric Larson`_:- Improved visibility of points inside the head
- Projection of EEG electrodes
- Orientation of extra points toward the surface
- Scaling points by distance to the head surface
- Display of HPI points
- ICP fitting with convergence criteria
- Faster display updates
- Scaling of
mri/*.mgz
files - Scaling of
mri/trainsforms/talairach.xfm
files for conversion to MNI space
- Add ability to exclude components interactively by clicking on their labels in :meth:`mne.preprocessing.ICA.plot_components` by `Mikołaj Magnuski`_
- Add reader for manual annotations of raw data produced by Brainstorm by `Anne-Sophie Dubarry`_
- Add eLORETA noise normalization for minimum-norm solvers by `Eric Larson`_
- Tighter duality gap computation in
mne.inverse_sparse.tf_mxne_optim
and new parametrization withalpha
andl1_ratio
instead ofalpha_space
andalpha_time
by `Mathurin Massias`_ and `Daniel Strohmeier`_ - Add
dgap_freq
parameter inmne.inverse_sparse.mxne_optim
solvers to control the frequency of duality gap computation by `Mathurin Massias`_ and `Daniel Strohmeier`_ - Add support for reading Eximia files by `Eric Larson`_ and `Federico Raimondo`_
- Add the Picard algorithm to perform ICA for :class:`mne.preprocessing.ICA`, by `Pierre Ablin`_ and `Alex Gramfort`_
- Add ability to supply a mask to the plot in :func:`mne.viz.plot_evoked_image` by `Jona Sassenhagen`_
- Add
connectivity=False
to cluster-based statistical functions to perform non-clustering stats by `Eric Larson`_ - Add :func:`mne.time_frequency.csd_morlet` and :func:`mne.time_frequency.csd_array_morlet` to estimate cross-spectral density using Morlet wavelets, by `Marijn van Vliet`_
- Add multidictionary time-frequency support to :func:`mne.inverse_sparse.tf_mixed_norm` by `Mathurin Massias`_ and `Daniel Strohmeier`_
- Add new DICS implementation as :func:`mne.beamformer.make_dics`, :func:`mne.beamformer.apply_dics`, :func:`mne.beamformer.apply_dics_csd` and :func:`mne.beamformer.apply_dics_epochs`, by `Marijn van Vliet`_ and `Susanna Aro`_
- Fix bug in EEG interpolation code to do nothing if there is no channel to interpolate by `Mainak Jas`_
- Fix bug in
mne.preprocessing.peak_finder
to output datatype consistently and added input check for empty vectors by `Tommy Clausner`_ - Fix bug in :func:`mne.io.read_raw_brainvision` to use the correct conversion for filters from time constant to frequency by `Stefan Appelhoff`_
- Fix bug with events when saving split files using :meth:`mne.Epochs.save` by `Eric Larson`_
- Fix bug in :class:`mne.decoding.SlidingEstimator` and :class:`mne.decoding.GeneralizingEstimator` to allow :func:`mne.decoding.cross_val_multiscore` to automatically detect whether the
base_estimator
is a classifier and use aStratifiedKFold
instead of aKFold
whencv
is not specified, by `Jean-Rémi King`_ - Fix bug in :func:`mne.set_eeg_reference` to remove an average reference projector when setting the reference to
[]
(i.e. do not change the existing reference) by `Clemens Brunner`_ - Fix bug in threshold-free cluster enhancement parameter validation (:func:`mne.stats.permutation_cluster_1samp_test` and :func:`mne.stats.permutation_cluster_test`) by `Clemens Brunner`_
- Fix bug in :meth:`mne.io.Raw.plot` to correctly display event types when annotations are present by `Clemens Brunner`_
- Fix bug in :func:`mne.stats.spatio_temporal_cluster_test` default value for
threshold
is now calculated based on the array sizes inX
, by `Eric Larson`_ - Fix bug in :func:`mne.simulation.simulate_raw` with
use_cps=True
where CPS was not actually used by `Eric Larson`_ - Fix bug in :func:`mne.simulation.simulate_raw` where 1- and 3-layer BEMs were not properly transformed using
trans
by `Eric Larson`_ - Fix bug in :func:`mne.viz.plot_alignment` where the head surface file
-head.fif
was not used even though present by `Chris Bailey`_ - Fix bug when writing compressed sparse column matrices (e.g., Maxwell filtering cross-talk matrices) by `Marijn van Vliet`_ and `Eric Larson`_
- Fix bug in :meth:`mne.io.Raw.plot_psd` to correctly deal with
reject_by_annotation=False
by `Clemens Brunner`_ - Fix bug in :func:`mne.make_fixed_length_events` when hitting corner case problems rounding to sample numbers by `Eric Larson`_
- Fix bug in :class:`mne.Epochs` when passing events as list with
event_id=None
by `Alex Gramfort`_ - Fix bug in
mne.Report.add_figs_to_section
when passing :class:`numpy.ndarray` by `Eric Larson`_ - Fix bug in CSS class setting in mne.Report BEM section by `Eric Larson`_
- Fix bug in :class:`Annotations` where annotations that extend to the end of a recording were not extended properly by `Eric Larson`_
- Fix bug in :meth:`mne.io.Raw.filter` to properly raw data with acquisition skips in separate segments by `Eric Larson`_
- Fix bug in :func:`mne.preprocessing.maxwell_filter` where homogeneous fields were not removed for CTF systems by `Eric Larson`_
- Fix computation of average quaternions in :func:`mne.preprocessing.maxwell_filter` by `Eric Larson`_
- Fix bug in writing
raw.annotations
where empty annotations could not be written to disk, by `Eric Larson`_ - Fix support for writing FIF files with acquisition skips by using empty buffers rather than writing zeros by `Eric Larson`_
- Fix bug in the
mne make_scalp_surfaces
command where--force
(to bypass topology check failures) was ignored by `Eric Larson`_ - Fix bug in :func:`mne.preprocessing.maxwell_filter` when providing
origin
in'meg'
coordinate frame for recordings with a MEG to head transform (i.e., non empty-room recordings) by `Eric Larson`_ - Fix bug in :func:`mne.viz.plot_cov` that ignored
colorbar
argument by `Nathalie Gayraud`_ - Fix bug when picking CTF channels that could cause data saved to disk to be unreadable by `Eric Larson`_
- Fix bug when reading event latencies (in samples) from eeglab files didn't translate indices to 0-based python indexing by `Mikołaj Magnuski`_
- Fix consistency between :class:`mne.Epochs` and :func:`mne.stats.linear_regression_raw` in converting between samples and times (:func:`mne.stats.linear_regression_raw` now rounds, instead of truncating) by `Phillip Alday`_
- Fix bug in
mne coreg
where sphere surfaces were scaled by `Eric Larson`_ - Fix bug in :meth:`mne.Evoked.plot_topomap` when using
proj='interactive'
mode by `Eric Larson`_ - Fix bug when passing
show_sensors=1
to :func:`mne.viz.plot_compare_evokeds` resulted in sensors legend placed in lower right of the figure (position 4 in matplotlib), not upper right by `Mikołaj Magnuski`_ - Fix handling of annotations when cropping and concatenating raw data by `Alex Gramfort`_ and `Eric Larson`_
- Fix bug in :func:`mne.preprocessing.create_ecg_epochs` where
keep_ecg=False
was ignored by `Eric Larson`_ - Fix bug in :meth:`mne.io.Raw.plot_psd` when
picks is not None
andpicks
spans more than one channel type by `Eric Larson`_ - Fix bug in :class:`mne.make_forward_solution` when passing data with compensation channels (e.g. CTF) that contain bad channels by `Alex Gramfort`_
- Fix bug in :meth:`mne.SourceEstimate.get_peak` and :meth:`mne.VolSourceEstimate.get_peak` when there is only a single time point by `Marijn van Vliet`_
- Fix bug in :func:`mne.io.read_raw_edf` when reading BDF files stimulus channels are now not scaled anymore by `Clemens Brunner`_
- Channels with unknown locations are now assigned position
[np.nan, np.nan, np.nan]
instead of[0., 0., 0.]
, by `Eric Larson`_ - Removed unused
image_mask
argument from :func:`mne.viz.plot_topomap` by `Eric Larson`_ - Unknown measurement dates are now stored as
info['meas_date'] = None
rather than using the current date.None
is also now used when anonymizing data and when determining the machine ID for writing files, by `Mainak Jas`_ and `Eric Larson`_ - :meth:`mne.Evoked.plot` will now append the number of epochs averaged for the evoked data in the first plot title, by `Eric Larson`_
- Changed the line width in :func:`mne.viz.plot_bem` from 2.0 to 1.0 for better visibility of underlying structures, by `Eric Larson`_
- Changed the behavior of :meth:`mne.io.Raw.pick_channels` and similar methods to be consistent with :func:`mne.pick_channels` to treat channel list as a set (ignoring order) -- if reordering is necessary use
inst.reorder_channels
, by `Eric Larson`_ - Changed the labeling of some plotting functions to use more standard capitalization and units, e.g. "Time (s)" instead of "time [sec]" by `Eric Larson`_
mne.time_frequency.csd_epochs
has been refactored into :func:`mne.time_frequency.csd_fourier` and :func:`mne.time_frequency.csd_multitaper`, by `Marijn van Vliet`_mne.time_frequency.csd_array
has been refactored into :func:`mne.time_frequency.csd_array_fourier` and :func:`mne.time_frequency.csd_array_multitaper`, by `Marijn van Vliet`_- Added
clean_names=False
parameter to :func:`mne.io.read_raw_ctf` for control over cleaning of main channel names and compensation channel names from CTF suffixes by `Oleh Kozynets`_ - The functions
lcmv
,lcmv_epochs
, andlcmv_raw
are now deprecated in favor of :func:`mne.beamformer.make_lcmv` and :func:`mne.beamformer.apply_lcmv`, :func:`mne.beamformer.apply_lcmv_epochs`, and :func:`mne.beamformer.apply_lcmv_raw`, by `Britta Westner`_ - The functions
mne.beamformer.dics
,mne.beamformer.dics_epochs
andmne.beamformer.dics_source_power
are now deprecated in favor of :func:`mne.beamformer.make_dics`, :func:`mne.beamformer.apply_dics`, and :func:`mne.beamformer.apply_dics_csd`, by `Marijn van Vliet`_
People who contributed to this release (in alphabetical order):
- Alejandro Weinstein
- Alexandre Gramfort
- Annalisa Pascarella
- Anne-Sophie Dubarry
- Britta Westner
- Chris Bailey
- Chris Holdgraf
- Christian Brodbeck
- Claire Braboszcz
- Clemens Brunner
- Daniel McCloy
- Denis A. Engemann
- Desislava Petkova
- Dominik Krzemiński
- Eric Larson
- Erik Hornberger
- Fede Raimondo
- Henrich Kolkhorst
- Jean-Rémi King
- Jen Evans
- Joan Massich
- Jon Houck
- Jona Sassenhagen
- Juergen Dammers
- Jussi Nurminen
- Kambiz Tavabi
- Katrin Leinweber
- Kostiantyn Maksymenko
- Larry Eisenman
- Luke Bloy
- Mainak Jas
- Marijn van Vliet
- Mathurin Massias
- Mikolaj Magnuski
- Nathalie Gayraud
- Oleh Kozynets
- Phillip Alday
- Pierre Ablin
- Stefan Appelhoff
- Stefan Repplinger
- Tommy Clausner
- Yaroslav Halchenko