What’s new#
Version 1.3.1 (2023-02-23)#
Bugs#
Fix visualization dialog compatibility with matplotlib 3.7 (#11409 by Daniel McCloy and Eric Larson)
Version 1.3.0 (2022-12-21)#
Enhancements#
Improve default line width used in
mne.viz.plot_filter()
(#11333 by new contributor Toomas Erik Anijärv)Add the argument
max_iter
topsd_array_multitaper()
and tocsd_array_multitaper()
to increase the maximum number of iterations to reach convergence when usingadaptive=True
(#11237 by Mathieu Scheltienne)Add a warning to the docstring of
mne.channels.find_ch_adjacency()
to encourage users to validate their outputs (#11236 by Felix Klotzsche and Eric Larson)Mixed, cortical + discrete source spaces with fixed orientations are now allowed. (#11241 by Jevri Hanna)
Add size information to the
repr
ofmne.Report
(#11357 by Eric Larson)Add support for
image_format='webp'
tomne.Report
when using Matplotlib 3.6+, which can reduce file sizes by up to 50% compared to'png'
. The new defaultimage_format='auto'
will automatically use this format if it’s available on the system (#11359 by Eric Larson)Add
mne.beamformer.apply_dics_tfr_epochs()
to apply a DICS beamformer to time-frequency resolved epochs (#11096 by Alex Rockhill)Add
mne.time_frequency.fwhm()
to determine the full-width half maximum formne.time_frequency.morlet()
(#11353 by Britta Westner, Daniel McCloy, and Eric Larson)Check whether head radius (estimated from channel positions) is correct when reading EEGLAB data with
read_raw_eeglab()
andread_epochs_eeglab()
. If head radius is not within likely values, warn informing about possible units mismatch and the newmontage_units
argument (#11283 by Mikołaj Magnuski).Add support for a callable passed in
combine
formne.time_frequency.AverageTFR.plot
andmne.time_frequency.AverageTFR.plot_joint
(#11329 by Mathieu Scheltienne)
Bugs#
Fix bug in
mne.export.export_raw()
when exporting raw to EDF with EDFLib when subjectsex
is missing (#11375 by new contributor Mark Alexander Henney)Fix bugs in documentation of
mne.time_frequency.tfr_array_multitaper()
and related functions/methods (#11310 by new contributor Santeri Ruuskanen)Fix bug to be able to customize legends when using
mne.viz.Brain.add_volume_labels()
(#11289 by new contributor Mauricio Cespedes Tenorio)Fix bug in documentation of
mne.channels.make_dig_montage()
(#11235 by new contributor Daniel Hasegan)Add support for bad channel handling in
mne.set_bipolar_reference()
(#11245 by Moritz Gerster, new contributor Dinara Issagaliyeva, new contributor Jennifer Behnke, new contributor Hakimeh Aslsardroud, and new contributor Pavel Navratil)Fix X coordinates of ear_left and ear_right in head outlines dict (#11255 by new contributor Tom Ma)
Add type checking for
tmin
andtmax
arguments forcrop
(#11263 by new contributor Carlos de la Torre-Ortiz).Fix bug where trying to setup projection without an EEG average reference projector would fail (#11351 by new contributor Enzo Altamiranda)
Fix bug where
ica.reject_
was not saved to disk, and theica.reject_
property was not inherited fromEpochs
when doingICA.fit(epochs)
(#11244 by Eric Larson)Fix bug in automatic MESA detection for disabling advanced 3D options (#11271 by Eric Larson)
Fix bug in
mne.head_to_mri()
whenunscale=True
(#11303 by Eric Larson)Fix bug in
set_montage('mgh60')
and related functions where the'mgh60'
sensor positions were incorrectly ordered (#11290 by Eric Larson)Fix bug in the
.compute_psd()
methods where the number of unaggregated Welch segments was wrongly computed for some inputs, leading to an assertion error when computing the PSD (#11248 by Daniel McCloy)Fix bug in the
plot_evoked_topo()
andplot_topo()
, where legend colors where shown incorrectly on newer matplotlib versions (#11258 by Erkka Heinila)Fix bug where EEGLAB channel positions were read as meters, while they are commonly in millimeters, leading to head outlies of the size of one channel when plotting topomaps. Now
montage_units
argument has been added toread_raw_eeglab()
andread_epochs_eeglab()
to control in what units EEGLAB channel positions are read. The default is millimeters,'mm'
(#11283 by Mikołaj Magnuski)Fix bug where computing PSD with welch’s method with more jobs than channels would fail (#11298 by Mathieu Scheltienne)
Fix bug where the default FFT length changed for spectrum plots (#11345 by Daniel McCloy)
Fix bug with
mne.decoding.cross_val_multiscore()
where progress bars were not displayed correctly (#11311 by Eric Larson)Fix channel selection edge-cases in
find_bads_muscle
(#11300 by Mathieu Scheltienne)Fix bug with
mne.io.read_raw_curry()
where a dot in the parent folders prevented files from being read (#11340 by Eric Larson)Fix bug with
mne.Report
withreplace=True
where the wrong content was replaced andsection
was not respected (#11318, #11346 by Eric Larson)Fix bug with unit conversion when setting reference MEG as the channel type in
mne.io.Raw.set_channel_types()
and related methods (#11344 by Eric Larson)Fix bug where reference MEG channels could not be plotted using
mne.viz.plot_epochs_image()
(#11344 by Eric Larson)Fix bug where
image_format='gif'
was errantly documented as being supported bymne.Report
, it is now only supported inmne.Report.add_image()
(#11347 by Eric Larson)Multitaper spectral estimation now uses periodic (rather than symmetric) taper windows. This also necessitated changing the default
max_iter
of our cross-spectral density functions from 150 to 250. (#11293 by Daniel McCloy)Fix
mne.Epochs.plot_image()
andmne.viz.plot_epochs_image()
when using EMG signals (#11322 by Alex Gramfort)Fix selection of ICA components in
mne.viz.plot_ica_components()
andmne.preprocessing.ICA.plot_components()
(#11369 by Mathieu Scheltienne)Fix bug where a Freesurfer reconstruction run with both a T1 and a T2 caused
mne.viz.Brain
not to initialize pial surfaces properly (#11361 by Alex Rockhill)
API changes#
In
mne.time_frequency.dpss_windows()
, interpolating is deprecated (nowadays SciPy’s computations are fast enough for largeN
without interpolation). This affects parametersinterp_from
andinterp_kind
. Two new parameters of the underlying SciPydpss()
function are also exposed:sym
(for choosing symmetric vs. periodic windows) andnorm
(window normalization method). (#11293 by Daniel McCloy)In
mne.decoding.CSP.plot_patterns()
,mne.decoding.CSP.plot_filters()
,mne.preprocessing.ICA.plot_components()
, andmne.viz.plot_ica_components()
, the parametersvmin
andvmax
are deprecated in favor ofvlim
, for consistency with other topomap-plotting functions and methods (#11371 by Daniel McCloy)In
mne.decoding.CSP.plot_patterns()
andmne.decoding.CSP.plot_filters()
thetitle
parameter is deprecated and will be removed in version 1.4 (#11371 by Daniel McCloy)The APIs of
mne.preprocessing.ICA.plot_components()
andmne.viz.plot_ica_components()
gained new parametersshow_names
,extrapolate
,border
,size
,cnorm
,cbar_fmt
,axes
,nrows
,ncols
, for consistency with other topomap-plotting functions and methods (#11371 by Daniel McCloy)The APIs of
mne.decoding.CSP.plot_patterns()
andmne.decoding.CSP.plot_filters()
gained new parametersextrapolate
,border
,cnorm
,axes
,nrows
,ncols
, for consistency with other topomap-plotting functions and methods (#11371 by Daniel McCloy)
Version 1.2.0 (2022-10-11)#
Enhancements#
Add
vmin
andvmax
parameters tomne.Evoked.animate_topomap()
(#11073 by new contributor Mats van Es)Enable common average reference projection for ECoG, sEEG, and DBS data (optionally jointly with
joint=True
) inset_eeg_reference()
and related functions/methods (#10656 by new contributor Moritz Gerster and Eric Larson)The
trans
parameter inmne.make_field_map()
now accepts aPath
object, and uses standardised loading logic (#10784 by new contributor Andrew Quinn)Add support for computing forward solutions using OpenMEEG (#11011 by Alex Gramfort and Eric Larson)
EEGLAB files (saved as MAT versions less than v7.3) can now be imported with
mne.io.read_raw_eeglab()
without the optional dependencypymatreader
(#11006 by Clemens Brunner)Add eight source estimate comparison metrics to new submodule
mne.simulation.metrics
(#6233 by Kostiantyn Maksymenko and Alex Gramfort)Add
mne.time_frequency.csd_tfr()
to compute cross-spectral density frommne.time_frequency.EpochsTFR
(#10986 by Alex Rockhill)Improve
repr()
formne.minimum_norm.InverseOperator
when loose orientation is used (#11048 by Eric Larson)Add support for vector and volume source estimates in
mne.minimum_norm.get_point_spread()
andmne.minimum_norm.get_cross_talk()
(#8639, #11083 by Olaf Hauk, Marijn van Vliet, Alex Gramfort, and Eric Larson)mne.Epochs.plot_psd_topomap()
now suppresses redundant colorbars whenvlim='joint'
(#11051 by Daniel McCloy)Add
starting_affine
keyword argument tomne.transforms.compute_volume_registration()
to initialize an alignment with an affine (#11020 by Alex Rockhill)Add HTML representation for
Evoked
in Jupyter Notebooks (#11075 by Valerii Chirkov and Andrew Quinn)Add support for
temperature
andgsr
(galvanic skin response, i.e., electrodermal activity) channel types (#11090, #11108 by Eric Larson and Richard Höchenberger)Allow
mne.beamformer.make_dics()
to takepick_ori='vector'
to compute vector source estimates (#19080 by Alex Rockhill)Add
units
parameter tomne.io.read_raw_edf()
in case units are missing from the file (#11099 by Alex Gramfort)Add
on_missing
functionality to all of our classes that have adrop_channels
method, to control what happens when channel names are not in the object (#11077 by Andrew Quinn)Improve interpolation of bridged electrodes with
interpolate_bridged_electrodes
(#11094 by Mathieu Scheltienne)Add
mne.minimum_norm.apply_inverse_tfr_epochs()
to apply inverse methods to time-frequency resolved epochs (#11095 by Alex Rockhill)Add support for multiple probes via multiple CSV files passed to
mne.io.read_raw_hitachi()
(#11186 by Eric Larson)Add
mne.chpi.get_active_chpi()
to retrieve the number of active hpi coils for each time point (#11122 by Eduard Ort)Add example of how to obtain time-frequency decomposition using narrow bandpass Hilbert transforms to Time-frequency on simulated data (Multitaper vs. Morlet vs. Stockwell vs. Hilbert) (#11116 by Alex Rockhill)
Add
==
and!=
comparison betweenmne.Projection
objects (#11147 by Mathieu Scheltienne)Parse automatically temperature channel with
mne.io.read_raw_edf()
(#11150 by Eric Larson and Alex Gramfort)Add
unscale
option tomne.head_to_mri()
to facilitate working with surrogate MRI data (#11185 by Eric Larson)Add
encoding
parameter tomne.io.read_raw_edf()
andmne.io.read_raw_bdf()
to support custom (non-UTF8) annotation channel encodings (#11154 by Clemens Brunner)mne.preprocessing.ICA
gained a new method,get_explained_variance_ratio()
, that allows the retrieval of the proportion of variance explained by ICA components (#11141 by Richard Höchenberger)Add
on_baseline
tomne.preprocessing.ICA.apply()
,mne.preprocessing.ICA.plot_overlay()
, andmne.viz.plot_ica_overlay()
to allow reapplying baseline correction after applying ICA (#11232 by Eric Larson)Add config option
MNE_REPR_HTML
to disable HTML repr in notebook environments (#11159 by Clemens Brunner)
Bugs#
Fix bug in
mne.io.Raw.crop()
where argumentinclude_tmax
was not considered in checkingtmax
in bounds (#11196 by Lukas Gemein)Fix bug in
mne.io.read_raw_eeglab()
where unlabeled fiducials caused reading errors (#11074 by new contributor Sebastiaan Mathot)Fix bug in
mne.time_frequency.read_csd()
that returnedprojs
as a list of dict instead ofmne.Projection
(#11072 by new contributor Chetan Gohil)Fix bug in
mne.decoding.TimeFrequency()
that prevented cloning if constructor arguments were modified (#11004 by new contributor Daniel Carlström Schad)Fix bug in
repr
of decoding estimator classes (e.g.,mne.decoding.SlidingEstimator
) where the parameters where not stored in the result string but instead just printed tosys.stdout
(#11190 by new contributor Dominik Wetzel)Document
height
andweight
keys ofsubject_info
entry inmne.Info
(#11019 by new contributor Sena Er)Fix bug in
mne.viz.Brain
constructor where the first argument was namedsubject_id
instead ofsubject
(#11049 by Eric Larson)Fix bug in mne coreg where the MEG helmet position was not updated during ICP fitting (#11084 by Eric Larson)
Fix bug in
read_raw_curry()
, andread_raw_cnt()
where digitization points were not read properly (#11145 by Eric Larson)Fix bug in
mne.minimum_norm.apply_inverse_epochs()
where the average EEG projector was not checked properly (#11182 by Eric Larson)Fix bug in
mne.viz.plot_filter()
when plotting filters created usingoutput='ba'
mode withcompensation
turned on. (#11040 by Marian Dovgialo)Fix bugs in documentation of surface
SourceSpaces
(#11171 by Eric Larson)Fix bug in
mne.viz.plot_compare_evokeds()
where automatic legend labels could be excessively long; they are now abbreviated with...
when necessary (#11181 by Eric Larson)Fix bugs with
verbose='error'
not being used properly and allowing warnings through (#11193 by Eric Larson)Fix bug in
mne.io.read_raw_bti()
where EEG, EMG, and H/VEOG channels were not detected properly, and many non-ECG channels were called ECG. The logic has been improved, and any channels of unknown type are now labeled asmisc
(#11102 by Eric Larson)Fix bug in
mne.viz.plot_topomap()
when providingsphere="eeglab"
(#11081 by Mathieu Scheltienne)Fix bug in
mne.Dipole.to_mri()
where MRI RAS rather than MRI surface RAS was returned (#11185 by Eric Larson)Fix bug in
epochs.save
where theverbose
parameter defaulted toTrue
instead ofNone
(#11191 by Eric Larson)The string and HTML representation of
mne.preprocessing.ICA
reported incorrect values for the explained variance. This information has been removed from the representations, and should instead be retrieved via the newget_explained_variance_ratio()
method (#11141 by Richard Höchenberger)Fix bug in
mne.Evoked.plot()
and related methods where anp.nan
location value in any channel causes spatial colours to fail (#6870 by Simeon Wong)Fix bug in
mne.preprocessing.ICA.find_bads_muscle()
where epochs caused an error when passed as theinst
(#11197 by Alex Rockhill)Fix bug in readers where EEG coordinates were assumed to be in head coordinates but no fiducial points were present. Estimated fiducial locations will now be added automatically to reflect the assumption of locations being in the head coordinate frame (#11212 by Stefan Appelhoff and Eric Larson)
The duration of raw data sometimes wasn’t displayed correctly in Jupyter notebooks by omitting fractions of a second. We now always round up to the next full second so a duration of less than 1 second will not be displayed as a duration of zero anymore (#11203 by Richard Höchenberger)
Fix bug in
mne.Report.add_ica()
and where baselines were not reapplied to the data wheninst
is Epochs or Evoked (#11232 by Eric Larson)
API changes#
In meth:
mne.Evoked.plot
, the default value of thespatial_colors
parameter has been changed to'auto'
, which will use spatial colors if channel locations are available (#11201 by new contributor Hüseyin Orkun Elmas and Daniel McCloy)Starting with this release we now follow the Python convention of using
FutureWarning
instead ofDeprecationWarning
to signal user-facing changes to our API (#11120 by Daniel McCloy)The
names
parameter ofmne.viz.plot_arrowmap()
andmne.viz.plot_regression_weights()
has been deprecated; sensor names will be automatically drawn from theinfo_from
ormodel
parameter (respectively), and can be hidden, shown, or altered via theshow_names
parameter (#11123 by Daniel McCloy)The
bands
parameter ofmne.Epochs.plot_psd_topomap()
now acceptsdict
input; legacytuple
input is supported, but discouraged for new code (#11050 by Daniel McCloy)The
mne.head_to_mri()
new function parameterkind
default will change from'ras'
to'mri'
(#11185 by Eric Larson)The
show_toolbar
argument tomne.viz.Brain
is being removed by deprecation (#11049 by Eric Larson)New classes
Spectrum
andEpochsSpectrum
, created via new methodsRaw.compute_psd()
,Epochs.compute_psd()
, andEvoked.compute_psd()
(#10184 by Daniel McCloy)Functions/methods for plotting topomaps now have more consistent signatures; most have gained parameters for finer control of the topomap image and/or colorbar. See docstrings for details (#11123 by Daniel McCloy)
In
mne.viz.plot_topomap()
, passingaxes=None
will now create a newFigure
instead of plotting into the current axes (#11123 by Daniel McCloy)In
mne.viz.plot_topomap()
, the parametershow_names
has been deprecated, use thenames
parameter instead (#11123 by Daniel McCloy)In
mne.viz.plot_topomap()
,plot_tfr_topomap()
,plot_evoked_topomap()
, and related class methodsmne.Covariance.plot_topomap()
,mne.Evoked.plot_topomap()
, andmne.time_frequency.AverageTFR.plot_topomap()
: the parametersvmin
andvmax
are deprecated in favor ofvlim
, for consistency with otherplot_topomap
functions and methods (#11123 by Daniel McCloy)In
mne.viz.plot_tfr_topomap()
,plot_evoked_topomap()
, and related class methodsmne.Covariance.plot_topomap()
,mne.Evoked.plot_topomap()
, andmne.time_frequency.AverageTFR.plot_topomap()
: thetitle
parameter has been deprecated; use matplotlib’sfig.suptitle()
instead (#11123 by Daniel McCloy)In functions/methods for plotting topomaps, the
outlines='skirt'
option is deprecated; usesphere='eeglab'
for similar functionality (#11123 by Daniel McCloy)The
mne.epochs.add_channels_epochs
function has been deprecated in favor ofepochs.add_channels
(#11180 by Eric Larson)The PSD functions that operate on Raw/Epochs/Evoked instances (
mne.time_frequency.psd_welch
andmne.time_frequency.psd_multitaper
) are deprecated; for equivalent functionality createSpectrum
orEpochsSpectrum
objects instead and then runspectrum.get_data(return_freqs=True)
(#10184 by Daniel McCloy)Added new class
mne.preprocessing.EOGRegression
to allow more flexibility when using regression to reduce EOG artifacts (#11046 by Marijn van Vliet)New parameter
exclude
added tomne.preprocessing.regress_artifact()
to prevent regression from being applied to certain channels (#11046 by Marijn van Vliet)
Authors#
Alex Rockhill
Alexandre Gramfort
Andrew Quinn+
Chetan Gohil+
Christian Brodbeck
Clemens Brunner
Daniel Carlström Schad+
Daniel McCloy
Dominik Wetzel+
Eduard Ort
Eric Larson
Hüseyin Orkun Elmas+
Jack Zhang
Joan Massich
Julius Welzel+
Kostiantyn Maksymenko
Lukas Gemein
Marian Dovgialo
Marijn van Vliet
Mathieu Scheltienne
Mats van Es+
Moritz Gerster+
Olaf Hauk
Richard Höchenberger
Sebastiaan Mathot+
Sena Er+
Simeon Wong
Stefan Appelhoff
Valerii Chirkov
luzpaz+
Version 1.1.0 (2022-08-03)#
Enhancements#
Added new built-in montage R-Net 128 Ch (Brain Products) (#10974 by new contributor Ilias Machairas)
DigMontage
objects can now be checked for equality via==
(#10942 by new contributor Tziona NessAiver)Add a note to clarify the inclusion of average referencing gain matrix during whitening (#10922 by new contributor Mingjian He)
Add time axis scale bar for
mne.Epochs.plot()
using matplotlib backend (#10736 by new contributor Jordan Drew)Add
mne.bem.distance_to_bem()
to find depth of source positions (#10632 by new contributor Matt Courtemanche)Add support for ahdr files in
mne.io.read_raw_brainvision()
(#10515 by new contributor Alessandro Tonin)Add support for reading data from Gowerlabs devices to
mne.io.read_raw_snirf()
(#10555 by new contributor Samuel Powell and Robert Luke)Add built-in sensor layout files for Geodesic Head Web 130 and 280 devices (#10627 by Evan Hathaway)
Add
mne-icalabel
tomne.sys_info()
(#10615 by Adam Li)Add support for
overview_mode
inraw.plot()
and related functions/methods (#10501 by Eric Larson)Add
mne.io.Raw.crop_by_annotations()
method to get chunks of Raw data based onmne.Annotations
. (#10460 by Alex Gramfort)The
pick_channels
method gained averbose
parameter, allowing e.g. to suppress messages about removed projectors (#10544 by Richard Höchenberger)Add
mne.viz.plot_projs_joint()
for joint plotting of projectors and Evoked (#10720 by Eric Larson)The
mne.make_forward_dipole()
function can now take a list of dipoles to make a multi-dipole forward models (#10464 by Marijn van Vliet)Add
mode='outlines'
support tomne.Dipole.plot_locations()
andmne.viz.plot_dipole_locations()
(#10699 by Eric Larson)Add
mne.preprocessing.ICA.find_bads_muscle()
to find muscle-related ICA components with an example, Removing muscle ICA components (#10534 by Alex Rockhill)Add example of Xfit-style ECD modeling using multiple dipoles (#10464 by Marijn van Vliet)
Add
head_source
argument tomne.make_field_map()
to allow selecting which head source to use (#10568 by Eric Larson)Add support for
n_jobs=None
to supportjoblib.parallel_backend()
for more precise control over parallelization (#10567 by Eric Larson)It is now possible to compute inverse solutions with restricted source orientations using discrete forward models (#10464 by Marijn van Vliet)
The new function
mne.preprocessing.maxwell_filter_prepare_emptyroom()
simplifies the preconditioning of an empty-room recording for our Maxwell filtering operations (#10533 by Richard Höchenberger and Eric Larson)Add keyboard shortcuts to toggle
mne.preprocessing.ICA.plot_properties()
topomap channel types (‘t’) and power spectral density log-scale (‘l’) (#10557 by Alex Rockhill)Add
--mri
, and--threshold
options to mne make_scalp_surfaces to improve head surface mesh extraction (#10591 by Eric Larson)Add
mne.preprocessing.compute_bridged_electrodes()
to detect EEG electrodes with shared spatial sources due to a conductive medium connecting two or more electrodes, add Identify EEG Electrodes Bridged by too much Gel for an example andmne.viz.plot_bridged_electrodes()
to help visualize (#10571 by Alex Rockhill)Add
'nearest'
as an option for theimage_interp
argument inmne.viz.plot_topomap()
to plot a topomap without interpolation using a Voronoi parcelation (#10571 by Alex Rockhill)Add
mne.preprocessing.interpolate_bridged_electrodes()
to use the spatially smeared signal to get a better interpolation rather than dropping those channels (#10587 by Alex Rockhill)Add support for hemoglobin type fNIRS data to temporal derivative distribution repair (TDDR)
mne.preprocessing.nirs.temporal_derivative_distribution_repair()
(#10125 by Johann Benerradi)mne.viz.plot_evoked_topomap()
andmne.Evoked.plot_topomap()
now display the time range the map was averaged over ifaverage
was passed (#10606 by Richard Höchenberger)mne.viz.plot_evoked_topomap()
andmne.Evoked.plot_topomap()
can now average the topographic maps across different time periods for each time point. To do this, pass a list of periods via theaverage
parameter (#10610 by Richard Höchenberger)mne.viz.plot_evoked()
andmne.Evoked.plot()
gained a new parameter,highlight
, to visually highlight time periods of interest (#10614 by Richard Höchenberger)Added fNIRS support to
mne.Info.get_montage()
(#10611 by Robert Luke)Add
mne.viz.plot_ch_adjacency()
to visualize and manually edit the channel adjacency matrix (#10633 by Mikołaj Magnuski)Add
mne.viz.Brain.get_view()
to get the current camera parameters such that they can be passed tomne.viz.Brain.show_view()
(#10661 by Alex Rockhill)Added support for Aurora version 2021.9.0.6 to
mne.io.read_raw_nirx()
(#10668 by Robert Luke)Added BrainVision format (
.vhdr
,.vmrk
,.eeg
) tomne.export.export_raw()
(#10681 by Stefan Appelhoff)Added
export
method tomne.Evoked
(#10681 by Stefan Appelhoff)Add timeformat
YYYY/MM/DD
tomne.io.ctf.info._convert_time
(#10674 by Simon Kern)mne.Report.add_figure()
andmne.Report.add_image()
gained a new parameter,section
, allowing to put multiple figures or images into the same “content block”. Previously, the only way to group figures and images was by means of a slider, which sometimes made content hard to discover. The slider remains available as an alternative (#10694 by Richard Höchenberger)All functions and methods that plot topographic maps for EEG (2D projections of the EEG sensor locations) now accept the parameter value
sphere='eeglab'
to lay out the sensors with respect to the head circle in a similar way to how EEGLAB does, i.e., T7/T8 and Fpz/Oz are placed directly on the circle for template montages (#10572 by Richard Höchenberger)mne.channels.get_builtin_montages()
gained a new parameter,descriptions
, which allows to retrieve the descriptions of the montages in addition to their names (#10373 by Richard Höchenberger)Add
include
option tomne.io.read_raw_edf()
,mne.io.read_raw_bdf()
andmne.io.read_raw_gdf()
. (#10734 by Michiru Kaneda)mne.gui.coregistration()
gained a new parameter,fullscreen
, to start the GUI in fullscreen mode (#10284 by Richard Höchenberger)The built-in FieldTrip channel adjacency matrices, which can be read via
read_ch_adjacency()
, have been synchronized with FieldTrip again. This means that numerous new adjacencies have been added, most notably those for standard 10-05 and 10-20 montages (#10749 by Richard Höchenberger)mne.Evoked.plot_field()
gained a new parameter,interaction
, to control the rotation axes when interacting with the head (#10788 by Richard Höchenberger)Add
mne.read_evoked_besa()
for reading evokeds from BESA.avr
and.mul
files. (#10892 by Marijn van Vliet)Add
mne.time_frequency.EpochsTFR.decimate()
to reduce size of time-frequency epochs objects (#10940 by Alex Rockhill)Add an alias that maps EGI reference channel names (
VREF
orVertex Reference
) to the electrode name in the standard EGI montages (Cz
). Now setting standard EGI montages withset_montage()
withmatch_alias=True
will avoid raising an error (#10823 by Scott Huberty)Add provenance in
mne.time_frequency.EpochsTFR.apply_baseline()
(#10979 by Alex Rockhill)
Bugs#
Fix bug in
mne.surface._project_onto_surface
for the conditionmethod != 'accurate' and return_nn
(#10930 by Christian O’Reilly)Fix bug in
mne.export.export_raw()
to ignore None value in filenames attribute ofmne.io.RawArray
(#10927 by new contributor Reza Nasri)Fix bug in
mne.io.read_raw_edf()
to allow reading in all Hypnodyne ZMax EDFs to be read in without issues (#10754 by new contributor Frederik Weber)Fix bug in
mne.Epochs.drop_bad()
where data was loaded although no rejection had to be performed (#10718 by new contributor Lukas Gemein)Pick also bad channels when selecting T1T2 magnetometers in
mne.preprocessing.maxwell_filter()
(#10639 by new contributor Matti Toivonen)Make
color
parameter check in inmne.viz.plot_evoked_topo()
consistent (#10217 by new contributor T. Wang and Stefan Appelhoff)Fix bug in
mne.io.read_raw_brainvision()
when BrainVision data are acquired with the Brain Products “V-Amp” amplifier and disabled lowpass filter is marked with value0
(#10517 by new contributor Alessandro Tonin)Fix bug in
mne.pick_types()
and related methods wherecsd=True
was not passed handled properly (#10470 by new contributor Matthias Dold)Fix bug where plots produced using the
'qt'
/mne_qt_browser
backend could not be added usingmne.Report.add_figure()
(#10485 by Eric Larson)Fix bug where
theme
was not handled properly inmne.io.Raw.plot()
(#10487, #10500 by Mathieu Scheltienne and Eric Larson)Fix bug in
raw.crop(start, stop)
that would cause annotations to be erroneously shifted whenstart != 0
and no measurement date was set. (#10491 by Eric Larson)Fix bug in
mne.io.read_raw_bti()
where unknown electrode locations were not handled properly (#10662 by Eric Larson)Fix bug in
mne.io.read_raw_ctf()
on Windows where large files could not be read (#10866 by Eric Larson)Fix bug in
mne.io.read_raw_ctf()
where invalid measurement dates were not handled properly (#10957 by Jean-Remi King and Eric Larson)Rendering issues with recent MESA releases can be avoided by setting the new environment variable``MNE_3D_OPTION_MULTI_SAMPLES=1`` or using
mne.viz.set_3d_options()
(#10513 by Eric Larson)Fix behavior for the
pyvista
3D renderer’squiver3D
function so that default arguments plot a glyph inarrow
mode (#10493 by Alex Rockhill)Retain epochs metadata when using
mne.channels.combine_channels()
(#10504 by Clemens Brunner)Fix epochs indexing with metadata containing boolean type and missing values (#10705 by Clemens Brunner and Alex Gramfort)
Fix reading of fiducial locations in
mne.io.read_raw_eeglab()
(#10521 by Alex Gramfort)Prevent creation of montage with invalid
[x, y, z]
coordinates withmne.channels.make_dig_montage()
(#10547 by Mathieu Scheltienne)Fix bug in coregistration GUI that prevented it from starting up if only a high-resolution head model was available (#10543 by Richard Höchenberger)
Fix bug with
mne.Epochs.add_reference_channels
where attributes were not updated properly so subsequentpick_types
calls were broken (#10912 by Eric Larson)Fix bug in the
mne.viz.Brain
tool bar that prevented the buttons to call the corresponding feature (#10560 by Guillaume Favelier)Fix issue with saving epochs once
compute_current_source_density()
has been used if a rejection threshold was used first (#10619 by Alex Rockhill and Richard Höchenberger)Fix bug in
mne.viz.plot_evoked_image()
that would cause incorrect sub-titles when usinggroup_by
(#10618 by Reza Shoorangiz)Reduce memory usage when loading an EDF file with
preload=False
(#10638 by Clemens Brunner)Fix bug in
mne.io.Raw.get_channel_types()
and related methods whereunique=True
would return aset
with arbitrary order rather than alist
that preserves the same order asinst.ch_names
(#10720 by Eric Larson)In
mne.preprocessing.find_bad_channels_maxwell()
, do not re-filter the data if a low-pass filter with the requested frequency has already been applied (#10664 by Richard Höchenberger)Fix a problem in
mne.Evoked.get_peak()
, where under certain circumstances themode
parameters'pos'
and'neg'
were not honored whentmin
and/ortmax
were passed as well (#10686 by Richard Höchenberger)mne.read_evokeds()
,mne.channels.read_custom_montage()
,mne.channels.read_dig_hpts()
,mne.channels.read_dig_polhemus_isotrak()
, andmne.channels.read_polhemus_fastscan()
now correctly expand~
in the provided path to the user’s home directory (#10685, #10688 by Richard Höchenberger)Fix bug in
mne.io.read_raw_eeglab()
andmne.read_epochs_eeglab()
, where the presence of channels without position in the.set
file caused positions incorrectly assigned to all further channels (#8754 by Mikołaj Magnuski)Combining channels of
mne.Epochs
ormne.Evoked
objects now properly retains baseline information (#10703 by Clemens Brunner)In
mne.Report
, some figures would have an undesired border added to the edges; this has now been resolved (#10730 by Richard Höchenberger)Fix selection of EEG channels and selected sphere when plotting bridged electrodes with
mne.viz.plot_bridged_electrodes()
(#10753 by Mathieu Scheltienne)Fix broken links in Fixing BEM and head surfaces (#10765 by Alex Rockhill)
The built-in FieldTrip channel adjacency matrix for
easycapM1
had a bug, where the channelPO8
was incorrectly labeled asPO6
This has been resolved by updating the adjacency matrix to the latest version provided by FieldTrip (#10749 by Richard Höchenberger)Add a YouTube video tutorial for editing Freesurfer surfaces in Blender to Fixing BEM and head surfaces (#10778 by Alex Rockhill)
The default interaction style of
mne.Evoked.plot_field()
has been changed such that if behaves likeplot_alignment()
when trying to rotate the head (#10788 by Richard Höchenberger)Add a video on how to operate the intracranial electrode contact location GUI in Locating intracranial electrode contacts (#10800 by Alex Rockhill)
Add a video on how to operate the coregistration GUI in Source alignment and coordinate frames (#10802 by Alex Rockhill)
Add
show
andblock
arguments tomne.gui.coregistration()
andmne.gui.locate_ieeg()
to pop up the GUIs and halt execution of subsequent code respectively (#10802 by Alex Rockhill)Correctly report the number of available projections when printing measurement info in a Jupyter notebook (#10471 by Clemens Brunner)
Fix value set in
raw.orig_format
for readers of BrainVision (ASCII format), EGI and Artemis123 files (#10851 by Mathieu Scheltienne)When reading EGI MFF files, channel names are no longer ignored and reference channel information is properly incorporated (#10898 by Scott Huberty and Daniel McCloy)
Fix bug in
mne.time_frequency.psd_array_welch()
and related functions/methods where the bias was not accounted for whenaverage='median'
(#10990 by Eric Larson)Fix bug in
mne.decoding.TemporalFilter
where filter parameters were not handled properly (#10968 by Eric Larson)Fix documentation bug in
ica.plot_sources
to specify thatpicks
keyword argument is for picking ICA components to plot (#10936 by Adam Li)Annotations contained in EDF files are correctly read as UTF-8 according to the EDF specification (#10963 by Clemens Brunner)
Fix bug where complex-valued topoplots caused an error, convert to amplitude instead (#10978 by Alex Rockhill)
API and behavior changes#
When creating BEM surfaces via
mne.bem.make_watershed_bem()
andmne.bem.make_flash_bem()
, thecopy
parameter now defaults toTrue
. This means that instead of creating symbolic links inside the FreeSurfer subject’sbem
folder, we now create “actual” files. This should avoid troubles when sharing files across different operating systems and file systems (#10531 by Richard Höchenberger)The ordering of channels returned by
mne.io.read_raw_nirx()
is now ordered by channel name, rather than the order provided by the manufacturer. This enables consistent ordering of channels across different file types (#10555 by Robert Luke)For
mne.viz.plot_topomap()
,mne.viz.plot_evoked_topomap()
,mne.viz.plot_arrowmap()
,mne.viz.plot_ica_components()
,mne.Covariance.plot_topomap()
,mne.Evoked.plot_topomap()
,mne.Evoked.animate_topomap()
,mne.decoding.CSP.plot_patterns()
,mne.Projection.plot_topomap()
andmne.preprocessing.ICA.plot_components()
the topomap image interpolation was previously a cubic interpolation but now can be'linear'
and'nearest'
as well. Unlessimage_interp='nearest'
is passed mne uses a subsequent matplotlib bilinear interpolation to make the interpolated image smoother. Previously,'image_interp'
controlled this second interpolation step and, for the first interpolation, the only option was cubic. To simplify,image_interp
is now responsible for the main interpolation and the subsequent matplotlib image interpolation is bilinear but can be changed afterward usingim.set_interpolation
(#10617 by Alex Rockhill)The FLASH BEM surface generation via
mne.bem.make_flash_bem()
or the mne flash_bem command has now been clarified in terms of expected inputs. Inmne.bem.convert_flash_mris()
theconvert
parameter is now deprecated and theflash5
andflash30
now accept list of file names or nibabel images. One breaking change is that now the flash files are looked for as mef05_*.mgz and mef30_*.mgz in mri/flash folder (#10715 by Alex Gramfort)plot_compare_evokeds()
gets a new parametertime_unit
which can be"s"
or"ms"
(#10950 by Daniel McCloy)The
to_data_frame
methods forRaw
,Epochs
,Evoked
,SourceEstimate
,EpochsTFR
, andAverageTFR
all now have defaulttime_format=None
(keep time in seconds) instead oftime_format='ms'
(convert time to milliseconds) (#10925 by Daniel McCloy)mne.Evoked.decimate()
now aligns to the sample at time=0 (so that the exact sample when the event occurred is preserved) to be consistent withmne.Epochs.decimate()
(#10945 by Alex Rockhill)
Authors#
Adam Li
Adeline Fecker+
Alessandro Tonin+
Alex Ciok+
Alex Rockhill
Alexandre Gramfort
Archit Singhal+
Ashley Drew+
Ben Beasley+
Carina Forster+
Christian O’Reilly
Clemens Brunner
Cora Kim
Daniel McCloy
Dominik Welke
Dominique Makowski
Eric Larson
Evan Hathaway
Frederik D. Weber+
Guillaume Favelier
Hamid Maymandi+
Ilias Machairas+
Jean-Remi King
Johann Benerradi
Jon Houck
Jona Sassenhagen
Jordan Drew+
Lukas Gemein+
Marijn van Vliet
Martin Schulz
Mathieu Scheltienne
Matt Courtemanche+
Matthias Dold+
Matti Toivonen+
Michiru Kaneda+
Mikołaj Magnuski
Mingjian He+
Naveen Srinivasan+
Phillip Alday
Reza Nasri+
Reza Shoorangiz
Richard Höchenberger
Rob Luke
Scott Huberty+
Simon Kern
Sondre Foslien+
Stefan Appelhoff
Wang+
Tziona NessAiver+
Version 1.0.0 (2022-03-21)#
Enhancements#
Add
use_orig_time
option tomne.Annotations.crop()
. (#10396 by new contributor Michiru Kaneda)Speed up
mne.preprocessing.annotate_muscle_zscore()
,mne.preprocessing.annotate_movement()
, andmne.preprocessing.annotate_nan()
through better annotation creation (#10089 by new contributor Senwen Deng)Fix some unused variables in time_frequency_erds.py example (#10076 by new contributor Jan Zerfowski)
Document
BAD_ACQ_SKIP
annotation behavior (#10054 by new contributor Etienne de Montalivet)Add link to related
MNE-ARI
package (#10174 by new contributor John Veillette)mne.time_frequency.psd_array_multitaper()
can now return complex results per-taper when specifyingoutput='complex'
(#10307 by Mikołaj Magnuski)mne.time_frequency.tfr_array_multitaper()
can now return results foroutput='phase'
instead of an error (#10281 by Mikołaj Magnuski)Add show local maxima toggling button to
mne.gui.locate_ieeg()
(#9952 by Alex Rockhill)Show boundaries in
mne.gui.locate_ieeg()
(#10379 by Eric Larson)Add argument
cval
tomne.transforms.apply_volume_registration()
to set interpolation values outside the image domain (#10379 by Eric Larson)Improve docstring of
mne.Info
and add attributes that were not covered (#9922 by Mathieu Scheltienne)Add an alternate, manual procedure for aligning a CT to an MR procedure to Locating intracranial electrode contacts (#9978 by Alex Rockhill)
Improve docstring of export functions
mne.export.export_raw()
,mne.export.export_epochs()
,mne.export.export_evokeds()
,mne.export.export_evokeds_mff()
and issue a warning when there are unapplied projectors (#9994 by Mathieu Scheltienne)Add support for reading haemoglobin fNIRS data to
mne.io.read_raw_snirf()
(#9929 by Robert Luke)Add
fill_hole_size
keyword argument tomne.viz.Brain.add_volume_labels()
to close holes in the mesh (#10024 by Alex Rockhill)Changed
mne.Epochs
andmne.Evoked
to have a more concise__repr__
to improve interactive MNE usage in Python Interactive Console, IDEs, and debuggers when many events are handled. (#10042 by Jan Sosulski)Improve docstring of
events
arguments and cross-referencing to events (#10056 by Mathieu Scheltienne)Speed up repeated surface-smoothing operation (e.g., in repeated calls to
stc.plot()
) (#10077 by Eric Larson)Add
verbose
parameter tomne.io.Raw.load_bad_channels()
and log information on how bad channels are updated (#10102 by Stefan Appelhoff)Add
infer_type
argument tomne.io.read_raw_edf()
andmne.io.read_raw_bdf()
to automatically infer channel types from channel labels (#10058 by Clemens Brunner)Reduce the time it takes to generate a
mne.io.Raw
,Epochs
, orICA
figure if ascalings
parameter is provided (#10109 by Richard Höchenberger and Eric Larson)mne.Report.add_raw()
gained a newscalings
parameter to provide custom data scalings for the butterfly plots (#10109 by Richard Höchenberger)The
butterfly
parameter ofmne.Report.add_raw()
now also accepts numbers to specify how many segments to plot (#10115 by Richard Höchenberger)The
psd
parameter ofmne.Report.add_epochs()
now also accepts numbers to specify the signal duration used for PSD calculation (#10119 by Richard Höchenberger)Drastically speed up butterfly plot generation in
mne.Report.add_raw()
. We now don’t plot annotations anymore; however, we feel that the speed improvements justify this change, also considering the annotations were of limited use in the displayed one-second time slices anyway (#10114, #10116 by Richard Höchenberger)In
mne.Report
, limit the width of automatically generated figures to a maximum of 850 pixels (450 pixels formne.SourceEstimate
plots), and the resolution to 100 DPI to reduce file size, memory consumption, and – in some cases likemne.Report.add_stc()
– processing time (#10126, #10129, #10135, #10142 by Richard Höchenberger)Epochs
metadata tables are now included inmne.Report
(#10166 by Richard Höchenberger)mne.get_head_surf()
andmne.dig_mri_distances()
gained a new parameter,on_defects
, controlling how to handle surfaces with topological defects (#10175 by Richard Höchenberger)mne.Report.add_epochs()
gained a new parameter,drop_log_ignore
, to control which drop reasons to omit when creating the drop log plot (#10182 by Richard Höchenberger)mne.Epochs.plot_drop_log()
now also includes the absolute number of epochs dropped in the title (#10186 by Richard Höchenberger)Add a button to show the maximum intensity projection in
mne.gui.locate_ieeg()
(#10185 by Alex Rockhill)Annotations from a
Raw
object are now preserved by theEpochs
constructor and are supported when saving Epochs (#9969 and #10019 by Adam Li)Add a checkbox to show and hide the MEG helmet in the coregistration GUI (#10200 by Guillaume Favelier)
The coregistration GUI (instantiated via
mne.gui.coregistration()
) gained a new attribute,coreg
, to access themne.coreg.Coregistration
instance used by the GUI (#10255 by Richard Höchenberger)Add marching cubes display of head if
mne.bem.make_scalp_surfaces()
has not computed or the recon-all hasn’t finished (#10202 by Alex Rockhill)The default interaction style of
mne.gui.coregistration()
andmne.viz.plot_alignment()
has been changed to'terrain'
, which keeps one axis fixed and should make interactions with the 3D scene more predictable (#9972, #10206 by Richard Höchenberger)mne.gui.coregistration()
now uses the proper widget style for push buttons, making for a more native feel of the application (#10220 by Richard Höchenberger and Guillaume Favelier)mne.coreg.Coregistration
,mne.scale_bem()
, andmne.scale_mri()
gained a new parameter,on_defects
, controlling how to handle topological defects (#10230, #10249 by Richard Höchenberger)mne.coreg.Coregistration
gained a new attribute,fiducials
, allowing for convenient retrieval of the MRI fiducial points (#10243, by Richard Höchenberger)Added plotting points to represent contacts on the max intensity projection plot for
mne.gui.locate_ieeg()
(#10212 by Alex Rockhill)Add lines in 3D and on the maximum intensity projection when more than two electrode contacts are selected to aid in identifying that contact for
mne.gui.locate_ieeg()
(#10212 by Alex Rockhill)Add a
block
parameter tomne.viz.Brain
and the UI ofmne.coreg.Coregistration
to prevent the windows from closing immediately when running in a non-interactive Python session (#10222 by Guillaume Favelier)All methods of
mne.Report
with atags
parameter now also accept a single tag passed as a string (previously, you needed to pass a tuple of strings, even for a single tag) (#10183, by Richard Höchenberger)mne.Report.add_trans()
has gained a new parameter,alpha
, to control the level of opacity of the rendered head (#10247, by Richard Höchenberger)The new convenience function
mne.event.match_event_names()
allows for straightforward checking if a specific event name or a group of events is present in a collection of event names (#10233 by Richard Höchenberger)Epochs.plot()
is now supported by the pyqtgraph-backend (#10297 by Martin Schulz)The
map_surface
parameter ofmne.viz.Brain.add_foci()
now works and allows you to add foci to a rendering of a brain that are positioned at the vertex of the mesh closest to the given coordinates (#10299 by Marijn van Vliet)mne.preprocessing.ICA.plot_sources()
is now also supported by theqt
backend (#10330 by Martin Schulz)Added
mne.viz.Brain.add_dipole()
andmne.viz.Brain.add_forward()
to plot dipoles on a brain as well asmne.viz.Brain.remove_dipole()
andmne.viz.Brain.remove_forward()
(#10373 by Alex Rockhill)Made anterior/posterior slice scrolling in
mne.gui.locate_ieeg()
possible for users without page up and page down buttons by allowing angle bracket buttons to be used (#10384 by Alex Rockhill)Add support for
theme='auto'
for automatic dark-mode support inraw.plot()
and related functions and methods when using the'qt'
backend (#10417 by Eric Larson)Add support for
MNE_3D_OPTION_THEME
andMNE_BROWSER_THEME
to use['light', 'dark', 'auto']
or a custom theme path inmne.viz.Brain
andraw.plot()
(and related functions and methods when using the'qt'
backend(), respectively (#10418 by Eric Larson)Add support for passing time-frequency data to
mne.stats.spatio_temporal_cluster_test()
andmne.stats.spatio_temporal_cluster_1samp_test()
and added an example to Spatiotemporal permutation F-test on full sensor data (#10384 by Alex Rockhill)Add support for reading optical density fNIRS data to
mne.io.read_raw_snirf()
(#10408 by Robert Luke)Added
mne.source_space.get_decimated_surfaces()
to extract subsurfaces from a SourceSpaces instance or a .fif file (#10421 by Joshua Teves)
Bugs#
Fix bug with
mne.io.read_raw_nihon()
where latin-1 channels could not be read (#10429 by new contributor Matthias Eberlein)Fix bug with
mne.io.read_raw_nihon()
so that it handles duplicates in channel names (#10431 by new contributor Matthias Eberlein)Fix bug in
mne.io.read_raw_egi()
where themeas_date
in arawMFF
object was incorrectly assigned. The function now converts themeas_date
to UTC and provides a UTC offset key, i.e.raw.info['utc_offset']
. (#10304 by new contributor Scott Huberty)Fix datetime conversion for tmin/tmax=None cases in
mne.Annotations.crop()
. Allow the use of float and None simultaneously formne.Annotations.crop()
. (#10361 by new contributor Michiru Kaneda)Add Shift_JIST mu in
mne.io.read_raw_edf()
(#10356 by new contributor Michiru Kaneda)Teach
mne.io.read_raw_bti()
to use itseog_ch
parameter (#10093 by new contributor Adina Wagner)Fix use of arguments in
numpy.loadtxt()
(#10189 by new contributor Federico Zamberlan)Fix documentation of options in
mne.stc_near_sensors()
(:gh:`` by new contributor Nikolai Chapochnikov)mne.time_frequency.tfr_array_multitaper()
now returns results per taper whenoutput='complex'
(#10281 by Mikołaj Magnuski)Fix default of
mne.io.Raw.plot()
to beuse_opengl=None
, which will act like False unlessMNE_BROWSER_USE_OPENGL=true
is set in the user configuration (#9957 by Eric Larson)Fix bug with
mne.Report
where figures were saved withbbox_inches='tight'
, which led to inconsistent sizes in sliders (#9966 by Eric Larson)When opening a saved report and saving it to a different filename again, don’t change
Report.fname
to avoid a regression when usingopen_report()
as a context manager (#9998 by Marijn van Vliet)Fix bug in
mne.make_forward_solution()
where sensor-sphere geometry check was incorrect (#9968 by Eric Larson)Use single char alphanumeric suffix when renaming long channel names (over 15-characters) when writing to FIF format. (#10002 by Luke Bloy)
Add argument
overwrite
tomne.export.export_raw()
,mne.export.export_epochs()
,mne.export.export_evokeds()
andmne.export.export_evokeds_mff()
(#9975 by Mathieu Scheltienne)mne.gui.coregistration()
and themne coreg
command didn’t respect theinteraction
parameter (#9972 by Richard Höchenberger)Fix incorrect projection of source space onto white matter surface instead of pial in Working with ECoG data (#9980 by Alex Rockhill)
Fix channel type support when reading from EEGLAB
.set
format withmne.io.read_raw_eeglab()
andmne.read_epochs_eeglab()
(#9990 by Mathieu Scheltienne)Fix suboptimal alignment using
mne.transforms.compute_volume_registration()
(#9991 by Alex Rockhill)Only warn if header is missing in BrainVision files instead of raising an error (#10001 by Clemens Brunner)
Add argument
overwrite
tomne.preprocessing.ICA.save
to check for existing file (#10004 by Mathieu Scheltienne)mne.Report
now raises an exception if invalid tags were passed (#9970 by Richard Höchenberger)Fix bug in
mne.get_montage_volume_labels()
that set the maximum number of voxels to be included too low causing unwanted capping of the included voxel labels (#10021 by Alex Rockhill)Fix annotation cropping and I/O roundtrip when there is no measurement date available (#10040 by Mathieu Scheltienne and Alex Gramfort).
Fix bug where
raw.crop()
from the beginning of the instance could break annotations andraw.first_samp
(#10358 by Eric Larson)sys_info()
output now contains the installed version ofpooch
, too; this output had been accidentally removed previously (#10047 by Richard Höchenberger)Fix VTK version extraction in
mne.sys_info()
(#10399 by Eric Larson)Fix automatic channel type detection from channel labels in
mne.io.read_raw_edf()
andmne.io.read_raw_bdf()
(and disable this functionality frommne.io.read_raw_gdf()
) (#10058 by Clemens Brunner)Fix
permutation_cluster_1samp_test()
to properly handle 2-dimensional data in combination with TFCE (#10073 by Richard Höchenberger)Fix channel grouping error when using “butterfly mode” with
mne.io.Raw.plot()
(#10087 by Daniel McCloy)Fix inconsistent behavior of
mne.preprocessing.annotate_*
functions by making them all returnmne.Annotations
objects with theorig_time
attribute set toraw.info["meas_time"]
(#10067 and #10118 by Stefan Appelhoff, Eric Larson, and Alex Gramfort)Fix bug that appears during automatic calculation of the colormap of
mne.viz.Brain
when data values offmin
andfmax
are too close (#10074 by Guillaume Favelier)We now display a scrollbar in the tags dropdown of a
Report
if many tags have been added, granting access to all tags instead of “hiding” them below the bottom of the page (#10082 by Richard Höchenberger)Creating
mne.Epochs
now provides clearer logging (less ambiguous, no duplicates) when thepreload
and/ormetadata
parameters are set (#10112 by Stefan Appelhoff)Fix bug with
mne.Epochs
where save-load round-trip with FIF would causemne.Epochs.apply_baseline()
to no longer work (#10177 by Eric Larson)Fix functions by adding missing
overwrite
parameters:mne.write_events()
,mne.write_cov()
,mne.write_evokeds()
,mne.SourceEstimate.save()
,mne.minimum_norm.write_inverse_operator()
,mne.write_proj()
, and related methods (#10127 by Eric Larson)Fix bug with
mne.transforms.compute_volume_registration()
andmne.compute_source_morph()
(volumetric) where the smoothing factors were not scaled based onzooms
(#10132 by Eric Larson)Remove repeated logging output when overwriting an existing
Raw
file (#10095 by Richard Höchenberger and Stefan Appelhoff)In the plots generated by
mne.Report.add_stc()
, we now only add 5 labels to the color bar to reduce the chance of overlap, which could previously cause the labels to become unreadable (#10135 by Richard Höchenberger)mne.Report.add_trans()
now allows you to add sensor alignment plots for head surfaces that have topological defects (#10175 by Richard Höchenberger)mne.Report.add_trans()
now also works if no digitization points are present in the data (#10176 by Jeff Stout)Argument
verbose
is now respected by dataset fetching (#10210 by Mathieu Scheltienne)Fix bug with
mne.io.read_raw_hitachi()
where emptyComment
descriptions were not handled properly (#10235 by Eric Larson)Fix bug with input validation of low-level filtering functions (#10267 by Eric Larson)
mne.gui.coregistration()
now works with surfaces containing topological defects (#10230, by Richard Höchenberger)Fix bug with
mne.io.read_raw_nirx()
being unable to read measurement dates recorded on systems with German (de_DE), French (fr_FR), and Italian (it_IT) locales (#10277 by Eric Larson)Fix bug with projector normalization checks that were too sensitive, and improve warning (#10292 by Eric Larson)
Fix bug with
mne.viz.plot_alignment()
where head-coordinate source spaces (e.g., from a forward solution) were not properly plotted (#10309 by Eric Larson)mne.read_trans()
andmne.io.read_fiducials()
now correctly expand~
in the provided path (i.e., to the user’s home directory) (#10265, #10415, by Richard Höchenberger)mne.find_events()
now usesfirst_samp
and not0
for initial event when usinginitial_value
(#10289, by Alex Gramfort)Fix bug with
mne.channels.make_standard_montage()
for'standard*'
,'mgh*'
, and'artinis*'
montages where the points were incorrectly scaled and fiducials incorrectly set away from the correct values for use with thefsaverage
subject (#10324 by Eric Larson)Fix bug with
mne.Report.add_figure()
where figures generated externally were closed and possibly resized during render (#10342 by Eric Larson)Fix bug with
mne.viz.plot_sparse_source_estimates()
where the return value was incorrect (#10347 by Eric Larson)Fix plotting bug in How to convert 3D electrode positions to a 2D image and make view look more natural in Annotate movement artifacts and reestimate dev_head_t (#10313, by Alex Rockhill)
Fix bug with blank 3D rendering with MESA software rendering (#10400 by Eric Larson)
Fix a bug in
mne.gui.locate_ieeg()
where 2D lines on slice plots failed to update and were shown when not in maximum projection mode (#10335, by Alex Rockhill)Fix misleading color scale in Non-parametric between conditions cluster statistic on single trial power for the plotting of cluster F-statistics (#10393 by Alex Rockhill)
Fix baseline removal using
remove_dc=True
inraw.plot()
for data containingnp.nan
(#10392 by Clemens Brunner)Fix misleading color scale in Mass-univariate twoway repeated measures ANOVA on single trial power for plotting F-stats (#10401 by Alex Rockhill)
Fix misleading
T_obs
return name formne.stats.spatio_temporal_cluster_test()
when the default returns an F-statistic (#10401 by Alex Rockhill)
API changes#
The default browser for
raw.plot()
,epochs.plot()
, andica.plot_sources()
has been changed to the'qt'
backend on systems where mne_qt_browser is installed. To change back to matplotlib within a session, you can usemne.viz.set_browser_backend('matplotlib')
. To set it permanently on your system, you can usemne.set_config('MNE_BROWSER_BACKEND', 'matplotlib')
(#9960 by Martin Schulz and Eric Larson)mne.Info.pick_channels
has been deprecated. Useinst.pick_channels
to pick channels fromRaw
,Epochs
, andEvoked
. Usemne.pick_info()
to pick channels frommne.Info
(#10039 by Mathieu Scheltienne)All
data_path
functions now returnpathlib.Path
objects rather than strings. Support for string concatenation with plus (+
) is thus deprecated and will be removed in 1.2, use the forward-slash/
operator instead (#10348 by Eric Larson)Argument
event_list
has been deprecated in favor ofevents
inmne.write_events()
(#10056 by Mathieu Scheltienne)mne.preprocessing.annotate_flat
has been deprecated in favor ofmne.preprocessing.annotate_amplitude()
, that covers both minimum and maximum peak-to-peak variation. (#10143 by Mathieu Scheltienne)The
max_ori_out
parameter ofmne.beamformer.apply_lcmv()
and related functions is being removed as only signed estimates are supported.abs(stc)
can be used to obtain unsigned estimates (#10366 by Eric Larson)The
verbose
attribute of classes (e.g.,mne.io.Raw
,mne.Epochs
, etc.) has been deprecated. Explicitly passverbose
to methods as necessary instead. (#10267 by Eric Larson)In
mne.viz.set_browser_backend()
, the mne-qt-browser-based backend is now called'qt'
rather than'pyqtgraph'
for simplicity (#10323 by Eric Larson)
Dependencies#
Numerous external dependencies that used to be bundled with MNE-Python are now not shipped with the package anymore and will instead be retrieved automatically from their official sources when you install MNE-Python. This simplifies MNE-Python maintenance and keeps the package smaller. The following new dependencies have been added:
Jinja2 (replaces
Tempita
, which is not maintained anymore; #10211 by Richard Höchenberger)
Authors#
Adam Li
Adina Wagner+
Alex Rockhill
Alexandre Gramfort
Britta Westner
Clemens Brunner
Daniel McCloy
Eduard Ort
Eric Larson
Etienne de Montalivet+
Federico Zamberlan+
Guillaume Favelier
Jan Sosulski
Jan Zerfowski+
Jeff Stout
John Veillette+
Joshua Teves
Julia Guiomar Niso Galán
Luke Bloy
Marijn van Vliet
Martin Schulz
Mathieu Scheltienne
Matthias Eberlein+
Michiru Kaneda+
Mikołaj Magnuski
Nikolai Chapochnikov+
Richard Höchenberger
Robert Luke
Scott Huberty+
Senwen Deng+
Stefan Appelhoff
Steve Matindi
Thomas Hartmann
Version 0.24.0 (2021-11-03)#
Enhancements#
Add
pooch
to system information reports (#9801 by new contributor Joshua Teves)Get annotation descriptions from the name field of SNIRF stimulus groups when reading SNIRF files via
mne.io.read_raw_snirf
(#9575 by new contributor Darin Erat Sleiter)Add support for NIRSport and NIRSport2 devices to
mne.io.read_raw_nirx
(#9348 and #9401 by new contributor David Julien, new contributor Romain Derollepot, Robert Luke, and Eric Larson)New function
mne.Dipole.to_volume_labels()
to get atlas label for MRI coordinates. (#9376 by new contributor Marian Dovgialo)Add support for SURE parameter selection in
mne.inverse_sparse.mixed_norm()
and makealpha
parameter now default to'sure'
(#9430 by new contributor Pierre-Antoine Bannier and Alex Gramfort)Speed up BCD solver in
mne.inverse_sparse.mixed_norm()
by adding Anderson acceleration (#9481 by new contributor Pierre-Antoine Bannier and Alex Gramfort)Add support for list of channel types for EEG/sEEG/ECoG/DBS referencing (#9637 by new contributor Mathieu Scheltienne)
Add the ability to set point size and line width in
mne.viz.plot_sensors()
and related functions (#9872 by new contributor Dominique Makowski)Add support for changing the default event id used by
mne.make_fixed_length_epochs()
(#9782 by new contributor Mathieu Scheltienne)Improve documentation for arguments
threshold
,method
andmeasure
of ICA methodsfind_bads_ecg
,find_bads_ref
andfind_bads_eog
(#9858 by new contributor Mathieu Scheltienne)Add support for more than 3 source estimates in
mne.viz.plot_sparse_source_estimates()
(#9640 by new contributor Pierre-Antoine Bannier and Alex Gramfort)Add cortical signal suppression (CSS)
mne.preprocessing.cortical_signal_suppression()
(#6888, #9892 by new contributor John Samuelsson and Eric Larson)Show all good channel types and counts when printing a
mne.Info
in the notebook (#9725 by Valerii Chirkov and Eric Larson)Speed up point decimation in
mne.io.read_raw_kit()
by vectorization and use ofscipy.spatial.cKDTree
(#9568 by Jean-Remi King and Eric Larson)Add ability to export EDF+ files using
mne.export.export_raw()
(#9643 by Adam Li)New function
mne.chpi.get_chpi_info()
to retrieve basic information about the cHPI system used when recording MEG data (#9369 by Richard Höchenberger)New namespace
mne.export
created to contain functions (such asmne.export.export_raw
andmne.export.export_epochs
) for exporting data to non-FIF formats (#9427 by Eric Larson)Add support for Hitachi fNIRS devices in
mne.io.read_raw_hitachi
(#9391 by Eric Larson)Add support for
picks
inmne.stc_near_sensors()
(#9396 by Eric Larson)Add label methods
mne.Label.compute_area
andmne.Label.distances_to_outside
(#9424 by Eric Larson)Add projections when printing a
mne.Info
in the notebook (#9403 by Alex Gramfort)Add new function
mne.bem.make_scalp_surfaces()
to compute scalp surfaces for coregistration (#9463 by Alex Gramfort)Add support for interpolating oxy and deoxyhaemoglobin data types (#9431 by Robert Luke)
Add support for SNIRF files in
mne.Report
(#9443 by Robert Luke)Add support for exporting MFF evoked files using
mne.export.export_evokeds
andmne.export.export_evokeds_mff
(#9406 by Evan Hathaway)mne.concatenate_raws()
,mne.concatenate_epochs()
, andmne.write_evokeds()
gained a new parameteron_mismatch
, which controls behavior in case not all of the supplied instances share the same device-to-head transformation (#9438 by Richard Höchenberger)Add support for multiple datablocks (acquistions with pauses) in
mne.io.read_raw_nihon()
(#9437 by Federico Raimondo)Add new function
mne.preprocessing.annotate_break()
to automatically detect and mark “break” periods without any marked experimental events in the continuous data (#9445 by Richard Höchenberger)Add “time_format” to
mne.io.Raw.plot()
andmne.preprocessing.ICA.plot_sources()
to display acquisition time on x-axis (#9419 by Martin Schulz)Speed up
mne.decoding.TimeDelayingRidge.predict()
by switching to FFT-based convolution (#9458 by Ross Maddox)Show multiple colors and linestyles for excluded components with
mne.Evoked
inmne.preprocessing.ICA.plot_sources()
(#9444 by Martin Schulz)Add functions for aligning MRI and CT data
mne.transforms.compute_volume_registration
andmne.transforms.apply_volume_registration
(#9503 by Alex Rockhill and Eric Larson)Add tutorial for how to processes image (CT and MR) files in order to localize electrode contacts for intracranial recordings Locating intracranial electrode contacts (#9484 by Alex Rockhill)
Add vertex number in source space for
mne.VolSourceEstimate.plot()
andmne.viz.plot_volume_source_estimates()
(#9697 by Eric Larson)Add support for colormap normalization in
mne.viz.plot_topomap()
(#9468 by Clemens Brunner)Update
mne.preprocessing.realign_raw()
with Numpy-recommended polynomial fitting method (#9514 by Erica Peterson)Add a warning to
mne.preprocessing.nirs.beer_lambert_law
when source-detector distances are zero (#9541 by Eric Larson)Add
exclude
parameter tomne.io.Raw.plot_psd()
andmne.Epochs.plot_psd()
(#9519 by Clemens Brunner)Add
mne.Annotations.rename
to rename annotation descriptions (#9525 by Robert Luke)Add
mne.Annotations.set_durations
to set annotation durations (#9529 by Robert Luke)The
exclude
parameter inmne.io.read_raw_edf
,mne.io.read_raw_bdf
, andmne.io.read_raw_gdf
now also accepts a regular expression (#9558 by Clemens Brunner)Add
mne.Evoked.get_data()
method tomne.Evoked
(#9555 by Stefan Appelhoff)The
mne.Epochs.get_data()
method now has aunits
parameter (#9553 by Stefan Appelhoff)Add
mne.warp_montage_volume()
to use an anatomical volume with channel locations at high or low insensities to apply a symmetric diffeomorphic registration to a template (e.g. fsaverage) space (#9544 by Alex Rockhill)mne.io.Raw.get_data()
,mne.Epochs.get_data()
, andmne.Evoked.get_data()
methods now havetmin
andtmax
parameters to specify data window in seconds to get (#9556 by Stefan Appelhoff)The
mne.Evoked.get_data()
method now has aunits
parameter (#9578 by Stefan Appelhoff)Add
mne.chpi.compute_chpi_snr
andmne.viz.plot_chpi_snr
for computing and plotting the time-varying SNR of continuously-active HPI coils (#9570 by Daniel McCloy and Jussi Nurminen)Add
mne.get_montage_volume_labels()
to find the regions of interest in a Freesurfer atlas anatomical segmentation for an intracranial electrode montage andmne.viz.plot_channel_labels_circle()
to plot them (#9545 by Alex Rockhill)Add
mne.viz.Brain.add_volume_labels()
to plot subcortical surfaces and other regions of interest (#9540 by Alex Rockhill and Eric Larson)Add custom cortex curvature colors in
mne.viz.Brain
via thecortex
argument (#9750 by Eric Larson)Add
mne.channels.DigMontage.apply_trans()
to apply a transform directly to a montage (#9601 by Alex Rockhill)mne.preprocessing.ICA.fit()
now emits a warning if any of thestart
,stop
,reject
, andflat
parameters are passed when performing ICA onEpochs
. These parameters only have an effect onRaw
data and were previously silently ignored in the case ofEpochs
(#9605 by Richard Höchenberger)mne.viz.plot_alignment()
now emits a warning (instead of aborting with an exception) if the surfaces contain topological defects (#9614 by Richard Höchenberger)The coregistration GUI can now display the head surface even if there are topological defects. Previously, a low-resolution standard head unsuitable for individualized coregistration was displayed (#9614 by Richard Höchenberger)
New
mne.coreg.Coregistration
object to allow coregistration scripting without a dependency on mayavi (#9516 by Guillaume Favelier).Add
mne.viz.Brain.add_head()
to plot the head surface (#9618 by Alex Rockhill)Add
mne.channels.read_dig_localite()
to read Localite electrode location files (#9658 by Clemens Brunner)Add
mne.viz.Brain.add_sensors()
to plot sensor locations (#9585 by Alex Rockhill)Add
mne.coreg.estimate_head_mri_t()
to estimate the head->mri transform from fsaverage fiducials (#9585 by Alex Rockhill)Add
mne.channels.DigMontage.add_mni_fiducials()
to add fiducials to a montage in MNI coordinates (#9682 by Alex Rockhill)Add
mne.channels.DigMontage.remove_fiducials()
to remove fiducials under rare circumstances when the coordinate frame should not be set to “head” (#9684 by Alex Rockhill)Add remove methods for mesh objects in
mne.viz.Brain
(#9688 by Alex Rockhill)Add
--show-paths
and--developer
options to mne sys_info (#9789 by Eric Larson)Add ability to export EDF+ files using
mne.export.export_raw()
(#9643 by Adam Li)Reading EDF files via
mne.io.read_raw_edf()
now can infer channel type from the signal label in the EDF header (#9694 by Adam Li)Add
mne.gui.locate_ieeg()
to locate intracranial electrode contacts from a CT, an MRI (with Freesurferrecon-all
) and the channel names from anmne.Info
object (#9586 by Alex Rockhill)All data fetching code now relies on
pooch
, which is an added optional requirement for dataset fetchers (#9742 by Adam Li and Daniel McCloy)Add phantom FreeSurfer subject fetcher
mne.datasets.fetch_phantom()
to allow fetching the Otaniemi phantom (#9796 by Eric Larson)Add
mne.datasets.fetch_dataset()
to allow packages to fetch datasets in a similar fashion to MNE (#9763 by Adam Li)Add full ECoG dataset to MNE-misc-data and demonstrate its use in How to convert 3D electrode positions to a 2D image and Locating intracranial electrode contacts (#9784 by Alex Rockhill)
Add options
tol
andaccuracy
tomne.fit_dipole()
to control optimization (#9810 by Eric Larson)Completely revamp the
Report
experience: new HTML layout, many new methods, more flexibility; the functionality is demonstrated in Getting started with mne.Report (#9754, #9828, #9847, #9860, #9861, #9862, #9863, #9871, #9881, #9891, #9901 by Richard Höchenberger, Eric Larson, and Alex Gramfort)Add basic HTML representations of
Forward
andInverseOperator
instances for a nicer Jupyter experience (#9754 by Richard Höchenberger)mne.io.read_raw_brainvision
now handles ASCII data with comma-separated values, as may be exported from BrainVision Analyzer (#9795 by Richard Höchenberger)Add
mne.preprocessing.ieeg.project_sensors_onto_brain()
to project ECoG sensors onto the pial surface to compensate for brain shift (#9800 by Alex Rockhill)Add support for data acquired with NIRx devices using Aurora software version 2021.9 (#9800 by Robert Luke, and Eric Larson)
All functions for reading and writing files should now automatically handle
~
(the tilde character) and expand it to the user’s home directory. Should you come across any function that doesn’t do it, please do let us know! (#9613, #9845 by Richard Höchenberger)All functions accepting a FreeSurfer subjects directory via a
subjects_dir
parameter can now consumepathlib.Path
objects too (used to be only strings) (#9613 by Richard Höchenberger)Add support for colormap normalization in
mne.time_frequency.AverageTFR.plot()
(#9851 by Clemens Brunner)Add support for BIDS-compatible filenames when splitting big epochs files via the new
split_naming
parameter inmne.Epochs.save()
(#9869 by Denis Engemann)Add
by_event_type
parameter tomne.Epochs.average()
to create a list containing anmne.Evoked
object for each event type (#9859 by Marijn van Vliet)Add pyqtgraph as a new backend for
mne.io.Raw.plot()
(#9687 by Martin Schulz)Add
mne.viz.set_browser_backend()
,mne.viz.use_browser_backend()
andmne.viz.get_browser_backend()
to set matplotlib or pyqtgraph as backend formne.io.Raw.plot()
(#9687 by Martin Schulz)
Bugs#
Fix bug in
mne.io.Raw.pick()
and related functions when parameter list contains channels which are not in info instance (#9708 by new contributor Evgeny Goldstein)Fix a few typos (#9706 by new contributor Timothy Gates)
Fix bug with
mne.Epochs.crop()
andmne.Evoked.crop()
wheninclude_tmax=False
, where the last sample was always cut off, even whentmax > epo.times[-1]
(#9378 by new contributor Jan Sosulski)Fix bug with
mne.io.read_raw_curry
to allow reading Curry 7 and 8 event files with ‘.ceo’ and ‘.cdt.ceo’ extensions (#9381, #9712 by new contributor Xiaokai Xia, Daniel McCloy, and by new contributor Reza Shoorangiz)Fix bug with
mne.compute_rank
,mne.cov.compute_whitener
andmne.preprocessing.ICA.fit
when explicit picks including bad channels are provided (#9719 by new contributor Mathieu Scheltienne)Fix bug with
mne.concatenate_epochs()
where the concatenated events could end up in non-chronological order. (#9765 by new contributor Jan Sosulski)Fix bug where
mne.time_frequency.psd_array_welch()
andmne.time_frequency.psd_array_multitaper()
failed to handle negative integer forn_jobs
argument (#9849 by new contributor Riessarius Stargardsky)Fix bug where resampling returns empty instances (#9897 by new contributor Mathieu Scheltienne and Eric Larson)
Fix bug with
mne.io.Raw.get_montage
now returning both good and bad channels in the montage. (#9920 by new contributor Mathieu Scheltienne)Fix bug with
mne.io.read_raw_nihon()
where latin-1 annotations could not be read (#9384 by Alex Gramfort)Fix bug when printing a
mne.io.RawArray
in the notebook (#9404 by Alex Gramfort)Fix bug when computing rank from info for SSS data with only gradiometers or magnetometers (#9435 by Alex Gramfort)
Fix bug with
mne.preprocessing.find_bad_channels_maxwell
where all-flat segments could lead to an error (#9531 by Eric Larson)Fix bug with
mne.io.Raw.set_montage
and related functions where the channel coordinate frame was not properly set to head (#9447 by Eric Larson)Fix bug with
mne.io.read_raw_fieldtrip
andmne.read_epochs_fieldtrip
where channel positions were not set properly (#9447 by Eric Larson)Fix bug with
mne.io.read_raw_kit()
where omitting HPI coils could lead to anAssertionError
on reading (#9612 by Eric Larson)Fix bug with
mne.io.read_raw_edf()
where reading only stimulus channels would lead to an error (#9831 by Eric Larson)Fix bug with
mne.preprocessing.nirs.optical_density
where protection against zero values was not guaranteed (#9522 by Eric Larson)mne.concatenate_raws()
now raises an exception ifraw.info['dev_head_t']
differs between files. This behavior can be controlled using the newon_mismatch
parameter (#9438 by Richard Höchenberger)Fixed bug in
mne.Epochs.drop_bad()
where subsequent rejections failed if they only specified thresholds for a subset of the channel types used in a previous rejection (#9485 by Richard Höchenberger).Fix bug with
mne.simulation.simulate_evoked
,mne.apply_forward
, andmne.apply_forward_raw
where systems with EEG channels that come before MEG channels would have them mixed up in the output evoked or raw object (##9513 by Eric Larson)In
mne.viz.plot_ica_scores()
andmne.preprocessing.ICA.plot_scores()
, the figure and axis titles no longer overlap when plotting only a single EOG or ECG channel (#9489 by Richard Höchenberger).Ensure
mne.io.Raw.get_montage
works with SNIRF data (#9524 by Robert Luke)Fix bug in
mne.setup_volume_source_space()
where non-finite positions could be used in a discrete source space (#9603 by Eric Larson)Fix bug in
mne.viz.plot_topomap()
(and related methods likemne.Evoked.plot_topomap()
) where large distances between electrodes (higher than head radius) would lead to an error (#9528 by Mikołaj Magnuski).Fix bug in
mne.viz.plot_topomap
(and related methods) where passingaxes
that are part of a matplotlib figure that uses a constrained layout would emit warnings (#9558 by Eric Larson)Fix bug in
mne.make_forward_solution()
where impossible sensor-BEM geometries were not checked (#9893 by Eric Larson)Fix bug in
mne.concatenate_epochs()
when concatenatingmne.Epochs
objects with 0 events (#9535 by Marijn van Vliet)Fix bug in
mne.viz.Brain.screenshot()
where the RGBA mode was not supported (#9564 by Guillaume Favelier).Fix bug in
mne.io.read_raw_egi()
where reading data from a data segment that is part of an acquisition skip would lead to an error (#9565 by Eric Larson)Prevent
mne.io.Raw.plot()
windows from spawning at sizes too small to properly render (#9629 by Daniel McCloy)Fix bug where
mne.io.Raw.plot()
raised an error when plotting raw dipole data (#9771 by Eric Larson)Fix bug in :
mne.preprocessing.ICA.find_bads_ecg()
where passingstart
andstop
lead to erroneous data windows depending on the combination of Raw, Epochs, Evoked, and the type (int, float, None) ofstart
andstop
(#9556 by Stefan Appelhoff)Fix bug in
mne.viz.set_3d_backend()
andmne.viz.get_3d_backend()
where the PyVistaQt-based backend was ambiguously named'pyvista'
instead of'pyvistaqt'
; useset_3d_backend('pyvistaqt')
and expect'pyvistaqt'
as the output ofmne.viz.get_3d_backend()
instead of'pyvista'
, and consider usingget_3d_backend().startswith('pyvista')
for example for backward-compatible conditionals (#9607 by Guillaume Favelier)Fix bug in
mne.viz.plot_compare_evokeds()
where confidence bands were not drawn if only one condition was plotted (#9663 by Daniel McCloy)Fix bug where setting of a montage with fNIRS data got set to “unknown” coordinate frame when it should have been in “head” (#9630 by Alex Rockhill)
Fix bug where “seeg”, “ecog”, “dbs” and “fnirs” data had coordinate frame unknown upon loading from a file when it should have been in “head” (#9580 by Alex Rockhill)
Raise error when no
trans
is provided tomne.viz.plot_alignment()
when required instead of assuming identitiy head->mri transform (#9585 by Alex Rockhill)Fix bug where
mne.Epochs.equalize_event_counts()
failed when only one good epoch existed for one of the event types (#9758 by Daniel McCloy)Fix bug where channels with a dollar sign ($) were not being labeled “misc” in
mne.io.read_raw_nihon()
(#9695 by Adam Li)Fix bug where
mne.io.read_raw_persyst()
was lower-casing events it found in the.lay
file (#9746 by Adam Li)Fix bug with Qhull when plotting OPM sensors in
mne.viz.plot_alignment()
(#9799 and #9804 by Eric Larson)Fix bug where
mne.io.read_raw_snirf()
was including the landmark index as a spatial coordinate (#9777 by Robert luke)Fix bug where
mne.Annotations
were not appending channel names when being added together (#9780 by Adam Li)mne.viz.plot_evoked_joint
now correctly handles atimes='peaks'
parameter value (#9754 by Richard Höchenberger)In
mne.viz.plot_compare_evokeds
, slightly adjust the x-axis limit calculation to avoid drawing an axis that is too short (#9754 by Richard Höchenberger)Fix a bug with
mne.viz.snapshot_brain_montage()
with the Mayavi backend where electrodes were shown in the wrong positions, and with the PyVista backend where the snapshot always contained the electrodes but could be missing a hemisphere (#9933 by Eric Larson)In
mne.io.Raw.plot_psd()
andmne.Epochs.plot_psd()
, avoid overlap between subplot titles and x-axis tick labels (#9864 by Richard Höchenberger)In
mne.Epochs.plot_psd_topomap()
, the data is now scaled to match the output ofmne.Epochs.plot_psd()
(#9873 by Richard Höchenberger)Fix channel locations with
NaN
values causing all channel locations not to be plotted inmne.viz.Brain.add_sensors()
(#9911 by Alex Rockhill)Fix infinite loop bug in
mne.get_montage_volume_labels()
(#9940 by Alex Rockhill)
API changes#
The
mne.Info
class is now more strictly checked when attributes are set. Setting most attributes directly will lead to an error in the next release. See the docstring ofmne.Info
for more information (#9867 by new contributor Mathieu Scheltienne)The Mayavi 3D backend has been deprecated (#9904 by Eric Larson):
In 3D plotting functions, use PyVista-based backends (
'pyvistaqt'
and'notebook'
) as PySurfer/Mayavi will be removed in the next versionTo use the mne kit2fiff command-line GUI for fiducial markers, install the separate
mne-kit-gui
module, which can still be launched via$ mne kit2fiff
The
mne.gui.fiducials
GUI has been deprecated, use mne coreg ormne_kit_gui.fiducials()
to set MRI fiducials instead
In
mne.compute_source_morph
, theniter_affine
andniter_sdr
parameters have been replaced byniter
andpipeline
parameters for more consistent and finer-grained control of registration/warping steps and iteration (#9505 by Alex Rockhill and Eric Larson)Split
mne.viz.Brain.show_view()
argumentview
intoazimuth
,elevation
andfocalpoint
for clearer view setting and make the default forrow
andcol
apply to all rows and columns (#9596 by Alex Rockhill)Deprecate
solver='prox'
inmne.inverse_sparse.mixed_norm()
in favor ofsolver='cd'
andsolver='bcd'
as coordinate descent solvers consistently outperform proximal gradient descent (#9608 by Pierre-Antoine Bannier)All
mne.connectivity
functions have moved to themne-connectivity
package; they are deprecated in MNE-Python and will be removed in version 0.25 (#9493 by Adam Li).mne.inverse_sparse.mixed_norm()
now simply warns when source estimates contain no dipole, e.g. if data are too noisy and alpha is based on SURE (#9685 by Alex Gramfort)Deprecate functions
mne.datasets.DATASET_NAME.has_DATASET_NAME_data()
for these datasets:epilepsy_ecog
,fnirs_motor
,multimodal
,opm
,phantom_4dbti
,refmeg_noise
,sample
,somato
, andssvep
. Use the genericmne.datasets.has_dataset()
instead (#9781 by Daniel McCloy and Adam Li)mne.Report
modernization has led to multiple deprecations (#9754 by Richard Höchenberger):mne.Report.add_figs_to_section
andmne.Report.add_slider_to_section
have been deprecated in favor ofmne.Report.add_figure()
mne.Report.add_images_to_section
has been deprecated in favor ofmne.Report.add_image()
mne.Report.add_bem_to_section
has been deprecated in favor ofmne.Report.add_bem()
mne.Report.add_htmls_to_section
has been deprecated in favor ofmne.Report.add_html()
In
mne.Report.parse_folder()
, thesort_sections
parameter has been deprecated in favor ofsort_content
In
mne.Report.remove()
, thecaption
andsection
parameters have been deprecated in favor oftitle
andtags
, respectivelyThe
mne.Report.sections
attribute has been deprecated in favor ofmne.Report.tags
The
mne.Report.fnames
attribute has been deprecated without replacement
mne.Epochs.plot()
andmne.viz.plot_epochs()
gained parametershow_scalebars
analogous tomne.viz.plot_raw()
(#9815 by Daniel McCloy)The output folder name for HF_SEF datasets is now
hf_sef
instead ofHF_SEF
(#9763 by Adam Li)Deprecate
mne.viz.utils.center_cmap
(#9851 by Clemens Brunner)The default partial pathlength factor of
mne.preprocessing.nirs.beer_lambert_law()
will change from 0.1 in 0.24 to 6.0 in the next release (#9843 by Robert Luke)mne.preprocessing.ICA.detect_artifacts
has been deprecated. Please usefind_bads_eog
andfind_bads_ecg
instead (#9909 by Richard Höchenberger)
Authors#
People who contributed to this release in alphabetical order (people with a + are first time contributors):
Adam Li
Alex Rockhill
Alexandre Gramfort
Britta Westner
Clemens Brunner
Daniel McCloy
Darin Erat Sleiter+
David Julien+
Denis A. Engemann
Dominique Makowski+
Eric Larson
Erica Peterson
Evan Hathaway
Evgeny Goldstein+
Fede Raimondo
Gansheng Tan+
Guillaume Favelier
Hubert Banville
Jan Sosulski+
Jean-Remi King
Jeff Stout
Johann Benerradi
John Samuelsson+
Josh Koen+
Joshua Teves+
Lukas Hecker+
Luke Bloy
Marian Dovgialo+
Marijn van Vliet
Martin Schulz
Mathieu Scheltienne+
Mikołaj Magnuski
Pierre-Antoine Bannier+
Reza Shoorangiz+
Richard Höchenberger
Riessarius Stargardsky+
Robert Luke
Romain Derollepot+
Ross Maddox
Ryan Law+
Stefan Appelhoff
Steve Matindi+
Timothy Gates+
Valerii Chirkov
Xiaokai Xia+
Version 0.23.0 (2021-04-27)#
Enhancements#
Add support for exporting to EEGLAB’s set format with
eeglabio
with new methodsmne.io.Raw.export()
andmne.Epochs.export()
. (#9192 by new contributor Jack Zhang)mne.viz.plot_evoked_topo()
now uses a Minimum/Maximum of peaks for each channel type to calculate ylim when input param is None (#9285 by new contributor Ram Pari)Add exclude parameter to
mne.viz.plot_evoked_topo()
(#9278 by new contributor Ram Pari)Add
mne.time_frequency.EpochsTFR.to_data_frame()
andmne.time_frequency.AverageTFR.to_data_frame()
methods (#9124 by new contributor Felix Klotzsche)Add
selection
anddrop_log
tomne.time_frequency.EpochsTFR
(#9124 by new contributor Felix Klotzsche)Add CSV, TSV, and XYZ support to
mne.channels.read_custom_montage()
(#9203 by new contributor Jack Zhang)Add HTML representation for
Epochs
in Jupyter Notebooks (#9174 by new contributor Valerii Chirkov)Speed up
mne.viz.plot_ica_properties()
by refactoring (#9174 by new contributor Valerii Chirkov)Add
apply_function
method to epochs and evoked objects (#9088 by new contributor Erica Peterson and Victoria Peterson)New tutorial for function
mne.make_fixed_length_epochs()
(#9156 by new contributor Erica Peterson)Add different colors for each volume source space in
mne.viz.plot_alignment()
(#9043 by new contributor Valerii Chirkov)Add
overlap
parameter tomne.make_fixed_length_epochs()
to allow creating overlapping fixed length epochs (#9096 by new contributor Silvia Cotroneo)Add
mne.Dipole.to_mni()
for more convenient dipole.pos to MNI conversion (#9043 by new contributor Valerii Chirkov)Update citations in maxwell.py (#9043 by new contributor Valerii Chirkov)
New Tutorial for analyzing frequency-tagging data (#8867 by new contributor Dominik Welke and kalenkovich)
Add dbs as new channel type for deep brain stimulation (DBS) recordings (#8739 by new contributor Richard Koehler)
Add some preprocessing functions to the EEGLAB migration guide (#9169 by new contributor Apoorva Karekal)
Add
mne.chpi.extract_chpi_locs_kit()
to read cHPI coil locations from KIT/Yokogawa data (#8813 by new contributor Matt Sanderson, Robert Seymour, and Eric Larson)Add
match_alias
parameter tomne.io.Raw.set_montage()
and related functions to match unrecognized channel location names to known aliases (#8799 by new contributor Zhi Zhang)Update the
notebook
3d backend to useipyvtk_simple
for a better integration withinJupyter
(#8503 by Guillaume Favelier)Remove the 15-character limitation for channel names when writing to FIF format. If you need the old 15-character names, you can use something like
raw.rename_channels({n: n[:13] for n in raw.ch_names}, allow_duplicates=True)
, by Eric Larson (#8346)Add channel-specific annotation support to
mne.Annotations
viach_names
parameter (#8896 by Eric Larson)Add toggle-all button to
mne.Report
HTML andwidth
argument tomne.Report.add_bem_to_section
(#8723 by Eric Larson)Add infant template MRI dataset downloader
mne.datasets.fetch_infant_template()
(#8738 by Eric Larson and Christian O’Reilly)Add digitizer information to
mne.io.read_raw_egi()
(#8789 by Christian Brodbeck)Add support for reading some incomplete raw FIF files in
mne.io.read_raw_fif()
(#9268 by Eric Larson)Allow reading digitization from files other than
*.fif
in the coregistration GUI (#8790 by Christian Brodbeck)Speed up
mne.inverse_sparse.tf_mixed_norm()
using STFT/ISTFT linearity (#8697 by Eric Larson)Reduce memory consumption of
mne.io.Raw
and speed up epoching when thousands of events are present formne.Epochs
(#8801 by Eric Larson)Speed up
import mne
by reducing function creation overhead (#8829 by Eric Larson)mne.Report.parse_folder
now processes supported non-FIFF files by default, too (#8744 by Richard Höchenberger)mne.Report
has gained the new methodsadd_custom_js
andadd_custom_css
for adding user-defined JavaScript and styles (#8762, #9037 by Richard Höchenberger)Add option to control appearance of opaque inside surface of the head to mne coreg (#8793 by Eric Larson)
Add option to disable projection using
--projoff
in mne browse_raw (#9262 by Eric Larson)Add keypress to toggle projection using
shift+j
inmne.io.Raw.plot()
and mne browse_raw (#9262 by Eric Larson)Add support for non-FIF files in mne browse_raw using
mne.io.read_raw()
(#8806 by Eric Larson)Add
mne.io.read_raw_nedf()
for reading StarStim / enobio NEDF files (#8734 by Tristan Stenner)Add
raw.describe()
to display (or return) descriptive statistics for each channel (#8760 by Clemens Brunner)Add
annotations.to_data_frame()
to return annotations as a pandas dataframe (#8783 by Robert Luke)Add
mne.preprocessing.compute_maxwell_basis()
to compute the SSS basis function (#8822 by Eric Larson)Add the
silhouette
parameter tomne.viz.Brain
to display sharp edges and improve perception (#8771 by Guillaume Favelier)Add warning to
mne.cov.compute_whitener()
when an explicitrank
parameter leads to a large increase in condition number (#8805 by Eric Larson)Add parameter
align=True
tomne.viz.Brain.show_view
to make views relative to the closest canonical (MNI) axes rather than the native MRI surface RAS coordinates (#8794 by Eric Larson)Add
auto_close
tomne.Report.add_figs_to_section
andmne.Report.add_slider_to_section
to manage closing figures (#8730 by Guillaume Favelier)Add
mne.write_head_bem()
to support writing head surface files (#8841 by Yu-Han Luo)The signal of
resp
(respiratory) channels is now assumed to be in the unit Volt (#8858 by Richard Höchenberger)Static type checkers like Pylance (comes with VS Code) now display the parameters of many more functions correctly, largely improving overall usability for VS Code users (#8862 by Richard Höchenberger)
Support new EEGLAB file format (#8874 by Clemens Brunner)
Reading and writing FIFF files whose filenames end with
_meg.fif.gz
,_eeg.fif(.gz)
, and_ieeg.fif(.gz)
doesn’t emit a warning anymore; this improves interobaility with BIDS-formatted datasets (#8868 by Richard Höchenberger)On macOS, we now set the environment variable
QT_MAC_WANTS_LAYER
to"1"
if it hasn’t been set explicitly by the user, in order to ensure thatSourceEstimate
plots work on macOS 11 with older versions of Qt and PyQt (#8959 by Richard Höchenberger)mne.time_frequency.EpochsTFR.average()
now allows different ways of averaging, such as “median”, or callable functions (#8879 by Adam Li)Epochs
metadata can now be generated automatically from events usingmne.epochs.make_metadata
(#8834 by Richard Höchenberger)Interactions with sliders in
mne.Report
will now continuously update the linked content (it was updated only on mouse button release before) (#9023 by Richard Höchenberger)mne.viz.plot_drop_log
andmne.Epochs.plot_drop_log()
now omit displaying the subject name in the title ifsubject=None
is passed (#9015 by Richard Höchenberger)Plot ECoG tutorial now uses a real epilepsy seizure dataset and visualizes the seizure onset (#9087 by Eric Larson, Adam Li, Alex Rockhill and Liberty Hamilton)
Improve documentation of Report-Class (#9113 by Martin Schulz)
Add
mne.channels.DigMontage.add_estimated_fiducials()
which will add LPA, RPA and Nasion fiducial points to theDigMontage
object inmri
coordinate frame (#9118 by Adam Li)mne.io.anonymize_info()
now anonymizes also sex and hand fields whenkeep_his
isFalse
(#9103, #9175 by new contributor Rotem Falach and Richard Höchenberger)Add parameter
theme
tomne.viz.Brain
for optional Dark-Mode (#9149 by Martin Schulz, Guillaume Favelier)Add first_samp support for raw simulations with
mne.simulation.simulate_raw
andmne.simulation.SourceSimulator
(#9166 by Steven Bierer)Evoked
gained abaseline
attribute that is automatically assembled based on the baseline of the averagedEpochs
(#9210 by Richard Höchenberger)Add
units
parameter tomne.io.Raw.get_data()
to return data in the desired unit (#9136 by Johann Benerradi and Stefan Appelhoff)Add
mne.preprocessing.equalize_bads()
to interpolate bad channels in a list ofEvoked
,Epochs
orRaw
having different sets of bad channels (#9241 by Alex Gramfort)mne.Epochs.equalize_event_counts()
can now be called without providing a list of event names, and will equalize the counts of all event types present in theEpochs
(#9261 by Richard Höchenberger)mne.preprocessing.find_eog_events()
andmne.preprocessing.create_eog_epochs()
now accept a list of channel names, allowing you to specify multiple EOG channels at once (#9269 by Richard Höchenberger)Improve performance of
mne.set_bipolar_reference()
(#9270 by Martin Schulz)Add support for setting montages on fNIRS data, with built in standard montages for Artinis OctaMon and Artinis Brite23 devices (#9141 by Johann Benerradi, Robert Luke and Eric Larson)
Enable support for reading SNIRF files with 2D optode positions (#9347 Robert Luke)
Bugs#
Fix bug with
mne.time_frequency.tfr()
where plot misbehaved. Plot now always returns a list of figures instead of a single figure handle (#8013 by new contributor Eduard Ort)Fix bug with
mne.viz.plot_evoked_topo()
where set ylim parameters gets swapped across channel types. (#9207 by new contributor Ram Pari)Fix bug with
mne.io.read_raw_edf()
where µV was not correctly recognized (#9187 by new contributor Sumalyo Datta)Fix bug with
mne.viz.plot_compare_evokeds()
did not check type of combine. (#9151 by new contributor Matteo Anelli)Fix bug with
mne.viz.plot_evoked_topo()
whereylim
was only being applied to the first channel in the dataset (#9162 by new contributor Ram Pari )Fix bug with
mne.Epochs.plot_image()
allowing interactive zoom to work properly (#9152 by by new contributor Maggie Clarke and Daniel McCloy)Fix bug with
mne.Epochs.plot_image()
where thex_label
was different depending on the evoked parameter (#9115 by new contributor Matteo Anelli)Fix bug with restricting
mne.io.Raw.save()
saving options to .fif and .fif.gz extensions (#9062 by new contributor Valerii Chirkov)Fix bug with
mne.io.read_raw_kit()
where missing marker coils were not handled (#8989 by new contributor Judy D Zhu)Fix bug with
mne.connectivity.spectral_connectivity
where time axis in Epochs data object was dropped. (#8839 by new contributor Anna Padee)Fix bug with
mne.io.Raw.resample
to allow passingstim_picks='misc'
(#8844 by new contributor Enrico Varano and Eric Larson)Fix bugs with
mne.io.read_raw_persyst
where multipleComments
with the same name are allowed, andComments
with a “,” character are now allowed (#8311 and #8806 by new contributor Andres Rodriguez and Adam Li)Fix zen mode and scalebar toggling for
raw.plot()
when using themacosx
matplotlib backend (#8688 by Daniel McCloy)Fix bug with
mne.viz.snapshot_brain_montage()
where the positions were incorrect (#8983 by Eric Larson)Fix bug with
mne.preprocessing.maxwell_filter()
where the eSSS basis had to exactly match the good channels instead of being a superset (#8675 by Eric Larson)Fix bug with
mne.Report.add_bem_to_section
wheren_jobs != 1
would causen_jobs
subsets of MRI images in some orientations to be flipped (#8713 by Eric Larson)Fix bug with
raw.plot()
where annotations didn’t immediately appear when changing window duration (#8689 by Daniel McCloy)Fix bug with
raw.plot()
wherescalings='auto'
did not compute scalings using the full range of data (#8806 by Eric Larson)Fix bug with
raw.plot()
where setting alowpass
could lead to non-data-channels not plotting (#8954 by Eric Larson)Fix bug with
mne.io.Raw.load_data()
andmne.Epochs.drop_bad()
whereverbose
logging was not handled properly (#8884 by Eric Larson)Fix bug with
mne.io.read_raw_nicolet()
where header type values such as num_sample and duration_in_sec where not parsed properly (#8712 by Alex Gramfort)Fix bug with
mne.preprocessing.read_ica_eeglab()
when reading decompositions using PCA dimensionality reduction (#8780 by Alex Gramfort and Eric Larson)Fix bug with
mne.minimum_norm.make_inverse_operator()
wheredepth
was errantly restricted to be less than or equal to 1. (#8804 by Eric Larson)Fix bug with
mne.stats.permutation_cluster_1samp_test()
and related clustering functions whenadjacency=None
andout_type='indices'
(##8842 by Eric Larson)Fix bug with
mne.viz.plot_alignment()
where plotting a sphere model could ignore thebrain
argument (#8857 by Eric Larson)Fix bug with
mne.SourceEstimate.plot()
where flatmaps were not positioned properly when usinghemi='both'
(#9315 by Eric Larson)Fix bug with
mne.Annotations.save()
where files could be overwritten accidentally, it can now be controlled via theoverwrite
argument (#8896 by Eric Larson)Fix bug with
replace
argument ofmne.Report.add_bem_to_section
andmne.Report.add_slider_to_section
(#8723 by Eric Larson)Fix bug with
mne.chpi.compute_chpi_locs()
where all cHPI coils being off would lead to an empty array of the wrong dimensionality (#8956 by Eric Larson)Fix bug with
mne.extract_label_time_course()
where labels, STCs, and the source space were not checked for compatiblesubject
attributes (#9284 by Eric Larson)Fix bug with
mne.grow_labels()
whereoverlap=False
could run forever or raise an error (#9317 by Eric Larson)Fix compatibility bugs with
mne_realtime
(#8845 by Eric Larson)Fix bug with
mne.viz.Brain
where non-inflated surfaces had an X-offset imposed by default (#8794 by Eric Larson)Fix bug with mne coreg where nasion values were not updated when clicking (#8793 by Eric Larson)
Fix bug with matplotlib-based 3D plotting where
Axes3D
were not properly initialized inmne.viz.plot_source_estimates()
(#8811 by Chris Bailey)Allow sEEG channel types in
mne.Evoked.plot_joint()
(#8736 by Daniel McCloy)Fix bug where hidden annotations could be deleted interactively in
mne.io.Raw.plot()
windows (#8831 by Daniel McCloy)Function
mne.set_bipolar_reference()
was not working when passingEpochs
constructed with somepicks
(#8728 by Alex Gramfort)Fix anonymization issue of FIF files after IO round trip (#8731 by Alex Gramfort)
Fix bug in
mne.preprocessing.ICA.plot_sources
where right-clicking component names could yieldplot_properties
windows for the wrong component ifpicks
had been specified (#8996 by Daniel McCloy)Fix title not shown in
mne.viz.plot_montage()
(#8752 by Clemens Brunner)mne.io.read_raw_egi
now correctly handlespathlib.Path
filenames (#8759 by Richard Höchenberger)mne.viz.plot_evoked
andmne.Evoked.plot
now correctly plot global field power (GFP) for EEG data whengfp=True
orgfp='only'
is passed (used to plot RMS). For MEG data, we continue to plot the RMS, but now label it correctly as such (#8775 by Richard Höchenberger)Fix bug with mne make_scalp_surfaces where
--overwrite
was not functional (#8800 by Yu-Han Luo)Fix bug with
mne.viz.plot_topomap()
when plotting gradiometers with a missing channel in a pair (#8817 by Alex Gramfort)epochs.crop()
now also adjusts thereject_tmin
andreject_tmax
attributes if necessary (#8821 by Richard Höchenberger)When creating
Epochs
, we now ensure thatreject_tmin
andreject_tmax
cannot fall outside of the epochs’ time interval anymore (#8821 by Richard Höchenberger)read_raw_bti
erroneously treated response channels as respiratory channels (#8856 by Richard Höchenberger)The RMS trace shown in the time viewer of
SourceEstimate
plots is now correctly labeled asRMS
(wasGFP
before) (#8965 by Richard Höchenberger)Fix bug with
mne.SourceEstimate.plot()
and related functions where the scalars were not interactively updated properly (#8985 by Eric Larson)Fix bug with mne.channels.find_ch_adjacency() returning wrong adjacency for Neuromag122-Data (#8891 by Martin Schulz)
Fix
mne.read_dipole()
yieldingmne.Dipole
objects that could not be indexed (#8963 by Marijn van Vliet)Fix bug when setting n_jobs > 1 in
mne.Report.parse_folder()
(#9109 by Martin Schulz)Fix bug with
mne.Evoked.plot_image()
where an incorrect clim parameter did not raise any error (#9115 by new contributor Matteo Anelli)Fix bug with
mne.io.Raw.pick
where incorrect fnirs types were returned (#9178 by Robert Luke)Fix bug when passing both axes and picks to
mne.viz.plot_compare_evokeds
(#9252 by Daniel McCloy)Improved string representation of
Epochs
containing multiple event types; improved (and more mathematically correct)evoked.comment
in themne.combine_evoked
output; and better (and often more concise) legend labels in the figures created viaplot_compare_evokeds
(#9027 by Richard Höchenberger)mne.preprocessing.find_ecg_events()
now correctly handles situation where no ECG activity could be detected, and correctly returns an empty array of ECG events (#9236 by Richard Höchenberger)Fix bug with
picks
attribute forEpochs
after callingmne.Epochs.add_channels()
(#9246 by Alex Gramfort)Fix bug where
backend='notebook'
could not be used inmne.SourceEstimate.plot()
(#9305 by Jean-Remi King)mne.preprocessing.compute_proj_eog
andmne.preprocessing.compute_proj_ecg
now return empty lists if no EOG or ECG events, respectively, could be found. Previously, we’d returnNone
in these situations, which does not match the documented behavior of returning a list of projectors (#9277 by Richard Höchenberger)
API changes#
Introduced new
'auto'
settings forICA.max_iter
. The old defaultmax_iter=200
will be removed in MNE-Python 0.24 (#9099 by new contributor Cora Kim)mne.viz.plot_sensors_connectivity
now allows setting the colorbar label via thecbar_label
parameter (#9248 by Daniel McCloy)mne.read_selection
has been deprecated in favor ofmne.read_vectorview_selection
.mne.read_selection
will be removed in MNE-Python 0.24 (#8870 by Richard Höchenberger)mne.beamformer.tf_dics
has been deprecated and will be removed in MNE-Python 0.24 (#9122 by Britta Westner)Fitting
ICA
on baseline-correctedEpochs
, and / or applying it on baseline-correctedEpochs
orEvoked
data will now display a warning. Users are advised to only baseline correct their data after cleaning is completed (#9033 by Richard Höchenberger)Supplying multiple channel names to
mne.preprocessing.find_eog_events
ormne.preprocessing.compute_proj_eog
as a string of comma-separated channel names has been deprecated; please pass a list of channel names instead. Support for comma-separated strings will be removed in MNE-Python 0.24 (#9269 by Richard Höchenberger)The default in
mne.beamformer.make_dics()
ofreal_filter=False
will change toreal_filter=True
in 0.24 (#9340 by Britta Westner)
Authors#
People who contributed to this release in alphabetical order (people with a + are first time contributors):
Adam Li
Alex Rockhill
Alexandre Gramfort
Ana Radanovic
Andres Rodriguez+
Anna Padee+
Apoorva Karekal+
Britta Westner
Catalina Magalvan
Christian Brodbeck
Christian Mista
Christian O’Reilly
Christina Zhao
Christopher J. Bailey
Clemens Brunner
Cora Kim+
Daniel McCloy
Denis A. Engemann
Dominik Welke+
Eduard Ort
Enrico Varano+
Eric Larson
Erica Peterson+
Evgenii Kalenkovich
Felix Klotzsche+
Giorgio Marinato
Guillaume Favelier
Jack Zhang+
Jean-Remi King
Johann Benerradi
Joris Van den Bossche
Judy D Zhu+
Liberty Hamilton
Luke Bloy
Maggie Clarke+
Mainak Jas
Manorama Kadwani
Marijn van Vliet
Martin Schulz
Matt Sanderson+
Matteo Anelli+
Nicolas Gensollen
Ram Pari+
Richard Höchenberger
Richard Koehler+
Robert Luke
Rotem Falach+
Sebastien Treguer
Silvia Cotroneo+
Stefan Appelhoff
Steven Bierer
Sumalyo Datta+
Timon Merk
Tristan Stenner
Valerii Chirkov+
Victoria Peterson
Yu-Han Luo
Zhi Zhang+
Version 0.22.0 (2020-12-17)#
Enhancements#
Add
mne.read_evokeds_mff()
to read averaged MFFs (requires mffpy >= 0.5.7) by new contributor Evan Hathaway (#8354)Add
mne.decoding.SSD
for spatial filtering with spatio-spectral-decomposition (#7070 by new contributor Victoria Peterson and Denis Engemann)Add reader for optical imaging data recorded using ISS Imgagent I/II hardware and BOXY recording software in
mne.io.read_raw_boxy()
(#7717 by new contributor Jonathan Kuziek and Kyle Mathewson)Add options to use labels in
mne.minimum_norm.get_point_spread()
andmne.minimum_norm.get_cross_talk()
(#8275 by Olaf Hauk)Update
surfaces
argument inmne.viz.plot_alignment()
to allow dict for transparency values, and set default for sEEG data to have transparency (#8445 by Keith Doelling)Add support for
mri_fiducials='estimated'
inmne.viz.plot_alignment()
to allow estimating MRI fiducial locations usingmne.coreg.get_mni_fiducials()
(#8553 by Eric Larson)Update default values in mne coreg and
mne.viz.plot_alignment()
for clearer representation of MRI and digitized fiducial points (#8553 by Alex Gramfort and Eric Larson)Add
n_pca_components
argument tomne.viz.plot_ica_overlay()
(#8351 by Eric Larson)Add
mne.stc_near_sensors()
to facilitate plotting ECoG data (#8190 by Eric Larson)Add
proj
argument tomne.make_fixed_length_epochs()
(#8351 by Eric Larson)Add
mne.preprocessing.realign_raw()
to realign simultaneous raw recordings in the presence of clock drift (#8539 by Eric Larson)Reduce memory usage of volume source spaces (#8379 by Eric Larson)
Speed up heavy use of
mne.SourceMorph.apply()
for volumetric source spaces by use of the methodmne.SourceMorph.compute_vol_morph_mat()
(#8366 by Eric Larson)Add support for non-uniform
zooms
(e.g., when using a surrogate MRI viamne.scale_mri()
) in volumetric morphing (#8642 by Eric Larson)In
mne.compute_source_morph()
zooms
are no longer required to match the spacing ofsrc_to
, which is useful to ensure the morphing is accurate when thesrc_to
spacing is large (e.g., 1 cm) (#8642 by Eric Larson)Add volumetric source space support to
mne.labels_to_stc()
(#8447 by Eric Larson)Speed up
mne.decoding.TimeDelayingRidge
with edge correction using Numba (#8323 by Eric Larson)Add
mne.Epochs.reset_drop_log_selection()
to facilitate writing epochs with many ignored entries in their drop log (#8449 by Eric Larson)Add sEEG source visualization using
mne.stc_near_sensors()
and sEEG working tutorial (#8402 by Eric Larson and Adam Li)Add
mne.channels.DigMontage.get_positions()
, which will return a dictionary of channel positions, coordinate frame and fiducial locations (#8460 by Adam Li)Add support for writing digitization points in a coordinate frame other than head in
mne.channels.DigMontage.save()
(#8532 by Eric Larson)Add
picks
parameter tomne.preprocessing.fix_stim_artifact()
to specify which channel needs to be fixed (#8482 by Alex Gramfort)Add progress bar support to
mne.time_frequency.csd_morlet()
(#8608 by Eric Larson)Further improved documentation building instructions and execution on Windows (#8502 by kalenkovich and Eric Larson)
Add option to disable TQDM entirely with
MNE_TQDM='off'
(#8515 by Eric Larson)Add option
on_header_missing
tomne.channels.read_polhemus_fastscan()
(#8622 by Eric Larson)Add option
window
tomne.time_frequency.psd_welch
and related functions (#8862 by Eric Larson)mne.preprocessing.ICA.plot_sources
now displays anmne.preprocessing.ICA.plot_properties
window when right-clicking on component names on the y-axis (#8381 by Daniel McCloy)mne.io.read_raw_edf()
,mne.io.read_raw_bdf()
, andmne.io.read_raw_gdf()
now detect and handle invalid highpass/lowpass filter settings (#8584 by Clemens Brunner)If a
baseline
tuple containing one or twoNone
values – e.g.(None, 0)
,(0, None)
, or(None, None)
– is passed toEpochs
orapply_baseline
, theNone
value(s) will be replaced with the actual time (i.e.,tmin
andtmax
, respectively) when populatingEpochs.baseline
(#8442 by Richard Höchenberger)Epochs
will now retain the information about an applied baseline correction, even if the baseline period is partially or completely removed through cropping later on (#8442 by Richard Höchenberger)Add
mne.source_space.compute_distance_to_sensors()
to compute distances between vertices and sensors (#8534 by Olaf Hauk and Marijn van Vliet)Annotations can now be shown/hidden interactively in raw plots (#8624 by Daniel McCloy)
Added argument
colors
tomne.grow_labels
(#8519 by Olaf Hauk)Added
mne.SourceEstimate.apply_baseline
method for baseline-correction of source estimates (#8452 by Olaf Hauk)New
mne.viz.Brain.set_time
method to set the displayed time in seconds (#8415 by Daniel McCloy)Update the
backend
parameter ofmne.viz.plot_source_estimates()
to integratepyvista
(#8395 by Guillaume Favelier)Add
group_by
parameter tomne.viz.plot_epochs
andmne.Epochs.plot
to allow displaying channel data by sensor position (#8381 by Daniel McCloy)
Bugs#
Fix orthogonalization of power envelopes in
mne.connectivity.envelope_correlation
(#8658 by new contributor Qianliang Li and Eric Larson)Fix data overwrite of cascading simulation operations :
mne.simulation.simulate_raw
(#8633 by new contributor Jeff Stout)Fix a transpose issue of
mne.decoding.CSP.plot_filters()
(#8580 by new contributor Hongjiang Ye)Fix
mne.io.read_raw_curry()
to deal with Curry datasets that have channels that are listed in the labels file, but which are absent from the saved data file (e.g. ‘Ref’ channel). Also now populates info[‘meas_date’] if possible (#8400 by new contributor Tod Flak)Fix bug with mne.io.egi.tests/test_egi.py where it mandatorily downloaded testing data when it was not necessary (#8474 by new contributor Aniket Pradhan)
Fix bug with reading split files that have dashes in the filename (#8339 by new contributor Eduard Ort)
Fix bug with parsing EDF dates and date integers (#8558 by new contributor Austin Hurst and Eric Larson)
Fix bug with reading EDF and KIT files on big endian architectures such as s390x (#8618 by Eric Larson)
Fix bug with
mne.beamformer.make_dics()
where therank
parameter was not properly handled (#8594 by Marijn van Vliet and Eric Larson)Fix bug with
mne.beamformer.apply_dics()
where the whitener was not properly applied (#8610 by Eric Larson)Fix bug with
plot_epochs_image
whenorder
is supplied and multiple conditions are plotted (#8377 by Daniel McCloy )Fix bug with
mne.viz.plot_source_estimates()
when using the PyVista backend where singleton time points were not handled properly (#8285 by Eric Larson)Fix bug when passing
axes
to plotting functions,matplotlib.pyplot.tight_layout()
will not be called when the figure was created using a constrained layout (#8344 by Eric Larson)Fix bug with compensated CTF data when picking channels without preload (#8318 by Eric Larson)
Fix bug with plotting MEG topographies where the wrong extrapolation made was used in ICA (#8637 by Eric Larson)
Fix bug when merging fNIRS channels in
mne.viz.plot_evoked_topomap()
and related functions (#8306 by Robert Luke)Fix bug where events could overflow when writing to FIF (#8448 by Eric Larson)
mne.io.read_raw_edf()
now supports EDF files with invalid recording dates (#8283 by Clemens Brunner)Fix bug with
mne.io.Raw.save()
when usingsplit_naming='bids'
where non-split files would still be namedname_split-01_meg.fif
instead of the requestedname_meg.fif
(#8464 by Alex Gramfort and Eric Larson)Fix bug with
mne.preprocessing.ICA
wheren_pca_components
as afloat
would give the number of components that explained less than or equal to the given variance. It now gives greater than the given number for better usability and consistency withsklearn.decomposition.PCA
. Generally this will mean that one more component will be included (#8326 by Eric Larson)Fix bug with
mne.preprocessing.ICA
where projections were not tracked properly (#8343 by Eric Larson)Fix bug where extrapolation points created artifacts in
mne.viz.plot_evoked_topomap()
and related functions (#8425 by Mikołaj Magnuski)Fix bug with
mne.preprocessing.read_ica_eeglab()
where full-rank data were not handled properly (#8326 by Eric Larson)Fix bug with Somatosensory where the BEM was not included (#8317 by Eric Larson)
Fix bug with coordinate frames when performing volumetric morphs via
mne.compute_source_morph()
andmne.SourceMorph.apply()
that could lead to ~5 mm bias (#8642 by Eric Larson)Fix bug with volumetric rendering alpha in
mne.VolSourceEstimate.plot_3d()
and related functions (#8663 by Eric Larson)Fix missing documentation of
mne.io.read_raw_nihon()
in Importing data from EEG devices (#8320 by Adam Li)Fix bug with
mne.add_reference_channels()
whenmne.io.Raw.reorder_channels()
or related methods are used afterward (#8303, ##8484 by Eric Larson)Fix bug where the
verbose
arguments tomne.Evoked.apply_baseline()
andmne.Epochs.apply_baseline()
were not keyword-only (#8349 by Eric Larson)ICA.max_pca_components
will not be altered by callingfit
anymore. Instead, the new attributeICA.max_pca_components_
will be set (#8321 by Richard Höchenberger)Fix bug that
plot_ica_overlay
would sometimes not create red traces (#8341 by Richard Höchenberger)Fix bug with
ICA
wheren_components=None, n_pca_components=None
could lead to unstable unmixing matrix inversion by makingn_components=None
also use the lesser ofn_components=0.999999
andn_components=n_pca_components
(#8351 by Eric Larson)The
ica.n_pca_components
property is no longer be updated duringmne.preprocessing.ICA.fit()
, insteadica.n_components_
will be added to the instance (#8351 by Eric Larson)Pass
rank
everyhwere in forward preparation for source imaging. This bug affected sparse solvers when using maxfilter data (#8368 by Alex Gramfort)Fix bug in
mne.viz.plot_alignment()
where ECoG and sEEG channels were not plotted and fNIRS channels were always plotted in the head coordinate frame (#8393 by Eric Larson)Fix bug in
mne.set_bipolar_reference()
wherech_info
could contain invalid channel information keys (#8416 by Eric Larson)When reading BrainVision raw data, the channel units and types were sometimes not inferred correctly (#8434 by Richard Höchenberger)
Attempting to remove baseline correction from preloaded
Epochs
will now raise an exception (#8435 by Richard Höchenberger)mne.Report.parse_folder()
will now correctly handle split FIFF files (#8486, #8491 by Richard Höchenberger)Fix bug where BrainVision channel names, event types, and event descriptions containing commas were incorrectly parsed (#8492 by Stefan Appelhoff)
Fix bug in
mne.preprocessing.compute_fine_calibration()
where the magnetometer calibration coefficients were computed incorrectly (#8522 by Eric Larson)Fix bug in
mne.io.read_raw_eeglab()
where empty event durations led to an error (#8384 by Mikołaj Magnuski)Fix inset sensor plots to always use equal aspect (#8545 by Daniel McCloy)
Fix bug in
mne.viz.plot_compare_evokeds
where evokeds with identicalcomment
attributes would not plot properly if passed as a list (#8590 by Daniel McCloy)Fix bug in
mne.time_frequency.psd_welch
and related functions where the window default errantly changed from'hamming'
to('tukey', 0.25)
(#8862 by Eric Larson)Fix bug in
mne.io.read_raw_kit()
where scale factors for EEG channels could be set to zero (#8542 by Eric Larson)Fix reading GDF files with excluded channels in
mne.io.read_raw_gdf()
(#8520 by Clemens Brunner)Fix automatic selection of extrapolation mask type from channel type when plotting field maps (#8589 by Daniel McCloy)
Fix bug in
mne.viz.set_3d_title()
where 3D plot could have multiple titles that overlap (#8564 by Guillaume Favelier)Fix bug in
mne.viz.set_3d_view()
where plotter is not updated properly causing camera issues in the doc (#8564 by Guillaume Favelier)mne.preprocessing.find_ecg_events()
didn’t take thetstart
parameter value into account when calculating the average heart rate (#8605 by Richard Höchenberger)
API changes#
Minimum required versions were increased for core dependencies NumPy (1.15.4), SciPy (1.1.0), and Matplotlib (3.0) and for the optional dependencies scikit-learn (0.20.2) and pandas (0.23.4) (#8374 by Eric Larson)
The parameter
on_split_missing
has been added tomne.io.read_raw_fif()
and its default will change from'warn'
to'raise'
in 0.23, by (#8357 Eric Larson)The
max_pca_components
argument ofICA
has been deprecated, usen_components
during initialization andn_pca_components
inapply()
instead (#8351 by Eric Larson)The
n_pca_components
argument ofICA
has been deprecated, usen_pca_components
inapply()
(#8356 by Eric Larson)The
trans
argument ofmne.extract_label_time_course()
is deprecated and will be removed in 0.23 as it is no longer necessary (#8389 by Eric Larson)Parameter
event_colors
inmne.viz.plot_epochs
andmne.Epochs.plot
is deprecated, replaced byevent_color
which is consistent withmne.viz.plot_raw
and provides greater flexibility (#8381 by Daniel McCloy)
Authors#
People who contributed to this release in alphabetical order (people with a + are first time contributors):
Adam Li
Alexandre Gramfort
Aniket Pradhan +
Austin Hurst +
Christian Brodbeck
Clemens Brunner
Daniel McCloy
Denis A. Engemann
Eduard Ort +
Eric Larson
Evan Hathaway +
Evgenii Kalenkovich
Fede Raimondo
Guillaume Favelier
Hongjiang Ye +
Jean-Remi King
Jeff Stout +
Jonathan Kuziek +
Jussi Nurminen
Justus Schwabedal
Keith Doelling
Kyle Mathewson
Mads Jensen
Mainak Jas
Marijn van Vliet
Mikolaj Magnuski
Olaf Hauk
Qianliang Li +
Richard Höchenberger
Robert Luke
Stefan Appelhoff
Thomas Hartmann
Tod Flak +
Victoria Peterson +
Version 0.21 (2020-09-21)#
Enhancements#
Modified
mne.Epochs.pick_types()
to remove dropped channel types fromreject
andflat
dictionaries by new contributor Rahul NadkarniAdd function
mne.preprocessing.regress_artifact()
to remove artifacts using linear regression by new contributor Kyle Mathewson and Eric LarsonAdd
sources
anddetectors
options for fNIRS use ofmne.viz.plot_alignment()
allowing plotting of optode locations in addition to channel midpointchannels
andpath
between fNIRS optodes by new contributor Kyle MathewsonBrainVision data format files are now parsed for EEG impedance values in
mne.io.read_raw_brainvision()
and provided as a.impedances
attribute ofraw
by new contributor Jan Sedivy and Stefan AppelhoffAdd function
mne.channels.combine_channels()
to combine channels from Raw, Epochs, or Evoked according to ROIs (combinations including mean, median, or standard deviation; can also use a callable) by new contributor Johann BenerradiImproved documentation building instructions and execution on Windows by new contributor Martin Schulz, kalenkovich, and Eric Larson
Speed up reading of annotations in EDF+ files by new contributor Jeroen Van Der Donckt
Add head to mri and mri to voxel space transform details to Source alignment and coordinate frames tutorial, by Alex Rockhill
Improve memory efficiency of
mne.concatenate_epochs()
by Eric LarsonAllow picking channels in raw instances (e.g.,
mne.io.Raw.pick_types()
) without preloading data, by Eric Larsonmne.preprocessing.ICA.plot_sources()
now plots annotation markers similar tomne.io.Raw.plot()
by Luke BloyAdd support for scalar multiplication and division of
mne.time_frequency.AverageTFR
instances by Luke BloyAdd support for signals in mV for
mne.io.read_raw_brainvision()
by Clemens Brunnermne.Epochs.plot_psd_topomap()
andmne.viz.plot_epochs_psd_topomap()
now allow joint colorbar limits across subplots, by Daniel McCloy.Add support for using loose-orientation surface priors with free-orientation volume priors in mixed source space inverses by Eric Larson
Add
mne.MixedVectorSourceEstimate
for vector source estimates for mixed source spaces, by Eric LarsonAdd mixed and volumetric source estimate plotting using volumetric ray-casting to
mne.MixedSourceEstimate.plot()
andmne.VolSourceEstimate.plot_3d()
by Eric LarsonAdd
mne.MixedSourceEstimate.surface()
andmne.MixedSourceEstimate.volume()
methods to allow surface and volume extraction by Eric LarsonAdd
mne.VectorSourceEstimate.project()
to project vector source estimates onto the direction of maximum source power by Eric LarsonAdd support to
mne.extract_label_time_course()
for vector-valued and volumetric source estimates by Eric LarsonAdd method
mne.VolSourceEstimate.in_label()
by Eric LarsonAdd support for mixed source spaces to
mne.compute_source_morph()
by Eric LarsonAdd support for volume and mixed source spaces to
mne.stats.summarize_clusters_stc()
by Eric LarsonAdd support for omitting the SDR step in volumetric morphing by passing
n_iter_sdr=()
tomne.compute_source_morph
by Eric LarsonAdd
single_volume
argument tomne.setup_volume_source_space()
to facilitate creating source spaces with many volumes (e.g., all subvolumes ofaseg.mgz
) by Eric LarsonAdd support for passing a string argument to
bg_img
inmne.viz.plot_volume_source_estimates
by Eric LarsonAdd support for providing the destination surface source space in the
src_to
argument ofmne.compute_source_morph()
by Eric LarsonAdd explained variance logging to
mne.inverse_sparse.mixed_norm()
,mne.inverse_sparse.gamma_map()
, andmne.beamformer.rap_music()
by Eric LarsonAdd
tol_kind
option tomne.compute_rank()
by Eric LarsonAllow resampling raw data with
mne.io.Raw.resample()
without preloading data, by Eric LarsonAllow using
pick_ori='vector'
with a fixed-orientation inverse to facilitate visualization withmne.viz.plot_vector_source_estimates()
by Eric Larsonmne.viz.plot_dipole_locations()
andmne.Dipole.plot_locations()
gained atitle
argument to specify a custom figure title inorthoview
mode by Richard HöchenbergerAdd orientations projected onto the MRI slices in
mne.viz.plot_dipole_locations()
in'orthoview'
mode by Eric LarsonAdd temporal derivative distribution repair (TDDR)
mne.preprocessing.nirs.temporal_derivative_distribution_repair()
with shortened aliasmne.preprocessing.nirs.tddr
by Robert LukeAdd
mne.read_freesurfer_lut()
to make it easier to work with volume atlases by Eric LarsonAdd support for overlap-add processing when
method='spectrum_fit'
inmne.io.Raw.notch_filter()
by Eric LarsonAdd functionality to interpolate bad NIRS channels by Robert Luke
Add ability to interpolate EEG channels using minimum-norm projection in
mne.io.Raw.interpolate_bads()
and related functions withmethod=dict(eeg='MNE')
by Eric LarsonAdded ability of
mne.io.read_raw_nirx()
to open data by passing path to header file Robert LukeAdd
mne.channels.DigMontage.rename_channels()
to allow renaming montage channels by Eric LarsonDocument
mne.channels.compute_native_head_t()
to allow computing the native-to-head transformation that will be applied when doingraw.set_montage
and related functions by Eric LarsonAdd support to in
mne.io.Raw.plot()
for passingclipping
as a float to clip to a proportion of the dedicated channel range by Eric LarsonAdd function
mne.preprocessing.annotate_muscle_zscore()
to annotate periods with muscle artifacts. by Adonay NunesAdd
mne.stats.ttest_ind_no_p()
to mirrormne.stats.ttest_1samp_no_p()
with hat correction by Eric LarsonAdd
mne.stats.combine_adjacency
to combine adjacency matrices for independent data dimensions to enable things like spatio-temporal-time-frequency clustering inmne.stats.permutation_cluster_test
by Eric LarsonSpeed up raw data reading without preload in
mne.io.read_raw_nirx()
by Eric LarsonSpeed up
mne.Epochs.copy()
andmne.Epochs.__getitem__()
by avoiding copying immutable attributes by Eric LarsonSpeed up and reduce memory usage of
mne.SourceEstimate.plot()
and related functions/methods whenshow_traces=True
by Eric LarsonReduce memory usage of
plot_psd
,mne.time_frequency.psd_welch
, andpsd_array_welch
for long segments of data by Eric LarsonSupport for saving movies of source time courses (STCs) with
brain.save_movie
method and from graphical user interface by Guillaume FavelierAdd
mri
andshow_orientation
arguments tomne.viz.plot_bem()
by Eric LarsonAdd
mne.viz.centers_to_edges()
to help when usingmatplotlib.axes.Axes.pcolormesh()
with flat shading by Eric LarsonAdd
on_missing='raise'
tomne.io.Raw.set_montage()
and related functions to allow ignoring of missing electrode coordinates by Adam LiAdd
on_missing='raise'
tomne.viz.plot_events()
to allow ignoring missing events when passingevent_id
by Eric LarsonAdd REST EEG infinity reference scheme to
mne.io.Raw.set_eeg_reference()
and related functions by Eric LarsonAdd better sanity checking of
max_pca_components
andn_components
to provide more informative error messages formne.preprocessing.ICA
by Eric LarsonAdd
plot
option tomne.viz.plot_filter()
allowing selection of which filter properties are plotted and added option for user to supplyaxes
by Robert LukeAdd estimation method legend to
mne.viz.plot_snr_estimate()
by Eric LarsonAdd support to
mne.SourceSpaces.export_volume
formri_resolution='sparse'
to color only the nearest-neighbor voxels instead of entire regions by Eric LarsonAdd
axes
argument tomne.viz.plot_evoked_white()
,mne.Evoked.plot_white()
, andmne.viz.plot_snr_estimate()
by Eric LarsonChange default to
surfaces='auto'
fromsurfaces='head'
to allowmne.viz.plot_alignment()
to work when just passing amne.Info
asplot_alignment(info)
by Eric LarsonAdd ECoG misc EDF dataset to the Working with ECoG data tutorial to show snapshots of time-frequency activity by Adam Li
Add
mne.viz.set_3d_options()
andMNE_3D_OPTION_ANTIALIAS
environment variable to control full-scene antialiasing (FXAA) in 3D functions like mne coreg,mne.viz.plot_alignment()
, andmne.viz.plot_source_estimates()
; this can be useful on systems where FXAA does not work well, such as some with MESA software rendering, by Eric LarsonAdd config variable
MNE_TQDM
to support explicitly setting the TQDM backend to use, for exampletqdm
ortqdm.auto
(default) by Eric LarsonAdd better support for reading corrupted FIF files in
mne.io.read_raw_fif()
by Eric LarsonBIDS conformity: When saving FIF files to disk and the files are split into parts, the
split_naming='bids'
parameter now uses a “_split-%d” naming instead of the previous “_part-%d”, by Stefan AppelhoffAdd support for whitening and multiple channel types in
mne.beamformer.make_dics()
by Marijn van VlietAdd better error message when trying to save incompatible
Evoked
objects to the same file by Eric LarsonAdd support for loading complex numbers from mat files by Thomas Hartmann
Add generic reader function
mne.io.read_raw()
that loads files based on their extensions (it wraps the underlying specificread_raw_xxx
functions) by Clemens BrunnerAdd automatic T3 magnetometer detection and application of
mne.io.Raw.fix_mag_coil_types()
tomne.preprocessing.maxwell_filter()
by Eric LarsonAdd extended SSS (eSSS) support to
mne.preprocessing.maxwell_filter()
by Eric LarsonAdd
'auto'
option tomne.preprocessing.ICA.find_bads_ecg()
to automatically determine the threshold for CTPS method by Yu-Han LuoAdd a
notebook
3d backend for visualization in jupyter notebook withmne.viz.set_3d_backend()
by Guillaume FavelierAdd support for reading and writing surfaces in Wavefront .obj format to the
mne.read_surface()
andmne.write_surface()
by Marijn van VlietAdd tutorial on how to manually fix BEM meshes in Blender by Marijn van Vliet and Ezequiel Mikulan
mne.write_evokeds()
will now acceptmne.Evoked
objects with differing channel orders ininfo['bads']
, which would previously raise an exception by Richard HöchenbergerAdd support for reading channel names (e.g., for Ricoh data) to
mne.io.read_raw_kit()
by Alex Gramfort and Eric LarsonThe
reject_tmin
andreject_tmax
parameters ofmne.Epochs
are now taken into account when using thereject_by_annotation
parameter by Stefan Appelhoffmne.preprocessing.find_bad_channels_maxwell()
now automatically applies a low-pass filter before running bad channel detection. This can be disabled, restoring previous behavior by Richard HöchenbergerAdd
proj='reconstruct'
tomne.Evoked.plot()
and related functions to apply projectors and then undo the signal bias using field mapping by Eric LarsonAdd writing BEM surfaces and solutions in H5 format in
mne.write_bem_surfaces()
andmne.write_bem_solution()
by Eric LarsonWhen picking a subset of channels, or when dropping channels from
Raw
,Epochs
, orEvoked
, projectors that can only be applied to the removed channels will now be dropped automatically by Richard Höchenbergermne.Report
now can add topomaps of SSP projectors to the generated report. This behavior can be toggled via the newprojs
argument by Richard HöchenbergerWhen passing a list of
Evoked
objects toplot_compare_evokeds
, each evoked’s.comment
attribute will be used to label the trace. If.comment
is empty, a 1-based index is assigned as the label by Richard HöchenbergerSpeed up
mne.stats.summarize_clusters_stc()
using Numba by Yu-Han LuoAdd
reject_by_annotation=True
tomne.make_fixed_length_epochs()
andmne.preprocessing.ICA.plot_properties()
to reject bad data segments based on annotation by Yu-Han Luoparse_folder
now accepts a path-like folder name (it used to work with strings only) by Alex GramfortAdd
component_order
parameter tomne.decoding.CSP
which allows switching betweenmutual_info
(default) andalternate
(a simpler and frequently used option) by Martin Billinger and Clemens BrunnerAdd memory size information to the
repr
ofmne.SourceSpaces
andmne.SourceEstimate
and related classes by Eric LarsonAdd reader for Persyst (.lay + .dat format) data in
mne.io.read_raw_persyst()
by Adam LiUse PyVista as the default backend for 3D visualization instead of Mayavi by Guillaume Favelier
Add reader for SNIRF NIRS data in
mne.io.read_raw_snirf()
by Robert LukeEvoked
has gainedtmin
andtmax
attributes for more consistency withEpochs
by Richard Höchenberger
Bugs#
Fix bug for writing and reading complex evoked data modifying
mne.write_evokeds()
andmne.read_evokeds()
by new contributor Lau Møller AndersenFix bug by adding error message when trying to save complex stc data in a non.-h5 format
mne.VolSourceEstimate.save()
by new contributor Lau Møller AndersenFix bug with logging in
mne.io.Raw.set_eeg_reference()
and related functions by new contributor Simeon WongFix bug with
mne.io.read_raw_gdf()
where birthdays were not parsed properly, leading to an error by new contributor Svea Marie MeyerFix bug with
mne.io.read_raw_edf()
where recording ID was not read properly for non-ASCII characters by new contributor Lx37Fix bug in
mne.set_eeg_reference()
and related functions to setinfo['custom_ref_applied']
toTrue
for ‘ecog’ and ‘seeg’ channels in addition to ‘eeg’ by new contributor Liberty HamiltonFix bug with
mne.chpi.compute_chpi_amplitudes()
andmne.chpi.filter_chpi()
to optimize time window length by new contributor Steven BiererFix bug with
mne.preprocessing.ICA.find_bads_eog()
when more than one EOG components are present by Christian O’ReillyFix bug with non-preloaded data when using
raw.apply_proj().load_data().get_data()
where projectors were not applied by Eric LarsonFix bug to permit
stc.project('nn', src)
to be applied afterstc
was restricted to anmne.Label
by Luke BloyFix bug with
mne.io.Raw.set_meas_date()
to support settingmeas_date
toNone
, by Luke BloyFix bug with
mne.setup_volume_source_space()
whenvolume_label
was supplied where voxels slightly (in a worst case, about 37% timespos
in distance) outside the voxel-grid-based bounds of regions were errantly included, by Eric LarsonFix bug with mne coreg where reverse scalings were applied to
src[0]['src_mri_t']
for volume source spaces, so morphing and plotting did not work correctly by Eric LarsonFix bug with
mne.io.read_raw_ctf()
when reference magnetometers have the compensation grade marked by Eric LarsonFix bug with
mne.SourceSpaces.export_volume
withuse_lut=False
where no values were written by Eric LarsonFix bug with
mne.preprocessing.annotate_movement()
where bad data segments, specified inraw.annotations
, would be handled incorrectly by Luke BloyFix bug with
mne.compute_source_morph()
when more than one volume source space was present (e.g., when using labels) where only the first label would be interpolated whenmri_resolution=True
by Eric LarsonFix bug with
mne.compute_source_morph()
when morphing to a volume source space whensrc_to
is used and the destination subject is notfsaverage
by Eric LarsonFix bug with
mne.compute_source_morph()
where outermost voxels in the destination source space could be errantly omitted by Eric LarsonFix bug with
mne.compute_source_morph()
where complex data was cast to real when doing a volumetric morph by Eric LarsonFix bug with
mne.minimum_norm.compute_source_psd_epochs()
andmne.minimum_norm.source_band_induced_power()
raised errors whenmethod='eLORETA'
by Eric LarsonFix bug with
mne.minimum_norm.apply_inverse()
where the explained variance did not work for complex data by Eric LarsonFix bug with
mne.preprocessing.compute_current_source_density()
where values were not properly computed; maps should now be more focal, by Alex Rockhill and Eric LarsonFix bug with
mne.combine_evoked()
where equal-weighted averages were wrongly computed as equal-weighted sums, by Daniel McCloyFix bug with
mne.channels.DigMontage.plot()
when reference channels with no defined position are present, by Eric LarsonFix bug with
mne.channels.read_custom_montage()
where"headshape"
points in SFP format were not read properly, by Eric LarsonFix bug with setting HTML classes when using
mne.Report.add_bem_to_section
by Eric LarsonFix bug with convex-hull based MEG helmet creation where the face area could be covered up, by Eric Larson
Fix bug with
mne.inverse_sparse.mixed_norm()
andmne.inverse_sparse.gamma_map()
withreturn_as_dipoles=True
andmne.beamformer.rap_music()
wheredip.gof
was the same for all dipoles. GOF values / explained variance across all dipoles now gets split among the dipoles using SVD of the lead fields. To get the total GOF,sum(dip.gof for dip in dipoles)
can be used, by Eric LarsonFix bug with
mne.inverse_sparse.gamma_map()
where output data was not assigned properly when using a free-orientation forward andxyz_same_gamma=False
by Eric LarsonFix to enable interactive plotting with no colorbar with
mne.viz.plot_evoked_topomap()
by Daniel McCloyFix plotting with
mne.viz.plot_evoked_topomap()
to pre-existing axes by Daniel McCloyFix bug with
mne.viz.plot_vector_source_estimates()
using the PyVista backend withtime_viewer=True
when updating the arrow colormaps by Eric LarsonFix bug with
mne.viz.plot_vector_source_estimates()
whereclim='auto'
andclim=dict(..., kind='percent')
did not take into account the magnitude of the activation, by Eric LarsonThe default plotting mode for
mne.io.Raw.plot()
and mne browse_raw has been changed toclipping=3.
to facilitate data analysis with large deflections, by Eric LarsonPSD plots will now show non-data channels (e.g.,
misc
) if those channels are explicitly passed topicks
, by Daniel McCloy.Fix bug with
mne.time_frequency.read_tfrs()
whereinfo['meas_date']
was not parsed correctly, by Eric LarsonFix bug with
mne.time_frequency.tfr_array_stockwell()
where inputs were not properly validated by Eric LarsonFix handling of NaN when using TFCE in clustering functions such as
mne.stats.spatio_temporal_cluster_1samp_test()
by Eric LarsonFix handling of signs when using TFCE by Eric Larson
The
mne.MixedSourceEstimate
class has been clarified to contain two cortical surface source spaces, plus at least one other source space. Creating source estimates in other orderings is not supported, by Eric LarsonFix bug where
VolSourceEstimate.vertices
was an instance ofndarray
instead oflist
of onendarray
, by Eric LarsonFix default to be
foreground=None
inmne.viz.plot_source_estimates()
to use white or black text based on the background color by Eric LarsonFix bug with writing EGI and CTF
mne.Info
to H5 format, e.g., withmne.time_frequency.AverageTFR.save
by Eric LarsonFix bug with topomap outlines in
mne.time_frequency.AverageTFR.plot_joint()
andmne.time_frequency.AverageTFR.plot_topo()
by Eric LarsonFix bug with
mne.io.Raw.plot()
where toggling all projectors did not actually take effect by Eric LarsonFix bug with
mne.write_proj()
where the number of columns was incorrectly written by Eric LarsonFix bug with
mne.read_epochs()
when loading data in complex format withpreload=False
by Eric LarsonFix bug with
mne.Epochs.save()
where the file splitting calculations did not account for the sizes of non-data writes by Eric LarsonFix bug with
mne.Epochs
when metadata was not subselected properly whenevent_repeated='drop'
by Eric LarsonFix bug with
mne.Epochs
whereepochs.drop_log
was a list of list of str rather than an immutable tuple of tuple of str (not meant to be changed by the user) by Eric LarsonFix bug with
mne.Report
where the BEM section could not be toggled by Eric LarsonFix bug when using
mne.Epochs.crop()
to exclude the baseline period would breakmne.Epochs.save()
/mne.read_epochs()
round-trip by Eric LarsonFix bug with
mne.Epochs.subtract_evoked
where using decimated epochs would lead to an error by Eric LarsonFix bug with
mne.viz.plot_bem()
andmne.Report
when plotting BEM contours when MRIs are not in standard FreeSurfer orientation by Eric LarsonFix bug with
mne.minimum_norm.make_inverse_operator()
where it would warn even when an explicitrank
was used by Eric LarsonFix bugs with
mne.beamformer.make_lcmv()
andmne.beamformer.make_dics()
where:Noise normalization factors
weight_norm='unit-noise-gain'
andweight_norm='nai'
were computed incorrectlypick_ori='max-power'
computed the max-power orientation incorrectlypick_ori='normal'
did not compute power or noise normalization factors correctlymne.beamformer.apply_lcmv_cov()
did not apply whitening and projections properly
Fix mne setup_forward_model to have it actually compute the BEM solution in addition to creating the BEM model by Eric Larson
Fix bug with
mne.io.read_raw_edf()
where null bytes were not properly handled, causing an error when opening a file by Eric LarsonFix bug with
mne.Report()
where unicode characters were not rendered properly (encoding for HTML was not set) by Eric LarsonFix bug with
mne.preprocessing.nirs.scalp_coupling_index()
where filter transition was incorrectly assigned by Robert LukeFix bug with
mne.make_forward_dipole()
wheremne.write_forward_solution()
could not be used by Eric LarsonFix bug with
mne.io.Raw.plot()
whenscalings='auto'
where bad data would prevent channel plotting by Eric LarsonDefault
border
andextrapolate
arguments formne.Evoked.plot_topomap()
and related functions were changed from0.
to'mean'
and'box'
to'auto'
, respectively, to help more accurately reflect sensor geometries and boundary conditions.extrapolate='auto'
usesextrapolate='local'
for MEG data andextrapolate='head'
otherwise, by Eric LarsonFix bug that prevents
n_jobs
from being a NumPy integer type, by Daniel McCloy.Fix bug with
mne.epochs.average_movements()
where epoch weights were computed using all basis vectors instead of the internal basis only by Eric LarsonFix bug with
mne.get_volume_labels_from_aseg()
where the returned labels were alphabetical instead of reflecting their volumetric ID-based order by Eric LarsonFix bug with
mne.preprocessing.find_bad_channels_maxwell()
where good data of exactlystep
duration would lead to an error by Eric LarsonFix bug with
mne.preprocessing.find_bad_channels_maxwell()
where indices were not handled properly when MEG channels were not first in the raw instance, and logging messages incorrectly reported the interval used by Eric LarsonMake
mne.set_config()
accept path-like input values by Richard HöchenbergerFix bug with
mne.write_labels_to_annot()
andmne.datasets.fetch_hcp_mmp_parcellation()
where label name strings were not properly terminated, leading to problems loading in FreeSurfer by Eric LarsonFix bug with
mne.beamformer.make_dics()
where complex conjugates were not applied properly by Britta Westner and Eric LarsonFix bug with
mne.bem.make_watershed_bem()
where the RAS coordinates of watershed bem surfaces were not updated correctly from the volume file by Yu-Han LuoFix bug with
mne.io.Raw.get_channel_types()
and related methods where the ordering ofpicks
was not preserved, by Eric LarsonFix bug with
mne.io.Raw.plot_psd()
withaverage=False
and multiple channel types where channel locations were not shown properly by Eric LarsonFix bug with
mne.viz.plot_sparse_source_estimates()
when using'sphere'
mode by Eric Larson and Guillaume FavelierFix bug in FieldTrip reader functions when channels are missing in the
info
object by Thomas HartmannThrow proper error when trying to import FieldTrip Epochs data with non-uniform time for trials by Thomas Hartmann
Throw proper error when trying to import FieldTrip data saved by an old, incompatible version by Thomas Hartmann
Fix bug in
mne.read_epochs_fieldtrip()
when importing data without atrialinfo
field by Thomas HartmannFix bug in
mne.preprocessing.ICA.plot_properties()
where time series plot doesn’t start at the proper tmin by Teon BrooksFix bug with
mne.preprocessing.ICA.plot_properties()
where amne.io.Raw
object with annotations would lead to an error by Yu-Han LuoFix bug with
mne.events_from_annotations(raw.annotations)
whenorig_time
of annotations is None andraw.first_time > 0
, by Alex Gramfort
API changes#
Python 3.5 is no longer supported, Python 3.6+ is required, by Eric Larson
adjacency
has replacedconnectivity
in the names of:Arguments to clustering functions, such as
mne.stats.permutation_cluster_test
, andFunction names for defining adjacency, such as
mne.spatio_temporal_src_adjacency
replacingmne.spatio_temporal_src_connectivity
.
The complete list of changed function names is:
mne.channels.find_ch_connectivity
→find_ch_adjacency
mne.channels.read_ch_connectivity
→read_ch_adjacency
mne.spatial_dist_connectivity
→spatial_dist_adjacency
mne.spatial_inter_hemi_connectivity
→spatial_inter_hemi_adjacency
mne.spatial_src_connectivity
→spatial_src_adjacency
mne.spatial_tris_connectivity
→spatial_tris_adjacency
mne.spatio_temporal_dist_connectivity
→spatio_temporal_dist_adjacency
mne.spatio_temporal_src_connectivity
→spatio_temporal_src_adjacency
mne.spatio_temporal_tris_connectivity
→spatio_temporal_tris_adjacency
“connectivity” is now reserved for discussions of functional and effective connectivity of the brain, and “adjacency” for source or sensor neighbor definitions for cluster-based analyses, by Eric Larson.
The default for the
standardize_names
argument ofmne.io.read_raw_kit()
will change fromTrue
toFalse
in 0.22, by Eric LarsonThe
normalize_fwd
argument ofmne.beamformer.make_dics()
has been deprecated in favor ofdepth
, by Eric LarsonThe
overwrite
parameter ofmne.write_bem_surfaces()
andmne.write_bem_solution()
defaults toTrue
in 0.21 but will change toFalse
in 0.22, by Eric LarsonAdd
n_cols
parameter tomne.preprocessing.ICA.plot_scores()
to allow plotting scores in multiple columns, by Luke BloyIn
mne.stats.permutation_cluster_test()
andmne.stats.permutation_cluster_1samp_test()
the default parameter valueout_type='mask'
has changed toNone
, which in 0.21 means'mask'
but will change to mean'indices'
in the next version, by Daniel McCloyThe default window size set by
filter_length
whenmethod='spectrum_fit'
inmne.io.Raw.notch_filter()
will change fromNone
(use whole file) to'10s'
in 0.22, by Eric Larsonvmin
andvmax
parameters are deprecated inmne.Epochs.plot_psd_topomap()
andmne.viz.plot_epochs_psd_topomap()
; use newvlim
parameter instead, by Daniel McCloy.The method
stc_mixed.plot_surface
for amne.MixedSourceEstimate
has been deprecated in favor ofstc.surface().plot(...)
by Eric LarsonThe method
stc.normal
formne.VectorSourceEstimate
has been deprecated in favor ofstc.project('nn', src)
by Eric LarsonAdd
use_dev_head_trans
parameter tomne.preprocessing.annotate_movement()
to allow choosing the device to head transform is used to define the fixed cHPI coordinates by Luke BloyThe function
mne.channels.read_dig_captrack
will be deprecated in version 0.22 in favor ofmne.channels.read_dig_captrak()
to correct the spelling error: “captraCK” -> “captraK”, by Stefan AppelhoffThe
threshold
argument inmne.preprocessing.ICA.find_bads_ecg()
defaults toNone
in version 0.21 but will change to'auto'
in 0.22 by Yu-Han LuoThe function
mne.preprocessing.mark_flat
has been deprecated in favor ofmne.preprocessing.annotate_flat
by Eric LarsonThe default argument
meg=True
inmne.pick_types()
will change tomeg=False
in version 0.22 by Clemens BrunnerAdded
mne.io.Raw.get_montage()
, which obtains the montage that an instance has, by Adam Li
Authors#
People who contributed to this release in alphabetical order (people with a + are first time contributors):
Adam Li
Adonay Nunes
Alejandro Weinstein
Alex Rockhill
Alexandre Gramfort
Anton Nikolas Waniek
Britta Westner
Christian O’Reilly
Clemens Brunner
Daniel McCloy
Eric Larson
Evgenii Kalenkovich
Fede Raimondo
Guillaume Favelier
Hubert Banville
Jeroen Van Der Donckt +
Johann Benerradi +
Kyle Mathewson +
Lau Møller Andersen +
Liberty Hamilton +
Luke Bloy
Lx37 +
Mainak Jas
Marijn van Vliet
Martin Billinger
Martin Schulz +
Martin van Harmelen
Mikolaj Magnuski
Olaf Hauk
Rahul Nadkarni +
Richard Höchenberger
Robert Luke
Sara Sommariva
Simeon Wong +
Stefan Appelhoff
Steven Bierer +
Svea Marie Meyer +
Teon Brooks
Thomas Hartmann
Yu-Han Luo
chapochn
mshader
Version 0.20 (2020-03-27)#
Changelog#
Improved
mne.viz.plot_epochs()
to label epoch counts starting from 0, by Sophie HerbstAdd
minimum_norm.apply_inverse_cov()
to compute static power by applying inverse solutions to a data covariance matrix by Denis Engemann, Luke Bloy, and Eric LarsonAdd
mne.minimum_norm.resolution_metrics()
to compute various resolution metrics for inverse solutions, by Olaf HaukAdd current source density
mne.preprocessing.compute_current_source_density()
to compute the surface Laplacian in order to reduce volume conduction in data by Alex RockhillAdd
mne.chpi.extract_chpi_locs_ctf()
to extract cHPI coil locations from CTF data by Luke BloyAdd
mne.chpi.compute_chpi_amplitudes()
,mne.chpi.compute_chpi_locs()
, andmne.chpi.compute_head_pos()
to compute head positions from cHPI coil locations by Eric Larson and Luke BloyAdd
allow_line_only
option tomne.chpi.filter_chpi()
to allow filtering line frequencies only in files that do not have cHPI information by Eric LarsonAdd
mne.Epochs.as_type()
to allow remapping data in MEG channels to virtual magnetometer or gradiometer channels by Sophie Herbst and Alex GramfortAdd
copy
parameter tomne.Epochs.iter_evoked()
by Alex GramfortAdd command mne setup_source_space to quickly set up bilateral hemisphere surface-based source space with subsampling by Victor Ferat.
Add command mne sys_info to print system information by Eric Larson
Add function
mne.make_fixed_length_epochs()
to segment raw into fixed length epochs by Mohammad DaneshzandAdd support for computing patch information only in surface source space creation with
add_dist='patch'
inmne.setup_source_space()
anddist_limit=0
inmne.add_source_space_distances()
by Eric LarsonAdd
mne.Label.restrict
to restrict a label to vertices within a source space by Eric LarsonAdd support for passing a destination source space
src_to
inmne.compute_source_morph()
to ensure morphing for multiple subjects results in consistent STCs, by Eric LarsonAdd support for
smooth='nearest'
for surfaces inmne.compute_source_morph()
by Eric LarsonAdd support for plotting fNIRS channels in
mne.viz.plot_alignment()
,mne.viz.plot_evoked_topo()
andmne.Evoked.animate_topomap()
by Eric Larson and Robert LukeAdd command line tool mne anonymize for anonymizing raw fiff files by Luke Bloy
Add
mne.preprocessing.find_bad_channels_maxwell()
for automatic bad channel detection via Maxwell filtering by Eric LarsonAdd support to
mne.io.anonymize_info()
to allow time offset to be applied to dates by Luke BloyAdd support for computing resolution matrix to get point spread functions (PSF) and cross-talk functions (CTF) in
mne.minimum_norm.make_inverse_resolution_matrix()
,mne.beamformer.make_lcmv_resolution_matrix()
,mne.minimum_norm.get_cross_talk()
,mne.minimum_norm.get_point_spread()
by Olaf HaukAdd
mne.preprocessing.read_ica_eeglab()
to read EEGLAB ICA decompositions by Christian O’ReillyAdd keyboard functionality to interactive colorbar plotting TFRs by Stefan Repplinger
Add the ability to
return_event_id
inmne.read_events()
for use with MNE-C produced-annot.fif
files, by Eric LarsonAdd option to
mne.connectivity.spectral_connectivity
to compute corrected imaginary PLV by Adonay NunesAdd
mne.SourceEstimate.estimate_snr()
to estimate source-space SNR, by Kaisu Lankinen and Padma SundaramAdd option to specify the coordinate frame in
mne.channels.read_custom_montage()
by Eric LarsonAdd option to use
match_case=False
tomne.io.Raw.set_montage()
and related functions by Eric LarsonAdd reader for NIRx data in
mne.io.read_raw_nirx()
by Robert LukeAdd function to convert NIRS data to optical density
mne.preprocessing.nirs.optical_density()
by Robert LukeAdd function to convert NIRS data to haemoglobin concentration
mne.preprocessing.nirs.beer_lambert_law()
by Robert LukeAdd
fig
argument tomne.viz.plot_evoked_field()
by Eric LarsonAdd functions to calculate spatial information of NIRS channels
mne.preprocessing.nirs.source_detector_distances()
andmne.preprocessing.nirs.short_channels()
by Robert LukeAdd reader for
*.dat
electrode position filesmne.channels.read_dig_dat()
by Christian BrodbeckImproved
mne.viz.plot_events()
to always show event counts by Eric LarsonImproved LIMO Dataset usage and example for usage of
mne.stats.linear_regression()
by Jose AlanisAdd support for
reduce_rank=True
for vector beamformers by Eric LarsonAdd
method='sphere'
support for using Freesurfer spherical inflation inmne.decimate_surface()
to facilitate mesh downsampling for use withmne.make_bem_model()
by Eric LarsonSpeed up
mne.beamformer.make_lcmv()
andmne.beamformer.make_dics()
calculations by vectorizing linear algebra calls by Dmitrii Altukhov and Eric LarsonSpeed up
mne.make_forward_solution()
using Numba, by Eric LarsonSpeed up
mne.io.read_raw_fif()
data reading when the recording is long and there are many data tags repeatedly accessed, by Eric LarsonFor KIT systems without built-in layout,
mne.channels.find_layout()
now falls back on an automatically generated layout, by Christian Brodbeckmne.Epochs.plot()
now takes aepochs_colors
parameter to color specific epoch segments by Mainak JasAdd command mne setup_forward_model to quickly create a BEM model for a subject by Victor Ferat.
Add command mne prepare_bem_model to quickly create a BEM solution using the linear collocation approach by Victor Ferat.
Add support for reading
.bdip
Xfit binary dipole fit files inmne.read_dipole()
by Eric LarsonAllow returning vector source estimates from sparse inverse solvers through
pick_ori='vector'
by Christian BrodbeckAdd NIRS support to
mne.viz.plot_topomap()
andmne.viz.plot_ica_components()
by Robert LukeAdd the ability to
mne.channels.equalize_channels()
to also re-order the channels and also operate on instances ofmne.Info
,mne.Forward
,mne.Covariance
andmne.time_frequency.CrossSpectralDensity
by Marijn van VlietAllow
mne.channels.read_custom_montage
to handle fiducial points for BESA spherical (.elp
) files by Richard HöchenbergerAdd
rank
argument tomne.fit_dipole()
by Eric LarsonAdd function to convert events to annotations
mne.annotations_from_events()
by Nicolas BarascudAdd function to calculate scalp coupling index for fNIRS data
mne.preprocessing.nirs.scalp_coupling_index()
by Robert LukeAdd
item
argument tomne.Epochs.get_data()
for faster access to NumPy data arrays compared tomne.Epochs.__getitem__()
for frequent access on largemne.Epochs
objects, by Eric LarsonMore accurate coordinate system for Easycap montages in
mne.channels.make_standard_montage()
by Christian BrodbeckAdd
border
argument tomne.viz.plot_topomap()
.border
controls the value of the edge points to which topomap values are extrapolated.border='mean'
sets these points value to the average of their neighbours. By Mikołaj MagnuskiAdd function
mne.viz.link_brains()
to link time properties of multiple brain objects interactively by Guillaume FavelierAdd function
mne.preprocessing.annotate_movement()
to annotate periods with head motion andmne.preprocessing.compute_average_dev_head_t()
to re-estimate the device to head transform with average head position during segments with acceptable head movement. by Adonay NunesMake selected channels more distinguishable in
mne.Epochs.plot_sensors()
when usingkind='select'
by Mikołaj MagnuskiAllow retrieval of the number of Infomax ICA iterations via the new
return_n_iter
keyword argument ofmne.preprocessing.infomax()
by Richard HöchenbergerExpose the number of ICA iterations during the fitting procedure via the
n_iter_
attribute ofmne.preprocessing.ICA
by Richard Höchenbergermne.grand_average()
now produces a warning when only a single dataset was passed, instead of raising an error by Richard HöchenbergerAdd
nrows
andncols
parameters tomne.viz.plot_evoked_topomap()
, which allows to create multiline topomap plots for Evoked. By Federico RaimondoImprove repr of
mne.Info
(empty items are not shown anymore) by Clemens Brunner
Bug#
Fix the
reduce_rank
parameter inmne.beamformer.make_lcmv()
andmne.beamformer.make_dics()
to reduce the rank of the leadfield first before then reducing the rank of the denominator of the beamformer formula for the inversion by Britta Westner and Eric Larson.Fix bug with
mne.beamformer.make_lcmv()
with data where rank was incorrectly checked by Eric Larson.Allow
mne.channels.read_dig_hpts()
to accept point categories (eg. EEG) to be specified in upper case by Alex Gramfort.Fix a bug in
mne.MixedSourceEstimate.plot_surface
that prevented plotting in latest PySurfer by Christian O’Reilly.Fix
method='eLORETA'
inmne.minimum_norm.apply_inverse()
, by Eric Larson:regularization, which was off by roughly a factor of a square root
units, which are now nAm instead of being arbitrary
explained variance and residuals, which were previously unavailable
force_equal
in the case of loose orientations, which previously defaulted toTrue
now defaults toFalse
. Reapplying orientation priors at each iteration of the algorithm sufficiently preserves a smooth transition between loose=0. to loose=1. without compromising localization accuracy in testing.
Fix bug in
method='eLORETA'
formne.minimum_norm.apply_inverse()
(and variants) to allow restricting source estimation to a label by Luke BloyFix bug in
mne.compute_covariance()
andmne.compute_raw_covariance()
where biased normalization (based on degrees of freedom) was used andcov.nfree
was not set properly by Eric LarsonFix
mne.VectorSourceEstimate.normal
to account for cortical patch statistics usinguse_cps=True
by Eric LarsonFix
pick_ori='normal'
formne.minimum_norm.apply_inverse()
when the inverse was computed withloose=1.
and the forward solution was not in surface orientation, by Eric LarsonFix missing xlabel for
mne.io.Raw.plot_psd()
and similar functions when passing a subset of axes from a figure by Alex GramfortFix wrong DataFrame index when
index=None
in methodsmne.io.Raw.to_data_frame()
,mne.Epochs.to_data_frame()
,mne.Evoked.to_data_frame()
, andmne.SourceEstimate.to_data_frame()
, by Daniel McCloy.Fix incorrect scaling of cluster temporal extent in
mne.stats.summarize_clusters_stc()
by Daniel McCloy.Fix
mne.time_frequency.read_tfrs()
to properly readInfo
transforms by Eric LarsonFix
mne.viz.plot_sensors()
to always plot in head coordinate frame by Daniel McCloy.Fix
mne.io.read_raw_cnt()
for version 1 of format in the presence of annotations by Alex Gramfort.Fix
mne.decoding.GeneralizingEstimator
and related classes to support multi-class sklearn scorers such as'roc_auc_ovo'
and'roc_auc_ovo_weighted'
by Eric LarsonFix
mne.io.read_raw_ctf()
to set measurement date from CTF ds files by Luke Bloy.Fix
mne.read_epochs_eeglab()
that ignored channel locations by Alex Gramfort.Fix
mne.io.read_raw_brainvision()
when channel names have spaces by Sebastian Major.Fix
mne.io.read_raw_brainvision()
when"Core"
is in the data header by Eric LarsonFix
mne.io.Raw.anonymize()
to correctly resetraw.annotations.orig_time
by Luke Bloy.Fix
mne.io.Raw.anonymize()
to correctly avoid shiftingraw.annotations.onset
relative toraw.first_samp
by Eric LarsonFix
mne.io.Raw.set_channel_types()
andmne.io.Raw.rename_channels()
and related methods to return the instance instead ofNone
by Eric Larsonmne.Epochs.iter_evoked()
now does not return a copy of info whencopy=False
(default parameter) by Alex GramfortThe attribute
mne.Annotations.orig_time
is now read-only, and is adatetime
object (or None) rather than float, by Eric LarsonFix bug where MRI distances were not properly initialized in mne coreg by Eric Larson
Fix
xscale='log'
inmne.io.Raw.plot_psd()
and related functions by Alex GramfortUnify behavior of
raw.annotations.append(...)
whenraw.info['meas_date']
is None to make onsets absolute relative tofirst_samp
as they are whenraw.info['meas_date']
is not None; i.e., you might need to doraw.annotations.append(old_time + raw.first_time)
, by Eric LarsonThe
info['meas_date']
entry is now adatetime
object (or None) rather than float, by Eric LarsonFix
mne.time_frequency.AverageTFR.save()
and related functions to deal withdatetime
objects properly by Eric LarsonFix date reading before Unix time zero (1970 Jan 1) on Windows by Alex Rockhill.
Fix bug running subprocesses (e.g., in
mne.bem.make_watershed_bem()
) in Jupyter notebooks, by Eric LarsonFix
mne.io.read_raw_artemis123()
to add HPI locations to digitization points, by Luke BloyFix
mne.Epochs.shift_time()
andmne.Evoked.shift_time()
to return the modifiedEpochs
orEvoked
instance (instead ofNone
) by Daniel McCloy.Fix
mne.read_annotations()
for text files with zero or one annotations, by Adonay NunesFix bug in
ICA
where requesting extended infomax viafit_params={'extended': True}
was overridden, by Daniel McCloy.Fix bug in
mne.Epochs.interpolate_bads()
where theorigin
was not used during MEG or EEG data interpolation by Eric Larson. Old behavior can be achieved usingorigin=(0., 0., 0.)
for EEG andorigin=(0., 0., 0.04)
for MEG, and the new default isorigin='auto'
, which uses a head-digitization-based fit.Fix bug in
mne.write_evokeds()
whereevoked.nave
was not saved properly when multipleEvoked
instances were written to a single file, by Eric LarsonFix bug in
mne.preprocessing.mark_flat
where acquisition skips were not handled properly, by Eric LarsonFix bug in
mne.viz.plot_bem()
where some sources were not plotted by Jean-Remi King and Eric LarsonFix TAL channel parsing (annotations) for EDF-D files by Clemens Brunner
Fix bug with
mne.viz.plot_dipole_locations()
when plotting in head coordinates by Eric LarsonFix handling in cases where no components are found in
mne.preprocessing.corrmap()
by Eric LarsonFix handling of repeated events in
mne.Epochs
by Fahimeh Mamashli and Alex GramfortFix many bugs with plotting sensors overlaid on a head outline. All plotting is now done in head coordinates and scaled by
head_radius
, which defaults to 0.095, by Eric LarsonFix
mne.io.anonymize_info()
to allow shifting dates of service and to match anticipated changes in mne-cpp by Luke BloyFix reading of cardinals in .htps files (identifier are int not strings) by Alex Gramfort
Fix IO of TFRs when event_id contain a / in one of the keys by Alex Gramfort
Fix plotting of TFRs with linear y-scale (misaligned frequency bins), by Stefan Repplinger and Eric Larson
Fix
info['sfreq']
when decimating inmne.time_frequency.tfr_multitaper()
andmne.time_frequency.tfr_morlet()
and make sure an error is raised when exceed Nyquist frequency by Adonay NunesFix bug in EDF(+) loading, filter values ignored by insufficient regex, by Demetres Kostas
Fix missing scaling of tolerance parameter in
mne.inverse_sparse.tf_mixed_norm()
andmne.inverse_sparse.mixed_norm()
, by Mathurin MassiasFix the automatic scaling of the glyphs in
mne.viz.plot_vector_source_estimates()
by using 10% of the brain width, by Guillaume FavelierFix handling of missing values (NaNs) in
mne.time_frequency.psd_welch
by Clemens BrunnerFix
mne.decoding.LinearModel
to support the refitted estimator ofGridSearchCV
insklearn
by Chun-Hui LiFix
mne.viz.plot_topomap()
when there are bad channels in the providedmne.Info
instance by Eric LarsonFix check for subject definition existing in source space in
mne.compute_source_morph()
and related functions by Eric LarsonFix creation of new figures in
mne.Epochs.plot_image()
andmne.viz.plot_epochs_image()
by Eric LarsonFix bug in
Xdawn
where filters where selected along the incorrect axis, by Henrich KolkhorstFix bug in
mne.bem.make_watershed_bem()
where some surfaces were saved incorrectly in the working directory by Yu-Han LuoFix support for multiple TAL (annotations) channels in BDF reader by Clemens Brunner
Fix missing
brainmask
file type inmne.bem.make_watershed_bem()
by changing its default value tows.mgz
by Fu-Te WongFix bug in
mne.channels.make_standard_montage()
which would returneasycap-M1
even when requestingeasycap-M10
by Christian BrodbeckFix the way planar gradiometers are combined in
mne.viz.plot_tfr_topomap()
andmne.Epochs.plot_psd_topomap()
by Geoff BrookshireImprove error message when trying to load FieldTrip data from a cell array by Thomas Hartmann
Fix bug in
mne.read_evoked_fieldtrip()
causing it to crash when channels were present in the provided Info object but were not present in the data by Thomas HartmannFix placement of extrapolation points in
mne.Evoked.plot_topomap()
and related functions when exactly three channels were used by Mikołaj Magnuski.Fix bug in reading annotations in
read_annotations()
, which would not accept “;” character by Adam LiFix bug in
mne.Report.parse_folder()
, which would not recognize*meg.fif
files by Dmitrii Altukhov.Include
fit_params
when saving anICA
instance to disk by Richard HöchenbergerUpdate old url link in
mne.datasets.eegbci.load_data()
toEEGMI_URL = 'https://physionet.org/files/eegmmidb/1.0.0/'
by Ramiro GattiEnsure corrected p-values calculated by
mne.stats.bonferroni_correction()
never exceed the value of 1.0 by Richard Höchenberger
API#
mne.io.pick.get_channel_types
is now calledmne.io.pick.get_channel_type_constants
to better reflect its return values, by Daniel McCloy.mne.Evoked.as_type()
now returns an instance ofmne.EvokedArray
by Sophie Herbst and Alex GramfortBumped minimum requirements to fall 2017 versions by Eric Larson:
NumPy 1.13.3
SciPy 1.0.0
matplotlib 2.1
scikit-learn 0.19.1 (optional requirement)
pandas 0.21 (optional requirement)
mne.Epochs.plot()
now accepts anevent_id
parameter (useful in tandem withevent_colors
for specifying event colors by name) by Daniel McCloy.Passing
ch_types=None
has been deprecated in favor of explicitly passingch_types='misc'
inmne.create_info()
by Eric LarsonNew time conversion options for methods
mne.io.Raw.to_data_frame()
,mne.Epochs.to_data_frame()
,mne.Evoked.to_data_frame()
, andmne.SourceEstimate.to_data_frame()
, by Daniel McCloy.mne.Epochs.shift_time()
andmne.Evoked.shift_time()
now allow shifting times by arbitrary amounts (previously only by integer multiples of the sampling period), by Daniel McCloy and Eric Larson.The
head_pos
argument ofmne.Evoked.plot_topomap()
and related functions has been deprecated in favor ofhead_radius
, by Eric Larson.The
layout
argument to topomap-related functions such asmne.Evoked.plot_topomap()
andmne.viz.plot_tfr_topomap()
has been deprecated in favor of channel-position based flattening based on theinfo
andsphere
argument, by Eric Larson.The APIs of
mne.io.Raw.plot_projs_topomap()
,mne.Epochs.plot_projs_topomap()
andmne.Evoked.plot_projs_topomap()
are now more similar tomne.viz.plot_projs_topomap()
by Daniel McCloy.The function
mne.setup_volume_source_space()
has asphere_units
argument that defaults to'mm'
in 0.20 but will change to'm'
in 0.21, set it to avoid a warning by Eric Larson.mne.viz.plot_projs_topomap()
and the related methodsmne.io.Raw.plot_projs_topomap()
,mne.Epochs.plot_projs_topomap()
andmne.Evoked.plot_projs_topomap()
now accept parametervlim
to control the colormap, with keyword'joint'
computing the colormap jointly across all projectors of a given channel type, by Daniel McCloy.New methods
mne.io.Raw.get_channel_types()
,mne.Epochs.get_channel_types()
,mne.Evoked.get_channel_types()
by Daniel McCloy.Deprecate
mne.minimum_norm.point_spread_function
andmne.minimum_norm.cross_talk_function
by Alex GramfortDeprecate
montage
parameter ofmne.create_info()
in favor ofmne.io.Raw.set_montage()
,mne.Info.set_montage()
, and related functions by Eric Larsonmne.channels.equalize_channels()
no longer operates in-place by default, but instead makes copies of the objects when necessary (seecopy
parameter) by Marijn van Vlietmne.channels.equalize_channels()
now uses the first object in the list as a template for channel ordering by Marijn van Vlietmne.channels.equalize_channels()
now also re-orders the channels to match, in addition to dropping channels that are not shared by all objects by Marijn van Vlietmne.io.Raw.pick_channels()
,mne.Epochs.pick_channels()
andmne.Evoked.pick_channels()
now have anordered
parameter to enforce the ordering of the picked channels by Marijn van VlietNew methods
mne.Forward.pick_channels()
,mne.Covariance.pick_channels()
,mne.Info.pick_channels
,mne.time_frequency.CrossSpectralDensity.pick_channels()
by Marijn van VlietNew attributes
mne.Forward.ch_names
andmne.Info.ch_names
by Marijn van VlietIn
Xdawn
, the components are stored in the rows of attributesfilters_
andpatterns_
to be consistent withCSP
andICA
by Henrich KolkhorstDrop
unit
keyword argument frommne.channels.read_custom_montage()
, as it was unused by Richard HöchenbergerDeprecate
mne.preprocessing.run_ica
, usemne.preprocessing.ICA.detect_artifacts
instead by Richard Höchenberger
Authors#
People who contributed to this release (in alphabetical order):
Adam Li
Adonay Nunes
Alex Rockhill
Alexandre Gramfort
Ariel Rokem
Britta Westner
Carlos de la Torre
Christian Brodbeck
Christian O’Reilly
Chun-Hui Li
Clemens Brunner
Daniel McCloy
Demetres Kostas
Denis A. Engemann
Dmitrii Altukhov
Dominik Welke
Eric Larson
Ezequiel Mikulan
Fahimeh Mamashli
Fede Raimondo
Fu-Te Wong
Geoff Brookshire
Guillaume Favelier
Henrich Kolkhorst
Joan Massich
José C. García Alanis
Jussi Nurminen
Kaisu Lankinen
Luke Bloy
Mainak Jas
Marijn van Vliet
Mathurin Massias
Mikolaj Magnuski
Mohamed Sherif
Mohammad Daneshzand
Nataliia Kozhemiako
Nicolas Barascud
Nicolas Legrand
Olaf Hauk
Padma Sundaram
Ramiro Gatti
Richard Höchenberger
Robert Luke
Robert Oostenveld
Sebastian Major
Sophie Herbst
Stefan Appelhoff
Stefan Repplinger
Thomas Hartmann
Victor Férat
Yu-Han Luo
Version 0.19 (2019-09-24)#
Changelog#
Add
mne.cuda.set_cuda_device()
and config variableMNE_CUDA_DEVICE
to select among multiple GPUs (by numeric device ID) by Daniel McCloy.Add
mne.channels.make_standard_montage()
to createmne.channels.DigMontage
from templates by Joan Massich and Alex Gramfort.Add
mne.channels.compute_dev_head_t()
to compute Device-to-Head transformation from a montage by Joan Massich and Alex Gramfort.Add
mne.channels.read_dig_fif()
to read digitization coordinates from.fif
files by Joan Massich and Alex Gramfort.Add
mne.channels.read_dig_egi()
to read digitization coordinates from EGI.xml
files by Joan Massich and Alex Gramfort.Add
mne.channels.read_dig_polhemus_isotrak()
andmne.channels.read_polhemus_fastscan()
to read Polhemus data by Joan MassichAdd
mne.channels.read_dig_captrack
to read BrainVision CapTrak (BVCT) digitization coordinate files by Stefan Appelhoff and Joan MassichAdd
mne.channels.make_dig_montage()
to createmne.channels.DigMontage
objects out of np.arrays by Joan MassichAdd
mne.channels.read_custom_montage()
to read various EEG electrode locations files by Joan Massich and Alex Gramfort.Add support for making epochs with duplicated events, by allowing three policies: “error” (default), “drop”, or “merge” in
mne.Epochs
by Stefan AppelhoffAllow
mne.Annotations.crop()
to support negativetmin
andtmax
by Joan MassichUnknown events code in GDF are now visible in the
event_id
by Theodore PapadopouloNow
mne.io.read_raw_ctf()
populatesraw.annotations
with the markers inMarkerFile.mrk
if any by Joan MassichAdd options for controlling the use of the
-T1
flag and the location of the brainmask output in mne watershed_bem by Eric LarsonAdd support to
mne.read_annotations()
to read CTF marker files by Joan MassichDo not convert effective number of averages (
nave
attribute ofmne.Evoked
) to integer except when saving to FIFF file by Daniel McCloy.Add automatic fiducial position estimation in mne coreg using MNI Talairach fiducial locations in
mne.coreg.get_mni_fiducials()
by Jon Houck and Eric LarsonAdd support for mne coreg scaling surrogate subjects without surface reconstructions, such as those created for volumetric analyses only (e.g., with
recon-all -autorecon1
) by Eric LarsonAdd reader for Curry data in
mne.io.read_raw_curry()
by Dirk GütlinButterfly channel plots now possible for
mne.Epochs.plot_psd()
withaverage=False
. Infrastructure for this function now shared with analogous Raw function, found inmne.viz.utils
by Jevri HannaAdd option not to orthogonalize power envelopes with
orthogonalize=False
inmne.connectivity.envelope_correlation
by Denis EngemannAccept filenames of raw .fif files that end in
_meg.fif
to enable complicance with the Brain Imaging Data Structure by Stefan AppelhoffAdd function to check the type of a FIF file using
mne.what()
and mne what by Eric LarsonAdd support for specifying the initial time and/or position and providing a
mne.SourceMorph
instead ofmne.SourceSpaces
inmne.viz.plot_volume_source_estimates()
by Eric LarsonSpeed up morph map generation in
mne.read_morph_map()
by ~5-10x by usingnumba.jit()
by Eric LarsonSpeed up
mne.setup_volume_source_space()
, especially whenvolume_label is not None
by Eric LarsonSpeed up mne coreg interactive and automated (ICP) alignment by using nearest-neighbor calculations in the MRI coordinate frame, by Eric Larson
Add
mne.dig_mri_distances()
to compute the distances between digitized head points and the MRI head surface by Alex Gramfort and Eric LarsonAdd scale bars for data channels in
mne.io.Raw.plot()
by Eric LarsonAdd
mne.viz.plot_brain_colorbar()
to plot a colorbar appropriately matched to amne.viz.plot_source_estimates()
plot by Eric LarsonAdd support for showing head surface (to visualize digitization fit) while showing a single-layer BEM to
mne.viz.plot_alignment()
by Eric LarsonAdd option
include_tmax=True
to cropping methodsmne.io.Raw.crop()
,mne.Epochs.crop()
,mne.Evoked.crop()
,mne.SourceEstimate.crop()
,mne.Dipole.crop()
, andmne.time_frequency.AverageTFR.crop()
by Eric LarsonChange the behavior of
mne.io.Raw.plot()
forscalings='auto'
andremove_dc=True
to compute the scalings on the data with DC removed by Clemens BrunnerAllow creating annotations within existing annotations in
mne.io.Raw.plot()
by default (the old snapping behavior can be toggled by pressing ‘p’) by Clemens BrunnerAdd plotting of rank estimates in
mne.viz.plot_cov()
by Eric LarsonAdd a new
mne.viz.plot_sensors_connectivity
function to visualize the sensor connectivity in 3D by Guillaume Favelier and Alex GramfortAdd support for
info['utc_offset']
,info['device_info']
, andinfo['helium_info']
components ofmne.Info
by Eric LarsonAdd control over dipole colors in
mne.viz.plot_dipole_locations()
when using orthoview mode by Eric LarsonUse second-order-sections filtering in
mne.io.Raw.plot()
and mne browse_raw by Eric LarsonAdd re-referencing functionality for ecog and seeg channel types in
mne.set_eeg_reference()
by Keith DoellingAdd support for median averaging and for returning unaggregated segments in
mne.time_frequency.psd_welch
by Richard Höchenbergerio.read_raw_kit()
: add support for NYU New York 2019 system update, by Christian Brodbeck
Bug#
Fix setting montage eeg ref position for captrak by Joan Massich
Fix saving raw read from BDF file using
tmin
andtmax
usingpreload=False
by Alex GramfortFix
mne.grand_average()
to use equal sum-to-one weights (like it used to, before changes to underlyingmne.combine_evoked()
) by Daniel McCloyFix
mne.io.Raw.filter()
to deal with instances with no data channels properly by Eric LarsonFix one-sample baseline issue in
mne.BaseEpochs
when usingtmin=0
by Milan RybářFix bug in
mne.viz.plot_volume_source_estimates()
where'glass_brain'
MRIs were not transformed to MNI space, by Eric LarsonFix bug in
mne.viz.plot_volume_source_estimates()
where MRIs with voxels not in RAS orientation could not be browsed properly, by Eric LarsonFix bug in
mne.SourceMorph.apply()
where output STCs hadstc.vertices
defined improperly, by Eric LarsonFix bug in
mne.SourceMorph.apply()
where the default was errantlymri_space=False
instead ofmri_space=None
(as documented), by Eric LarsonFix
mne.VolVectorSourceEstimate.normal
andmne.minimum_norm.apply_inverse()
to only allow normal extraction/orientation for surface and discrete source spaces by Eric LarsonFix
mne.io.Raw.set_annotations()
formeas_date
previous to 1970 by Joan MassichFix horizontal spacing issues in
mne.io.Raw.plot_psd()
by Jevri HannaFix reading of dates in BrainVision files if no “New Segment” marker is specified, no date is given, or data is missing, by Stefan Appelhoff
Fix bug with reading one-channel GDF files by Abram Hindle
Fix bug with y-axis labeling in
mne.io.Raw.plot_psd()
by Eric LarsonFix side-effect where
mne.viz.plot_ica_sources()
andmne.preprocessing.ICA.plot_sources()
changed theICA.exclude
attribute even when users didn’t interact with the plot by Daniel McCloy.Fix scaling of sources in
ica.plot_sources(epochs)
by Eric LarsonFix wrong assumptions about units in BrainVision montages and add test asserting units in “mm” or “auto”, by Stefan Appelhoff
Fix scaling issue with signals in mV in EDF files read with
mne.io.read_raw_edf()
by Alex GramfortFix
mne.extract_label_time_course()
behavior when using STCs generated withapply_inverse(..., label=label)
orstc.in_label
by Eric LarsonFix bug in
mne.io.read_raw_brainvision()
so that recording date timestamps are also recognized if channel reference data is negative, by Stefan AppelhoffFix order of
info['dig']
that was alphabetical based on channel names and not following the channel order when usingmne.io.Raw.set_montage()
and amne.channels.Montage
object by Joan Massich and Alex Gramfort.Fix reading CNT files larger than 2Gb by Joan Massich
Fix reading of 4D/BTi data with different channel names and onsets in
mne.io.read_raw_bti()
by Joshua Bear and Eberhard EichFix formula for effective number of averages in
mne.combine_evoked()
whenweights='equal'
by Daniel McCloy.Fix bug in
mne.simulation.simulate_stc()
to avoid empty stc if label vertices and source space do not intersect, by Kostiantyn MaksymenkoFix
event_id='auto'
inmne.events_from_annotations()
to recover Brainvision markers after saving it in.fif
by Joan MassichFix
mne.read_epochs_eeglab()
when epochs are stored as float. By Thomas RadmanFix
mne.Evoked.resample()
andmne.Epochs.resample()
not settinginst.info['lowpass']
properly by Eric LarsonFix checks when constructing volumetric and surface source spaces with
mne.setup_volume_source_space()
andmne.setup_source_space()
, respectively, by Eric LarsonFix bug in handling of
mne.Evoked
types that were not produced by MNE-Python (e.g., alternating average) by Eric LarsonFix bug in
mne.read_source_estimate()
where vector volumetric source estimates could not be read by Eric LarsonFix bug in
mne.inverse_sparse.mixed_norm()
andmne.inverse_sparse.tf_mixed_norm()
whereweights
was supplied butweights_min
was not, by Eric LarsonFix bug in
mne.set_eeg_reference()
where non-EEG channels could be re-referenced by default if there were no EEG channels present, by Eric LarsonFix bug in
mne.io.Raw.plot()
when using HiDPI displays and the MacOSX backend of matplotlib by Eric LarsonFix bug in
mne.viz.plot_compare_evokeds()
when using Neuromag 122 system by Eric LarsonFix bug in
mne.Epochs.plot_psd()
when some channels had zero/infinitepsd
values causing erroneous error messages by Luke BloyFix
mne.Evoked.decimate()
not settinginst.first
andinst.last
properly by Marijn van VlietFix
mne.io.read_raw_brainvision()
not handlingEvent
markers created by PyCorder correctly by Richard HöchenbergerFix support for string-like objects (such as
pathlib.Path
) by Eric LarsonFix
mne.Report
silently suppressing exceptions when used as a context manager by Marijn van Vliet
API#
Deprecate
mne.channels.Montage
class,mne.channels.read_montage
andmne.channels.read_dig_montage
function by Joan Massich.Deprecate passing
Montage
,str
as montage parameter inmne.io.Raw.set_montage()
by Joan Massich.Deprecate
set_dig
parameter inmne.io.Raw.set_montage()
andupdate_ch_names
inmne.io.RawEEGLAB.set_montage
when usingmne.channels.DigMontage
as by Joan Massich.Now
mne.io.Raw.set_montage()
raises an error whenmne.channels.DigMontage
contains only a subset of the channels inraw.info
. It also addsraise_if_subset
parameter to ensure backward compatibility (defaults to False in 0.19, to True in 0.20, and will be removed in 0.21) by Joan Massich.Minimum dependency versions for the following libraries have been bumped up (by Eric Larson):
NumPy: 1.12.1
SciPy: 0.18.1
matplotlib: 2.0.2
scikit-learn: 0.18.2
pandas 0.19.2
New boolean parameter
show_scrollbars
formne.io.Raw.plot()
,mne.Epochs.plot()
, andmne.preprocessing.ICA.plot_sources()
(and associated functions) that allows hiding the scrollbars and buttons for a “zen mode” data browsing experience. When the plot window has focus, zen mode can be toggled by pressing z, by Daniel McCloy.Deprecate
mne.evoked.grand_average
in favor ofmne.grand_average()
(which works on bothEvoked
andAverageTFR
) by Daniel McCloyDeprecate
exclude
parameter inmne.viz.plot_ica_sources()
andmne.preprocessing.ICA.plot_sources()
, instead always use theexclude
attribute of the ICA object by Daniel McCloy.Deprecate
montage
parameter in favor of theset_montage
method in all EEG data readersmne.io.read_raw_cnt()
,mne.io.read_raw_egi()
,mne.io.read_raw_edf()
,mne.io.read_raw_gdf()
,mne.io.read_raw_nicolet()
,mne.io.read_raw_eeglab()
andmne.read_epochs_eeglab()
by Alex GramfortNew parameter
clear
inmne.viz.plot_epochs_image()
for clearing pre-existing axes before plotting into them by Daniel McCloymne.viz.plot_epochs_image()
no longer supportsgroup_by='type'
— combining by channel type is now the default whenpicks
is a channel type string; to get individual plots for each channel, passpicks
as a list of channel names or indices by Daniel McCloyNew parameter
combine
inmne.viz.plot_compare_evokeds()
for specifying method to combine information across channels by Daniel McCloyFIFF constants related to SmartShield (
*_SMSH_*
and*_SMARTSHIELD
) have been renamed toIAS
for consistency with MEGIN, by Eric LarsonThe
gfp
parameter ofmne.viz.plot_compare_evokeds()
is deprecated; usecombine='gfp'
instead by Daniel McCloyThe
truncate_yaxis='max_ticks'
parameter ofmne.viz.plot_compare_evokeds()
is deprecated; usetruncate_yaxis='auto'
instead by Daniel McCloyThe
truncate_xaxis
andtruncate_yaxis
parameters ofmne.viz.plot_compare_evokeds()
now perform one-sided truncation unless both areTrue
by Daniel McCloyThe
show_legend
parameter ofmne.viz.plot_compare_evokeds()
is renamed tolegend
by Daniel McCloymne.viz.plot_compare_evokeds()
always returns a list of figures even when a single figure is generated by Daniel McCloyDeprecate
average=True
andspatial_colors=False
formne.Epochs.plot_psd()
by Jevri Hannamne.io.read_raw_brainvision()
no longer raises an error when there are inconsistencies betweeninfo['chs']
andmontage
but warns instead by Joan MassichAdd
update_ch_names
parameter tomne.io.RawEEGLAB.set_montage
to allow updating the channel names based on the montage by Joan MassichReading annotations contained in GDF files with
mne.io.read_raw_gdf()
now returns numeric event codes as descriptions (instead of textual descriptions) due to restrictive licensing of the GDF event code table from BioSig by Clemens Brunnerchannels.find_ch_connectivity
now returns pre-built neighbor maps for KIT systems when available, by Christian Brodbeck
Version 0.18 (2019-05-19)#
Changelog#
Add
event_id='auto'
inmne.events_from_annotations()
to accommodate Brainvision markers by Jona Sassenhagen, Joan Massich and Eric LarsonAdd example on how to simulate raw data using subject anatomy, by Ivana Kojcic,`Eric Larson`_,`Samuel Deslauriers-Gauthier`_ and`Kostiantyn Maksymenko`_
mne.beamformer.apply_lcmv_cov()
returns static source power after supplying a data covariance matrix to the beamformer filter by Britta Westner and Marijn van VlietAdd
butterfly
andorder
arguments tomne.viz.plot_epochs()
and offer separated traces for non-meg data (seeg, eeg, ecog) in butterfly view by Stefan Repplinger and Eric Larsonmne.Epochs.get_data()
now takes apicks
parameter by Jona Sassenhagenplot_compare_evokeds()
will generate topo plots ifaxes='topo'
by Jona Sassenhagenmne.viz.iter_topography
can yield an additional axis, e.g., for plotting legends by Jona Sassenhagen and Daniel McCloyDefault plot title reflects channel type when
picks
is a channel type inplot_compare_evokeds()
by Daniel McCloyColor scale limits in
plot_topo_image_epochs()
are now computed separately per channel type in combined mag/grad plots, by Daniel McCloymne.simulation.simulate_stc()
now allows for label overlaps by Nathalie Gayraud, and Ivana KojcicAdd
long_format
option to the pandas dataframe exporters, e.gmne.Epochs.to_data_frame()
by Denis EngemannAdd example on how to load standard montage Plotting sensor layouts of EEG systems by Joan Massich
Add new tutorial on EEG forward operator with a template MRI by Alex Gramfort, and Joan Massich
Add
mne.Epochs.apply_hilbert()
andmne.Evoked.apply_hilbert()
by Eric LarsonAdd convenience
fsaverage
subject dataset fetcher / updatermne.datasets.fetch_fsaverage()
by Eric LarsonAdd
fmin
andfmax
argument tomne.time_frequency.AverageTFR.crop()
and tomne.time_frequency.EpochsTFR.crop()
to crop TFR objects along frequency axis by Dirk GütlinAdd support to
mne.read_annotations()
to read CNT formats by Joan MassichAdd
reject
parameter tomne.preprocessing.ICA.plot_properties()
to visualize rejected epochs by Antoine GauthierAdd support for picking channels using channel name and type strings to functions with
picks
arguments, along with a conveniencemne.io.Raw.pick()
,mne.Epochs.pick()
, andmne.Evoked.pick()
method, by Eric LarsonAdd new tutorial on Sleep stage classification from polysomnography (PSG) data by Alex Gramfort, Stanislas Chambon and Joan Massich
Add data fetchers for polysomnography (PSG) recordings from Physionet (
mne.datasets.sleep_physionet.age.fetch_data()
andmne.datasets.sleep_physionet.temazepam.fetch_data()
) by Alex Gramfort and Joan MassichAdd envelope correlation code in
mne.connectivity.envelope_correlation
by Denis Engemann, Sheraz Khan, and Eric LarsonAdd option to toggle all projectors in
mne.io.Raw.plot()
and related functions by Eric LarsonAdd support for indexing, slicing, and iterating
mne.Annotations
by Joan Massichmne.io.Raw.plot()
now uses the lesser ofn_channels
andraw.ch_names
, by Joan MassichAdd support for FIR filtering in
mne.io.Raw.plot()
and mne browse_raw by passingfiltorder=0
or--filtorder 0
, respectively, by Eric LarsonAdd
chunk_duration
parameter tomne.events_from_annotations()
to allow multiple events from a single annotation by Joan MassichAdd
mne.simulation.SourceSimulator
class to simplify simulating SourceEstimates, by Samuel Deslauriers-Gauthier, Kostiantyn Maksymenko, Nathalie Gayraud, Ivana Kojcic, Alex Gramfort, and Eric Larsonmne.io.read_raw_edf()
now detects analog stim channels labeled'STATUS'
and sets them as stim channel.mne.io.read_raw_edf()
no longer synthesize TAL annotations into stim channel but stores them inraw.annotations
when reading by Joan MassichAdd
mne.simulation.add_noise
for ad-hoc noise addition toio.Raw
,Epochs
, andEvoked
instances, by Eric LarsonAdd
drop_refs=True
parameter toset_bipolar_reference()
to drop/keep anode and cathode channels after applying the reference by Cristóbal Moënne-Loccoz.Add processing of reference MEG channels to
mne.preprocessing.ICA
by Jevri HannaAdd use of
scipy.signal.windows.dpss()
for faster multitaper window computations in PSD functions by Eric LarsonAdd
mne.morph_labels()
to facilitate morphing label sets obtained from parcellations, by Eric LarsonAdd
mne.labels_to_stc()
to facilitate working with label data, by Eric LarsonAdd
mne.label.select_sources()
to simplify the selection of sources within a label, by Samuel Deslauriers-GauthierAdd support for using
mne.Info
inmne.simulation.simulate_raw()
instead ofmne.io.Raw
by Eric LarsonAdd support for passing an iterable and stim channel values using
stc
parameter ofmne.simulation.simulate_raw()
by Eric LarsonAdd
overlap
argument tomne.make_fixed_length_events()
by Eric LarsonAdd approximate distance-based
spacing
source space decimation algorithm tomne.setup_source_space()
by Eric LarsonAdd 448-labels subdivided aparc cortical parcellation by Denis Engemann and Sheraz Khan
Add option to improve rendering in mne coreg for modern graphics cards by Eric Larson
Add
mne.preprocessing.mark_flat
to automate marking of flat channels and segments of raw data by Eric LarsonAdd support for CUDA-based correlation computations and progress bars in
mne.decoding.ReceptiveField
by Eric LarsonAdd support for file-like objects in
mne.io.read_raw_fif()
as long as preloading is used by Eric LarsonAdd keyboard shortcuts to nativate volume source estimates in time using (shift+)left/right arrow keys by Mainak Jas
Add option to SSP preprocessing functions (e.g.,
mne.preprocessing.compute_proj_eog()
andmne.compute_proj_epochs()
) to process MEG channels jointly withmeg='combined'
by Eric LarsonAdd Epoch selection and metadata functionality to
mne.time_frequency.EpochsTFR
using new mixin class by Keith DoellingAdd
reject_by_annotation
argument tomne.preprocessing.find_ecg_events()
by Eric LarsonAdd
pca
argument to return the rank-reduced whitener inmne.cov.compute_whitener()
by Eric LarsonAdd
extrapolate
argument tomne.viz.plot_topomap()
for better control of extrapolation points placement by Mikołaj MagnuskiAdd
channel_wise
argument tomne.io.Raw.apply_function()
to allow applying a function on multiple channels at once by Hubert BanvilleAdd option
copy='auto'
to control data copying inmne.io.RawArray
by Eric LarsonThe
mri
parameter inmne.setup_volume_source_space()
is now automatically set toT1.mgz
ifsubject
is provided. This allows to get amne.SourceSpaces
of kindvolume
more automatically. By Alex GramfortAdd better
__repr__
for constants, andinfo['dig']
entries viaDigPoint
by Eric LarsonAllow string argument in
mne.io.Raw.drop_channels()
to remove a single channel by Clemens BrunnerAdd additional depth weighting options for inverse solvers (e.g.,
mne.inverse_sparse.gamma_map()
andmne.inverse_sparse.mixed_norm()
) by Eric LarsonAdd depth weighting to LCMV beamformers via
depth
argument inmne.beamformer.make_lcmv()
by Eric LarsonAllow toggling of DC removal in
mne.io.Raw.plot()
by pressing the ‘d’ key by Clemens BrunnerImproved clicking in
mne.io.Raw.plot()
(left click on trace toggles bad, left click on background sets green line, right click anywhere removes green line) by Clemens BrunnerAdd
mne.realtime.LSLClient
for realtime data acquisition with LSL streams of data by Teon Brooks and Mainak JasAdd partial support for PyVista as a 3D backend using
mne.viz.use_3d_backend()
by Guillaume FavelierAdd option
ids = None
inmne.event.shift_time_events()
for considering all events by Nikolas Chalas and Joan MassichAdd
mne.realtime.MockLSLStream
to simulate an LSL stream for testing and examples by Teon BrooksAdd support for file-like objects in
mne.read_epochs()
as long as preloading is used by Paul Roujansky
Bug#
Fix annotations in split fif files
mne.io.read_raw_fif()
by Joan MassichFix
mne.Epochs.plot()
withscalings='auto'
to properly compute channel-wise scalings by Stefan RepplingerFix
mne.gui.coregistration()
and mne coreg crashing with segmentation fault when switching subjects by Eric LarsonFix
mne.io.read_raw_brainvision()
to accommodate vmrk files which do not have any annotations by Alexander KovrigFix
mne.io.Raw.plot()
andmne.Epochs.plot()
to auto-scalemisc
channel types by default by Eric LarsonFix filtering functions (e.g.,
mne.io.Raw.filter()
) to properly take into account the two elements inn_pad
parameter by Bruno NicenboimFix
feature_names
parameter change after fitting inmne.decoding.ReceptiveField
by Jean-Remi KingFix index error in
mne.io.read_raw_cnt()
when creating stim_channel manually by Joan MassichFix bug with
weight_norm='unit-gain'
inmne.beamformer.make_lcmv()
andmne.beamformer.make_dics()
by Britta WestnerFix 32bits annotations in
mne.io.read_raw_cnt()
by Joan MassichFix
mne.events_from_annotations()
to ignore'BAD_'` and ``'EDGE_'
annotations by default using a new defaultregexp
by Eric LarsonFix bug in
mne.preprocessing.mark_flat
whereraw.first_samp
was not taken into account by kalenkovichFix date parsing in
mne.io.read_raw_cnt()
by Joan MassichFix topological checks and error messages for BEM surfaces in
mne.make_bem_model()
by Eric LarsonFix default HTML language of
mne.Report
to be"en-us"
instead of"fr"
and allow setting viareport.lang
property by Eric LarsonFix bug where loading epochs with
preload=True
and subsequently usingmne.Epochs.drop_bad()
with newreject
orflat
entries leads to improper data (andepochs.selection
) since v0.16.0 by Eric Larson. If your code usesEpochs(..., preload=True).drop_bad(reject=..., flat=...)
, we recommend regenerating these data.Fix mne flash_bem to properly utilize
flash30
images when conversion from DICOM images is used, and to properly deal with non-standard acquisition affines by Eric LarsonFix
mne.io.Raw.set_annotations()
withannotations=None
to create an empty annotations object withorig_time
that matches themne.io.Raw
instance by Eric LarsonFix
mne.io.read_raw_edf()
returning all the annotations with the same name in GDF files by Joan MassichFix boundaries during plotting of raw data with
mne.io.Raw.plot()
and mne browse_raw on scaled displays (e.g., macOS with HiDPI/Retina screens) by Clemens BrunnerFix bug where filtering was not performed with
lowpass
orhighpass
inmne.io.Raw.plot()
and mne browse_raw by Eric LarsonFix
mne.simulation.simulate_evoked()
that was failing to simulate the noise with heterogeneous sensor types due to poor conditioning of the noise covariance and make sure the projections from the noise covariance are taken into account Alex GramfortFix checking of
data
dimensionality inmne.SourceEstimate
and related constructors by Eric LarsonFix
mne.io.Raw.append()
annotations miss-alignment by Joan MassichFix hash bug in the
mne.io.edf
module when installing on Windows by Eric LarsonFix
mne.io.read_raw_edf()
reading duplicate channel names by Larry EisenmanFix
set_bipolar_reference()
in the case of generating all bipolar combinations and also in the case of repeated channels in both lists (anode and cathode) by Cristóbal Moënne-LoccozFix missing code for computing the median when
method='median'
inmne.Epochs.average()
by Cristóbal Moënne-LoccozFix CTF helmet plotting in
mne.viz.plot_evoked_field()
by Eric LarsonFix saving of rejection parameters in
mne.Epochs.save()
by Eric LarsonFix orientations returned by
mne.dipole.get_phantom_dipoles()
(half were flipped 180 degrees) by Eric LarsonFix bug in
mne.viz.plot_compare_evokeds()
whenevoked.times[0] >= 0
would cause a problem withvlines='auto'
mode by Eric LarsonFix path bugs in
mne.bem.make_flash_bem()
and mne flash_bem by Eric LarsonFix
mne.time_frequency.AverageTFR.plot_joint()
mishandling bad channels, by David Haslacher and Jona SassenhagenFix
mne.beamformer.make_lcmv()
failing when full rank data is used (i.e., when no projection is done) withreg=0.
, by Eric LarsonFix issue with bad channels ignored in
mne.beamformer.make_lcmv()
andmne.beamformer.make_dics()
by Alex GramfortFix
mne.compute_proj_raw()
whenduration != None
not to apply existing proj and to avoid using duplicate raw data samples by Eric LarsonFix
reject_by_annotation
not being passed internally bymne.preprocessing.create_ecg_epochs()
and mne clean_eog_ecg tomne.preprocessing.find_ecg_events()
by Eric LarsonFix
mne.io.read_raw_edf()
failing when EDF header fields (such as patient name) contained special characters, by Clemens BrunnerFix
mne.io.read_raw_eeglab()
incorrectly parsing event durations by Clemens BrunnerFix
mne.io.read_raw_egi()
when cropping non-preloaded EGI MFF data by Alex GramfortFix
mne.io.Raw.interpolate_bads()
for interpolating CTF MEG channels when reference sensors are present by jeythekeyFix a bug in
mne.io.Raw.resample()
, where resampling events could result in indices > n_times-1, by jeythekeyFix
mne.preprocessing.ICA.score_sources()
to use thesfreq
of the raw data to filter rather than thesfreq
when the ICA was fit, by jeythekeyFix a bug in
mne.preprocessing.ICA
, where manually setting the attributeICA.exclude
to an np.array resulted in the removal of random components when later also providing theexclude
argument to anyapply...
-method, by jeythekeyAscending changed to descending sorting of scores for integer
..._criterion
arguments inmne.preprocessing.ICA.detect_artifacts
andmne.preprocessing.run_ica
, as it used to be documented; the docstring in these functions was corrected for float..._criterion
arguments, by jeythekey
API#
Deprecate
cov, iir_params, blink, ecg, chpi, random_state
and support formne.io.Raw
instance inputs inmne.simulation.simulate_raw()
; usemne.simulation.add_noise()
,mne.simulation.add_ecg()
,mne.simulation.add_eog()
, andmne.simulation.add_chpi()
by Eric LarsonAdd
overwrite
parameter inmne.Epochs.save()
by Katarina SlamaAdd
stim_channel
parameter inmne.io.read_raw_cnt()
to toggle stim channel synthesis by Joan MassichPython 2 is no longer supported; MNE-Python now requires Python 3.5+, by Eric Larson
A new class
mne.VolVectorSourceEstimate
is returned bymne.minimum_norm.apply_inverse()
(and related functions) when a volume source space andpick_ori='vector'
is used, by Eric LarsonConverting a forward solution with a volume source space to fixed orientation using
mne.convert_forward_solution()
now raises an error, by Eric Larsonraw.estimate_rank
has been deprecated and will be removed in 0.19 in favor ofmne.compute_rank()
by Eric LarsonAnnotations
are now kept sorted (by onset time) during instantiation andappend()
operations, by Eric LarsonDeprecate
mne.io.find_edf_events
by Joan MassichDeprecate
limit_depth_chs
inmne.minimum_norm.make_inverse_operator()
in favor ofdepth=dict(limit_depth_chs=...)
by Eric LarsonReading BDF and GDF files with
mne.io.read_raw_edf()
is deprecated and replaced bymne.io.read_raw_bdf()
andmne.io.read_raw_gdf()
, by Clemens Brunnermne.forward.compute_depth_prior()
has been reworked to operate directly onForward
instance asforward
rather than a representation scattered across the parametersG, is_fixed_ori, patch_info
, by Eric LarsonDeprecate
method='extended-infomax'
inmne.preprocessing.ICA
; Extended Infomax can now be computed withmethod='infomax'
andfit_params=dict(extended=True)
by Clemens BrunnerFix support for supplying
extrapolate
viaica.plot_properties(..., topomap_args=dict(extrapolate=...))
by Sebastian CastanoThe peak finder that was formerly accessible via
from mne.preprocessing.peak_finder import peak_finder
should now be imported directly from the enclosing namespace asfrom mne.preprocessing import peak_finder
by Eric LarsonDeprecate
mne.realtime
module to make a standalone modulemne-realtime
that will live outside of this package by Teon Brooks
Version 0.17 (2018-11-19)#
Changelog#
Add new tutorial for
mne.Annotations
andevents
by Joan Massich and Alex GramfortAdd support for saving
mne.Annotations
as CSV and TXT files by Joan Massich and Alex GramfortAdd
mne.Epochs.shift_time()
that shifts the time axis ofmne.Epochs
by Thomas HartmannAdd
mne.viz.plot_arrowmap()
computes arrowmaps using Hosaka-Cohen transformation from magnetometer or gradiometer data, these arrows represents an estimation of the current flow underneath the MEG sensors by Sheraz KhanAdd
mne.io.read_raw_fieldtrip()
,mne.read_epochs_fieldtrip()
andmne.read_evoked_fieldtrip()
to import FieldTrip data. By Thomas Hartmann and Dirk Gütlin.Add
rank
parameter tomne.compute_covariance()
,mne.cov.regularize()
and related functions to preserve data rank and speed up computation using low-rank computations during regularization by Eric Larson and Denis EngemannAdd new function
mne.read_annotations()
that can read annotations in EEGLAB, BrainVision, EDF and Brainstorm formats by Joan Massich and Alex Gramfort.Add capability to read and save Epochs containing complex data (e.g. after Hilbert-transform) using
mne.Epochs.save()
andmne.read_epochs()
, by Stefan Repplinger, Eric Larson and Alex GramfortAdd optically pumped magnetometer dataset and example by Rasmus Zetter and Eric Larson
Add
orgin
parameter tomne.io.Raw.time_as_index()
to allowtimes
to be relative to thisorigin
by Joan MassichAdd
title
argument tomne.SourceEstimate.plot()
by Eric Larsonmne.io.Raw.set_annotations()
now changesorig_time
to matchmeas_date
and shiftself.annotations.onset
accordingly. Previous behavior is deprecated and would be removed in 0.18. Work by Joan MassichAdd
mne.compute_source_morph()
which creates amne.SourceMorph
object to unify morphing any type of source estimates (surface or volume) from one subject to another for group studies. It is now possible to do group studies when working on the volume with MNE. Work by Tommy Clausner during GSOC 2018 with the help of Alex Gramfort and Eric Larson.Add ability to pass threshold for EOG to
mne.preprocessing.find_eog_events()
andmne.preprocessing.create_eog_epochs()
by Peter MolfeseAdd possibility to save
mne.VolSourceEstimate
andmne.MixedSourceEstimate
to HDF5 format (file extension .h5) withmne.VolSourceEstimate.save()
andmne.MixedSourceEstimate.save()
by Alex GramfortAdd
replace
parameter tomne.io.Raw.add_events()
to allow adding events while removing the old ones on the stim channel by Alex GramfortAdd ability to pass
axes
tots_args
andtopomap_args
ofmne.viz.plot_evoked_joint()
by Jona SassenhagenAdd ability to pass a precomputed forward solution to
mne.simulation.simulate_raw()
by Eric LarsonAdd ability to read and write beamformers with
mne.beamformer.read_beamformer()
andmne.beamformer.Beamformer.save
by Eric LarsonAdd resting-state source power spectral estimation example
sphx_glr_auto_examples_datasets_plot_opm_rest_data.py
by Eric Larson, Denis Engemann, and Luke BloyAdd
mne.channels.make_1020_channel_selections()
to group 10/20-named EEG channels by location, by Jona SassenhagenAdd helmet for Artemis123 for
mne.viz.plot_alignment()
by Eric LarsonAdd support for reading MATLAB
v7.3+
files inmne.io.read_raw_eeglab()
andmne.read_epochs_eeglab()
via pymatreader by Steven Gutstein, Eric Larson, and Thomas HartmannAdd support for raw PSD plots in
mne.Report.parse_folder()
viaraw_psd
argument ofmne.Report
by Eric LarsonAdd
trig_shift_by_type
parameter inmne.io.read_raw_brainvision()
to allow to specify offsets for arbitrary marker types by Henrich KolkhorstAdd progress bar support to
mne.decoding.SlidingEstimator
andmne.decoding.GeneralizingEstimator
by Eric LarsonAdd interactive visualization of volume source estimates using
mne.viz.plot_volume_source_estimates()
by Mainak JasAdd
mne.head_to_mri()
to convert positions from head coordinates to MRI RAS coordinates, by Joan Massich and Alex GramfortAdd improved CTF helmet for
mne.viz.plot_alignment()
by Eric LarsonAdd handling in
mne.combine_evoked()
andmne.grand_average()
for input with the same channels in different orders, if required, by Jona SassenhagenAdd
split_naming
parameter to themne.io.Raw.save
method to allow for BIDS-compatible raw file name construction by Teon BrooksAdd
origin
parameter tomne.Evoked.interpolate_bads()
and related methods by Eric LarsonAdd automated MEG helmet shape approximation to
mne.viz.plot_alignment()
by Eric LarsonAdd capability to save a
mne.Report
to an HDF5 file tomne.Report.save()
by Marijn van VlietAdd
mne.open_report()
to read back amne.Report
object that was saved to an HDF5 file by Marijn van VlietAdd multi-taper estimation to
mne.minimum_norm.compute_source_psd()
by Eric LarsonAdd support for custom, e.g. robust, averaging methods in
mne.Epochs.average()
by Jona SassenhagenAdd support for Neuromag 122 system by Alex Gramfort
Add function
mne.io.read_annotations_brainvision
for reading directly Brainvision marker files by Alex GramfortAdd
mne.Report.remove()
method to remove existing figures from a report, by Marijn van VlietAdd sign to output of max-power orientation for
mne.beamformer.make_dics()
by Eric LarsonAdd support for
pick_ori='max-power'
whenweight_norm=None
inmne.beamformer.make_lcmv()
by Marijn van VlietAdd support for
weight_norm='nai'
for allpick_ori
options inmne.beamformer.make_lcmv()
by Marijn van VlietAdd support for
weight_norm='nai'
tomne.beamformer.make_dics()
by Marijn van VlietAdd parameter
rank=None
tomne.beamformer.make_dics()
by Marijn van VlietAdd parameter
rank='full'
tomne.beamformer.make_lcmv()
, which can be set toNone
to auto-compute the rank of the covariance matrix before regularization by Marijn van VlietHandle different time vectors in topography plots using
mne.viz.plot_evoked_topo()
by Jussi NurminenSpeed up
mne.inverse_sparse.mixed_norm()
if thesolver
parameter is set tobcd
usingscipy.linalg.get_blas_funcs()
by Quentin Bertrand
Bug#
Fix bug with scaling of data in
mne.cov._compute_covariance_auto
that was affecting themne.decoding.SPoC
estimator by David SabbaghFix bug in
mne.minimum_norm.compute_source_psd()
where thestc.times
output was scaled by 1000, by Eric LarsonFix default values for
'diagonal_fixed'
estimation method ofmne.compute_covariance()
to be0.1
for all channel types, as inmne.cov.regularize()
by Eric LarsonFix reading edf file annotations by Joan Massich
Fix bug with reading events from BrainVision files by Stefan Appelhoff
Fix bug where
mne.io.read_raw_eeglab()
would warn when the stim channel is populated with an array of zeros by Joan MassichFix 2nd column of events in BrainVision to no longer store duration but rather be contained by
raw.annotations
by Alex GramfortFix checking of the correctness of the
prepared=True
argument inmne.minimum_norm.apply_inverse()
and related functions by Eric LarsonFix bug of not showing ERD’s in baseline rescaled tfr topomaps if grads are combined by Erkka Heinila
Fix bug with FIF I/O where strings were written in UTF-8 format instead of Latin-1 by Eric Larson
Fix bug with reading measurement dates from BrainVision files by Stefan Appelhoff
Fix bug with
mne.fit_dipole
where the residual was returned asndarray
instead ofmne.Evoked
instance, by Eric LarsonFix bug with
mne flash_bem
whenflash30
is not used by Eric LarsonFix bug with
mne.stats.permutation_cluster_test()
andmne.stats.spatio_temporal_cluster_test()
wherethreshold=None
was not calculated properly for a f-oneway test by Daniel McCloy and Eric LarsonFix bug with channel names in
mgh70
montage inmne.channels.read_montage
by Eric LarsonFix duplication of
info['hpi_meas']
andinfo['hpi_results']
by Sara SommarivaFix bug in
mne.io.read_raw_edf()
when reading large files on Windows by Marcin KoculakFix check in
mne.viz.plot_sensors()
for invalid channel locations by Eric LarsonFix bug in
mne.io.read_raw_edf()
where GDF files hadinfo['highpass']
andinfo['lowpass']
set to NaN andinfo['meas_date']
set incorrectly, by Eric LarsonFix bug in
mne.preprocessing.ICA.apply()
to handle arrays asexclude
property by Joan MassichFix bug in
method='eLORETA'
formne.minimum_norm.apply_inverse()
when using a sphere model and savedinv
by Eric LarsonFix bug in
mne.io.Raw
where warnings were emitted when objects were deleted by Eric LarsonFix vector data support for
mne.VolSourceEstimate
by Christian BrodbeckFix bug with IIR filtering axis in
mne.filter.filter_data()
by Eric LarsonFix bug with non-boxcar windows in
mne.io.Raw.resample()
andmne.filter.resample()
by Eric LarsonFix bug in
mne.minimum_norm.apply_inverse()
where applying an MEG-only inverse would raise an error about needing an average EEG reference by Eric LarsonFix bug in
inst.apply_proj()
where an average EEG reference was always added by Eric LarsonFix bug in
mne.time_frequency.tfr_morlet()
,mne.time_frequency.tfr_multitaper()
, andmne.time_frequency.tfr_stockwell()
where not all data channels were picked by Eric LarsonFix bug in
mne.preprocessing.ICA.plot_overlay()
andmne.make_field_map()
for CTF data with compensation by Eric LarsonFix bug in
mne.create_info()
passingint
asch_names
on Windows by Eric LarsonFix bug in
mne.realtime.RtEpochs
where events during the buildup of the buffer were not correctly processed when incoming data buffers are smaller than the epochs by Henrich KolkhorstFix bug in
mne.io.read_raw_brainvision()
where 1-indexed BrainVision events were not being converted into 0-indexed mne events by Steven BethardFix bug in
mne.viz.plot_snr_estimate()
andmne.minimum_norm.estimate_snr()
where the inverse rank was not properly utilized (especially affecting SSS’ed MEG data) by Eric LarsonFix error when saving stc as nifti image when using volume source space formed by more than one label by Alex Gramfort
Fix error when interpolating MEG channels with compensation using reference channels (like for CTF data) by Alex Gramfort
Fix bug in
mne.make_sphere_model()
where EEG sphere model coefficients were not optimized properly by Eric LarsonFix bug in
mne.io.read_raw_ctf()
to read bad channels and segments from CTF ds files by Luke BloyFix problem with
mne.io.Raw.add_channels()
whereraw.info['bads']
was replicated by Eric LarsonFix bug with
mne.Epochs
where an error was thrown when resizing data (e.g., duringmne.Epochs.drop_bad()
) by Eric LarsonFix naming of
raw.info['buffer_size_sec']
to beraw.buffer_size_sec
as it is a writing parameter rather than a measurement parameter by Eric LarsonFix EGI-MFF parser not to require
dateutil
package by Eric LarsonFix error when running LCMV on MEG channels with compensation using reference channels (like for CTF data) by Alex Gramfort
Fix the use of
sklearn.model_selection.cross_val_predict()
withmne.decoding.SlidingEstimator
by Alex GramfortFix event sample number increase when combining many Epochs objects with
mne.concatenate_epochs()
with by Jasper van den BoschFix title of custom slider images to
mne.Report
by Marijn van VlietFix missing initialization of
self._current
inmne.Epochs
by Henrich KolkhorstFix processing of data with bad segments and acquisition skips with new
skip_by_annotation
parameter inmne.preprocessing.maxwell_filter()
by Eric LarsonFix symlinking to use relative paths in
mne flash_bem` and ``mne watershed_bem
by Eric LarsonFix error in mne coreg when saving with scaled MRI if fiducials haven’t been saved by Ezequiel Mikulan
Fix normalization error in
mne.beamformer.make_lcmv()
whenpick_ori='normal', weight_norm='unit_noise_gain'
by Marijn van VlietFix MNE-C installation instructions by buildqa
Fix computation of max-power orientation in
mne.beamformer.make_dics()
whenpick_ori='max-power', weight_norm='unit_noise_gain'
by Marijn van Vliet
API#
Deprecated separate reading of annotations and synthesis of STI014 channels in readers by Joan Massich:
Deprecated
mne.io.read_annotations_eeglab
Deprecated
annot
andannotmap
parameters inread_raw_edf()
Deprecated
stim_channel
parameters inread_raw_edf()
,read_raw_brainvision()
, andread_raw_eeglab()
Annotations are now added to
raw
instances directly upon reading asraw.annotations
. They can also be read separately withmne.read_annotations()
for EEGLAB, BrainVision, EDF, and Brainstorm formats. Usemne.events_from_annotations(raw.annotations)
to convert these to events instead of the old way (using STI014 channel synthesis followed bymne.find_events(raw)
).- In 0.17 (this release)
Use
read_raw_...(stim_channel=False)
to disable warnings (and stim channel synthesis), but other arguments forstim_channel
will still be supported.- In 0.18
The only supported option will be
read_raw_...(stim_channel=False)
, and all stim-channel-synthesis arguments will be removed. At this point,stim_channel
should be removed from scripts for future compatibility, butstim_channel=False
will still be acceptable for backward compatibility.- In 0.19
The
stim_channel
keyword arguments will be removed fromread_raw_...
functions.
Calling :meth:
mne.io.pick.pick_info
removing channels that are needed by compensation matrices (info['comps']
) no longer raisesRuntimeException
but instead logs an info level message. By Luke Bloymne.Epochs.save()
now has the parameterfmt
to specify the desired format (precision) saving epoched data, by Stefan Repplinger, Eric Larson and Alex GramfortDeprecated
mne.SourceEstimate.morph_precomputed
,mne.SourceEstimate.morph
,mne.compute_morph_matrix
,mne.morph_data_precomputed
andmne.morph_data
in favor ofmne.compute_source_morph()
, by Tommy ClausnerPrepare transition to Python 3. This release will be the last release compatible with Python 2. The next version will be Python 3 only.
CUDA support now relies on CuPy instead of
PyCUDA
andscikits-cuda
. It can be installed usingconda install cupy
. By Eric LarsonFunctions requiring a color cycle will now default to Matplotlib rcParams colors, by Stefan Appelhoff
mne.Evoked.plot_image()
has gained the ability toshow_names
, and if a selection is provided togroup_by
,axes
can now receive adict
, by Jona SassenhagenCalling
mne.Epochs.decimate()
withdecim=1
no longer copies the data by Henrich KolkhorstRemoved blocking (waiting for new epochs) in
mne.realtime.RtEpochs.get_data()
by Henrich KolkhorstWarning messages are now only emitted as
warnings.warn_explicit()
rather than also being emitted aslogging
messages (unless a logging file is being used) to avoid duplicate warning messages, by Eric LarsonDeprecated save_stc_as_volume function in favor of
mne.VolSourceEstimate.as_volume()
andmne.VolSourceEstimate.save_as_volume()
by Alex Gramfortsrc.kind
now equals to'mixed'
(and not'combined'
) for a mixed source space (made of surfaces and volume grids) by Alex GramfortDeprecation of
mne.io.Raw.annotations
property in favor ofmne.io.Raw.set_annotations()
by Joan MassichThe default value of
stop_receive_thread
inmne.realtime.RtEpochs.stop
has been changed toTrue
by Henrich KolkhorstUsing the
mne.io.Raw.add_channels()
on an instance with memmapped data will now resize the memmap file to append the new channels on Windows and Linux, by Eric Larsonmne.io.Raw.annotations
when missing is set to an emptymne.Annotations
rather thanNone
by Joan Massich and Alex GramfortMismatches in CTF compensation grade are now checked in inverse computation by Eric Larson
Authors#
People who contributed to this release (in alphabetical order):
Alexandre Gramfort
Antoine Gauthier
Britta Westner
Christian Brodbeck
Clemens Brunner
Daniel McCloy
David Sabbagh
Denis A. Engemann
Eric Larson
Ezequiel Mikulan
Henrich Kolkhorst
Hubert Banville
Jasper J.F. van den Bosch
Jen Evans
Joan Massich
Johan van der Meer
Jona Sassenhagen
Kambiz Tavabi
Lorenz Esch
Luke Bloy
Mainak Jas
Manu Sutela
Marcin Koculak
Marijn van Vliet
Mikolaj Magnuski
Peter J. Molfese
Sam Perry
Sara Sommariva
Sergey Antopolskiy
Sheraz Khan
Stefan Appelhoff
Stefan Repplinger
Steven Bethard
Teekuningas
Teon Brooks
Thomas Hartmann
Thomas Jochmann
Tom Dupré la Tour
Tristan Stenner
buildqa
jeythekey
Version 0.16 (2018-05-01)#
Changelog#
Add possibility to pass dict of floats as argument to
mne.make_ad_hoc_cov()
by Nathalie GayraudAdd support for metadata in
mne.Epochs
by Chris Holdgraf, Alex Gramfort, Jona Sassenhagen, and Eric LarsonAdd support for plotting a dense head in
mne.viz.plot_alignment()
by Eric LarsonAllow plotting in user-created mayavi Scene in
mne.viz.plot_alignment()
by Daniel McCloyReduce memory consumption and do not require data to be loaded in
mne.Epochs.apply_baseline()
by Eric LarsonAdd option
render_bem
tomne.Report.parse_folder()
by Eric LarsonAdd to
mne.viz.plot_alignment()
plotting of coordinate frame axes viashow_axes
and terrain-style interaction viainteraction
, by Eric LarsonAdd option
initial_event
tomne.find_events()
by Clemens BrunnerLeft and right arrow keys now scroll by 25% of the visible data, whereas Shift+left/right scroll by a whole page in
mne.io.Raw.plot()
by Clemens BrunnerAdd support for gantry tilt angle determination from Elekta FIF file header by Chris Bailey
Add possibility to concatenate
mne.Annotations
objects with+
or+=
operators by Clemens BrunnerAdd support for MaxShield raw files in
mne.Report
by Eric LarsonAdd ability to plot whitened data in
mne.io.Raw.plot()
,mne.Epochs.plot()
,mne.Evoked.plot()
, andmne.Evoked.plot_topo()
by Eric LarsonWorkaround for reading EGI MFF files with physiological signals that also present a bug from the EGI system in
mne.io.read_raw_egi()
by Federico RaimondoAdd support for reading subject height and weight in
info['subject_info']
by Eric LarsonImprove online filtering of raw data when plotting with
mne.io.Raw.plot()
to filter in segments in accordance with the defaultskip_by_annotation=('edge', 'bad_acq_skip')
ofmne.io.Raw.filter()
to avoid edge ringing by Eric LarsonAdd support for multiple head position files, plotting of sensors, and control of plotting color and axes in
mne.viz.plot_head_positions()
by Eric LarsonAdd ability to read and write
Annotations
separate frommne.io.Raw
instances viaAnnotations.save()
andread_annotations()
by Eric LarsonAdd option to unset a montage by passing
None
tomne.io.Raw.set_montage()
by Clemens BrunnerAdd sensor denoising via
mne.preprocessing.oversampled_temporal_projection()
by Eric LarsonAdd
mne.io.pick.get_channel_types
which returns all available channel types in MNE by Clemens BrunnerUse standard PCA instead of randomized PCA whitening prior to ICA to increase reproducibility by Clemens Brunner
Plot sEEG electrodes in
mne.viz.plot_alignment()
by Alex GramfortAdd 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 Gramfortmne.io.Raw.set_montage()
now accepts a string as itsmontage
argument; this will set a builtin montage, by Clemens BrunnerAdd 4D BTi phantom dataset
mne.datasets.phantom_4dbti.data_path()
, by Alex GramfortChanged the background color to grey in
mne.viz.plot_alignment()
to make helmet more visible, by Alex GramfortAdd
mne.io.Raw.reorder_channels()
,mne.Evoked.reorder_channels()
, etc. to reorder channels, by Eric LarsonAdd to
mne coreg
andmne.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
filesScaling of
mri/trainsforms/talairach.xfm
files for conversion to MNI space
Add ability to exclude components interactively by clicking on their labels in
mne.preprocessing.ICA.plot_components()
by Mikołaj MagnuskiAdd 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 StrohmeierAdd
dgap_freq
parameter inmne.inverse_sparse.mxne_optim
solvers to control the frequency of duality gap computation by Mathurin Massias and Daniel StrohmeierAdd support for reading Eximia files by Eric Larson and Federico Raimondo
Add the Picard algorithm to perform ICA for
mne.preprocessing.ICA
, by Pierre Ablin and Alex GramfortAdd ability to supply a mask to the plot in
mne.viz.plot_evoked_image()
by Jona SassenhagenAdd
connectivity=False
to cluster-based statistical functions to perform non-clustering stats by Eric LarsonAdd
mne.time_frequency.csd_morlet()
andmne.time_frequency.csd_array_morlet()
to estimate cross-spectral density using Morlet wavelets, by Marijn van VlietAdd multidictionary time-frequency support to
mne.inverse_sparse.tf_mixed_norm()
by Mathurin Massias and Daniel StrohmeierAdd new DICS implementation as
mne.beamformer.make_dics()
,mne.beamformer.apply_dics()
,mne.beamformer.apply_dics_csd()
andmne.beamformer.apply_dics_epochs()
, by Marijn van Vliet and Susanna Aro
Bug#
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 ClausnerFix bug in
mne.io.read_raw_brainvision()
to use the correct conversion for filters from time constant to frequency by Stefan AppelhoffFix bug with events when saving split files using
mne.Epochs.save()
by Eric LarsonFix bug in
mne.decoding.SlidingEstimator
andmne.decoding.GeneralizingEstimator
to allowmne.decoding.cross_val_multiscore()
to automatically detect whether thebase_estimator
is a classifier and use aStratifiedKFold
instead of aKFold
whencv
is not specified, by Jean-Remi KingFix bug in
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 BrunnerFix bug in threshold-free cluster enhancement parameter validation (
mne.stats.permutation_cluster_1samp_test()
andmne.stats.permutation_cluster_test()
) by Clemens BrunnerFix bug in
mne.io.Raw.plot()
to correctly display event types when annotations are present by Clemens BrunnerFix bug in
mne.stats.spatio_temporal_cluster_test()
default value forthreshold
is now calculated based on the array sizes inX
, by Eric LarsonFix bug in
mne.simulation.simulate_raw()
withuse_cps=True
where CPS was not actually used by Eric LarsonFix bug in
mne.simulation.simulate_raw()
where 1- and 3-layer BEMs were not properly transformed usingtrans
by Eric LarsonFix bug in
mne.viz.plot_alignment()
where the head surface file-head.fif
was not used even though present by Chris BaileyFix bug when writing compressed sparse column matrices (e.g., Maxwell filtering cross-talk matrices) by Marijn van Vliet and Eric Larson
Fix bug in
mne.io.Raw.plot_psd()
to correctly deal withreject_by_annotation=False
by Clemens BrunnerFix bug in
mne.make_fixed_length_events()
when hitting corner case problems rounding to sample numbers by Eric LarsonFix bug in
mne.Epochs
when passing events as list withevent_id=None
by Alex GramfortFix bug in
mne.Report.add_figs_to_section
when passingnumpy.ndarray
by Eric LarsonFix bug in CSS class setting in
mne.Report
BEM section by Eric LarsonFix bug in
Annotations
where annotations that extend to the end of a recording were not extended properly by Eric LarsonFix bug in
mne.io.Raw.filter()
to properly raw data with acquisition skips in separate segments by Eric LarsonFix bug in
mne.preprocessing.maxwell_filter()
where homogeneous fields were not removed for CTF systems by Eric LarsonFix computation of average quaternions in
mne.preprocessing.maxwell_filter()
by Eric LarsonFix bug in writing
raw.annotations
where empty annotations could not be written to disk, by Eric LarsonFix 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 LarsonFix bug in
mne.preprocessing.maxwell_filter()
when providingorigin
in'meg'
coordinate frame for recordings with a MEG to head transform (i.e., non empty-room recordings) by Eric LarsonFix bug in
mne.viz.plot_cov()
that ignoredcolorbar
argument by Nathalie GayraudFix 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
mne.Epochs
andmne.stats.linear_regression_raw()
in converting between samples and times (mne.stats.linear_regression_raw()
now rounds, instead of truncating) by Phillip AldayFix bug in
mne coreg
where sphere surfaces were scaled by Eric LarsonFix bug in
mne.Evoked.plot_topomap()
when usingproj='interactive'
mode by Eric LarsonFix bug when passing
show_sensors=1
tomne.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 MagnuskiFix handling of annotations when cropping and concatenating raw data by Alex Gramfort and Eric Larson
Fix bug in
mne.preprocessing.create_ecg_epochs()
wherekeep_ecg=False
was ignored by Eric LarsonFix bug in
mne.io.Raw.plot_psd()
whenpicks is not None
andpicks
spans more than one channel type by Eric LarsonFix bug in
mne.make_forward_solution
when passing data with compensation channels (e.g. CTF) that contain bad channels by Alex GramfortFix bug in
mne.SourceEstimate.get_peak()
andmne.VolSourceEstimate.get_peak()
when there is only a single time point by Marijn van VlietFix bug in
mne.io.read_raw_edf()
when reading BDF files stimulus channels are now not scaled anymore by Clemens Brunner
API#
Channels with unknown locations are now assigned position
[np.nan, np.nan, np.nan]
instead of[0., 0., 0.]
, by Eric LarsonRemoved unused
image_mask
argument frommne.viz.plot_topomap()
by Eric LarsonUnknown 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 Larsonmne.Evoked.plot()
will now append the number of epochs averaged for the evoked data in the first plot title, by Eric LarsonChanged the line width in
mne.viz.plot_bem()
from 2.0 to 1.0 for better visibility of underlying structures, by Eric LarsonChanged the behavior of
mne.io.Raw.pick_channels()
and similar methods to be consistent withmne.pick_channels()
to treat channel list as a set (ignoring order) – if reordering is necessary useinst.reorder_channels
, by Eric LarsonChanged 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 intomne.time_frequency.csd_fourier()
andmne.time_frequency.csd_multitaper()
, by Marijn van Vlietmne.time_frequency.csd_array
has been refactored intomne.time_frequency.csd_array_fourier()
andmne.time_frequency.csd_array_multitaper()
, by Marijn van VlietAdded
clean_names=False
parameter tomne.io.read_raw_ctf()
for control over cleaning of main channel names and compensation channel names from CTF suffixes by Oleh KozynetsThe functions
lcmv
,lcmv_epochs
, andlcmv_raw
are now deprecated in favor ofmne.beamformer.make_lcmv()
andmne.beamformer.apply_lcmv()
,mne.beamformer.apply_lcmv_epochs()
, andmne.beamformer.apply_lcmv_raw()
, by Britta WestnerThe functions
mne.beamformer.dics
,mne.beamformer.dics_epochs
andmne.beamformer.dics_source_power
are now deprecated in favor ofmne.beamformer.make_dics()
,mne.beamformer.apply_dics()
, andmne.beamformer.apply_dics_csd()
, by Marijn van Vliet
Authors#
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-Remi 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
Version 0.15 (2017-10-20)#
Changelog#
mne.channels.Layout.plot()
andmne.viz.plot_layout()
now allows plotting a subset of channels withpicks
argument by Jaakko LeppakangasAdd .bvef extension (BrainVision Electrodes File) to
mne.channels.read_montage
by Jean-Baptiste SchirattiAdd
mne.decoding.cross_val_multiscore()
to allow scoring of multiple tasks, typically used withmne.decoding.SlidingEstimator
, by Jean-Remi KingAdd
mne.decoding.ReceptiveField
module for modeling electrode response to input features by Chris HoldgrafAdd
mne.decoding.TimeDelayingRidge
class, used by default bymne.decoding.ReceptiveField
, to speed up auto- and cross-correlation computations and enable Laplacian regularization by Ross Maddox and Eric LarsonAdd new
mne.datasets.mtrf
dataset by Chris HoldgrafAdd example of time-frequency decoding with CSP by Laura Gwilliams
Add
mne.decoding.SPoC
to fit and apply spatial filters based on continuous target variables, by Jean-Remi King and Alexandre BarachantAdd Fieldtrip’s electromyogram dataset, by Alexandre Barachant
Add
reject_by_annotation
option tomne.preprocessing.find_eog_events()
(which is also utilised bymne.preprocessing.create_eog_epochs()
) to omit data that is annotated as bad by Jaakko LeppakangasAdd example for fast screening of event-related dynamics in frequency bands by Denis Engemann
Add
mne.time_frequency.EpochsTFR.save()
by Jaakko LeppakangasAdd butterfly mode (toggled with ‘b’ key) to
mne.io.Raw.plot()
by Jaakko LeppakangasAdd
axes
parameter to plot_topo functions by Jaakko LeppakangasAdd options to change time windowing in
mne.chpi.filter_chpi()
by Eric Larsonmne.channels.Montage.plot
,mne.channels.DigMontage.plot()
, andmne.viz.plot_montage()
now allow plotting channel locations as a topomap by Clemens BrunnerAdd
background_color
parameter tomne.Evoked.plot_topo()
andmne.viz.plot_evoked_topo()
and improve axes rendering as done inmne.viz.plot_compare_evokeds()
by Alex GramfortAdd support for GDF files in
mne.io.read_raw_edf()
by Nicolas BarascudAdd
mne.io.find_edf_events
for getting the events as they are in the EDF/GDF header by Jaakko LeppakangasSpeed up
mne.io.Raw.plot()
andmne.Epochs.plot()
using (automatic) decimation based on low-passing withdecim='auto'
parameter by Eric Larson and Jaakko LeppakangasAdd
mne.inverse_sparse.mxne_optim.dgap_l21l1
for computing the duality gap for TF-MxNE as the new stopping criterion by Daniel StrohmeierAdd option to return a list of
Dipole
objects in sparse source imaging methods by Daniel StrohmeierAdd
mne.inverse_sparse.make_stc_from_dipoles()
to generate stc objects from lists of dipoles by Daniel StrohmeierAdd
mne.channels.find_ch_connectivity
that tries to infer the correct connectivity template using channel info. If no template is found, it computes the connectivity matrix usingDelaunay
triangulation of the 2d projected channel positions by Jaakko LeppakangasAdd IO support for EGI MFF format by Jaakko Leppakangas and ramonapariciog
Add option to use matplotlib backend when plotting with
mne.viz.plot_source_estimates()
by Jaakko LeppakangasAdd
mne.channels.Montage.get_pos2d
to get the 2D positions of channels in a montage by Clemens BrunnerAdd MGH 60- and 70-channel standard montages to
mne.channels.read_montage
by Eric LarsonAdd option for embedding SVG instead of PNG in HTML for
mne.Report
by Eric LarsonAdd confidence intervals, number of free parameters, and χ² to
mne.fit_dipole()
andmne.read_dipole()
by Eric Larsonmne.SourceEstimate.data
is now writable, writing to it will also updatemne.SourceEstimate.times
by Marijn van Vlietmne.io.Raw.plot()
andmne.Epochs.plot()
now use anti-aliasing to draw signals by Clemens BrunnerAllow using saved
DigMontage
to import digitization tomne.gui.coregistration()
by Jaakko LeppakangasAdd function
mne.channels.get_builtin_montages()
to list all built-in montages by Clemens Brunnermne.decoding.SlidingEstimator
andmne.decoding.GeneralizingEstimator
now accept**fit_params
at fitting by Jean-Remi KingAdd
mne.VectorSourceEstimate
class which enables working with both source power and dipole orientations by Marijn van VlietAdd option
pick_ori='vector'
tomne.minimum_norm.apply_inverse()
to producemne.VectorSourceEstimate
by Marijn van VlietAdd support for
numpy.random.RandomState
argument toseed
instatistical clustering functions
and better documentation of exact 1-sample tests by Eric LarsonExtend
mne.viz.plot_epochs_image()
/mne.Epochs.plot_image()
with regards to grouping by or aggregating over channels. See the new example atexamples/visualization/plot_roi_erpimage_by_rt.py
by Jona SassenhagenAdd bootstrapped confidence intervals to
mne.viz.plot_compare_evokeds()
by Jona Sassenhagen and Denis EngemannAdd example on how to plot ERDS maps (also known as ERSP) by Clemens Brunner
Add support for volume source spaces to
spatial_src_connectivity
andspatio_temporal_src_connectivity
by Alex GramfortPlotting raw data (
mne.viz.plot_raw()
ormne.io.Raw.plot()
) with events now includes event numbers (if there are not more than 50 events on a page) by Clemens BrunnerAdd filtering functions
mne.Epochs.filter()
andmne.Evoked.filter()
, as well aspad
argument tomne.io.Raw.filter()
by Eric LarsonAdd high frequency somatosensory MEG dataset by Jussi Nurminen
Add reduced set of labels for HCPMMP-1.0 parcellation in
mne.datasets.fetch_hcp_mmp_parcellation()
by Eric LarsonEnable morphing between hemispheres with
mne.compute_morph_matrix
by Christian BrodbeckAdd
return_residual
tomne.minimum_norm.apply_inverse()
by Eric LarsonAdd
return_drop_log
tomne.preprocessing.compute_proj_eog()
andmne.preprocessing.compute_proj_ecg()
by Eric LarsonAdd time cursor and category/amplitude status message into the single-channel evoked plot by Jussi Nurminen
BUG#
Fixed a bug when creating spherical volumetric grid source spaces in
setup_volume_source_space()
by improving the minimum-distance computations, which in general will decrease the number of used source space points by Eric LarsonFix bug in
mne.io.read_raw_brainvision()
read .vhdr files with ANSI codepage by Okba Bekhelifi and Alex GramfortFix unit scaling when reading in EGI digitization files using
mne.channels.read_dig_montage
by Matt BoggessFix
picks
default inmne.io.Raw.filter()
to includeref_meg
channels by default by Eric LarsonFix
mne.decoding.CSP
order of spatial filter inpatterns_
by Alexandre Barachantmne.concatenate_epochs()
now maintains the relative position of events during concatenation by Alexandre BarachantFix bug in script
mne make_scalp_surfaces
by Denis Engemann (this bug prevented creation of high-resolution meshes when they were absent in the first place.)Fix writing of raw files with empty set of annotations by Jaakko Leppakangas
Fix bug in
mne.preprocessing.ICA.plot_properties()
where merging gradiometers would fail by Jaakko LeppakangasFix
mne.viz.plot_sensors()
to maintain proper aspect ratio by Eric LarsonFix
mne.viz.plot_topomap()
to allow 0 contours by Jaakko LeppakangasFix
mne.preprocessing.ICA
source-picking to increase threshold for rank estimation to 1e-14 by Jesper Duemose NielsenFix
mne.set_bipolar_reference()
to support duplicates in anodes by Jean-Baptiste Schiratti and Alex GramfortFix visuals of
mne.viz.plot_evoked()
and a bug where ylim changes when using interactive topomap plotting by Jaakko LeppakangasFix
mne.Evoked.plot_topomap()
when using themask
argument with paired gradiometers by Eric LarsonFix bug in
mne.Label.fill()
where an empty label raised an error, by Eric LarsonFix
mne.io.read_raw_ctf()
to also include the samples in the last block by Jaakko LeppakangasFix
mne.preprocessing.ICA.save()
to close file before attempting to delete it when write fails by Jesper Duemose NielsenFix
mne.simulation.simulate_evoked()
to use nave parameter instead of snr, by Yousra BekhtiFix
mne.read_bem_surfaces()
for BEM files missing normals by Christian BrodbeckFix
mne.transform_surface_to()
to actually copy whencopy=True
by Eric LarsonFix
mne.io.read_raw_brainvision()
to read vectorized data correctly by Jaakko Leppakangas and Phillip AldayFix
mne.connectivity.spectral_connectivity
so that ifn_jobs > 1
it does not ignore lastn_epochs % n_jobs
epochs by Mikołaj MagnuskiFix
mne.io.read_raw_edf()
to infer sampling rate correctly when reading EDF+ files where tal-channel has a higher sampling frequency by Jaakko LeppakangasFix default value of
kind='topomap'
inmne.channels.Montage.plot
to be consistent withmne.viz.plot_montage()
by Clemens BrunnerFix bug in
to_data_frame
where non-consecutive picks would make the function crash by Jaakko LeppakangasFix channel picking and drop in
mne.time_frequency.EpochsTFR
by Lukáš HejtmánekFix
mne.SourceEstimate.transform()
to properly updatemne.SourceEstimate.times
by Marijn van VlietFix
mne.viz.plot_evoked_joint()
to allow custom titles without appending information about the channels by Jaakko LeppakangasFix writing a forward solution after being processed by
mne.forward.restrict_forward_to_label()
ormne.forward.restrict_forward_to_stc()
by Marijn van VlietFix bug in
mne.viz.plot_compare_evokeds()
wheretruncate_yaxis
was ignored (default is nowFalse
), by Jona SassenhagenFix bug in
mne.viz.plot_evoked()
where all xlabels were removed when usingspatial_colors=True
, by Jesper Duemose NielsenFix field mapping
mne.make_field_map()
and MEG bad channel interpolation functions (e.g.,mne.Evoked.interpolate_bads()
) to choose a better number of components during pseudoinversion when few channels are available, by Eric LarsonFix bug in
mne.io.read_raw_brainvision()
, changed default to read coordinate information if available and added test, by Jesper Duemose NielsenFix bug in
mne.SourceEstimate.to_original_src()
where morphing failed if two vertices map to the same target vertex, by Marijn van VlietFix
mne.preprocessing.Xdawn
to give verbose error messages about rank deficiency and handle transformingmne.Evoked
, by Eric LarsonFix bug in DC and Nyquist frequency multitaper PSD computations, e.g. in
mne.time_frequency.psd_multitaper
, by Eric LarsonFix default padding type for
mne.Epochs.resample()
andmne.Evoked.resample()
to be'edge'
by default, by Eric LarsonFix
mne.inverse_sparse.mixed_norm()
,mne.inverse_sparse.tf_mixed_norm()
andmne.inverse_sparse.gamma_map()
to work with volume source space and sphere head models in MEG by Alex Gramfort and Yousra BekhtiFix
mne.Evoked.as_type()
channel renaming to append'_v'
instead of'_virtual'
to channel names to comply with shorter naming (15 char) requirements, by Eric LarsonFix treatment of CTF HPI coils as fiducial points in
mne.gui.coregistration()
by Eric LarsonFix resampling of events along with raw in
mne.io.Raw()
to now take into consideration the value offirst_samp
by Chris BaileyFix labels of PSD plots in
mne.viz.plot_raw_psd()
by Alejandro WeinsteinFix depth weighting of sparse solvers (
mne.inverse_sparse.mixed_norm()
,mne.inverse_sparse.tf_mixed_norm()
andmne.inverse_sparse.gamma_map()
) with free orientation source spaces to improve orientation estimation by Alex Gramfort and Yousra BekhtiFix the threshold in
mne.beamformer.rap_music()
to properly estimate the rank by Yousra BekhtiFix treatment of vector inverse in
mne.minimum_norm.apply_inverse_epochs()
by Emily StephenFix
mne.find_events()
when passing a list as stim_channel parameter by Alex GramfortFix parallel processing when computing covariance with shrinkage estimators by Denis Engemann
API#
Removed the
mne.datasets.megsim
dataset because it was taken down by its host (MRN). Use themne.simulation
functions instead, by Eric LarsonAdd
skip_by_annotation
tomne.io.Raw.filter()
to process data concatenated with e.g.mne.concatenate_raws()
separately. This parameter will default to the old behavior (treating all data as a single block) in 0.15 but will change toskip_by_annotation='edge'
, which will separately filter the concatenated chunks separately, in 0.16. This should help prevent potential problems with filter-induced ringing in concatenated files, by Eric LarsonICA channel names have now been reformatted to start from zero, e.g.
"ICA000"
, to match indexing schemes inmne.preprocessing.ICA
and related functions, by Stefan Repplinger and Eric LarsonAdd
mne.beamformer.make_lcmv()
andmne.beamformer.apply_lcmv()
,mne.beamformer.apply_lcmv_epochs()
, andmne.beamformer.apply_lcmv_raw()
to enable the separate computation and application of LCMV beamformer weights by Britta Westner, Alex Gramfort, and Denis Engemann.Add
weight_norm
parameter to enable both unit-noise-gain beamformer and neural activity index (weight normalization) and make whitening optional by allowingnoise_cov=None
inmne.beamformer.lcmv
,mne.beamformer.lcmv_epochs
, andmne.beamformer.lcmv_raw
, by Britta Westner, Alex Gramfort, and Denis Engemann.Add new filtering mode
fir_design='firwin'
(default in the next 0.16 release) that gets improved attenuation using fewer samples compared tofir_design='firwin2'
(default in the current 0.15 release) by Eric LarsonMake the goodness of fit (GOF) of the dipoles returned by
mne.beamformer.rap_music()
consistent with the GOF of dipoles returned bymne.fit_dipole()
by Alex Gramfort.mne.decoding.SlidingEstimator
will now replacemne.decoding.TimeDecoding
to make it generic and fully compatible with scikit-learn, by Jean-Remi King and Alex Gramfortmne.decoding.GeneralizingEstimator
will now replacemne.decoding.GeneralizationAcrossTime
to make it generic and fully compatible with scikit-learn, by Jean-Remi King and Alex Gramfortmne.viz.decoding.plot_gat_times
,mne.viz.decoding.plot_gat_matrix
are now deprecated. Use matplotlib instead as shown in the examples, by Jean-Remi King and Alex GramfortAdd
norm_trace
parameter to control single-epoch covariance normalization in :class:mne.decoding.CSP, by Jean-Remi KingAllow passing a list of channel names as
show_names
in functionmne.viz.plot_sensors()
and methodsmne.Evoked.plot_sensors()
,mne.Epochs.plot_sensors()
andmne.io.Raw.plot_sensors()
to show only a subset of channel names by Jaakko LeppakangasMake function
mne.io.eeglab.read_events_eeglab
public to allow loading overlapping events from EEGLAB files, by Jona Sassenhagen.mne.find_events()
mask_type
parameter will change from'not_and'
to'and'
in 0.16.Instead of raising an error, duplicate channel names in the data file are now appended with a running number by Jaakko Leppakangas
mne.io.read_raw_edf()
has now'auto'
option forstim_channel
(default in version 0.16) that automatically detects if EDF annotations or GDF events exist in the header and constructs the stim channel based on these events by Jaakko Leppakangasmne.io.Raw.plot_psd()
now rejects data annotated bad by default. Turn off withreject_by_annotation=False
, by Eric Larsonmne.set_eeg_reference()
and the related methods (e.g.,mne.io.Raw.set_eeg_reference()
) have a new argumentprojection
, which if set to False directly applies an average reference instead of adding an SSP projector, by Clemens BrunnerDeprecate
plot_trans
in favor ofmne.viz.plot_alignment()
and addbem
parameter for plotting conductor model by Jaakko Leppakangasmne.beamformer.tf_lcmv
now has araw
parameter to accommodate epochs objects that already have data loaded withpreload=True
, withmne.Epochs.load_data()
, or that are read from disk, by Eric Larsonmne.time_frequency.psd_welch
andmne.time_frequency.psd_array_welch()
now use a Hamming window (instead of a Hann window) by Clemens Brunnerpicks
parameter inmne.beamformer.lcmv
,mne.beamformer.lcmv_epochs
,mne.beamformer.lcmv_raw
,mne.beamformer.tf_lcmv
andmne.beamformer.rap_music()
is now deprecated and will be removed in 0.16, by Britta Westner, Alex Gramfort, and Denis Engemann.The keyword argument
frequencies
has been deprecated in favor offreqs
in various time-frequency functions, e.g.mne.time_frequency.tfr_array_morlet()
, by Eric LarsonAdd
patterns=False
parameter inmne.decoding.ReceptiveField
. Turn on to compute inverse model coefficients, by Nicolas BarascudThe
scale
,scale_time
, andunit
parameters have been deprecated in favor ofscalings
,scalings_time
, andunits
inmne.viz.plot_evoked_topomap()
and related functions, by Eric Larsonloose
parameter in inverse solvers has now a default value'auto'
depending if the source space is a surface, volume, or discrete type by Alex Gramfort and Yousra BekhtiThe behavior of
'mean_flip'
label-flipping inmne.extract_label_time_course()
and related functions has been changed such that the flip, instead of having arbitrary sign, maximally aligns in the positive direction of the normals of the label, by Eric LarsonDeprecate force_fixed and surf_ori in
mne.read_forward_solution()
by Daniel Strohmeiermne.convert_forward_solution()
has a new argumentuse_cps
, which controls whether information on cortical patch statistics is applied while generating surface-oriented forward solutions with free and fixed orientation by Daniel Strohmeiermne.write_forward_solution()
writes a forward solution as a forward solution with free orientation in X/Y/Z RAS coordinates if it is derived from a forward solution with free orientation and as a forward solution with fixed orientation in surface-based local coordinates otherwise by Daniel Strohmeierloose=None
in inverse solvers is deprecated, use explicitlyloose=0
for fixed constraint andloose=1.0
for free orientations by Eric LarsonZero-channel-value in PSD calculation in
mne.viz.plot_raw_psd()
has been relaxed from error to warning by Alejandro WeinsteinExpose “rank” parameter in
mne.viz.plot_evoked_white()
to correct rank estimates on the spot during visualization by Denis Engemann, Eric Larson, Alex Gramfort.Show channel name under mouse cursor on topography plots by Jussi Nurminen
Return maximum response amplitude from
mne.Evoked.get_peak()
Authors#
People who contributed to this release (in alphabetical order):
akshay0724
Alejandro Weinstein
Alexander Rudiuk
Alexandre Barachant
Alexandre Gramfort
Andrew Dykstra
Britta Westner
Chris Bailey
Chris Holdgraf
Christian Brodbeck
Christopher Holdgraf
Clemens Brunner
Cristóbal Moënne-Loccoz
Daniel McCloy
Daniel Strohmeier
Denis A. Engemann
Emily P. Stephen
Eric Larson
Fede Raimondo
Jaakko Leppakangas
Jean-Baptiste Schiratti
Jean-Remi King
Jesper Duemose Nielsen
Joan Massich
Jon Houck
Jona Sassenhagen
Jussi Nurminen
Laetitia Grabot
Laura Gwilliams
Luke Bloy
Lukáš Hejtmánek
Mainak Jas
Marijn van Vliet
Mathurin Massias
Matt Boggess
Mikolaj Magnuski
Nicolas Barascud
Nicole Proulx
Phillip Alday
Ramonapariciog Apariciogarcia
Robin Tibor Schirrmeister
Rodrigo Hübner
Gutstein
Simon Kern
Teon Brooks
Yousra Bekhti
Version 0.14 (2017-03-24)#
Changelog#
Add example of time-frequency decoding with CSP by Laura Gwilliams
Automatically create a legend in
mne.viz.plot_evoked_topo()
by Jussi NurminenAdd I/O support for Artemis123 infant/toddler MEG data by Luke Bloy
Add filter plotting functions
mne.viz.plot_filter()
andmne.viz.plot_ideal_filter()
as well as filter creation functionmne.filter.create_filter()
by Eric LarsonAdd HCP-MMP1.0 parcellation dataset downloader by Eric Larson
Add option to project EEG electrodes onto the scalp in
mne.viz.plot_trans
by Eric LarsonAdd option to plot individual sensors in
mne.io.Raw.plot_psd()
by Alex Gramfort and Eric LarsonAdd option to plot ECoG electrodes in
mne.viz.plot_trans
by Eric LarsonAdd convenient default values to
mne.io.Raw.apply_hilbert()
andmne.io.Raw.apply_function()
by Denis EngemannRemove MNE-C requirement for mne make_scalp_surfaces by Eric Larson
Add support for FastTrack Polhemus
.mat
file outputs inhsp
argument ofmne.channels.read_dig_montage
by Eric LarsonAdd option to convert 3d electrode plots to a snapshot with 2d electrode positions with
mne.viz.snapshot_brain_montage()
by Chris HoldgrafAdd skull surface plotting option to
mne.viz.plot_trans
by Jaakko LeppakangasAdd minimum-phase filtering option in
mne.io.Raw.filter()
by Eric LarsonAdd support for reading ASCII BrainVision files in
mne.io.read_raw_brainvision()
by Eric LarsonAdd method of ICA objects for retrieving the component maps
mne.preprocessing.ICA.get_components()
by Jona SassenhagenAdd option to plot events in
mne.viz.plot_epochs()
by Jaakko LeppakangasAdd dipole definitions for older phantom at Otaniemi in
mne.dipole.get_phantom_dipoles()
by Eric LarsonAdd spatial colors option for
mne.viz.plot_raw_psd()
by Jaakko LeppakangasAdd functions like
get_volume_labels_from_src()
to handle mixed source spaces by Annalisa PascarellaAdd convenience function for opening MNE documentation
open_docs()
by Eric LarsonAdd option in
mne.io.Raw.plot()
to display the time axis relative toraw.first_samp
by Mainak JasAdd new
mne.datasets.visual_92_categories
dataset by Jaakko LeppakangasAdd option in
mne.io.read_raw_edf()
to allow channel exclusion by Jaakko LeppakangasAllow integer event codes in
mne.read_epochs_eeglab()
by Jaakko LeppakangasAdd ability to match channel names in a case insensitive manner when applying a
mne.channels.Montage
by Marijn van VlietAdd
yscale
keyword argument tomne.time_frequency.AverageTFR.plot()
that allows specifying whether to present the frequency axis in linear ('linear'
) or log ('log'
) scale. The default value is'auto'
which detects whether frequencies are log-spaced and sets yscale to log. Added by Mikołaj MagnuskiAdd Representational Similarity Analysis (RSA) example on
mne.datasets.visual_92_categories.data_path
dataset by Jaakko Leppakangas, Jean-Remi King and Alex GramfortAdd support for NeuroScan files with event type 3 in
mne.io.read_raw_cnt()
by Marijn van VlietAdd interactive annotation mode to
mne.io.Raw.plot()
(accessed by pressing ‘a’) by Jaakko LeppakangasAdd support for deleting all projectors or a list of indices in
mne.io.Raw.del_proj()
by Eric LarsonAdd source space plotting with
mne.SourceSpaces.plot()
usingmne.viz.plot_trans
by Eric LarsonAdd
mne.decoding.get_coef()
to retrieve and inverse the coefficients of a linear model - typically a spatial filter or pattern, by Jean-Remi KingAdd support for reading in EGI MFF digitization coordinate files in
mne.channels.read_dig_montage
by Matt BoggessAdd
n_per_seg
keyword argument tomne.time_frequency.psd_welch
andmne.time_frequency.psd_array_welch()
that allows to control segment length independently ofn_fft
and use zero-padding whenn_fft > n_per_seg
by Mikołaj MagnuskiAdd annotation aware data getter
mne.io.Raw.get_data()
by Jaakko LeppakangasAdd support of dipole location visualization with MRI slice overlay with matplotlib to
mne.viz.plot_dipole_locations()
via mode=’orthoview’ parameter by Jaakko Leppakangas and Alex GramfortAdd plotting of head positions as a function of time in
mne.viz.plot_head_positions()
by Eric LarsonAdd
real_filter
option tomne.beamformer.dics
,mne.beamformer.dics_source_power
,mne.beamformer.tf_dics
andmne.beamformer.dics_epochs
by Eric Larson, Alex Gramfort and Andrea Brovelli.Add a demo script showing how to use a custom inverse solver with MNE by Alex Gramfort
Functions
mne.preprocessing.create_ecg_epochs()
,mne.preprocessing.create_eog_epochs()
,mne.compute_raw_covariance()
and ICA methodsmne.preprocessing.ICA.score_sources()
,mne.preprocessing.ICA.find_bads_ecg()
,mne.preprocessing.ICA.find_bads_eog()
are now annotation aware by Jaakko LeppakangasAllow using
spatial_colors
for non-standard layouts by creating custom layouts from channel locations and addto_sphere
keyword tomne.viz.plot_sensors()
to allow plotting sensors that are not on the head surface by Jaakko LeppakangasConcatenating raws with
mne.concatenate_raws()
now creates boundary annotations automatically by Jaakko Leppakangasmne.viz.plot_projs_topomap()
now supports plotting EEG topomaps by passing inmne.Info
by Eric Larson
BUG#
Fix bug with DICS and LCMV (e.g.,
mne.beamformer.lcmv
,mne.beamformer.dics
) where regularization was done improperly. The defaultreg=0.01
has been changed toreg=0.05
, by Andrea Brovelli, Alex Gramfort, and Eric LarsonFix callback function call in
mne.viz.topo._plot_topo_onpick
by Erkka HeinilaFix reading multi-file CTF recordings in
mne.io.read_raw_ctf()
by Niklas WilmingFix computation of AR coefficients across channels in
mne.time_frequency.fit_iir_model_raw()
by Eric LarsonFix maxfilter channel names extra space bug in
mne.preprocessing.maxwell_filter()
by Sheraz Khanmne.channels.find_layout()
now leaves out the excluded channels by Jaakko LeppakangasArray data constructors
mne.io.RawArray
andEvokedArray
now make a copy of the info structure by Jaakko LeppakangasFix bug with finding layouts in
mne.viz.plot_projs_topomap()
by Eric LarsonFix bug
mne.io.anonymize_info()
when Info does not contain ‘file_id’ or ‘meas_id’ fields by Jean-Remi KingFix colormap selection in
mne.viz.plot_evoked_topomap()
when using positive vmin with negative data by Jaakko LeppakangasFix channel name comparison in
mne.channels.read_montage
so that ifch_names
is provided, the returned montage will have channel names in the same letter case by Jaakko LeppakangasFix
inst.set_montage(montage)
to only setinst.info['dev_head_t']
ifdev_head_t=True
inmne.channels.read_dig_montage
by Eric LarsonFix handling of events in
mne.realtime.RtEpochs
when the triggers were split between two buffers resulting in missing and/or duplicate epochs by Mainak Jas and Antti RantalaFix bug with automatic decimation in
mne.io.read_raw_kit()
by Keith DoellingFix bug with
setup_volume_source_space()
where argumentssubject
andsubjects_dir
were ignored by Jaakko LeppakangasFix sanity check for incompatible
threshold
andtail
values in clustering functions likemne.stats.spatio_temporal_cluster_1samp_test()
by Eric LarsonFix
_bad_dropped
not being set when loading eeglab epoched files viamne.read_epochs_eeglab()
which resulted inlen()
not working by Mikołaj MagnuskiFix a bug in
mne.time_frequency.AverageTFR.plot()
when plotting without a colorbar by Jaakko LeppakangasFix
_filenames
attribute in creation ofmne.io.RawArray
withmne.preprocessing.ICA.get_sources()
by Paul PaslerFix contour levels in
mne.viz.plot_evoked_topomap()
to be uniform across topomaps by Jaakko LeppakangasFix bug in
mne.preprocessing.maxwell_filter()
where fine calibration indices were mismatched leading to anAssertionError
by Eric LarsonFix bug in
mne.preprocessing.fix_stim_artifact()
where non-data channels were interpolated by Eric Larsonmne.decoding.Scaler
now scales each channel independently using data from all time points (epochs and times) instead of scaling all channels for each time point. It also now accepts parameterscalings
to determine the data scaling method (default isNone
to use static channel-type-based scaling), by Asish Panda, Jean-Remi King, and Eric LarsonRaise error if the cv parameter of
mne.decoding.GeneralizationAcrossTime
andmne.decoding.TimeDecoding
is not a partition and the predict_mode is “cross-validation” by Jean-Remi KingFix bug in
mne.io.read_raw_edf()
whenpreload=False
and channels have different sampling rates by Jaakko LeppakangasFix
mne.read_labels_from_annot()
to setlabel.values[:]=1
rather than 0 for consistency with theLabel
class by Jon HouckFix plotting non-uniform freqs (for example log-spaced) in
mne.time_frequency.AverageTFR.plot()
by Mikołaj MagnuskiFix
mne.minimum_norm.compute_source_psd()
when used withpick_ori=None
by Annalisa Pascarella and Alex GramfortFix bug in
mne.Annotations
where concatenating two raws whereorig_time
of the second run isNone
by Jaakko LeppakangasFix reading channel location from eeglab
.set
files when some of the channels do not provide this information. Previously all channel locations were ignored in such case, now they are read - unless a montage is provided by the user in which case only channel names are read from set file. By Mikołaj MagnuskiFix reading eeglab
.set
files when.chanlocs
structure does not containX
,Y
orZ
fields by Mikołaj MagnuskiFix bug with
mne.simulation.simulate_raw()
wheninterp != 'zero'
by Eric LarsonFix
mne.fit_dipole()
to handle sphere model rank deficiency properly by Alex GramfortRaise error in
mne.concatenate_epochs()
when concatenated epochs have conflicting event_id by Mikołaj MagnuskiFix handling of
n_components=None
inmne.preprocessing.ICA
by Richard HöchenbergerFix reading of fiducials correctly from CTF data in
mne.io.read_raw_ctf()
by Jaakko LeppakangasFix
mne.beamformer.rap_music()
to return dipoles with amplitudes in Am instead of nAm by Jaakko LeppakangasFix computation of duality gap in
mne.inverse_sparse.mxne_optim.dgap_l21
by Mathurin Massias
API#
The filtering functions
band_pass_filter
,band_stop_filter
,low_pass_filter
, andhigh_pass_filter
have been deprecated in favor ofmne.filter.filter_data()
by Eric LarsonEvokedArray
now has default valuetmin=0.
by Jaakko LeppakangasThe
ch_type
argument formne.viz.plot_trans
has been deprecated, useeeg_sensors
andmeg_sensors
instead, by Eric LarsonThe default
tmax=60.
inmne.io.Raw.plot_psd()
will change totmax=np.inf
in 0.15, by Eric LarsonBase classes
mne.io.BaseRaw
andmne.BaseEpochs
are now public to allow easier typechecking, by Daniel McCloymne.io.read_raw_edf()
now combines triggers from multiple tal channels to ‘STI 014’ by Jaakko LeppakangasThe measurement info
Info
no longer contains a potentially misleadinginfo['filename']
entry. Use class properties likemne.io.Raw.filenames
ormne.Epochs.filename
instead by Eric LarsonDefault fiducial name change from ‘nz’ to ‘nasion’ in
mne.channels.read_montage
, so that it is the same for bothmne.channels.Montage
and :class:mne.channels.DigMontage
by Leonardo BarbosaMNE’s additional files for the
fsaverage
head/brain model are now included in MNE-Python, and the now superfluousmne_root
parameter tocreate_default_subject()
has been deprecated by Christian BrodbeckAn
overwrite=False
default parameter has been added towrite_source_spaces()
to protect against accidental overwrites, by Eric LarsonThe
mne.decoding.LinearModel
class will no longer supportplot_filters
andplot_patterns
, usemne.EvokedArray
withmne.decoding.get_coef()
instead, by Jean-Remi KingMade functions
mne.time_frequency.tfr_array_multitaper()
,mne.time_frequency.tfr_array_morlet()
,mne.time_frequency.tfr_array_stockwell()
,mne.time_frequency.psd_array_multitaper()
andmne.time_frequency.psd_array_welch()
public to allow computing TFRs and PSDs on numpy arrays by Jaakko Leppakangasmne.preprocessing.ICA.fit()
now rejects data annotated bad by default. Turn off withreject_by_annotation=False
, by Jaakko Leppakangasmne.io.read_raw_egi()
now names channels with pattern ‘E<idx>’. This behavior can be changed with parameterchannel_naming
by Jaakko Leppakangasthe
name
parameter inmne.Epochs
is deprecated, by Jaakko Leppakangas
Authors#
People who contributed to this release (in alphabetical order):
Alexander Rudiuk
Alexandre Gramfort
Annalisa Pascarella
Antti Rantala
Asish Panda
Burkhard Maess
Chris Holdgraf
Christian Brodbeck
Cristóbal Moënne-Loccoz
Daniel McCloy
Denis A. Engemann
Eric Larson
Erkka Heinila
Hermann Sonntag
Jaakko Leppakangas
Jakub Kaczmarzyk
Jean-Remi King
Jon Houck
Jona Sassenhagen
Jussi Nurminen
Keith Doelling
Leonardo S. Barbosa
Lorenz Esch
Lorenzo Alfine
Luke Bloy
Mainak Jas
Marijn van Vliet
Matt Boggess
Matteo Visconti
Mikolaj Magnuski
Niklas Wilming
Paul Pasler
Richard Höchenberger
Sheraz Khan
Stefan Repplinger
Teon Brooks
Yaroslav Halchenko
Version 0.13 (2016-09-27)#
Changelog#
Add new class
AcqParserFIF
to parse Elekta/Neuromag MEG acquisition info, allowing e.g. collecting epochs according to acquisition-defined averaging categories by Jussi NurminenAdds automatic determination of FIR filter parameters
filter_length
,l_trans_bandwidth
, andh_trans_bandwidth
and addsphase
argument in e.g. inmne.io.Raw.filter()
by Eric LarsonAdds faster
n_fft='auto'
option tomne.io.Raw.apply_hilbert()
by Eric LarsonAdds new function
mne.time_frequency.csd_array
to compute the cross-spectral density of multivariate signals stored in an array, by Nick FotiAdd order params ‘selection’ and ‘position’ for
mne.viz.plot_raw()
to allow plotting of specific brain regions by Jaakko LeppakangasAdded the ability to decimate
mne.Evoked
objects withmne.Evoked.decimate()
by Eric LarsonAdd generic array-filtering function
mne.filter.filter_data()
by Eric Larsonmne.viz.plot_trans
now also shows head position indicators by Christian BrodbeckAdd label center of mass function
mne.Label.center_of_mass()
by Eric LarsonAdded
mne.viz.plot_ica_properties()
that allows plotting of independent component properties similar topop_prop
in EEGLAB. Alsomne.preprocessing.ICA
hasmne.preprocessing.ICA.plot_properties()
method now. Added by Mikołaj MagnuskiAdd second-order sections (instead of
(b, a)
form) IIR filtering for reduced numerical error by Eric LarsonAdd interactive colormap option to image plotting functions by Jaakko Leppakangas
Add support for the University of Maryland KIT system by Christian Brodbeck
Add support for *.elp and *.hsp files to the KIT2FIFF converter and
mne.channels.read_dig_montage
by Teon Brooks and Christian BrodbeckAdd option to preview events in the KIT2FIFF GUI by Christian Brodbeck
Add approximation of size of
io.Raw
,Epochs
, andEvoked
inrepr()
by Eric LarsonAdd possibility to select a subset of sensors by lasso selector to
mne.viz.plot_sensors()
andmne.viz.plot_raw()
when using order=’selection’ or order=’position’ by Jaakko LeppakangasAdd the option to plot brain surfaces and source spaces to
viz.plot_bem()
by Christian BrodbeckAdd the
--filterchpi
option to mne browse_raw, by Felix RaimundoAdd the
--no-decimate
option to mne make_scalp_surfaces to skip the high-resolution surface decimation step, by Eric LarsonAdd new class
mne.decoding.EMS
to transform epochs with the event-matched spatial filters and add ‘cv’ parameter tomne.decoding.compute_ems()
, by Jean-Remi KingAdded
mne.time_frequency.EpochsTFR
and average parameter inmne.time_frequency.tfr_morlet()
andmne.time_frequency.tfr_multitaper()
to compute time-frequency transforms on single trial epochs without averaging, by Jean-Remi King and Alex GramfortAdded
mne.decoding.TimeFrequency
to transform signals in scikit-learn pipelines, by Jean-Remi KingAdded
mne.decoding.UnsupervisedSpatialFilter
providing interface for scikit-learn decomposition algorithms to be used with MNE data, by Jean-Remi King and Asish PandaAdded support for multiclass decoding in
mne.decoding.CSP
, by Jean-Remi King and Alexandre BarachantComponents obtained from
mne.preprocessing.ICA
are now sorted by explained variance, by Mikołaj MagnuskiAdding an EEG reference channel using
mne.add_reference_channels()
will now use its digitized location from the FIFF file, if present, by Chris BaileyAdded interactivity to
mne.preprocessing.ICA.plot_components()
- passing an instance ofio.Raw
orEpochs
ininst
argument allows to open component properties by clicking on component topomaps, by Mikołaj MagnuskiAdds new function
mne.viz.plot_compare_evokeds()
to show multiple evoked time courses at a single location, or the mean over a ROI, or the GFP, automatically averaging and calculating a CI if multiple subjects are given, by Jona SassenhagenAdded
transform_into
parameter intomne.decoding.CSP
to retrieve the average power of each source or the time course of each source, by Jean-Remi KingAdded support for reading MaxShield (IAS) evoked data (e.g., from the acquisition machine) in
mne.read_evokeds()
by Eric LarsonAdded support for functional near-infrared spectroscopy (fNIRS) channels by Jaakko Leppakangas
Added
mne.io.Raw.acqparser
convenience attribute formne.AcqParserFIF
by Eric LarsonAdded example of Representational Similarity Analysis, by Jean-Remi King
BUG#
Fixed a bug where selecting epochs using hierarchical event IDs (HIDs) was and-like instead of or-like. When doing e.g.
epochs[('Auditory', 'Left')]
, previously all trials that contain'Auditory'
and'Left'
(like'Auditory/Left'
) would be selected, but now any conditions matching'Auditory'
or'Left'
will be selected (like'Auditory/Left'
,'Auditory/Right'
, and'Visual/Left'
). This is now consistent with how epoch selection was done without HID tags, e.g.epochs[['a', 'b']]
would select all epochs of type'a'
and type'b'
. By Eric LarsonFixed Infomax/Extended Infomax when the user provides an initial weights matrix by Jair Montoya Martinez
Fixed the default raw FIF writing buffer size to be 1 second instead of 10 seconds by Eric Larson
Fixed channel selection order when MEG channels do not come first in
mne.preprocessing.maxwell_filter()
by Eric LarsonFixed color ranges to correspond to the colorbar when plotting several time instances with
mne.viz.plot_evoked_topomap()
by Jaakko LeppakangasAdded units to
mne.io.read_raw_brainvision()
for reading non-data channels and enable default behavior of inferring channel type by unit by Jaakko Leppakangas and Pablo-AriasFixed minor bugs with
mne.Epochs.resample()
andmne.Epochs.decimate()
by Eric LarsonFixed a bug where duplicate vertices were not strictly checked by
mne.simulation.simulate_stc()
by Eric LarsonFixed a bug where some FIF files could not be read with
mne.io.show_fiff()
by Christian Brodbeck and Eric LarsonFixed a bug where
merge_grads=True
causesmne.viz.plot_evoked_topo()
to fail when plotting a list of evokeds by Jaakko LeppakangasFixed a bug when setting multiple bipolar references with
set_bipolar_reference()
by Marijn van Vliet.Fixed image scaling in
mne.viz.plot_epochs_image()
when plotting more than one channel by Jaakko LeppakangasFixed
mne.preprocessing.Xdawn
to fit shuffled epochs by Jean-Remi KingFixed a bug with channel order determination that could lead to an
AssertionError
when usingmne.Covariance
matrices by Eric LarsonFixed the check for CTF gradient compensation in
mne.preprocessing.maxwell_filter()
by Eric LarsonFixed the import of EDF files with encoding characters in
mne.io.read_raw_edf()
by Guillaume DumasFixed
mne.Epochs
to ensure that detrend parameter is not a boolean by Jean-Remi KingFixed bug with
mne.realtime.FieldTripClient.get_data_as_epoch
whenpicks=None
which crashed the function by Mainak JasFixed reading of units in
.elc
montage files (fromUnitsPosition
field) so thatmne.channels.Montage
objects are now returned with thepos
attribute correctly in meters, by Chris MullinsFixed reading of BrainVision files by Phillip Alday:
Greater support for BVA files, especially older ones: alternate text coding schemes with fallback to Latin-1 as well as units in column headers
Use online software filter information when present
Fix comparisons of filter settings for determining “strictest”/”weakest” filter
Weakest filter is now used for heterogeneous channel filter settings, leading to more consistent behavior with filtering methods applied to a subset of channels (e.g.
Raw.filter
withpicks != None
).Fixed plotting and timing of
Annotations
and restricted addition of annotations outside data range to prevent problems with cropping and concatenating data by Jaakko LeppakangasFixed ICA plotting functions to refer to IC index instead of component number by Andreas Hojlund and Jaakko Leppakangas
Fixed bug with
picks
when interpolating MEG channels by Mainak Jas.Fixed bug in padding of Stockwell transform for signal of length a power of 2 by Johannes Niediek
API#
The
add_eeg_ref
argument in core functions likemne.io.read_raw_fif()
andmne.Epochs
has been deprecated in favor of usingmne.set_eeg_reference()
and equivalent instance methods likeraw.set_eeg_reference()
. In functions likemne.io.read_raw_fif()
where the default in 0.13 and older versions isadd_eeg_ref=True
, the default will change toadd_eeg_ref=False
in 0.14, and the argument will be removed in 0.15.Multiple aspects of FIR filtering in MNE-Python has been refactored:
New recommended defaults for
l_trans_bandwidth='auto'
,h_trans_bandwidth='auto'
, andfilter_length='auto'
. This should generally reduce filter artifacts at the expense of slight decrease in effective filter stop-band attenuation. For details see Defaults in MNE-Python. The default values ofl_trans_bandwidth=h_trans_bandwidth=0.5
andfilter_length='10s'
will change to'auto'
in 0.14.The
filter_length=None
option (i.e. uselen(x)
) has been deprecated.An improved
phase='zero'
zero-phase FIR filtering has been added. Instead of running the designed filter forward and backward, the filter is applied once and we compensate for the linear phase of the filter. The previousphase='zero-double'
default will change tophase='zero'
in 0.14.A warning is provided when the filter is longer than the signal of interest, as this is unlikely to produce desired results.
Previously, if the filter was as long or longer than the signal of interest, direct FFT-based computations were used. Now a single code path (overlap-add filtering) is used for all FIR filters. This could cause minor changes in how short signals are filtered.
Support for Python 2.6 has been dropped, and the minimum supported dependencies are NumPy 1.8, SciPy 0.12, and Matplotlib 1.3 by Eric Larson
When CTF gradient compensation is applied to raw data, it is no longer reverted on save of
mne.io.Raw.save()
by Eric LarsonAdds
mne.time_frequency.csd_epochs
to replacemne.time_frequency.csd_compute_epochs
for naming consistency.mne.time_frequency.csd_compute_epochs
is now deprecated and will be removed in mne 0.14, by Nick FotiWeighted addition and subtraction of
Evoked
asev1 + ev2
andev1 - ev2
have been deprecated, use explicitmne.combine_evoked(..., weights='nave')
instead by Eric LarsonDeprecated support for passing a list of filenames to
mne.io.Raw
constructor, usemne.io.read_raw_fif()
andmne.concatenate_raws()
instead by Eric LarsonAdded options for setting data and date formats manually in
mne.io.read_raw_cnt()
by Jaakko LeppakangasNow channels with units of ‘C’, ‘µS’, ‘uS’, ‘ARU’ and ‘S’ will be turned to misc by default in
mne.io.read_raw_brainvision()
by Jaakko LeppakangasAdd
mne.io.anonymize_info()
function to anonymize measurements and add methods tomne.io.Raw
,mne.Epochs
andmne.Evoked
, by Jean-Remi KingNow it is possible to plot only a subselection of channels in
mne.viz.plot_raw()
by using an array for order parameter by Jaakko LeppakangasEOG channels can now be included when calling
mne.preprocessing.ICA.fit()
and a proper error is raised when trying to include unsupported channels by Alexander Rudiukmne.concatenate_epochs()
andmne.compute_covariance()
now check to see if allEpochs
instances have the same MEG-to-Head transformation, and errors by default if they do not by Eric LarsonAdded option to pass a list of axes to
mne.viz.plot_epochs_image()
by Mikołaj MagnuskiConstructing IIR filters in
mne.filter.construct_iir_filter()
defaults tooutput='ba'
in 0.13 but this will be changed tooutput='sos'
by Eric LarsonAdd
zorder
parameter tomne.Evoked.plot()
and derived functions to sort allow sorting channels by e.g. standard deviation, by Jona SassenhagenThe
baseline
parameter ofmne.Epochs.apply_baseline()
is set by default (None, 0), by Felix RaimundoAdds
mne.Evoked.apply_baseline()
to be consistent withmne.Epochs.apply_baseline()
, by Felix RaimundoDeprecated the
baseline
parameter inmne.Evoked
, by Felix RaimundoThe API of
mne.SourceEstimate.plot()
andmne.viz.plot_source_estimates()
has been updated to reflect current PySurfer 0.6 API. Theconfig_opts
parameter is now deprecated and will be removed in mne 0.14, and the default representation for time will change fromms
tos
in mne 0.14. By Christian BrodbeckThe default dataset location has been changed from
examples/
in the MNE-Python root directory to~/mne_data
in the user’s home directory, by Eric LarsonA new option
set_env
has been added tomne.set_config()
that defaults toFalse
in 0.13 but will change toTrue
in 0.14, by Eric LarsonThe
compensation
parameter inmne.io.read_raw_fif()
has been deprecated in favor of the methodmne.io.Raw.apply_gradient_compensation()
by Eric Larsonmne.decoding.EpochsVectorizer
has been deprecated in favor ofmne.decoding.Vectorizer
by Asish PandaThe
epochs_data
parameter has been deprecated inmne.decoding.CSP
, in favour of theX
parameter to comply to scikit-learn API, by Jean-Remi KingDeprecated
mne.time_frequency.cwt_morlet
andmne.time_frequency.single_trial_power
in favour ofmne.time_frequency.tfr_morlet()
with parameter average=False, by Jean-Remi King and Alex GramfortAdd argument
mask_type
to func:mne.read_events
and func:mne.find_events
to support MNE-C style of trigger masking by Teon Brooks and Eric LarsonExtended Infomax is now the new default in
mne.preprocessing.infomax()
(extended=True
), by Clemens Brunnermne.io.read_raw_eeglab()
andmne.read_epochs_eeglab()
now take additional argumentuint16_codec
that allows to define the encoding of character arrays in set file. This helps in rare cases when reading a set file fails withTypeError: buffer is too small for requested array
. By Mikołaj MagnuskiAdded
mne.decoding.TemporalFilter
to filter data in scikit-learn pipelines, by Asish Pandamne.preprocessing.create_ecg_epochs()
now includes all the channels whenpicks=None
by Jaakko Leppakangasmne.set_eeg_reference()
now allows moving from a custom to an average EEG reference by Marijn van Vliet
Authors#
The committer list for this release is the following (sorted by alphabetical order):
Alexander Rudiuk
Alexandre Barachant
Alexandre Gramfort
Asish Panda
Camilo Lamus
Chris Holdgraf
Christian Brodbeck
Christopher J. Bailey
Christopher Mullins
Clemens Brunner
Denis A. Engemann
Eric Larson
Federico Raimondo
Félix Raimundo
Guillaume Dumas
Jaakko Leppakangas
Jair Montoya
Jean-Remi King
Johannes Niediek
Jona Sassenhagen
Jussi Nurminen
Keith Doelling
Mainak Jas
Marijn van Vliet
Michael Krause
Mikolaj Magnuski
Nick Foti
Phillip Alday
Simon-Shlomo Poil
Teon Brooks
Yaroslav Halchenko
Version 0.12 (2016-05-10)#
Changelog#
Add
overlay_times
parameter tomne.viz.plot_epochs_image()
to be able to display for example reaction times on top of the images, by Alex GramfortAnimation for evoked topomap in
mne.Evoked.animate_topomap()
by Jaakko LeppakangasMake
mne.channels.find_layout()
more robust for KIT systems in the presence of bad or missing channels by Jaakko LeppakangasAdd raw movement compensation to
mne.preprocessing.maxwell_filter()
by Eric LarsonAdd
mne.Annotations
for for annotating segments of raw data by Jaakko LeppakangasAdd reading of .fif file montages by Eric Larson
Add system config utility
mne.sys_info()
by Eric LarsonAutomatic cross-validation and scoring metrics in
mne.decoding.GeneralizationAcrossTime
, by Jean-Remi Kingmne.decoding.GeneralizationAcrossTime
accepts non-deterministic cross-validations, by Jean-Remi KingAdd plotting RMS of gradiometer pairs in
mne.viz.plot_evoked_topo()
by Jaakko LeppakangasAdd regularization methods to
mne.compute_raw_covariance()
by Eric Larson.Add command
mne show_info
to quickly show the measurement info from a .fif file from the terminal by Alex Gramfort.Add creating forward operator for dipole object
mne.make_forward_dipole()
by Chris BaileyAdd reading and estimation of fixed-position dipole time courses (similar to Elekta
xfit
) usingmne.read_dipole()
andmne.fit_dipole()
by Eric Larson.Accept
mne.decoding.GeneralizationAcrossTime
’sscorer
parameter to be a string that refers to a scikit-learn metric scorer by Asish Panda.Add method
mne.Epochs.plot_image()
callingmne.viz.plot_epochs_image()
for better usability by Asish Panda.Add
mne.io.read_raw_cnt()
for reading Neuroscan CNT files by Jaakko LeppakangasAdd
decim
parameter tomne.time_frequency.cwt_morlet
, by Jean-Remi KingAdd method
mne.Epochs.plot_topo_image()
by Jaakko LeppakangasAdd the ability to read events when importing raw EEGLAB files, by Jona Sassenhagen.
Add function
mne.viz.plot_sensors()
and methodsmne.Epochs.plot_sensors()
,mne.io.Raw.plot_sensors()
andmne.Evoked.plot_sensors()
for plotting sensor positions andmne.viz.plot_layout()
andmne.channels.Layout.plot()
for plotting layouts by Jaakko LeppakangasAdd epoch rejection based on annotated segments by Jaakko Leppakangas
Add option to use new-style MEG channel names in
mne.read_selection
by Eric LarsonAdd option for
proj
inmne.EpochsArray
by Eric LarsonEnable the usage of
mne.viz.plot_topomap()
with anmne.Info
instance for location information, by Jona Sassenhagen.Add support for electrocorticography (ECoG) channel type by Eric Larson
Add option for
first_samp
inmne.make_fixed_length_events()
by Jon HouckAdd ability to auto-scale channel types for
mne.viz.plot_raw()
andmne.viz.plot_epochs()
and corresponding object plotting methods by Chris Holdgraf
BUG#
mne.time_frequency.compute_raw_psd
,mne.time_frequency.compute_epochs_psd
,mne.time_frequency.psd_multitaper
, andmne.time_frequency.psd_welch
no longer remove rows/columns of the SSP matrix before applying SSP projectors when picks are provided by Chris Holdgraf.mne.Epochs.plot_psd()
no longer calls a Welch PSD, and instead uses a Multitaper method which is more appropriate for epochs. Flags for this function are passed tomne.time_frequency.psd_multitaper
by Chris HoldgrafTime-cropping functions (e.g.,
mne.Epochs.crop()
,mne.Evoked.crop()
,mne.io.Raw.crop()
,mne.SourceEstimate.crop()
) made consistent with behavior oftmin
andtmax
ofmne.Epochs
, where nearest sample is kept. For example, for MGH data acquired withsfreq=600.614990234
, constructingEpochs(..., tmin=-1, tmax=1)
has bounds+/-1.00064103
, and nowepochs.crop(-1, 1)
will also have these bounds (previously they would have been+/-0.99897607
). Time cropping functions also no longer use relative tolerances when determining the boundaries. These changes have minor effects on functions that use cropping under the hood, such asmne.compute_covariance()
andmne.connectivity.spectral_connectivity
. Changes by Jaakko Leppakangas and Eric LarsonFix EEG spherical spline interpolation code to account for average reference by Mainak Jas
MEG projectors are removed after Maxwell filtering by Eric Larson
Fix
mne.decoding.TimeDecoding
to allow specifyingclf
by Jean-Remi KingFix bug with units (uV) in ‘Brain Vision Data Exchange Header File Version 1.0’ by Federico Raimondo
Fix bug where
mne.preprocessing.maxwell_filter()
destination
parameter did not properly set device-to-head transform by Eric LarsonFix bug in rank calculation of
mne.utils.estimate_rank
,mne.io.Raw.estimate_rank
, and covariance functions where the tolerance was set to slightly too small a value, new ‘auto’ mode uses values fromscipy.linalg.orth
by Eric Larson.Fix bug when specifying irregular
train_times['slices']
inmne.decoding.GeneralizationAcrossTime
, by Jean-Remi KingFix colorbar range on norm data by Jaakko Leppakangas
Fix bug in
mne.preprocessing.run_ica
, which used theecg_criterion
parameter for the EOG criterion instead ofeog_criterion
by Christian BrodbeckFix normals in CTF data reader by Eric Larson
Fix bug in
mne.io.read_raw_ctf()
, when omitting samples at the end by Jaakko LeppakangasFix
info['lowpass']
value for downsampled raw data by Eric LarsonRemove measurement date from
mne.Info
inmne.io.Raw.anonymize()
by Eric LarsonFix bug that caused synthetic ecg channel creation even if channel was specified for ECG peak detection in
mne.preprocessing.create_ecg_epochs()
by Jaakko LeppakangasFix bug with vmin and vmax when None is passed in
mne.viz.plot_topo_image_epochs()
by Jaakko LeppakangasFix bug with
mne.label_sign_flip()
(andmne.extract_label_time_course()
) by Natalie Klein and Eric LarsonAdd copy parameter in
mne.Epochs.apply_baseline()
andmne.io.Raw.filter()
methods by Jona Sassenhagen and Alex GramfortFix bug in
mne.merge_events()
when usingreplace_events=False
by Alex GramfortFix bug in
mne.Evoked
type setting inmne.stats.linear_regression_raw()
by Eric LarsonFix bug in
mne.io.edf.RawEDF
highpass filter setting to take max highpass to match warning message by Teon BrooksFix bugs with coordinane frame adjustments in
mne.viz.plot_trans
by Eric LarsonFix bug in colormap selection in
mne.Evoked.plot_projs_topomap()
by Jaakko LeppakangasFix bug in source normal adjustment that occurred when 1) patch information is available (e.g., when distances have been calculated) and 2) points are excluded from the source space (by inner skull distance) by Eric Larson
Fix bug when merging info that has a field with list of dicts by Jaakko Leppakangas
The BTi/4D reader now considers user defined channel labels instead of the hard-ware names, however only for channels other than MEG. By Denis Engemann and Alex Gramfort.
The BTi reader
mne.io.read_raw_bti()
can now read 2500 system data, by Eric LarsonFix bug in
mne.compute_raw_covariance()
where rejection by non-data channels (e.g. EOG) was not done properly by Eric Larson.Change default scoring method of
mne.decoding.GeneralizationAcrossTime
andmne.decoding.TimeDecoding
to estimate the scores within the cross-validation as in scikit-learn as opposed to across all cross-validatedy_pred
. The method can be changed with thescore_mode
parameter by Jean-Remi KingFix bug in
mne.io.Raw.save()
where, in rare cases, automatically split files could end up writing an extra empty file that wouldn’t be read properly by Eric LarsonFix :class:
mne.realtime.StimServer
by removing superfluous argumentip
used while initializing the object by Mainak Jas.Fix removal of projectors in
mne.preprocessing.maxwell_filter()
inst_only=True
mode by Eric Larson
API#
The default
picks=None
inmne.viz.plot_epochs_image()
now only plots the first 5 channels, not all channels, by Jona SassenhagenThe
mesh_color
parameter inmne.viz.plot_dipole_locations()
has been removed (usebrain_color
instead), by Marijn van VlietDeprecated functions
mne.time_frequency.compute_raw_psd
andmne.time_frequency.compute_epochs_psd
, replaced bymne.time_frequency.psd_welch
by Chris HoldgrafDeprecated function
mne.time_frequency.multitaper_psd
and replaced bymne.time_frequency.psd_multitaper
by Chris HoldgrafThe
y_pred
attribute inmne.decoding.GeneralizationAcrossTime
andmne.decoding.TimeDecoding
is now a numpy array, by Jean-Remi KingThe
mne.bem.fit_sphere_to_headshape()
function now default todig_kinds='auto'
which will use extra digitization points, falling back to extra plus eeg digitization points if there not enough extra points are available.The
mne.bem.fit_sphere_to_headshape()
now has aunits
argument that should be set explicitly. This will default tounits='mm'
in 0.12 for backward compatibility but change tounits='m'
in 0.13.Added default parameters in Epochs class namely
event_id=None
,tmin=-0.2
andtmax=0.5
.To unify and extend the behavior of
mne.compute_raw_covariance()
relative tomne.compute_covariance()
, the default parametertstep=0.2
now discards any epochs at the end of themne.io.Raw
instance that are not the fulltstep
duration. This will slightly change the computation ofmne.compute_raw_covariance()
, but should only potentially have a big impact if themne.io.Raw
instance is short relative totstep
and the last, too short (now discarded) epoch contained data inconsistent with the epochs that preceded it.The default
picks=None
inmne.io.Raw.filter()
now picks eeg, meg, seeg, and ecog channels, by Jean-Remi King and Eric LarsonEOG, ECG and EMG channels are now plotted by default (if present in data) when using
mne.viz.plot_evoked()
by Marijn van VlietReplace pseudoinverse-based solver with much faster Cholesky solver in
mne.stats.linear_regression_raw()
, by Jona Sassenhagen.CTF data reader now reads EEG locations from .pos file as HPI points by Jaakko Leppakangas
Subselecting channels can now emit a warning if many channels have been subselected from projection vectors. We recommend only computing projection vertors for and applying projectors to channels that will be used in the final analysis. However, after picking a subset of channels, projection vectors can be renormalized with
mne.Info.normalize_proj()
if necessary to avoid warnings about subselection. Changes by Eric Larson and Alex Gramfort.Rename and deprecate
mne.Epochs.drop_bad_epochs
tomne.Epochs.drop_bad()
, andmne.Epochs.drop_epochs
tomne.Epochs.drop()
by Alex Gramfort.The C wrapper
mne.do_forward_solution
has been deprecated in favor of the native Python versionmne.make_forward_solution()
by Eric LarsonThe
events
parameter ofmne.EpochsArray()
is set by default to chronological time-samples and event values to 1, by Jean-Remi King
Authors#
The committer list for this release is the following (preceded by number of commits):
348 Eric Larson
347 Jaakko Leppakangas
157 Alexandre Gramfort
139 Jona Sassenhagen
67 Jean-Remi King
32 Chris Holdgraf
31 Denis A. Engemann
30 Mainak Jas
16 Christopher J. Bailey
13 Marijn van Vliet
10 Mark Wronkiewicz
9 Teon Brooks
9 kaichogami
8 Clément Moutard
5 Camilo Lamus
5 mmagnuski
4 Christian Brodbeck
4 Daniel McCloy
4 Yousra Bekhti
3 Fede Raimondo
1 Jussi Nurminen
1 MartinBaBer
1 Mikolaj Magnuski
1 Natalie Klein
1 Niklas Wilming
1 Richard Höchenberger
1 Sagun Pai
1 Sourav Singh
1 Tom Dupré la Tour
1 jona-sassenhagen@
1 kambysese
1 pbnsilva
1 sviter
1 zuxfoucault
Version 0.11 (2015-12-24)#
Changelog#
Maxwell filtering (SSS) implemented in
mne.preprocessing.maxwell_filter()
by Mark Wronkiewicz as part of Google Summer of Code, with help from Samu Taulu, Jukka Nenonen, and Jussi Nurminen. Our implementation includes support for:Fine calibration
Cross-talk correction
Temporal SSS (tSSS)
Head position translation
Internal component regularization
Compensation for movements using Maxwell filtering on epoched data in
mne.epochs.average_movements()
by Eric Larson and Samu TauluAdd reader for Nicolet files in
mne.io.read_raw_nicolet()
by Jaakko LeppakangasAdd FIFF persistence for ICA labels by Denis Engemann
Display ICA labels in
mne.viz.plot_ica_scores()
andmne.viz.plot_ica_sources()
(for evoked objects) by Denis EngemannPlot spatially color coded lines in
mne.Evoked.plot()
by Jona Sassenhagen and Jaakko LeppakangasAdd reader for CTF data in
mne.io.read_raw_ctf()
by Eric LarsonAdd support for Brainvision v2 in
mne.io.read_raw_brainvision()
by Teon BrooksImprove speed of generalization across time
mne.decoding.GeneralizationAcrossTime
decoding up to a factor of seven by Jean-Remi King and Federico Raimondo and Denis Engemann.Add the explained variance for each principal component,
explained_var
, key to themne.Projection
by Teon BrooksAdded methods
mne.Epochs.add_eeg_average_proj
,mne.io.Raw.add_eeg_average_proj
, andmne.Evoked.add_eeg_average_proj
to add an average EEG reference.Add reader for EEGLAB data in
mne.io.read_raw_eeglab()
andmne.read_epochs_eeglab()
by Mainak Jas
BUG#
Fix bug that prevented homogeneous bem surfaces to be displayed in HTML reports by Denis Engemann
Added safeguards against
None
and negative values in reject and flat parameters inmne.Epochs
by Eric LarsonFix train and test time window-length in
mne.decoding.GeneralizationAcrossTime
by Jean-Remi KingAdded lower bound in
mne.stats.linear_regression()
on p-valuesp_val
(and resultingmlog10_p_val
) using double floating point arithmetic limits by Eric LarsonFix channel name pick in
mne.Evoked.get_peak()
method by Alex GramfortFix drop percentages to take into account
ignore
option inmne.viz.plot_drop_log()
andmne.Epochs.plot_drop_log()
by Eric Larson.mne.EpochsArray
no longer has an average EEG reference silently added (but not applied to the data) by default. Usemne.EpochsArray.add_eeg_ref
to properly add one.Fix
mne.io.read_raw_ctf()
to readn_samp_tot
instead ofn_samp
by Jaakko Leppakangas
API#
mne.io.read_raw_brainvision()
now hasevent_id
argument to assign non-standard trigger events to a trigger value by Teon Brooksmne.read_epochs()
now hasadd_eeg_ref=False
by default, since average EEG reference can be added before writing or after reading using the methodmne.Epochs.add_eeg_ref
.mne.EpochsArray
no longer has an average EEG reference silently added (but not applied to the data) by default. Usemne.EpochsArray.add_eeg_average_proj
to properly add one.
Authors#
The committer list for this release is the following (preceded by number of commits):
171 Eric Larson
117 Jaakko Leppakangas
58 Jona Sassenhagen
52 Mainak Jas
46 Alexandre Gramfort
33 Denis A. Engemann
28 Teon Brooks
24 Clemens Brunner
23 Christian Brodbeck
15 Mark Wronkiewicz
10 Jean-Remi King
5 Marijn van Vliet
3 Fede Raimondo
2 Alexander Rudiuk
2 emilyps14
2 lennyvarghese
1 Marian Dovgialo
Version 0.10 (2015-10-26)#
Changelog#
Add support for generalized M-way repeated measures ANOVA for fully balanced designs with
mne.stats.f_mway_rm()
by Denis EngemannAdd epochs browser to interactively view and manipulate epochs with
mne.viz.plot_epochs()
by Jaakko LeppakangasSpeed up TF-MxNE inverse solver with block coordinate descent by Daniel Strohmeier and Yousra Bekhti
Speed up zero-phase overlap-add (default) filtering by a factor of up to 2 using linearity by Ross Maddox and Eric Larson
Add support for scaling and adjusting the number of channels/time per view by Jaakko Leppakangas
Add support to toggle the show/hide state of all sections with a single keypress (‘t’) in
mne.Report
by Mainak JasAdd support for BEM model creation
mne.make_bem_model()
by Eric LarsonAdd support for BEM solution computation
mne.make_bem_solution()
by Eric LarsonAdd ICA plotters for raw and epoch components by Jaakko Leppakangas
Add new object
mne.decoding.TimeDecoding
for decoding sensors’ evoked response across time by Jean-Remi KingAdd command
mne freeview_bem_surfaces
to quickly check BEM surfaces with Freeview by Alex Gramfort.Add support for splitting epochs into multiple files in
mne.Epochs.save()
by Mainak Jas and Alex GramfortAdd support for jointly resampling a raw object and event matrix to avoid issues with resampling status channels by Marijn van Vliet
Add new method
mne.preprocessing.Xdawn
for denoising and decoding of ERP/ERF by Alexandre BarachantAdd support for plotting patterns/filters in
mne.decoding.CSP
andmne.decoding.LinearModel
by Romain TrachelAdd new object
mne.decoding.LinearModel
for decoding M/EEG data and interpreting coefficients of linear models with patterns attribute by Romain Trachel and Alex GramfortAdd support to append new channels to an object from a list of other objects by Chris Holdgraf
Add interactive plotting of topomap from time-frequency representation by Jaakko Leppakangas
Add
plot_topo
method toEvoked
object by Jaakko LeppakangasAdd fetcher
mne.datasets.brainstorm
for datasets used by Brainstorm in their tutorials by Mainak JasAdd interactive plotting of single trials by right clicking on channel name in epochs browser by Jaakko Leppakangas
New logos and logo generation script by Daniel McCloy
Add ability to plot topomap with a “skirt” (channels outside of the head circle) by Marijn van Vliet
Add multiple options to ICA infomax and extended infomax algorithms (number of subgaussian components, computation of bias, iteration status printing), enabling equivalent computations to those performed by EEGLAB by Jair Montoya Martinez
Add
mne.Epochs.apply_baseline()
method toEpochs
objects by Teon BrooksAdd
preload
argument tomne.read_epochs()
to enable on-demand reads from disk by Eric LarsonBig rewrite of simulation module by Yousra Bekhti, Mark Wronkiewicz, Eric Larson and Alex Gramfort. Allows to simulate raw with artifacts (ECG, EOG) and evoked data, exploiting the forward solution. See
mne.simulation.simulate_raw()
,mne.simulation.simulate_evoked()
andmne.simulation.simulate_sparse_stc()
Add
mne.Epochs.load_data()
method tomne.Epochs
by Teon BrooksAdd support for drawing topomaps by selecting an area in
mne.Evoked.plot()
by Jaakko LeppakangasAdd support for finding peaks in evoked data in
mne.Evoked.plot_topomap()
by Jona Sassenhagen and Jaakko LeppakangasAdd source space morphing in
morph_source_spaces()
andSourceEstimate.to_original_src()
by Eric Larson and Denis EngemannAdapt
corrmap
function (Viola et al. 2009) to semi-automatically detect similar ICs across data sets by Jona Sassenhagen and Denis Engemann and Eric LarsonClarify docstring for
mne.preprocessing.ICA
by jeythekeyNew
mne flash_bem
command to compute BEM surfaces from Flash MRI images by Lorenzo Desantis, Alex Gramfort and Eric Larson. Seemne.bem.make_flash_bem()
.New gfp parameter in
mne.Evoked.plot()
method to display Global Field Power (GFP) by Eric Larson.Add
mne.Report.add_slider_to_section
methods tomne.Report
by Teon Brooks
BUG#
Fix
mne.io.add_reference_channels
not settinginfo[nchan]
correctly by Federico RaimondoFix
mne.stats.bonferroni_correction
reject mask output to use corrected p-values by Denis EngemannFix FFT filter artifacts when using short windows in overlap-add by Eric Larson
Fix picking channels from forward operator could return a channel ordering different from
info['chs']
by Chris BaileyFix dropping of events after downsampling stim channels by Marijn van Vliet
Fix scaling in :func:
mne.viz.utils._setup_vmin_vmax
by Jaakko LeppakangasFix order of component selection in
mne.decoding.CSP
by Clemens Brunner
API#
Rename and deprecate
mne.viz.plot_topo
formne.viz.plot_evoked_topo
by Jaakko LeppakangasDeprecated
mne.decoding.transformer.ConcatenateChannels
and replaced bymne.decoding.EpochsVectorizer
by Romain TrachelDeprecated
lws
and renamedledoit_wolf
for thereg
argument inmne.decoding.CSP
by Romain TrachelRedesigned and rewrote
mne.Epochs.plot()
(no backwards compatibility) during the GSOC 2015 by Jaakko Leppakangas, Mainak Jas, Federico Raimondo and Denis EngemannDeprecated and renamed
mne.viz.plot_image_epochs
formne.plot.plot_epochs_image
by Teon Brookspicks
argument has been added tomne.time_frequency.tfr_morlet()
,mne.time_frequency.tfr_multitaper()
by Teon Brooksmne.io.Raw.preload_data
has been deprecated formne.io.Raw.load_data()
by Teon BrooksRawBrainVision
objects now always have event channel'STI 014'
, and recordings with no events will have this channel set to zero by Eric Larson
Authors#
The committer list for this release is the following (preceded by number of commits):
273 Eric Larson
270 Jaakko Leppakangas
194 Alexandre Gramfort
128 Denis A. Engemann
114 Jona Sassenhagen
107 Mark Wronkiewicz
97 Teon Brooks
81 Lorenzo De Santis
55 Yousra Bekhti
54 Jean-Remi King
48 Romain Trachel
45 Mainak Jas
40 Alexandre Barachant
32 Marijn van Vliet
26 Jair Montoya
22 Chris Holdgraf
16 Christopher J. Bailey
7 Christian Brodbeck
5 Natalie Klein
5 Fede Raimondo
5 Alan Leggitt
5 Roan LaPlante
5 Ross Maddox
4 Dan G. Wakeman
3 Daniel McCloy
3 Daniel Strohmeier
1 Jussi Nurminen
Version 0.9 (2015-05-22)#
Changelog#
Add support for mayavi figures in
add_section
method in Report by Mainak JasAdd extract volumes of interest from freesurfer segmentation and setup as volume source space by Alan Leggitt
Add support to combine source spaces of different types by Alan Leggitt
Add support for source estimate for mixed source spaces by Alan Leggitt
Add
SourceSpaces.save_as_volume
method by Alan LeggittAutomatically compute proper box sizes when generating layouts on the fly by Marijn van Vliet
Average evoked topographies across time points by Denis Engemann
Add option to Report class to save images as vector graphics (SVG) by Denis Engemann
Add events count to
mne.viz.plot_events
by Denis EngemannAdd support for stereotactic EEG (sEEG) channel type by Marmaduke Woodman
Add support for montage files by Denis Engemann, Marijn van Vliet, Jona Sassenhagen, Alex Gramfort and Teon Brooks
Add support for spatiotemporal permutation clustering on sensors by Denis Engemann
Add support for multitaper time-frequency analysis by Hari Bharadwaj
Add Stockwell (S) transform for time-frequency representations by Denis Engemann and Alex Gramfort
Add reading and writing support for time frequency data (AverageTFR objects) by Denis Engemann
Add reading and writing support for digitizer data, and function for adding dig points to info by Teon Brooks
Add
plot_projs_topomap
method toRaw
,Epochs
andEvoked
objects by Teon BrooksAdd EEG (based on spherical splines) and MEG (based on field interpolation) bad channel interpolation method to
Raw
,Epochs
andEvoked
objects by Denis Engemann and Mainak JasAdd parameter to
whiten_evoked
,compute_whitener
andprepare_noise_cov
to set the exact rank by Martin Luessi and Denis EngemannAdd fiff I/O for processing history and MaxFilter info by Denis Engemann and Eric Larson
Add automated regularization with support for multiple sensor types to
compute_covariance
by Denis Engemann and Alex GramfortAdd
Evoked.plot_white
method to diagnose the quality of the estimated noise covariance and its impact on spatial whitening by Denis Engemann and Alex GramfortAdd
mne.evoked.grand_average
function to compute grand average of Evoked data while interpolating bad EEG channels if necessary by Mads Jensen and Alex GramfortImprove EEG referencing support and add support for bipolar referencing by Marijn van Vliet and Alex Gramfort
Enable TFR calculation on Evoked objects by Eric Larson
Add support for combining Evoked datasets with arbitrary weights (e.g., for oddball paradigms) by Eric Larson and Alex Gramfort
Add support for concatenating a list of Epochs objects by Denis Engemann
Labels support subtraction (
label_1 - label_2
) by Christian BrodbeckAdd GeneralizationAcrossTime object with support for cross-condition generalization by Jean-Remi King and Denis Engemann
Add support for single dipole fitting by Eric Larson
Add support for spherical models in forward calculations by Eric Larson
Add support for SNR estimation by Eric Larson
Add support for Savitsky-Golay filtering of Evoked and Epochs by Eric Larson
Add support for adding an empty reference channel to data by Teon Brooks
Add reader function
mne.io.read_raw_fif
for Raw FIF files by Teon BrooksAdd example of creating MNE objects from arbitrary data and NEO files by Jaakko Leppakangas
Add
plot_psd
andplot_psd_topomap
methods to epochs by Yousra Bekhti, Eric Larson and Denis Engemannevoked.pick_types
,epochs.pick_types
, andtfr.pick_types
added by Eric Larsonrename_channels
andset_channel_types
added as methods toRaw
,Epochs
andEvoked
objects by Teon BrooksAdd RAP-MUSIC inverse method by Yousra Bekhti and Alex Gramfort
Add
evoked.as_type
to allow remapping data in MEG channels to virtual magnetometer or gradiometer channels by Mainak JasAdd
mne.Report.add_bem_to_section
,mne.Report.add_htmls_to_section
methods tomne.Report
by Teon BrooksAdd support for KIT epochs files with
read_epochs_kit
by Teon BrooksAdd whitening plots for evokeds to
mne.Report
by Mainak JasAdd
DigMontage
class and reader to interface with digitization info by Teon Brooks and Christian BrodbeckAdd
set_montage
method to theRaw
,Epochs
, andEvoked
objects by Teon Brooks and Denis EngemannAdd support for capturing sensor positions when clicking on an image by Chris Holdgraf
Add support for custom sensor positions when creating Layout objects by Chris Holdgraf
BUG#
Fix energy conservation for STFT with tight frames by Daniel Strohmeier
Fix incorrect data matrix when tfr was plotted with parameters
tmin
,tmax
,fmin
andfmax
by Mainak JasFix channel names in topomaps by Alex Gramfort
Fix mapping of
l_trans_bandwidth
(to low frequency) andh_trans_bandwidth
(to high frequency) in_BaseRaw.filter
by Denis EngemannFix scaling source spaces when distances have to be recomputed by Christian Brodbeck
Fix repeated samples in client to FieldTrip buffer by Mainak Jas and Federico Raimondo
Fix highpass and lowpass units read from Brainvision vhdr files by Alex Gramfort
Add missing attributes for BrainVision and KIT systems needed for resample by Teon Brooks
Fix file extensions of SSP projection files written by mne commands (from _proj.fif to -prof.fif) by Alex Gramfort
Generating EEG layouts no longer requires digitization points by Marijn van Vliet
Add missing attributes to BTI, KIT, and BrainVision by Eric Larson
The API change to the edf, brainvision, and egi break backwards compatibility for when importing eeg data by Teon Brooks
Fix bug in
mne.viz.plot_topo
if ylim was passed for single sensor layouts by Denis EngemannAverage reference projections will no longer by automatically added after applying a custom EEG reference by Marijn van Vliet
Fix picks argument to filter in n dimensions (affects FilterEstimator), and highpass filter in FilterEstimator by Mainak Jas
Fix beamformer code LCMV/DICS for CTF data with reference channels by Denis Engemann and Alex Gramfort
Fix scalings for bad EEG channels in
mne.viz.plot_topo
by Marijn van VlietFix EGI reading when no events are present by Federico Raimondo
Add functionality to determine plot limits automatically or by data percentiles by Mark Wronkiewicz
Fix bug in mne.io.edf where the channel offsets were omitted in the voltage calculations by Teon Brooks
Decouple section ordering in command-line from python interface for mne-report by Mainak Jas
Fix bug with ICA resetting by Denis Engemann
API#
apply_inverse functions have a new boolean parameter
prepared
which saves computation time by callingprepare_inverse_operator
only if it is Falsefind_events and read_events functions have a new parameter
mask
to set some bits to a don’t care state by Teon BrooksNew channels module including layouts, electrode montages, and neighbor definitions of sensors which deprecates
mne.layouts
by Denis Engemannread_raw_brainvision
,read_raw_edf
,read_raw_egi
all use a standard montage import by Teon BrooksFix missing calibration factors for
mne.io.egi.read_raw_egi
by Denis Engemann and Federico RaimondoAllow multiple filename patterns as a list (e.g., *raw.fif and *-eve.fif) to be parsed by mne report in
Report.parse_folder()
by Mainak Jasread_hsp
,read_elp
, andwrite_hsp
,write_mrk
were removed and made private by Teon BrooksWhen computing the noise covariance or MNE inverse solutions, the rank is estimated empirically using more sensitive thresholds, which stabilizes results by Denis Engemann and Eric Larson and Alex Gramfort
Raw FIFF files can be preloaded after class instantiation using
raw.preload_data()
Add
label
parameter toapply_inverse
by Teon BrooksDeprecated
label_time_courses
forin_label
method inSourceEstimate
by Teon BrooksDeprecated
as_data_frame
forto_data_frame
by Chris HoldgrafAdd
transform
,unit
parameters toread_montage
by Teon BrooksDeprecated
fmin, fmid, fmax
in stc.plot and addedclim
by Mark WronkiewiczUse
scipy.signal.welch
instead of matplotlib.psd insidecompute_raw_psd
andcompute_epochs_psd
by Yousra Bekhti Eric Larson and Denis Engemann. As a consequence,Raw.plot_raw_psds
has been deprecated.Raw
instances returned bymne.forward.apply_forward_raw
now always have times starting from zero to be consistent with all otherRaw
instances. To get the formerstart
andstop
times, useraw.first_samp / raw.info['sfreq']
andraw.last_samp / raw.info['sfreq']
.pick_types_evoked
has been deprecated in favor ofevoked.pick_types
.Deprecated changing the sensor type of channels in
rename_channels
by Teon BrooksCUDA is no longer initialized at module import, but only when first used.
add_figs_to_section
andadd_images_to_section
now have atextbox
parameter to add comments to the image by Teon BrooksDeprecated
iir_filter_raw
forfit_iir_model_raw
.Add
montage
parameter to thecreate_info
function to create the info using montages by Teon Brooks
Authors#
The committer list for this release is the following (preceded by number of commits):
515 Eric Larson
343 Denis A. Engemann
304 Alexandre Gramfort
300 Teon Brooks
142 Mainak Jas
119 Jean-Remi King
77 Alan Leggitt
75 Marijn van Vliet
63 Chris Holdgraf
57 Yousra Bekhti
49 Mark Wronkiewicz
44 Christian Brodbeck
30 Jona Sassenhagen
29 Hari Bharadwaj
27 Clément Moutard
24 Ingoo Lee
18 Marmaduke Woodman
16 Martin Luessi
10 Jaakko Leppakangas
9 Andrew Dykstra
9 Daniel Strohmeier
7 kjs
6 Dan G. Wakeman
5 Federico Raimondo
3 Basile Pinsard
3 Christoph Dinh
3 Hafeza Anevar
2 Martin Billinger
2 Roan LaPlante
1 Manoj Kumar
1 Matt Tucker
1 Romain Trachel
1 mads jensen
1 sviter
Version 0.8 (2014-06-25)#
Changelog#
Add Python3 support by Nick Ward, Alex Gramfort, Denis Engemann, and Eric Larson
Add
get_peak
method for evoked and stc objects by Denis EngemannAdd
iter_topography
function for radically simplified custom sensor topography plotting by Denis EngemannAdd field line interpolation by Eric Larson
Add full provenance tacking for epochs and improve
drop_log
by Tal Linzen, Alex Gramfort and Denis EngemannAdd systematic contains method to
Raw
,Epochs
andEvoked
for channel type membership testing by Denis EngemannAdd fiff unicode writing and reading support by Denis Engemann
Add 3D MEG/EEG field plotting function and evoked method by Denis Engemann and Alex Gramfort
Add consistent channel-dropping methods to
Raw
,Epochs
andEvoked
by Denis Engemann and Alex GramfortAdd
equalize_channnels
function to set common channels for a list ofRaw
,Epochs
, orEvoked
objects by Denis EngemannAdd
plot_events
function to visually display paradigm by Alex GramfortImproved connectivity circle plot by Martin Luessi
Add ability to anonymize measurement info by Eric Larson
Add callback to connectivity circle plot to isolate connections to clicked nodes Roan LaPlante
Add ability to add patch information to source spaces by Eric Larson
Add
split_label
function to divide labels into multiple parts by Christian BrodbeckAdd
color
attribute toLabel
objects by Christian BrodbeckAdd
max
mode forextract_label_time_course
by Mads JensenAdd
rename_channels
function to change channel names and types in info object by Dan Wakeman and Denis EngemannAdd
compute_ems
function to extract the time course of experimental effects by Denis Engemann, Sébastien Marti and Alex GramfortAdd option to expand Labels defined in a source space to the original surface (
Label.fill()
) by Christian BrodbeckGUIs can be invoked form the command line using
$ mne coreg
and$ mne kit2fiff
by Christian BrodbeckAdd
add_channels_epochs
function to combine different recordings at the Epochs level by Christian Brodbeck and Denis EngemannAdd support for EGI Netstation simple binary files by Denis Engemann
Add support for treating arbitrary data (numpy ndarray) as a Raw instance by Eric Larson
Support for parsing the EDF+ annotation channel by Martin Billinger
Add EpochsArray constructor for creating epochs from numpy arrays by Denis Engemann and Federico Raimondo
Add connector to FieldTrip realtime client by Mainak Jas
Add color and event_id with legend options in plot_events in viz.py by Cathy Nangini
Add
events_list
parameter tomne.concatenate_raws
to concatenate events corresponding to runs by Denis EngemannAdd
read_ch_connectivity
function to read FieldTrip neighbor template .mat files and obtain sensor adjacency matrices by Denis EngemannAdd display of head in helmet from -trans.fif file to check coregistration quality by Mainak Jas
Add
raw.add_events
to allow adding events to a raw file by Eric LarsonAdd
plot_image
method to Evoked object to display data as images by Jean-Remi King and Alex Gramfort and Denis EngemannAdd BCI demo with CSP on motor imagery by Martin Billinger
New ICA API with unified methods for processing
Raw
,Epochs
andEvoked
objects by Denis EngemannApply ICA at the evoked stage by Denis Engemann
New ICA methods for visualizing unmixing quality, artifact detection and rejection by Denis Engemann
Add
pick_channels
anddrop_channels
mixin class to pick and drop channels fromRaw
,Epochs
, andEvoked
objects by Andrew Dykstra and Denis EngemannAdd
EvokedArray
class to create an Evoked object from an array by Andrew DykstraAdd
plot_bem
method to visualize BEM contours on MRI anatomical images by Mainak Jas and Alex GramfortAdd automated ECG detection using cross-trial phase statistics by Denis Engemann and Juergen Dammers
Add Forward class to succintly display gain matrix info by Andrew Dykstra
Add reading and writing of split raw files by Martin Luessi
Add OLS regression function by Tal Linzen, Teon Brooks and Denis Engemann
Add computation of point spread and cross-talk functions for MNE type solutions by Alex Gramfort and Olaf Hauk
Add mask parameter to
plot_evoked_topomap
andevoked.plot_topomap
by Denis Engemann and Alex GramfortAdd infomax and extended infomax ICA by Denis Engemann, Juergen Dammers and Lukas Breuer and Federico Raimondo
Aesthetically redesign interpolated topography plots by Denis Engemann and Alex Gramfort
Simplify sensor space time-frequency analysis API with
tfr_morlet
function by Alex Gramfort and Denis EngemannAdd new somatosensory MEG dataset with nice time-frequency content by Alex Gramfort
Add HDF5 write/read support for SourceEstimates by Eric Larson
Add InverseOperator class to display inverse operator info by Mainak Jas
Add
$ mne report
command to generate html reports of MEG/EEG data analysis pipelines by Mainak Jas, Alex Gramfort and Denis EngemannImprove ICA verbosity with regard to rank reduction by Denis Engemann
BUG#
Fix incorrect
times
attribute when stc was computed usingapply_inverse
after decimation at epochs stage for certain, arbitrary sample frequencies by Denis EngemannFix corner case error for step-down-in-jumps permutation test (when step-down threshold was high enough to include all clusters) by Eric Larson
Fix selection of total number of components via float when picking ICA sources by Denis Engemann and Qunxi Dong
Fix writing and reading transforms after modification in measurement info by Denis Engemann and Martin Luessi and Eric Larson
Fix pre-whitening / rescaling when estimating ICA on multiple channels without covariance by Denis Engemann
Fix ICA pre-whitening, avoid recomputation when applying ICA to new data by Denis Engemann
API#
The minimum numpy version has been increased to 1.6 from 1.4.
Epochs object now has a selection attribute to track provenance of selected Epochs. The length of the drop_log attribute is now the same as the length of the original events passed to Epochs. In earlier versions it had the length of the events filtered by event_id. Epochs has also now a plot_drop_log method.
Deprecate Epochs.drop_picks in favor of a new method called drop_channels
Deprecate
labels_from_parc
andparc_from_labels
in favor ofread_labels_from_annot
andwrite_labels_to_annot
The default of the new add_dist option of
setup_source_space
to add patch information will change from False to True in MNE-Python 0.9Deprecate
read_evoked
andwrite_evoked
in favor ofread_evokeds
andwrite_evokeds
. read_evokeds will return allEvoked
instances in a file by default.Deprecate
setno
in favor ofcondition
in the initialization of an Evoked instance. This affectsmne.fiff.Evoked
andread_evokeds
, but notread_evoked
.Deprecate
mne.fiff
module, usemne.io
instead e.g.mne.io.Raw
instead ofmne.fiff.Raw
.Pick functions (e.g.,
pick_types
) are now in the mne namespace (e.g. usemne.pick_types
).Deprecated ICA methods specific to one container type. Use ICA.fit, ICA.get_sources ICA.apply and
ICA.plot_*
for processing Raw, Epochs and Evoked objects.The default smoothing method for
mne.stc_to_label
will change in v0.9, and the old method is deprecated.As default, for ICA the maximum number of PCA components equals the number of channels passed. The number of PCA components used to reconstruct the sensor space signals now defaults to the maximum number of PCA components estimated.
Authors#
The committer list for this release is the following (preceded by number of commits):
418 Denis A. Engemann
284 Alexandre Gramfort
242 Eric Larson
155 Christian Brodbeck
144 Mainak Jas
49 Martin Billinger
49 Andrew Dykstra
44 Tal Linzen
37 Dan G. Wakeman
36 Martin Luessi
26 Teon Brooks
20 Cathy Nangini
15 Hari Bharadwaj
15 Roman Goj
10 Ross Maddox
9 Marmaduke Woodman
8 Praveen Sripad
8 Tanay
8 Roan LaPlante
5 Saket Choudhary
4 Nick Ward
4 Mads Jensen
3 Olaf Hauk
3 Brad Buran
2 Daniel Strohmeier
2 Federico Raimondo
2 Alan Leggitt
1 Jean-Remi King
1 Matti Hämäläinen
Version 0.7 (2013-11-26)#
Changelog#
Add capability for real-time feedback via trigger codes using StimServer and StimClient classes by Mainak Jas
New decoding module for MEG analysis containing sklearn compatible transformers by Mainak Jas and Alex Gramfort
New realtime module containing RtEpochs, RtClient and MockRtClient class by Martin Luessi, Christopher Dinh, Alex Gramfort, Denis Engemann and Mainak Jas
Allow picking normal orientation in LCMV beamformers by Roman Goj, Alex Gramfort, Denis Engemann and Martin Luessi
Add printing summary to terminal for measurement info by Denis Engemann
Add read and write info attribute ICA objects by Denis Engemann
Decoding with Common Spatial Patterns (CSP) by Romain Trachel and Alex Gramfort
Add ICA
plot_topomap
function and method for displaying the spatial sensitivity of ICA sources by Denis EngemannPlotting multiple brain views at once by Eric Larson
Reading head positions from raw FIFF files by Eric Larson
Add decimation parameter to ICA.decompose* methods by Denis Engemann and Alex Gramfort
Add rejection buffer to ICA.decompose* methods by Denis Engemann and Alex Gramfort
Improve ICA computation speed and memory usage by Denis Engemann and Alex Gramfort
Add polygonal surface decimation function to preprocess head surfaces for coregistration by Denis Engemann and Alex Gramfort
DICS time-frequency beamforming for epochs, evoked and for estimating source power by Roman Goj, Alex Gramfort and Denis Engemann
Add method for computing cross-spectral density (CSD) from epochs and class for storing CSD data by Roman Goj, Alex Gramfort and Denis Engemann
Add trellis plot function and method for visualizing single epochs by Denis Engemann
Add fiducials read/write support by Christian Brodbeck and Alex Gramfort
Add select / drop bad channels in
plot_raw
on click by Denis EngemannAdd
ico
andoct
source space creation in native Python by Eric LarsonAdd interactive rejection of bad trials in
plot_epochs
by Denis EngemannAdd morph map calculation by Eric Larson and Martin Luessi
Add volume and discrete source space creation and I/O support by Eric Larson
Time-frequency beamforming to obtain spectrograms in source space using LCMV and DICS by Roman Goj, Alex Gramfort and Denis Engemann
Compute epochs power spectral density function by Denis Engemann
Plot raw power spectral density by Eric Larson
Computing of distances along the cortical surface by Eric Larson
Add reading BEM solutions by Eric Larson
Add forward solution calculation in native Python by Eric Larson
Add (Neuro)debian license compatibility by Eric Larson
Automatic QRS threshold selection for ECG events by Eric Larson
Add Travis continuous integration service by Denis Engemann
Add SPM face data set by Denis Engemann Martin Luessi and Alex Gramfort
Support reading of EDF+,BDF data by Teon Brooks
Tools for scaling MRIs (mne.scale_mri) by Christian Brodbeck
GUI for head-MRI coregistration (mne.gui.coregistration) by Christian Brodbeck
GUI for ki2fiff conversion (mne.gui.kit2fiff) by Christian Brodbeck
Support reading of EEG BrainVision data by Teon Brooks
Improve CTF compensation handling by Martin Luessi and Eric Larson
Improve and extend automated layout guessing by Denis Engemann
Add Continuum Analytics Anaconda support by Denis Engemann
Add
subtract evoked
option to beamformers by Andrew DykstraAdd new
transform
method to SourceEstimate(s) by Andrew Dykstra
API#
The pick_normal parameter for minimum norm solvers has been renamed as
pick_ori
and normal orientation picking is now achieved by passing the value “normal” for thepick_ori
parameter.ICA objects now expose the measurement info of the object fitted.
Average EEG reference is now added by default to Raw instances.
Removed deprecated read/write_stc/w, use SourceEstimate methods instead
The
chs
argument inmne.layouts.find_layout
is deprecated and will be removed in MNE-Python 0.9. Useinfo
instead.plot_evoked
andEpochs.plot
now open a new figure by default. To plot on an existing figure please specify theaxes
parameter.
Authors#
The committer list for this release is the following (preceded by number of commits):
336 Denis A. Engemann
202 Eric Larson
193 Roman Goj
138 Alexandre Gramfort
99 Mainak Jas
75 Christian Brodbeck
60 Martin Luessi
40 Teon Brooks
29 Romain Trachel
28 Andrew Dykstra
12 Mark Wronkiewicz
10 Christoph Dinh
8 Alan Leggitt
3 Yaroslav Halchenko
3 Daniel Strohmeier
2 Mads Jensen
2 Praveen Sripad
1 Luke Bloy
1 Emanuele Olivetti
1 Yousra BEKHTI
Version 0.6 (2013-06-15)#
Changelog#
Linear (and zeroth-order) detrending for Epochs and Evoked by Eric Larson
Label morphing between subjects by Eric Larson
Define events based on time lag between reference and target event by Denis Engemann
ICA convenience function implementing an automated artifact removal workflow by Denis Engemann
Bad channels no longer included in epochs by default by Eric Larson
Support for diagonal noise covariances in inverse methods and rank computation by Eric Larson
Support for using CUDA in FFT-based FIR filtering (method=’fft’) and resampling by Eric Larson
Optimized FFT length selection for faster overlap-add filtering by Martin Luessi
Ability to exclude bad channels from evoked plots or shown them in red by Martin Luessi
Option to show both hemispheres when plotting SourceEstimate with PySurfer by Martin Luessi
Optimized Raw reading and epoching routines to limit memory copies by Eric Larson
Advanced options to save raw files in short or double precision by Eric Larson
Option to detect decreasing events using find_events by Simon Kornblith
Option to change default stim_channel used for finding events by Eric Larson
Use average patch normal from surface-oriented forward solution in inverse calculation when possible by Eric Larson
Function to plot drop_log from Epochs instance by Eric Larson
Estimate rank of Raw data by Eric Larson
Support reading of BTi/4D data by Denis Engemann
Wrapper for generating forward solutions by Eric Larson
Averaging forward solutions by Eric Larson
Events now contain the pre-event stim channel value in the middle column, by Christian Brodbeck
New function
mne.find_stim_steps
for finding all steps in a stim channel by Christian BrodbeckGet information about FIFF files using mne.fiff.show_fiff() by Eric Larson
Compute forward fields sensitivity maps by Alex Gramfort and Eric Larson
Support reading of KIT data by Teon Brooks and Christian Brodbeck
Raw data visualization by Eric Larson
Smarter SourceEstimate object that contains linear inverse kernel and sensor space data for fast time-frequency transforms in source space by Martin Luessi
Add example of decoding/MVPA on MEG sensor data by Alex Gramfort
Add support for non-paired tests in spatiotemporal cluster stats by Alex Gramfort
Add unified SSP-projector API for Raw, Epochs and Evoked objects by Denis Engemann, Alex Gramfort Eric Larson and Martin Luessi
Add support for delayed SSP application at evoked stage Denis Engemann, Alex Gramfort, Eric Larson and Martin Luessi
Support selective parameter updating in functions taking dicts as arguments by Denis Engemann
New ICA method
sources_as_epochs
to create Epochs in ICA space by Denis EngemannNew method in Evoked and Epoch classes to shift time scale by Mainak Jas
Added option to specify EOG channel(s) when computing PCA/SSP projections for EOG artifacts by Mainak Jas
Improved connectivity interface to allow combinations of signals, e.g., seed time series and source estimates, by Martin Luessi
Effective connectivity estimation using Phase Slope Index (PSI) by Martin Luessi
Support for threshold-free cluster enhancement (TFCE) by Eric Larson
Support for “hat” variance regularization by Eric Larson
Access source estimates as Pandas DataFrame by Denis Engemann.
Add example of decoding/MVPA on MEG source space data by Denis Engemann
Add support for –tstart option in mne_compute_proj_eog.py by Alex Gramfort
Add two-way repeated measures ANOVA for mass-univariate statistics by Denis Engemann, Eric Larson and Alex Gramfort
Add function for summarizing clusters from spatio-temporal-cluster permutation tests by Denis Engemann and Eric Larson
Add generator support for
lcmv_epochs
by Denis EngemannGamma-MAP sparse source localization method by Martin Luessi and Alex Gramfort
Add regular expression and substring support for selecting parcellation labels by Denis Engemann
New plot_evoked option for interactive and reversible selection of SSP projection vectors by Denis Engemann
Plot 2D flat topographies with interpolation for evoked and SSPs by Christian Brodbeck and Alex Gramfort
Support delayed SSP applicationon for 2D flat topographies by Denis Engemann and Christian Brodbeck and Alex Gramfort
Allow picking maximum power source, a.k.a. “optimal”, orientation in LCMV beamformers by Roman Goj, Alex Gramfort, Denis Engemann and Martin Luessi
Add sensor type scaling parameter to plot_topo by Andrew Dykstra, Denis Engemann and Eric Larson
Support delayed SSP application in plot_topo by Denis Engemann
API#
Deprecated use of fiff.pick_types without specifying exclude – use either [] (none),
bads
(bad channels), or a list of string (channel names).Depth bias correction in dSPM/MNE/sLORETA make_inverse_operator is now done like in the C code using only gradiometers if present, else magnetometers, and EEG if no MEG channels are present.
Fixed-orientation inverse solutions need to be made using
fixed=True
option (using non-surface-oriented forward solutions if no depth weighting is used) to maintain compatibility with MNE C code.Raw.save() will only overwrite the destination file, if it exists, if option overwrite=True is set.
mne.utils.set_config(), get_config(), get_config_path() moved to mne namespace.
Raw constructor argument proj_active deprecated – use proj argument instead.
Functions from the mne.mixed_norm module have been moved to the mne.inverse_sparse module.
Deprecate CTF compensation (keep_comp and dest_comp) in Epochs and move it to Raw with a single compensation parameter.
Remove artifacts module. Artifacts- and preprocessing related functions can now be found in mne.preprocessing.
Authors#
The committer list for this release is the following (preceded by number of commits):
340 Eric Larson
330 Denis A. Engemann
204 Alexandre Gramfort
72 Christian Brodbeck
66 Roman Goj
65 Martin Luessi
37 Teon Brooks
18 Mainak Jas
9 Simon Kornblith
7 Daniel Strohmeier
6 Romain Trachel
5 Yousra BEKHTI
5 Brad Buran
1 Andrew Dykstra
1 Christoph Dinh
Version 0.5 (2012-12-27)#
Changelog#
Multi-taper PSD estimation for single epochs in source space using minimum norm by Martin Luessi
Read and visualize .dip files obtained with xfit or mne_dipole_fit by Alex Gramfort
Make EEG layout by Eric Larson
Ability to specify SSP projectors when computing covariance from raw by Eric Larson
Read and write txt based event files (.eve or .txt) by Eric Larson
Pass qrs threshold to preprocessing functions by Eric Larson
Compute SSP projections from continuous raw data by Eric Larson
Support for applied SSP projections when loading Raw by Eric Larson and Alex Gramfort
Support for loading Raw stored in different fif files by Eric Larson
IO of many Evoked in a single fif file + compute Epochs.standard_error by Eric Larson and Alex Gramfort
ICA computation on Raw and Epochs with automatic component selection by Denis Engemann and Alex Gramfort
Saving ICA sources to fif files and creating ICA topography layouts by Denis Engemann
Save and restore ICA session to and from fif by Denis Engemann
Export raw, epochs and evoked data as data frame to the pandas library by Denis Engemann
Export raw, epochs and evoked data to the nitime library by Denis Engemann
Copy methods for raw and epochs objects by Denis Engemann, Martin Luessi and Alex Gramfort
New raw objects method to get the time at certain indices by Denis Engemann and Alex Gramfort
Plot method for evoked objects by Denis Engemann
Enhancement of cluster-level stats (speed and memory efficiency) by Eric Larson and Martin Luessi
Reading of source space distances by Eric Larson
Support for filling / smoothing labels and speedup of morphing by Eric Larson
Adding options for morphing by Eric Larson
Plotting functions for time frequency and epochs image topographies by Denis Engemann and Alex Gramfort
Plotting ERP/ERF images by Alex Gramfort
See detailed subplot when cliking on a channel inside a topography plot by Martin Luessi, Eric Larson and Denis Engemann
Misc channel type support plotting functions by Denis Engemann
Improved logging support by Eric Larson
Whitening of evoked data for plotting and quality checking by Alex Gramfort
Transparent I/O of gzipped fif files (as .fif.gz) by Eric Larson
Spectral connectivity estimation in sensor and source space by Martin Luessi
Read and write Epochs in FIF files by Alex Gramfort
Resampling of Raw, Epochs, and Evoked by Eric Larson
Creating epochs objects for different conditions and accessing conditions via user-defined name by Denis Engemann , Eric Larson, Alex Gramfort and Christian Brodbeck
Visualizing evoked responses from different conditions in one topography plot by Denis Engemann and Alex Gramfort
Support for L21 MxNE solver using coordinate descent using scikit-learn by Alex Gramfort and Daniel Strohmeier
Support IIR filters (butterworth, chebyshev, bessel, etc.) by Eric Larson
Read labels from FreeSurfer parcellation by Martin Luessi
Combining labels in source space by Christian Brodbeck
Read and write source spaces, surfaces and coordinate transforms to and from files by Christian Brodbeck
Downsample epochs by Christian Brodbeck and Eric Larson
New labels class for handling source estimates by Christian Brodbeck, Martin Luessi and Alex Gramfort
New plotting routines to easily display SourceEstimates using PySurfer by Alex Gramfort
Function to extract label time courses from SourceEstimate(s) by Martin Luessi
Function to visualize connectivity as circular graph by Martin Luessi and Alex Gramfort
Time-frequency Mixed Norm Estimates (TF-MxNE) by Alex Gramfort and Daniel Strohmeier
API#
Added nave parameter to source_induced_power() and source_band_induced_power(), use nave=1 by default (wrong nave was used before).
Use mne.layout.read_layout instead of mne.layout.Layout to read a layout file (.lout)
Use raw.time_as_index instead of time_to_index (still works but is deprecated).
The artifacts module (mne.artifacts) is now merged into mne.preprocessing
Epochs objects now also take dicts as values for the event_id argument. They now can represent multiple conditions.
Authors#
The committer list for this release is the following (preceded by number of commits):
313 Eric Larson
226 Alexandre Gramfort
219 Denis A. Engemann
104 Christian Brodbeck
85 Martin Luessi
6 Daniel Strohmeier
4 Teon Brooks
1 Dan G. Wakeman
Version 0.4 (2012-08-24)#
Changelog#
Add function to compute source PSD using minimum norm by Alex Gramfort
L21 Mixed Norm Estimates (MxNE) by Alex Gramfort and Daniel Strohmeier
Generation of simulated evoked responses by Alex Gramfort, Daniel Strohmeier, and Martin Luessi
Fit AR models to raw data for temporal whitening by Alex Gramfort.
speedup + reduce memory of mne.morph_data by Alex Gramfort.
Backporting scipy.signal.firwin2 so filtering works with old scipy by Alex Gramfort.
LCMV Beamformer for evoked data, single trials, and raw data by Alex Gramfort and Martin Luessi.
Add support for reading named channel selections by Martin Luessi.
Add Raw.filter method to more easily band pass data by Alex Gramfort.
Add tmin + tmax parameters in mne.compute_covariance to estimate noise covariance in epochs baseline without creating new epochs by Alex Gramfort.
Add support for sLORETA in apply_inverse, apply_inverse_raw, apply_inverse_epochs (API Change) by Alex Gramfort.
Add method to regularize a noise covariance by Alex Gramfort.
Read and write measurement info in forward and inverse operators for interactive visualization in mne_analyze by Alex Gramfort.
New mne_compute_proj_ecg.py and mne_compute_proj_eog.py scripts to estimate ECG/EOG PCA/SSP vectors by Alex Gramfort and Martin Luessi.
Wrapper function and script (mne_maxfilter.py) for Elekta Neuromag MaxFilter(TM) by Martin Luessi
Add method to eliminate stimulation artifacts from raw data by linear interpolation or windowing by Daniel Strohmeier.
Authors#
The committer list for this release is the following (preceded by number of commits):
118 Alexandre Gramfort
81 Martin Luessi
15 Daniel Strohmeier
4 Christian Brodbeck
4 Louis Thibault
2 Brad Buran
Version 0.3 (2012-03-23)#
Changelog#
Sign flip computation for robust label average of signed values by Alex Gramfort.
Reading and writing of .w files by Martin Luessi.
Support for modifying Raw object and allow raw data preloading with memory mapping by Martin Luessi and Alex Gramfort.
Support of arithmetic of Evoked data (useful to concatenate between runs and compute contrasts) by Alex Gramfort.
Support for computing sensor space data from a source estimate using an MNE forward solution by Martin Luessi.
Support of arithmetic of Covariance by Alex Gramfort.
Write BEM surfaces in Python by Alex Gramfort.
Filtering operations and apply_function interface for Raw object by Martin Luessi.
Support for complex valued raw fiff files and computation of analytic signal for Raw object by Martin Luessi.
Write inverse operators (surface and volume) by Alex Gramfort.
Covariance matrix computation with multiple event types by Martin Luessi.
New tutorial in the documentation and new classes and functions reference page by Alex Gramfort.
Authors#
The committer list for this release is the following (preceded by number of commits):
80 Alexandre Gramfort
51 Martin Luessi
Version 0.2 (2011-11-08)#
Changelog#
New stats functions for FDR correction and Bonferroni by Alex Gramfort.
Faster time-frequency using downsampling trick by Alex Gramfort.
Support for volume source spaces by Alex Gramfort (requires next MNE release or nightly).
Improved Epochs handling by Martin Luessi (slicing, drop_bad_epochs).
Bug fix in Epochs + ECG detection by Manfred Kitzbichler.
New pick_types_evoked function by Alex Gramfort.
SourceEstimate now supports algebra by Alex Gramfort.
API changes summary#
Here are the code migration instructions when upgrading from mne-python version 0.1:
New return values for the function find_ecg_events
Authors#
The committer list for this release is the following (preceded by number of commits):
33 Alexandre Gramfort
12 Martin Luessi
2 Yaroslav Halchenko
1 Manfred Kitzbichler
Version 0.1 (2011-09-23)#
Initial release (initial commit: 2010-12-26).
Authors#
The committer list for this release is the following (preceded by number of commits):
315 Alexandre Gramfort
1 Ellen Lau
41 Emily Ruzich
2 Martin Luessi
9 Matti Hämäläinen