Version 1.6.0 (2023-11-20)#
Enhancements#
Add support for Neuralynx data files with
mne.io.read_raw_neuralynx()(#11969 by new contributor Kristijan Armeni and new contributor Ivan Skelin)Improve tests for saving splits with
mne.Epochs(#11884 by Dmitrii Altukhov)Added functionality for linking interactive figures together, such that changing one figure will affect another, see Using the event system to link figures and
mne.viz.ui_events. Current figures implementing UI events aremne.viz.plot_topomap()andmne.viz.plot_source_estimates()(#11685 #11891 by Marijn van Vliet)HTML anchors for
mne.Reportnow reflect thesection-titleof the report items rather than using a global incrementorglobal-N(#11890 by Eric Larson)Added public
mne.io.write_info()to complementmne.io.read_info()(#11918 by Eric Larson)Added option
remove_dcto toRaw.compute_psd(),Epochs.compute_psd(), andEvoked.compute_psd(), to allow skipping DC removal when computing Welch or multitaper spectra (#11769 by Nikolai Chapochnikov)Add the possibility to provide a float between 0 and 1 as
n_grad,n_magandn_eegincompute_proj_raw,compute_proj_epochsandcompute_proj_evokedto select the number of vectors based on the cumulative explained variance (#11919 by Mathieu Scheltienne)Add extracting all time courses in a label using
mne.extract_label_time_course()without applying an aggregation function (likemean) (#12001 by Hamza Abdelhedi)Added support for Artinis fNIRS data files to
mne.io.read_raw_snirf()(#11926 by Robert Luke)Add helpful error messages when using methods on empty
mne.Epochs-objects (#11306 by Martin Schulz)Add support for passing a
dictassensor_colorto specify per-channel-type colors inmne.viz.plot_alignment()(#12067 by Eric Larson)Add inferring EEGLAB files’ montage unit automatically based on estimated head radius using
read_raw_eeglab(..., montage_units="auto")(#11925 by Jack Zhang, #11951 by Eric Larson)Add
EpochsSpectrumArrayandSpectrumArrayto support creating power spectra fromNumPy arraydata (#11803 by Alex Rockhill)Add support for writing forward solutions to HDF5 and convenience function
mne.Forward.save()(#12036 by Eric Larson)Refactored internals of
mne.read_annotations()(#11964 by Paul Roujansky)Add support for drawing MEG sensors in mne coreg (#12098 by Eric Larson)
Improve string representation of
mne.Covariance(#12181 by Eric Larson)Add
check_version=Trueto mne sys_info to check for a new release on GitHub (#12146 by Eric Larson)Bad channels are now colored gray in addition to being dashed when spatial colors are used in
mne.viz.plot_evoked()and related functions (#12142 by Eric Larson)By default MNE-Python creates matplotlib figures with
layout='constrained'rather than the defaultlayout='tight'(#12050, #12103 by Mathieu Scheltienne and Eric Larson)Enhance
plot_evoked_field()with a GUI that has controls for time, colormap, and contour lines (#11942 by Marijn van Vliet)Add
mne.viz.ui_events.UIEventlinking for interactive colorbars, allowing users to link figures and change the colormap and limits interactively. This supportsplot_evoked_topomap(),plot_ica_components(),plot_tfr_topomap(),plot_projs_topomap(),plot_image(), andplot_image()(#12057 by Santeri Ruuskanen)Add example KIT phantom dataset in
mne.datasets.phantom_kit.data_path()and KIT phantom dataset tutorial (#12105 by Judy D Zhu and Eric Larson)make_metadata()now acceptstmin=Noneandtmax=None, which will bound the time window used for metadata generation by event names (instead of a fixed time). That way, you can now for example generate metadata spanning from one cue or fixation cross to the next, even if trial durations vary throughout the recording (#12118 by Richard Höchenberger)Add support for passing multiple labels to
mne.minimum_norm.source_induced_power()(#12026 by Erica Peterson, Eric Larson, and Daniel McCloy )Added documentation to
mne.io.Raw.set_montage()andmne.add_reference_channels()to specify that montages should be set after adding reference channels (#12160 by Jacob Woessner)Add argument
splashto the function using theqtbrowser backend to allow enabling/disabling the splash screen (#12185 by Mathieu Scheltienne)ICA’s HTML representation (displayed in Jupyter notebooks andmne.Report) now includes all optional fit parameters (e.g., max. number of iterations) (#12194, by Richard Höchenberger)
Bugs#
Fix bug where
mne.io.read_raw_gdf()would fail due to improper usage ofnp.clip(#12168 by new contributor Rasmus Aagaard)Fix bugs with
mne.preprocessing.realign_raw()where the start ofotherwas incorrectly cropped; and onsets and durations inother.annotationswere left unsynced with the resampled data (#11950 by new contributor Qian Chu)Fix bug where
encodingargument was ignored when reading annotations from an EDF file (#11958 by new contributor Andrew Gilbert)Mark tests
test_adjacency_matches_ftandtest_fetch_uncompressed_fileas network tests (#12041 by new contributor Maksym Balatsko)Fix bug with
mne.channels.read_ch_adjacency()(#11608 by new contributor Ivan Zubarev)Fix bug where
epochs.get_data(..., scalings=...)would errantly modify the preloaded data (#12121 by new contributor Pablo Mainar and Eric Larson)Fix bugs with saving splits for
Epochs(#11876 by Dmitrii Altukhov)Fix bug with multi-plot 3D rendering where only one plot was updated (#11896 by Eric Larson)
Fix bug where
verboselevel was not respected inside parallel jobs (#12154 by Eric Larson)Fix bug where subject birthdays were not correctly read by
mne.io.read_raw_snirf()(#11912 by Eric Larson)Fix bug where warnings were emitted when computing spectra for channels marked as bad (#12186 by Eric Larson)
Fix bug with
mne.chpi.compute_head_pos()for CTF data where digitization points were modified in-place, producing an incorrect result during a save-load round-trip (#11934 by Eric Larson)Fix bug where non-compliant stimulus data streams were not ignored by
mne.io.read_raw_snirf()(#11915 by Johann Benerradi)Fix bug with
pca=Falseinmne.minimum_norm.compute_source_psd()(#11927 by Alex Gramfort)Fix bug with notebooks when using PyVista 0.42 by implementing
tramebackend support (#11956 by Eric Larson)Removed preload parameter from
mne.io.read_raw_eyelink(), because data are always preloaded no matter what preload is set to (#11910 by Scott Huberty)Fix bug with
mne.viz.Brain.get_view()where callingshow_view()with returned parameters would change the view (#12000 by Eric Larson)Fix bug with
mne.viz.Brain.show_view()wheredistance=Nonewould change the view distance (#12000 by Eric Larson)Fix bug with
add_annotation()when reading an annotation from a file with both hemispheres shown (#11946 by Marijn van Vliet)Fix bug with reported component number and errant reporting of PCA explained variance as ICA explained variance in
mne.Report.add_ica()(#12155, #12167 by Eric Larson and Richard Höchenberger)Fix bug with axis clip box boundaries in
mne.viz.plot_evoked_topo()and related functions (#11999 by Eric Larson)Fix bug with
subject_infowhen loading data from and exporting to EDF file (#11952 by Paul Roujansky)Fix bug where
mne.InfoHTML representations listed all channel counts instead of good channel counts under the heading “Good channels” (#12145 by Eric Larson)Fix rendering glitches when plotting Neuromag/TRIUX sensors in
mne.viz.plot_alignment()and related functions (#12098 by Eric Larson)Fix bug with delayed checking of
info["bads"](#12038 by Eric Larson)Fix bug with mne coreg where points inside the head surface were not shown (#12147, #12164 by Eric Larson)
Fix bug with
mne.viz.plot_alignment()wheresensor_colorswere not handled properly on a per-channel-type basis (#12067 by Eric Larson)Fix handling of channel information in annotations when loading data from and exporting to EDF file (#11960 #12017 #12044 by Paul Roujansky)
Add missing
overwriteandverboseparameters toTransform.save()(#12004 by Marijn van Vliet)Fix parsing of eye-link
Annotationswhenapply_offsets=Falseis provided toread_raw_eyelink()(#12003 by Mathieu Scheltienne)Correctly prune channel-specific
Annotationswhen creatingEpochswithout the channel(s) included in the channel specific annotations (#12010 by Mathieu Scheltienne)Fix
plot_volume_source_estimates()withVolSourceEstimatewhich include a list of vertices (#12025 by Mathieu Scheltienne)Add support for non-ASCII characters in Annotations, Evoked comments, etc when saving to FIFF format (#12080 by Daniel McCloy)
Correctly handle passing
"eyegaze"or"pupil"tomne.io.Raw.pick()(#12019 by Scott Huberty)Fix bug with
mne.time_frequency.Spectrum.plot()and related functions where bad channels were not marked (#12142 by Eric Larson)Fix bug with
plot_raw()where changingMNE_BROWSER_BACKENDviaset_config()would have no effect within a Python session (#12078 by Santeri Ruuskanen)Improve handling of
methodargument in the channel interpolation function to supportstrand raise helpful error messages (#12113 by Mathieu Scheltienne)Fix combination of
DINevent channels into a single synthetic trigger channelSTI 014by the MFF reader ofmne.io.read_raw_egi()(#12122 by Mathieu Scheltienne)Fix bug with
mne.io.read_raw_eeglab()andmne.read_epochs_eeglab()where automatic fiducial detection would fail for certain files (#12165 by Clemens Brunner)Fix concatenation of
rawswithnp.nanin the device to head transformation (#12198 by Mathieu Scheltienne)Fix bug with
mne.viz.plot_compare_evokeds()where the title was not displayed whenaxes='topo'(#12192 by Jacob Woessner)Fix bug with
mne.io.read_raw_cnt()where the bad channels were not properly read (#12189 by Jacob Woessner)Fix bug where iterating over
Rawwould result in an error (#12205 by Clemens Brunner)
API changes#
The default for
mne.Epochs.get_data()ofcopy=Falsewill change tocopy=Truein 1.7. Set it explicitly to avoid a warning (#12121 by new contributor Pablo Mainar and Eric Larson)mne.preprocessing.apply_maxfilterandmne maxfilterhave been deprecated and will be removed in 1.7. Usemne.preprocessing.maxwell_filter()(see this tutorial) in Python or the command-line utility from MEGINmaxfilterandmne.bem.fit_sphere_to_headshape()instead (#11938 by Eric Larson)mne.io.kit.read_mrk()reading pickled files is deprecated using something likenp.savetxt(fid, pts, delimiter="\t", newline="\n")to save your points instead (#11937 by Eric Larson)Replace legacy
inst.pick_channelsandinst.pick_typeswithinst.pick(whereinstis an instance ofRaw,Epochs, orEvoked) wherever possible (#11907 by Clemens Brunner)The
reset_cameraparameter has been removed in favor ofdistance="auto"inmne.viz.set_3d_view(),mne.viz.Brain.show_view(), and related functions (#12000 by Eric Larson)Several unused parameters from
mne.gui.coregistration()are now deprecated: tabbed, split, scrollable, head_inside, guess_mri_subject, scale, andadvanced_rendering. All arguments are also now keyword-only. (#12147 by Eric Larson)