Version 1.2.0 (2022-10-11)#
Enhancements#
Add
vminandvmaxparameters 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
transparameter inmne.make_field_map()now accepts aPathobject, 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.InverseOperatorwhen 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_affinekeyword argument tomne.transforms.compute_volume_registration()to initialize an alignment with an affine (#11020 by Alex Rockhill)Add HTML representation for
Evokedin Jupyter Notebooks (#11075 by Valerii Chirkov and Andrew Quinn)Add support for
temperatureandgsr(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 (#10980 by Alex Rockhill)Add
unitsparameter tomne.io.read_raw_edf()in case units are missing from the file (#11099 by Alex Gramfort)Add
on_missingfunctionality to all of our classes that have adrop_channelsmethod, 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.Projectionobjects (#11147 by Mathieu Scheltienne)Parse automatically temperature channel with
mne.io.read_raw_edf()(#11150 by Eric Larson and Alex Gramfort)Add
unscaleoption tomne.head_to_mri()to facilitate working with surrogate MRI data (#11185 by Eric Larson)Add
encodingparameter tomne.io.read_raw_edf()andmne.io.read_raw_bdf()to support custom (non-UTF8) annotation channel encodings (#11154 by Clemens Brunner)mne.preprocessing.ICAgained 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_baselinetomne.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_HTMLto disable HTML repr in notebook environments (#11159 by Clemens Brunner)
Bugs#
Fix bug in
mne.io.Raw.crop()where argumentinclude_tmaxwas not considered in checkingtmaxin 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 returnedprojsas 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
reprof 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
heightandweightkeys ofsubject_infoentry inmne.Info(#11019 by new contributor Sena Er)Fix bug in
mne.viz.Brainconstructor where the first argument was namedsubject_idinstead 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 withcompensationturned 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.savewhere theverboseparameter defaulted toTrueinstead ofNone(#11191 by Eric Larson)The string and HTML representation of
mne.preprocessing.ICAreported 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.nanlocation 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 wheninstis Epochs or Evoked (#11232 by Eric Larson)
API changes#
In
mne.Evoked.plot(), the default value of thespatial_colorsparameter 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
FutureWarninginstead ofDeprecationWarningto signal user-facing changes to our API (#11120 by Daniel McCloy)The
namesparameter ofmne.viz.plot_arrowmap()andmne.viz.plot_regression_weights()has been deprecated; sensor names will be automatically drawn from theinfo_fromormodelparameter (respectively), and can be hidden, shown, or altered via theshow_namesparameter (#11123 by Daniel McCloy)The
bandsparameter ofmne.Epochs.plot_psd_topomap()now acceptsdictinput; legacytupleinput is supported, but discouraged for new code (#11050 by Daniel McCloy)The
mne.head_to_mri()new function parameterkinddefault will change from'ras'to'mri'(#11185 by Eric Larson)The
show_toolbarargument tomne.viz.Brainis being removed by deprecation (#11049 by Eric Larson)New classes
SpectrumandEpochsSpectrum, 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=Nonewill now create a newFigureinstead of plotting into the current axes (#11123 by Daniel McCloy)In
mne.viz.plot_topomap(), the parametershow_nameshas been deprecated, use thenamesparameter 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 parametersvminandvmaxare deprecated in favor ofvlim, for consistency with otherplot_topomapfunctions 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(): thetitleparameter 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_epochsfunction 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_welchandmne.time_frequency.psd_multitaper) are deprecated; for equivalent functionality createSpectrumorEpochsSpectrumobjects instead and then runspectrum.get_data(return_freqs=True)(#10184 by Daniel McCloy)Added new class
mne.preprocessing.EOGRegressionto allow more flexibility when using regression to reduce EOG artifacts (#11046 by Marijn van Vliet)New parameter
excludeadded tomne.preprocessing.regress_artifact()to prevent regression from being applied to certain channels (#11046 by Marijn van Vliet)