Fix bug in mne.io.read_raw_eeglab()
where unlabeled fiducials caused reading errors (#11074 by new contributor Sebastiaan Mathot)
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
to mne.sys_info()
(#10615 by Adam Li)
Add support for overview_mode
in raw.plot()
and related functions/methods (#10501 by Eric Larson)
Add mne.io.Raw.crop_by_annotations()
method to get chunks of Raw data based on mne.Annotations
. (#10460 by Alex Gramfort)
The pick_channels
method gained a verbose
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 to mne.Dipole.plot_locations()
and mne.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 to mne.make_field_map()
to allow selecting which head source to use (#10568 by Eric Larson)
Add support for n_jobs=None
to support joblib.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 and mne.viz.plot_bridged_electrodes()
to help visualize (#10571 by Alex Rockhill)
Add 'nearest'
as an option for the image_interp
argument in mne.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()
and mne.Evoked.plot_topomap()
now display the time range the map was averaged over if average
was passed (#10606 by Richard Höchenberger)
mne.viz.plot_evoked_topomap()
and mne.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 the average
parameter (#10610 by Richard Höchenberger)
mne.viz.plot_evoked()
and mne.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 to mne.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
) to mne.export.export_raw()
(#10681 by Stefan Appelhoff)
Added export
method to mne.Evoked
(#10681 by Stefan Appelhoff)
Add timeformat YYYY/MM/DD
to mne.io.ctf.info._convert_time
(#10674 by Simon Kern)
mne.Report.add_figure()
and mne.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 to mne.io.read_raw_edf()
, mne.io.read_raw_bdf()
and mne.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
or Vertex Reference
) to the electrode name in the standard EGI montages (Cz
). Now setting standard EGI montages with set_montage()
with match_alias=True
will avoid raising an error (#10823 by Scott Huberty)
Add provenance in mne.time_frequency.EpochsTFR.apply_baseline()
(#10979 by Alex Rockhill)
Fix bug in mne.surface._project_onto_surface
for the condition method != 'accurate' and return_nn
(#10930 by Christian O’Reilly)
Fix bug in mne.export.export_raw()
to ignore None value in filenames attribute of mne.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 in mne.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 value 0
(#10517 by new contributor Alessandro Tonin)
Fix bug in mne.pick_types()
and related methods where csd=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 using mne.Report.add_figure()
(#10485 by Eric Larson)
Fix bug where theme
was not handled properly in mne.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 when start != 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’s quiver3D
function so that default arguments plot a glyph in arrow
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 with mne.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 subsequent pick_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 using group_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 where unique=True
would return a set
with arbitrary order rather than a list
that preserves the same order as inst.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 the mode
parameters 'pos'
and 'neg'
were not honored when tmin
and/or tmax
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()
, and mne.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()
and mne.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
or mne.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 channel PO8
was incorrectly labeled as PO6
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 like plot_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
and block
arguments to mne.gui.coregistration()
and mne.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 when average='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 that picks
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)
When creating BEM surfaces via mne.bem.make_watershed_bem()
and mne.bem.make_flash_bem()
, the copy
parameter now defaults to True
. This means that instead of creating symbolic links inside the FreeSurfer subject’s bem
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()
and mne.preprocessing.ICA.plot_components()
the topomap image interpolation was previously a cubic interpolation but now can be 'linear'
and 'nearest'
as well. Unless image_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 using im.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. In mne.bem.convert_flash_mris()
the convert
parameter is now deprecated and the flash5
and flash30
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 parameter time_unit
which can be "s"
or "ms"
(#10950 by Daniel McCloy)
The to_data_frame
methods for Raw
, Epochs
, Evoked
, SourceEstimate
, EpochsTFR
, and AverageTFR
all now have default time_format=None
(keep time in seconds) instead of time_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 with mne.Epochs.decimate()
(#10945 by Alex Rockhill)
Add use_orig_time
option to mne.Annotations.crop()
. (#10396 by new contributor Michiru Kaneda)
Speed up mne.preprocessing.annotate_muscle_zscore()
, mne.preprocessing.annotate_movement()
, and mne.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 specifying output='complex'
(#10307 by Mikołaj Magnuski)
mne.time_frequency.tfr_array_multitaper()
can now return results for output='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
to mne.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 to mne.viz.Brain.add_volume_labels()
to close holes in the mesh (#10024 by Alex Rockhill)
Changed mne.Epochs
and mne.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 to mne.io.Raw.load_bad_channels()
and log information on how bad channels are updated (#10102 by Stefan Appelhoff)
Add infer_type
argument to mne.io.read_raw_edf()
and mne.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
, or ICA
figure if a scalings
parameter is provided (#10109 by Richard Höchenberger and Eric Larson)
mne.Report.add_raw()
gained a new scalings
parameter to provide custom data scalings for the butterfly plots (#10109 by Richard Höchenberger)
The butterfly
parameter of mne.Report.add_raw()
now also accepts numbers to specify how many segments to plot (#10115 by Richard Höchenberger)
The psd
parameter of mne.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 for mne.SourceEstimate
plots), and the resolution to 100 DPI to reduce file size, memory consumption, and – in some cases like mne.Report.add_stc()
– processing time (#10126, #10129, #10135, #10142 by Richard Höchenberger)
Epochs
metadata tables are now included in mne.Report
(#10166 by Richard Höchenberger)
mne.get_head_surf()
and mne.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 the Epochs
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 the mne.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()
and mne.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()
, and mne.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 to mne.viz.Brain
and the UI of mne.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 a tags
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 of mne.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 the qt
backend (#10330 by Martin Schulz)
Added mne.viz.Brain.add_dipole()
and mne.viz.Brain.add_forward()
to plot dipoles on a brain as well as mne.viz.Brain.remove_dipole()
and mne.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 in raw.plot()
and related functions and methods when using the 'qt'
backend (#10417 by Eric Larson)
Add support for MNE_3D_OPTION_THEME
and MNE_BROWSER_THEME
to use ['light', 'dark', 'auto']
or a custom theme path in mne.viz.Brain
and raw.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()
and mne.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)
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 the meas_date
in a rawMFF
object was incorrectly assigned. The function now converts the meas_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 for mne.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 its eog_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 when output='complex'
(#10281 by Mikołaj Magnuski)
Fix default of mne.io.Raw.plot()
to be use_opengl=None
, which will act like False unless MNE_BROWSER_USE_OPENGL=true
is set in the user configuration (#9957 by Eric Larson)
Fix bug with mne.Report
where figures were saved with bbox_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 using open_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
to mne.export.export_raw()
, mne.export.export_epochs()
, mne.export.export_evokeds()
and mne.export.export_evokeds_mff()
(#9975 by Mathieu Scheltienne)
mne.gui.coregistration()
and the mne coreg
command didn’t respect the interaction
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 with mne.io.read_raw_eeglab()
and mne.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
to mne.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 and raw.first_samp
(#10358 by Eric Larson)
sys_info()
output now contains the installed version of pooch
, 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()
and mne.io.read_raw_bdf()
(and disable this functionality from mne.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 return mne.Annotations
objects with the orig_time
attribute set to raw.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 of fmin
and fmax
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 the preload
and/or metadata
parameters are set (#10112 by Stefan Appelhoff)
Fix bug with mne.Epochs
where save-load round-trip with FIF would cause mne.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()
and mne.compute_source_morph()
(volumetric) where the smoothing factors were not scaled based on zooms
(#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 empty Comment
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()
and mne.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 uses first_samp
and not 0
for initial event when using initial_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 the fsaverage
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
in raw.plot()
for data containing np.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 for mne.stats.spatio_temporal_cluster_test()
when the default returns an F-statistic (#10401 by Alex Rockhill)
The default browser for raw.plot()
, epochs.plot()
, and ica.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 use mne.viz.set_browser_backend('matplotlib')
. To set it permanently on your system, you can use mne.set_config('MNE_BROWSER_BACKEND', 'matplotlib')
(#9960 by Martin Schulz and Eric Larson)
mne.Info.pick_channels
has been deprecated. Use inst.pick_channels
to pick channels from Raw
, Epochs
, and Evoked
. Use mne.pick_info()
to pick channels from mne.Info
(#10039 by Mathieu Scheltienne)
All data_path
functions now return pathlib.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 of events
in mne.write_events()
(#10056 by Mathieu Scheltienne)
mne.preprocessing.annotate_flat
has been deprecated in favor of mne.preprocessing.annotate_amplitude()
, that covers both minimum and maximum peak-to-peak variation. (#10143 by Mathieu Scheltienne)
The max_ori_out
parameter of mne.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 pass verbose
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)
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)
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
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 make alpha
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
and measure
of ICA methods find_bads_ecg
, find_bads_ref
and find_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 of scipy.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 as mne.export.export_raw
and mne.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
in mne.stc_near_sensors()
(#9396 by Eric Larson)
Add label methods mne.Label.compute_area
and mne.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
and mne.export.export_evokeds_mff
(#9406 by Evan Hathaway)
mne.concatenate_raws()
, mne.concatenate_epochs()
, and mne.write_evokeds()
gained a new parameter on_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()
and mne.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
in mne.preprocessing.ICA.plot_sources()
(#9444 by Martin Schulz)
Add functions for aligning MRI and CT data mne.transforms.compute_volume_registration
and mne.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()
and mne.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 to mne.io.Raw.plot_psd()
and mne.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 in mne.io.read_raw_edf
, mne.io.read_raw_bdf
, and mne.io.read_raw_gdf
now also accepts a regular expression (#9558 by Clemens Brunner)
Add mne.Evoked.get_data()
method to mne.Evoked
(#9555 by Stefan Appelhoff)
The mne.Epochs.get_data()
method now has a units
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()
, and mne.Evoked.get_data()
methods now have tmin
and tmax
parameters to specify data window in seconds to get (#9556 by Stefan Appelhoff)
The mne.Evoked.get_data()
method now has a units
parameter (#9578 by Stefan Appelhoff)
Add mne.chpi.compute_chpi_snr
and mne.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 and mne.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 the cortex
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 the start
, stop
, reject
, and flat
parameters are passed when performing ICA on Epochs
. These parameters only have an effect on Raw
data and were previously silently ignored in the case of Epochs
(#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 Freesurfer recon-all
) and the channel names from an mne.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
and accuracy
to mne.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
and InverseOperator
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 consume pathlib.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 in mne.Epochs.save()
(#9869 by Denis Engemann)
Add by_event_type
parameter to mne.Epochs.average()
to create a list containing an mne.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()
and mne.viz.get_browser_backend()
to set matplotlib or pyqtgraph as backend for mne.io.Raw.plot()
(#9687 by Martin Schulz)
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()
and mne.Evoked.crop()
when include_tmax=False
, where the last sample was always cut off, even when tmax > 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
and mne.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()
and mne.time_frequency.psd_array_multitaper()
failed to handle negative integer for n_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
and mne.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 an AssertionError
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 if raw.info['dev_head_t']
differs between files. This behavior can be controlled using the new on_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
, and mne.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()
and mne.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 like mne.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 passing axes
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 concatenating mne.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 passing start
and stop
lead to erroneous data windows depending on the combination of Raw, Epochs, Evoked, and the type (int, float, None) of start
and stop
(#9556 by Stefan Appelhoff)
Fix bug in mne.viz.set_3d_backend()
and mne.viz.get_3d_backend()
where the PyVistaQt-based backend was ambiguously named 'pyvista'
instead of 'pyvistaqt'
; use set_3d_backend('pyvistaqt')
and expect 'pyvistaqt'
as the output of mne.viz.get_3d_backend()
instead of 'pyvista'
, and consider using get_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 to mne.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 a times='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()
and mne.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 of mne.Epochs.plot_psd()
(#9873 by Richard Höchenberger)
Fix channel locations with NaN
values causing all channel locations not to be plotted in mne.viz.Brain.add_sensors()
(#9911 by Alex Rockhill)
Fix infinite loop bug in mne.get_montage_volume_labels()
(#9940 by Alex Rockhill)
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 of mne.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 version
To 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 or mne_kit_gui.fiducials()
to set MRI fiducials instead
In mne.compute_source_morph
, the niter_affine
and niter_sdr
parameters have been replaced by niter
and pipeline
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()
argument view
into azimuth
, elevation
and focalpoint
for clearer view setting and make the default for row
and col
apply to all rows and columns (#9596 by Alex Rockhill)
Deprecate solver='prox'
in mne.inverse_sparse.mixed_norm()
in favor of solver='cd'
and solver='bcd'
as coordinate descent solvers consistently outperform proximal gradient descent (#9608 by Pierre-Antoine Bannier)
All mne.connectivity
functions have moved to the mne-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
, and ssvep
. Use the generic mne.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
and mne.Report.add_slider_to_section
have been deprecated in favor of mne.Report.add_figure()
mne.Report.add_images_to_section
has been deprecated in favor of mne.Report.add_image()
mne.Report.add_bem_to_section
has been deprecated in favor of mne.Report.add_bem()
mne.Report.add_htmls_to_section
has been deprecated in favor of mne.Report.add_html()
In mne.Report.parse_folder()
, the sort_sections
parameter has been deprecated in favor of sort_content
In mne.Report.remove()
, the caption
and section
parameters have been deprecated in favor of title
and tags
, respectively
The mne.Report.sections
attribute has been deprecated in favor of mne.Report.tags
The mne.Report.fnames
attribute has been deprecated without replacement
mne.Epochs.plot()
and mne.viz.plot_epochs()
gained parameter show_scalebars
analogous to mne.viz.plot_raw()
(#9815 by Daniel McCloy)
The output folder name for HF_SEF datasets is now hf_sef
instead of HF_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 use find_bads_eog
and find_bads_ecg
instead (#9909 by Richard Höchenberger)
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+
Add support for exporting to EEGLAB’s set format with eeglabio
with new methods mne.io.Raw.export()
and mne.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()
and mne.time_frequency.AverageTFR.to_data_frame()
methods (#9124 by new contributor Felix Klotzsche)
Add selection
and drop_log
to mne.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 to mne.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 to mne.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 use ipyvtk_simple
for a better integration within Jupyter
(#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
via ch_names
parameter (#8896 by Eric Larson)
Add toggle-all button to mne.Report
HTML and width
argument to mne.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 for mne.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 methods add_custom_js
and add_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
in mne.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 to mne.viz.Brain
to display sharp edges and improve perception (#8771 by Guillaume Favelier)
Add warning to mne.cov.compute_whitener()
when an explicit rank
parameter leads to a large increase in condition number (#8805 by Eric Larson)
Add parameter align=True
to mne.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
to mne.Report.add_figs_to_section
and mne.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 that SourceEstimate
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 using mne.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
and mne.Epochs.plot_drop_log()
now omit displaying the subject name in the title if subject=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 the DigMontage
object in mri
coordinate frame (#9118 by Adam Li)
mne.io.anonymize_info()
now anonymizes also sex and hand fields when keep_his
is False
(#9103, #9175 by new contributor Rotem Falach and Richard Höchenberger)
Add parameter theme
to mne.viz.Brain
for optional Dark-Mode (#9149 by Martin Schulz, Guillaume Favelier)
Add first_samp support for raw simulations with mne.simulation.simulate_raw
and mne.simulation.SourceSimulator
(#9166 by Steven Bierer)
Evoked
gained a baseline
attribute that is automatically assembled based on the baseline of the averaged Epochs
(#9210 by Richard Höchenberger)
Add units
parameter to mne.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 of Evoked
, Epochs
or Raw
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 the Epochs
(#9261 by Richard Höchenberger)
mne.preprocessing.find_eog_events()
and mne.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)
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()
where ylim
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 the x_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 passing stim_picks='misc'
(#8844 by new contributor Enrico Varano and Eric Larson)
Fix bugs with mne.io.read_raw_persyst
where multiple Comments
with the same name are allowed, and Comments
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 the macosx
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
where n_jobs != 1
would cause n_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()
where scalings='auto'
did not compute scalings using the full range of data (#8806 by Eric Larson)
Fix bug with raw.plot()
where setting a lowpass
could lead to non-data-channels not plotting (#8954 by Eric Larson)
Fix bug with mne.io.Raw.load_data()
and mne.Epochs.drop_bad()
where verbose
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()
where depth
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 when adjacency=None
and out_type='indices'
(##8842 by Eric Larson)
Fix bug with mne.viz.plot_alignment()
where plotting a sphere model could ignore the brain
argument (#8857 by Eric Larson)
Fix bug with mne.SourceEstimate.plot()
where flatmaps were not positioned properly when using hemi='both'
(#9315 by Eric Larson)
Fix bug with mne.Annotations.save()
where files could be overwritten accidentally, it can now be controlled via the overwrite
argument (#8896 by Eric Larson)
Fix bug with replace
argument of mne.Report.add_bem_to_section
and mne.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 compatible subject
attributes (#9284 by Eric Larson)
Fix bug with mne.grow_labels()
where overlap=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 in mne.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 passing Epochs
constructed with some picks
(#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 yield plot_properties
windows for the wrong component if picks
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 handles pathlib.Path
filenames (#8759 by Richard Höchenberger)
mne.viz.plot_evoked
and mne.Evoked.plot
now correctly plot global field power (GFP) for EEG data when gfp=True
or gfp='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 the reject_tmin
and reject_tmax
attributes if necessary (#8821 by Richard Höchenberger)
When creating Epochs
, we now ensure that reject_tmin
and reject_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 as RMS
(was GFP
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()
yielding mne.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 the mne.combine_evoked
output; and better (and often more concise) legend labels in the figures created via plot_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 for Epochs
after calling mne.Epochs.add_channels()
(#9246 by Alex Gramfort)
Fix bug where backend='notebook'
could not be used in mne.SourceEstimate.plot()
(#9305 by Jean-Remi King)
mne.preprocessing.compute_proj_eog
and mne.preprocessing.compute_proj_ecg
now return empty lists if no EOG or ECG events, respectively, could be found. Previously, we’d return None
in these situations, which does not match the documented behavior of returning a list of projectors (#9277 by Richard Höchenberger)
Introduced new 'auto'
settings for ICA.max_iter
. The old default max_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 the cbar_label
parameter (#9248 by Daniel McCloy)
mne.read_selection
has been deprecated in favor of mne.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-corrected Epochs
, and / or applying it on baseline-corrected Epochs
or Evoked
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
or mne.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()
of real_filter=False
will change to real_filter=True
in 0.24 (#9340 by Britta Westner)
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+
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()
and mne.minimum_norm.get_cross_talk()
(#8275 by Olaf Hauk)
Update surfaces
argument in mne.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'
in mne.viz.plot_alignment()
to allow estimating MRI fiducial locations using mne.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 to mne.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 to mne.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 method mne.SourceMorph.compute_vol_morph_mat()
(#8366 by Eric Larson)
Add support for non-uniform zooms
(e.g., when using a surrogate MRI via mne.scale_mri()
) in volumetric morphing (#8642 by Eric Larson)
In mne.compute_source_morph()
zooms
are no longer required to match the spacing of src_to
, which is useful to ensure the morphing is accurate when the src_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 to mne.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
to mne.channels.read_polhemus_fastscan()
(#8622 by Eric Larson)
Add option window
to mne.time_frequency.psd_welch()
and related functions (#8862 by Eric Larson)
mne.preprocessing.ICA.plot_sources
now displays an mne.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()
, and mne.io.read_raw_gdf()
now detect and handle invalid highpass/lowpass filter settings (#8584 by Clemens Brunner)
If a baseline
tuple containing one or two None
values – e.g. (None, 0)
, (0, None)
, or (None, None)
– is passed to Epochs
or apply_baseline
, the None
value(s) will be replaced with the actual time (i.e., tmin
and tmax
, respectively) when populating Epochs.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
to mne.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 of mne.viz.plot_source_estimates()
to integrate pyvista
(#8395 by Guillaume Favelier)
Add group_by
parameter to mne.viz.plot_epochs
and mne.Epochs.plot
to allow displaying channel data by sensor position (#8381 by Daniel McCloy)
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 the rank
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
when order
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 using split_naming='bids'
where non-split files would still be named name_split-01_meg.fif
instead of the requested name_meg.fif
(#8464 by Alex Gramfort and Eric Larson)
Fix bug with mne.preprocessing.ICA
where n_pca_components
as a float
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 with sklearn.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()
and mne.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()
when mne.io.Raw.reorder_channels()
or related methods are used afterward (#8303, ##8484 by Eric Larson)
Fix bug where the verbose
arguments to mne.Evoked.apply_baseline()
and mne.Epochs.apply_baseline()
were not keyword-only (#8349 by Eric Larson)
ICA.max_pca_components
will not be altered by calling fit
anymore. Instead, the new attribute ICA.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
where n_components=None, n_pca_components=None
could lead to unstable unmixing matrix inversion by making n_components=None
also use the lesser of n_components=0.999999
and n_components=n_pca_components
(#8351 by Eric Larson)
The ica.n_pca_components
property is no longer be updated during mne.preprocessing.ICA.fit()
, instead ica.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()
where ch_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 identical comment
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 the tstart
parameter value into account when calculating the average heart rate (#8605 by Richard Höchenberger)
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 to mne.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 of ICA
has been deprecated, use n_components
during initialization and n_pca_components
in apply()
instead (#8351 by Eric Larson)
The n_pca_components
argument of ICA
has been deprecated, use n_pca_components
in apply()
(#8356 by Eric Larson)
The trans
argument of mne.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
in mne.viz.plot_epochs
and mne.Epochs.plot
is deprecated, replaced by event_color
which is consistent with mne.viz.plot_raw
and provides greater flexibility (#8381 by Daniel McCloy)
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 +
Modified mne.Epochs.pick_types()
to remove dropped channel types from reject
and flat
dictionaries by new contributor Rahul Nadkarni
Add function mne.preprocessing.regress_artifact()
to remove artifacts using linear regression by new contributor Kyle Mathewson and Eric Larson
Add sources
and detectors
options for fNIRS use of mne.viz.plot_alignment()
allowing plotting of optode locations in addition to channel midpoint channels
and path
between fNIRS optodes by new contributor Kyle Mathewson
BrainVision data format files are now parsed for EEG impedance values in mne.io.read_raw_brainvision()
and provided as a .impedances
attribute of raw
by new contributor Jan Sedivy and Stefan Appelhoff
Add 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 Benerradi
Improved 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 Larson
Allow picking channels in raw instances (e.g., mne.io.Raw.pick_types()
) without preloading data, by Eric Larson
mne.preprocessing.ICA.plot_sources()
now plots annotation markers similar to mne.io.Raw.plot()
by Luke Bloy
Add support for scalar multiplication and division of mne.time_frequency.AverageTFR
instances by Luke Bloy
Add support for signals in mV for mne.io.read_raw_brainvision()
by Clemens Brunner
mne.Epochs.plot_psd_topomap()
and mne.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 Larson
Add mixed and volumetric source estimate plotting using volumetric ray-casting to mne.MixedSourceEstimate.plot()
and mne.VolSourceEstimate.plot_3d()
by Eric Larson
Add mne.MixedSourceEstimate.surface()
and mne.MixedSourceEstimate.volume()
methods to allow surface and volume extraction by Eric Larson
Add mne.VectorSourceEstimate.project()
to project vector source estimates onto the direction of maximum source power by Eric Larson
Add support to mne.extract_label_time_course()
for vector-valued and volumetric source estimates by Eric Larson
Add method mne.VolSourceEstimate.in_label()
by Eric Larson
Add support for mixed source spaces to mne.compute_source_morph()
by Eric Larson
Add support for volume and mixed source spaces to mne.stats.summarize_clusters_stc()
by Eric Larson
Add support for omitting the SDR step in volumetric morphing by passing n_iter_sdr=()
to mne.compute_source_morph
by Eric Larson
Add single_volume
argument to mne.setup_volume_source_space()
to facilitate creating source spaces with many volumes (e.g., all subvolumes of aseg.mgz
) by Eric Larson
Add support for passing a string argument to bg_img
in mne.viz.plot_volume_source_estimates
by Eric Larson
Add support for providing the destination surface source space in the src_to
argument of mne.compute_source_morph()
by Eric Larson
Add explained variance logging to mne.inverse_sparse.mixed_norm()
, mne.inverse_sparse.gamma_map()
, and mne.beamformer.rap_music()
by Eric Larson
Add tol_kind
option to mne.compute_rank()
by Eric Larson
Allow resampling raw data with mne.io.Raw.resample()
without preloading data, by Eric Larson
Allow using pick_ori='vector'
with a fixed-orientation inverse to facilitate visualization with mne.viz.plot_vector_source_estimates()
by Eric Larson
mne.viz.plot_dipole_locations()
and mne.Dipole.plot_locations()
gained a title
argument to specify a custom figure title in orthoview
mode by Richard Höchenberger
Add orientations projected onto the MRI slices in mne.viz.plot_dipole_locations()
in 'orthoview'
mode by Eric Larson
Add temporal derivative distribution repair (TDDR) mne.preprocessing.nirs.temporal_derivative_distribution_repair()
with shortened alias mne.preprocessing.nirs.tddr
by Robert Luke
Add mne.read_freesurfer_lut()
to make it easier to work with volume atlases by Eric Larson
Add support for overlap-add processing when method='spectrum_fit'
in mne.io.Raw.notch_filter()
by Eric Larson
Add 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 with method=dict(eeg='MNE')
by Eric Larson
Added ability of mne.io.read_raw_nirx()
to open data by passing path to header file Robert Luke
Add mne.channels.DigMontage.rename_channels()
to allow renaming montage channels by Eric Larson
Document mne.channels.compute_native_head_t()
to allow computing the native-to-head transformation that will be applied when doing raw.set_montage
and related functions by Eric Larson
Add support to in mne.io.Raw.plot()
for passing clipping
as a float to clip to a proportion of the dedicated channel range by Eric Larson
Add function mne.preprocessing.annotate_muscle_zscore()
to annotate periods with muscle artifacts. by Adonay Nunes
Add mne.stats.ttest_ind_no_p()
to mirror mne.stats.ttest_1samp_no_p()
with hat correction by Eric Larson
Add mne.stats.combine_adjacency
to combine adjacency matrices for independent data dimensions to enable things like spatio-temporal-time-frequency clustering in mne.stats.permutation_cluster_test
by Eric Larson
Speed up raw data reading without preload in mne.io.read_raw_nirx()
by Eric Larson
Speed up mne.Epochs.copy()
and mne.Epochs.__getitem__()
by avoiding copying immutable attributes by Eric Larson
Speed up and reduce memory usage of mne.SourceEstimate.plot()
and related functions/methods when show_traces=True
by Eric Larson
Reduce memory usage of plot_psd
, psd_welch
, and psd_array_welch
for long segments of data by Eric Larson
Support for saving movies of source time courses (STCs) with brain.save_movie
method and from graphical user interface by Guillaume Favelier
Add mri
and show_orientation
arguments to mne.viz.plot_bem()
by Eric Larson
Add mne.viz.centers_to_edges()
to help when using matplotlib.axes.Axes.pcolormesh()
with flat shading by Eric Larson
Add on_missing='raise'
to mne.io.Raw.set_montage()
and related functions to allow ignoring of missing electrode coordinates by Adam Li
Add on_missing='raise'
to mne.viz.plot_events()
to allow ignoring missing events when passing event_id
by Eric Larson
Add REST EEG infinity reference scheme to mne.io.Raw.set_eeg_reference()
and related functions by Eric Larson
Add better sanity checking of max_pca_components
and n_components
to provide more informative error messages for mne.preprocessing.ICA
by Eric Larson
Add plot
option to mne.viz.plot_filter()
allowing selection of which filter properties are plotted and added option for user to supply axes
by Robert Luke
Add estimation method legend to mne.viz.plot_snr_estimate()
by Eric Larson
Add support to mne.SourceSpaces.export_volume
for mri_resolution='sparse'
to color only the nearest-neighbor voxels instead of entire regions by Eric Larson
Add axes
argument to mne.viz.plot_evoked_white()
, mne.Evoked.plot_white()
, and mne.viz.plot_snr_estimate()
by Eric Larson
Change default to surfaces='auto'
from surfaces='head'
to allow mne.viz.plot_alignment()
to work when just passing a mne.Info
as plot_alignment(info)
by Eric Larson
Add 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()
and MNE_3D_OPTION_ANTIALIAS
environment variable to control full-scene antialiasing (FXAA) in 3D functions like mne coreg, mne.viz.plot_alignment()
, and mne.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 Larson
Add config variable MNE_TQDM
to support explicitly setting the TQDM backend to use, for example tqdm
or tqdm.auto
(default) by Eric Larson
Add better support for reading corrupted FIF files in mne.io.read_raw_fif()
by Eric Larson
BIDS 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 Appelhoff
Add support for whitening and multiple channel types in mne.beamformer.make_dics()
by Marijn van Vliet
Add better error message when trying to save incompatible Evoked
objects to the same file by Eric Larson
Add 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 specific read_raw_xxx
functions) by Clemens Brunner
Add automatic T3 magnetometer detection and application of mne.io.Raw.fix_mag_coil_types()
to mne.preprocessing.maxwell_filter()
by Eric Larson
Add extended SSS (eSSS) support to mne.preprocessing.maxwell_filter()
by Eric Larson
Add 'auto'
option to mne.preprocessing.ICA.find_bads_ecg()
to automatically determine the threshold for CTPS method by Yu-Han Luo
Add a notebook
3d backend for visualization in jupyter notebook with mne.viz.set_3d_backend()
by Guillaume Favelier
Add support for reading and writing surfaces in Wavefront .obj format to the mne.read_surface()
and mne.write_surface()
by Marijn van Vliet
Add tutorial on how to manually fix BEM meshes in Blender by Marijn van Vliet and Ezequiel Mikulan
mne.write_evokeds()
will now accept mne.Evoked
objects with differing channel orders in info['bads']
, which would previously raise an exception by Richard Höchenberger
Add support for reading channel names (e.g., for Ricoh data) to mne.io.read_raw_kit()
by Alex Gramfort and Eric Larson
The reject_tmin
and reject_tmax
parameters of mne.Epochs
are now taken into account when using the reject_by_annotation
parameter by Stefan Appelhoff
mne.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öchenberger
Add proj='reconstruct'
to mne.Evoked.plot()
and related functions to apply projectors and then undo the signal bias using field mapping by Eric Larson
Add writing BEM surfaces and solutions in H5 format in mne.write_bem_surfaces()
and mne.write_bem_solution()
by Eric Larson
When picking a subset of channels, or when dropping channels from Raw
, Epochs
, or Evoked
, projectors that can only be applied to the removed channels will now be dropped automatically by Richard Höchenberger
mne.Report
now can add topomaps of SSP projectors to the generated report. This behavior can be toggled via the new projs
argument by Richard Höchenberger
When passing a list of Evoked
objects to plot_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öchenberger
Speed up mne.stats.summarize_clusters_stc()
using Numba by Yu-Han Luo
Add reject_by_annotation=True
to mne.make_fixed_length_epochs()
and mne.preprocessing.ICA.plot_properties()
to reject bad data segments based on annotation by Yu-Han Luo
parse_folder
now accepts a path-like folder name (it used to work with strings only) by Alex Gramfort
Add component_order
parameter to mne.decoding.CSP
which allows switching between mutual_info
(default) and alternate
(a simpler and frequently used option) by Martin Billinger and Clemens Brunner
Add memory size information to the repr
of mne.SourceSpaces
and mne.SourceEstimate
and related classes by Eric Larson
Add reader for Persyst (.lay + .dat format) data in mne.io.read_raw_persyst()
by Adam Li
Use 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 Luke
Evoked
has gained tmin
and tmax
attributes for more consistency with Epochs
by Richard Höchenberger
Fix bug for writing and reading complex evoked data modifying mne.write_evokeds()
and mne.read_evokeds()
by new contributor Lau Møller Andersen
Fix 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 Andersen
Fix bug with logging in mne.io.Raw.set_eeg_reference()
and related functions by new contributor Simeon Wong
Fix bug with mne.io.read_raw_gdf()
where birthdays were not parsed properly, leading to an error by new contributor Svea Marie Meyer
Fix bug with mne.io.read_raw_edf()
where recording ID was not read properly for non-ASCII characters by new contributor Lx37
Fix bug in mne.set_eeg_reference()
and related functions to set info['custom_ref_applied']
to True
for ‘ecog’ and ‘seeg’ channels in addition to ‘eeg’ by new contributor Liberty Hamilton
Fix bug with mne.chpi.compute_chpi_amplitudes()
and mne.chpi.filter_chpi()
to optimize time window length by new contributor Steven Bierer
Fix bug with mne.preprocessing.ICA.find_bads_eog()
when more than one EOG components are present by Christian O’Reilly
Fix bug with non-preloaded data when using raw.apply_proj().load_data().get_data()
where projectors were not applied by Eric Larson
Fix bug to permit stc.project('nn', src)
to be applied after stc
was restricted to an mne.Label
by Luke Bloy
Fix bug with mne.io.Raw.set_meas_date()
to support setting meas_date
to None
, by Luke Bloy
Fix bug with mne.setup_volume_source_space()
when volume_label
was supplied where voxels slightly (in a worst case, about 37% times pos
in distance) outside the voxel-grid-based bounds of regions were errantly included, by Eric Larson
Fix 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 Larson
Fix bug with mne.io.read_raw_ctf()
when reference magnetometers have the compensation grade marked by Eric Larson
Fix bug with mne.SourceSpaces.export_volume
with use_lut=False
where no values were written by Eric Larson
Fix bug with mne.preprocessing.annotate_movement()
where bad data segments, specified in raw.annotations
, would be handled incorrectly by Luke Bloy
Fix 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 when mri_resolution=True
by Eric Larson
Fix bug with mne.compute_source_morph()
when morphing to a volume source space when src_to
is used and the destination subject is not fsaverage
by Eric Larson
Fix bug with mne.compute_source_morph()
where outermost voxels in the destination source space could be errantly omitted by Eric Larson
Fix bug with mne.compute_source_morph()
where complex data was cast to real when doing a volumetric morph by Eric Larson
Fix bug with mne.minimum_norm.compute_source_psd_epochs()
and mne.minimum_norm.source_band_induced_power()
raised errors when method='eLORETA'
by Eric Larson
Fix bug with mne.minimum_norm.apply_inverse()
where the explained variance did not work for complex data by Eric Larson
Fix 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 Larson
Fix bug with mne.combine_evoked()
where equal-weighted averages were wrongly computed as equal-weighted sums, by Daniel McCloy
Fix bug with mne.channels.DigMontage.plot()
when reference channels with no defined position are present, by Eric Larson
Fix bug with mne.channels.read_custom_montage()
where "headshape"
points in SFP format were not read properly, by Eric Larson
Fix bug with setting HTML classes when using mne.Report.add_bem_to_section
by Eric Larson
Fix 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()
and mne.inverse_sparse.gamma_map()
with return_as_dipoles=True
and mne.beamformer.rap_music()
where dip.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 Larson
Fix bug with mne.inverse_sparse.gamma_map()
where output data was not assigned properly when using a free-orientation forward and xyz_same_gamma=False
by Eric Larson
Fix to enable interactive plotting with no colorbar with mne.viz.plot_evoked_topomap()
by Daniel McCloy
Fix plotting with mne.viz.plot_evoked_topomap()
to pre-existing axes by Daniel McCloy
Fix bug with mne.viz.plot_vector_source_estimates()
using the PyVista backend with time_viewer=True
when updating the arrow colormaps by Eric Larson
Fix bug with mne.viz.plot_vector_source_estimates()
where clim='auto'
and clim=dict(..., kind='percent')
did not take into account the magnitude of the activation, by Eric Larson
The default plotting mode for mne.io.Raw.plot()
and mne browse_raw has been changed to clipping=3.
to facilitate data analysis with large deflections, by Eric Larson
PSD plots will now show non-data channels (e.g., misc
) if those channels are explicitly passed to picks
, by Daniel McCloy.
Fix bug with mne.time_frequency.read_tfrs()
where info['meas_date']
was not parsed correctly, by Eric Larson
Fix bug with mne.time_frequency.tfr_array_stockwell()
where inputs were not properly validated by Eric Larson
Fix handling of NaN when using TFCE in clustering functions such as mne.stats.spatio_temporal_cluster_1samp_test()
by Eric Larson
Fix 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 Larson
Fix bug where VolSourceEstimate.vertices
was an instance of ndarray
instead of list
of one ndarray
, by Eric Larson
Fix default to be foreground=None
in mne.viz.plot_source_estimates()
to use white or black text based on the background color by Eric Larson
Fix bug with writing EGI and CTF mne.Info
to H5 format, e.g., with mne.time_frequency.AverageTFR.save
by Eric Larson
Fix bug with topomap outlines in mne.time_frequency.AverageTFR.plot_joint()
and mne.time_frequency.AverageTFR.plot_topo()
by Eric Larson
Fix bug with mne.io.Raw.plot()
where toggling all projectors did not actually take effect by Eric Larson
Fix bug with mne.write_proj()
where the number of columns was incorrectly written by Eric Larson
Fix bug with mne.read_epochs()
when loading data in complex format with preload=False
by Eric Larson
Fix bug with mne.Epochs.save()
where the file splitting calculations did not account for the sizes of non-data writes by Eric Larson
Fix bug with mne.Epochs
when metadata was not subselected properly when event_repeated='drop'
by Eric Larson
Fix bug with mne.Epochs
where epochs.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 Larson
Fix bug with mne.Report
where the BEM section could not be toggled by Eric Larson
Fix bug when using mne.Epochs.crop()
to exclude the baseline period would break mne.Epochs.save()
/ mne.read_epochs()
round-trip by Eric Larson
Fix bug with mne.Epochs.subtract_evoked
where using decimated epochs would lead to an error by Eric Larson
Fix bug with mne.viz.plot_bem()
and mne.Report
when plotting BEM contours when MRIs are not in standard FreeSurfer orientation by Eric Larson
Fix bug with mne.minimum_norm.make_inverse_operator()
where it would warn even when an explicit rank
was used by Eric Larson
Fix bugs with mne.beamformer.make_lcmv()
and mne.beamformer.make_dics()
where:
Noise normalization factors weight_norm='unit-noise-gain'
and weight_norm='nai'
were computed incorrectly
pick_ori='max-power'
computed the max-power orientation incorrectly
pick_ori='normal'
did not compute power or noise normalization factors correctly
mne.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 Larson
Fix bug with mne.Report()
where unicode characters were not rendered properly (encoding for HTML was not set) by Eric Larson
Fix bug with mne.preprocessing.nirs.scalp_coupling_index()
where filter transition was incorrectly assigned by Robert Luke
Fix bug with mne.make_forward_dipole()
where mne.write_forward_solution()
could not be used by Eric Larson
Fix bug with mne.io.Raw.plot()
when scalings='auto'
where bad data would prevent channel plotting by Eric Larson
Default border
and extrapolate
arguments for mne.Evoked.plot_topomap()
and related functions were changed from 0.
to 'mean'
and 'box'
to 'auto'
, respectively, to help more accurately reflect sensor geometries and boundary conditions. extrapolate='auto'
uses extrapolate='local'
for MEG data and extrapolate='head'
otherwise, by Eric Larson
Fix 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 Larson
Fix bug with mne.get_volume_labels_from_aseg()
where the returned labels were alphabetical instead of reflecting their volumetric ID-based order by Eric Larson
Fix bug with mne.preprocessing.find_bad_channels_maxwell()
where good data of exactly step
duration would lead to an error by Eric Larson
Fix 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 Larson
Make mne.set_config()
accept path-like input values by Richard Höchenberger
Fix bug with mne.write_labels_to_annot()
and mne.datasets.fetch_hcp_mmp_parcellation()
where label name strings were not properly terminated, leading to problems loading in FreeSurfer by Eric Larson
Fix bug with mne.beamformer.make_dics()
where complex conjugates were not applied properly by Britta Westner and Eric Larson
Fix 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 Luo
Fix bug with mne.io.Raw.get_channel_types()
and related methods where the ordering of picks
was not preserved, by Eric Larson
Fix bug with mne.io.Raw.plot_psd()
with average=False
and multiple channel types where channel locations were not shown properly by Eric Larson
Fix bug with mne.viz.plot_sparse_source_estimates()
when using 'sphere'
mode by Eric Larson and Guillaume Favelier
Fix bug in FieldTrip reader functions when channels are missing in the info
object by Thomas Hartmann
Throw 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 a trialinfo
field by Thomas Hartmann
Fix bug in mne.preprocessing.ICA.plot_properties()
where time series plot doesn’t start at the proper tmin by Teon Brooks
Fix bug with mne.preprocessing.ICA.plot_properties()
where a mne.io.Raw
object with annotations would lead to an error by Yu-Han Luo
Fix bug with mne.events_from_annotations(raw.annotations)
when orig_time
of annotations is None and raw.first_time > 0
, by Alex Gramfort
Python 3.5 is no longer supported, Python 3.6+ is required, by Eric Larson
adjacency
has replaced connectivity
in the names of:
Arguments to clustering functions, such as mne.stats.permutation_cluster_test
, and
Function names for defining adjacency, such as mne.spatio_temporal_src_adjacency
replacing mne.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 of mne.io.read_raw_kit()
will change from True
to False
in 0.22, by Eric Larson
The normalize_fwd
argument of mne.beamformer.make_dics()
has been deprecated in favor of depth
, by Eric Larson
The overwrite
parameter of mne.write_bem_surfaces()
and mne.write_bem_solution()
defaults to True
in 0.21 but will change to False
in 0.22, by Eric Larson
Add n_cols
parameter to mne.preprocessing.ICA.plot_scores()
to allow plotting scores in multiple columns, by Luke Bloy
In mne.stats.permutation_cluster_test()
and mne.stats.permutation_cluster_1samp_test()
the default parameter value out_type='mask'
has changed to None
, which in 0.21 means 'mask'
but will change to mean 'indices'
in the next version, by Daniel McCloy
The default window size set by filter_length
when method='spectrum_fit'
in mne.io.Raw.notch_filter()
will change from None
(use whole file) to '10s'
in 0.22, by Eric Larson
vmin
and vmax
parameters are deprecated in mne.Epochs.plot_psd_topomap()
and mne.viz.plot_epochs_psd_topomap()
; use new vlim
parameter instead, by Daniel McCloy.
The method stc_mixed.plot_surface
for a mne.MixedSourceEstimate
has been deprecated in favor of stc.surface().plot(...)
by Eric Larson
The method stc.normal
for mne.VectorSourceEstimate
has been deprecated in favor of stc.project('nn', src)
by Eric Larson
Add use_dev_head_trans
parameter to mne.preprocessing.annotate_movement()
to allow choosing the device to head transform is used to define the fixed cHPI coordinates by Luke Bloy
The function mne.channels.read_dig_captrack
will be deprecated in version 0.22 in favor of mne.channels.read_dig_captrak()
to correct the spelling error: “captraCK” -> “captraK”, by Stefan Appelhoff
The threshold
argument in mne.preprocessing.ICA.find_bads_ecg()
defaults to None
in version 0.21 but will change to 'auto'
in 0.22 by Yu-Han Luo
The function mne.preprocessing.mark_flat
has been deprecated in favor of mne.preprocessing.annotate_flat
by Eric Larson
The default argument meg=True
in mne.pick_types()
will change to meg=False
in version 0.22 by Clemens Brunner
Added mne.io.Raw.get_montage()
, which obtains the montage that an instance has, by Adam Li
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
Improved mne.viz.plot_epochs()
to label epoch counts starting from 0, by Sophie Herbst
Add 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 Larson
Add mne.minimum_norm.resolution_metrics()
to compute various resolution metrics for inverse solutions, by Olaf Hauk
Add current source density mne.preprocessing.compute_current_source_density()
to compute the surface Laplacian in order to reduce volume conduction in data by Alex Rockhill
Add mne.chpi.extract_chpi_locs_ctf()
to extract cHPI coil locations from CTF data by Luke Bloy
Add mne.chpi.compute_chpi_amplitudes()
, mne.chpi.compute_chpi_locs()
, and mne.chpi.compute_head_pos()
to compute head positions from cHPI coil locations by Eric Larson and Luke Bloy
Add allow_line_only
option to mne.chpi.filter_chpi()
to allow filtering line frequencies only in files that do not have cHPI information by Eric Larson
Add mne.Epochs.as_type()
to allow remapping data in MEG channels to virtual magnetometer or gradiometer channels by Sophie Herbst and Alex Gramfort
Add copy
parameter to mne.Epochs.iter_evoked()
by Alex Gramfort
Add 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 Daneshzand
Add support for computing patch information only in surface source space creation with add_dist='patch'
in mne.setup_source_space()
and dist_limit=0
in mne.add_source_space_distances()
by Eric Larson
Add mne.Label.restrict
to restrict a label to vertices within a source space by Eric Larson
Add support for passing a destination source space src_to
in mne.compute_source_morph()
to ensure morphing for multiple subjects results in consistent STCs, by Eric Larson
Add support for smooth='nearest'
for surfaces in mne.compute_source_morph()
by Eric Larson
Add support for plotting fNIRS channels in mne.viz.plot_alignment()
, mne.viz.plot_evoked_topo()
and mne.Evoked.animate_topomap()
by Eric Larson and Robert Luke
Add 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 Larson
Add support to mne.io.anonymize_info()
to allow time offset to be applied to dates by Luke Bloy
Add 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 Hauk
Add mne.preprocessing.read_ica_eeglab()
to read EEGLAB ICA decompositions by Christian O’Reilly
Add keyboard functionality to interactive colorbar plotting TFRs by Stefan Repplinger
Add the ability to return_event_id
in mne.read_events()
for use with MNE-C produced -annot.fif
files, by Eric Larson
Add option to mne.connectivity.spectral_connectivity
to compute corrected imaginary PLV by Adonay Nunes
Add mne.SourceEstimate.estimate_snr()
to estimate source-space SNR, by Kaisu Lankinen and Padma Sundaram
Add option to specify the coordinate frame in mne.channels.read_custom_montage()
by Eric Larson
Add option to use match_case=False
to mne.io.Raw.set_montage()
and related functions by Eric Larson
Add reader for NIRx data in mne.io.read_raw_nirx()
by Robert Luke
Add function to convert NIRS data to optical density mne.preprocessing.nirs.optical_density()
by Robert Luke
Add function to convert NIRS data to haemoglobin concentration mne.preprocessing.nirs.beer_lambert_law()
by Robert Luke
Add fig
argument to mne.viz.plot_evoked_field()
by Eric Larson
Add functions to calculate spatial information of NIRS channels mne.preprocessing.nirs.source_detector_distances()
and mne.preprocessing.nirs.short_channels()
by Robert Luke
Add reader for *.dat
electrode position files mne.channels.read_dig_dat()
by Christian Brodbeck
Improved mne.viz.plot_events()
to always show event counts by Eric Larson
Improved LIMO Dataset usage and example for usage of mne.stats.linear_regression()
by Jose Alanis
Add support for reduce_rank=True
for vector beamformers by Eric Larson
Add method='sphere'
support for using Freesurfer spherical inflation in mne.decimate_surface()
to facilitate mesh downsampling for use with mne.make_bem_model()
by Eric Larson
Speed up mne.beamformer.make_lcmv()
and mne.beamformer.make_dics()
calculations by vectorizing linear algebra calls by Dmitrii Altukhov and Eric Larson
Speed up mne.make_forward_solution()
using Numba, by Eric Larson
Speed up mne.io.read_raw_fif()
data reading when the recording is long and there are many data tags repeatedly accessed, by Eric Larson
For KIT systems without built-in layout, mne.channels.find_layout()
now falls back on an automatically generated layout, by Christian Brodbeck
mne.Epochs.plot()
now takes a epochs_colors
parameter to color specific epoch segments by Mainak Jas
Add 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 in mne.read_dipole()
by Eric Larson
Allow returning vector source estimates from sparse inverse solvers through pick_ori='vector'
by Christian Brodbeck
Add NIRS support to mne.viz.plot_topomap()
and mne.viz.plot_ica_components()
by Robert Luke
Add the ability to mne.channels.equalize_channels()
to also re-order the channels and also operate on instances of mne.Info
, mne.Forward
, mne.Covariance
and mne.time_frequency.CrossSpectralDensity
by Marijn van Vliet
Allow mne.channels.read_custom_montage
to handle fiducial points for BESA spherical (.elp
) files by Richard Höchenberger
Add rank
argument to mne.fit_dipole()
by Eric Larson
Add function to convert events to annotations mne.annotations_from_events()
by Nicolas Barascud
Add function to calculate scalp coupling index for fNIRS data mne.preprocessing.nirs.scalp_coupling_index()
by Robert Luke
Add item
argument to mne.Epochs.get_data()
for faster access to NumPy data arrays compared to mne.Epochs.__getitem__()
for frequent access on large mne.Epochs
objects, by Eric Larson
More accurate coordinate system for Easycap montages in mne.channels.make_standard_montage()
by Christian Brodbeck
Add border
argument to mne.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 Magnuski
Add function mne.viz.link_brains()
to link time properties of multiple brain objects interactively by Guillaume Favelier
Add function mne.preprocessing.annotate_movement()
to annotate periods with head motion and mne.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 Nunes
Make selected channels more distinguishable in mne.Epochs.plot_sensors()
when using kind='select'
by Mikołaj Magnuski
Allow retrieval of the number of Infomax ICA iterations via the new return_n_iter
keyword argument of mne.preprocessing.infomax()
by Richard Höchenberger
Expose the number of ICA iterations during the fitting procedure via the n_iter_
attribute of mne.preprocessing.ICA
by Richard Höchenberger
mne.grand_average()
now produces a warning when only a single dataset was passed, instead of raising an error by Richard Höchenberger
Add nrows
and ncols
parameters to mne.viz.plot_evoked_topomap()
, which allows to create multiline topomap plots for Evoked. By Federico Raimondo
Improve repr of mne.Info
(empty items are not shown anymore) by Clemens Brunner
Fix the reduce_rank
parameter in mne.beamformer.make_lcmv()
and mne.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'
in mne.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 to True
now defaults to False
.
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'
for mne.minimum_norm.apply_inverse()
(and variants) to allow restricting source estimation to a label by Luke Bloy
Fix bug in mne.compute_covariance()
and mne.compute_raw_covariance()
where biased normalization (based on degrees of freedom) was used and cov.nfree
was not set properly by Eric Larson
Fix mne.VectorSourceEstimate.normal
to account for cortical patch statistics using use_cps=True
by Eric Larson
Fix pick_ori='normal'
for mne.minimum_norm.apply_inverse()
when the inverse was computed with loose=1.
and the forward solution was not in surface orientation, by Eric Larson
Fix missing xlabel for mne.io.Raw.plot_psd()
and similar functions when passing a subset of axes from a figure by Alex Gramfort
Fix wrong DataFrame index when index=None
in methods mne.io.Raw.to_data_frame()
, mne.Epochs.to_data_frame()
, mne.Evoked.to_data_frame()
, and mne.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 read Info
transforms by Eric Larson
Fix 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 Larson
Fix 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 Larson
Fix mne.io.Raw.anonymize()
to correctly reset raw.annotations.orig_time
by Luke Bloy.
Fix mne.io.Raw.anonymize()
to correctly avoid shifting raw.annotations.onset
relative to raw.first_samp
by Eric Larson
Fix mne.io.Raw.set_channel_types()
and mne.io.Raw.rename_channels()
and related methods to return the instance instead of None
by Eric Larson
mne.Epochs.iter_evoked()
now does not return a copy of info when copy=False
(default parameter) by Alex Gramfort
The attribute mne.Annotations.orig_time
is now read-only, and is a datetime
object (or None) rather than float, by Eric Larson
Fix bug where MRI distances were not properly initialized in mne coreg by Eric Larson
Fix xscale='log'
in mne.io.Raw.plot_psd()
and related functions by Alex Gramfort
Unify behavior of raw.annotations.append(...)
when raw.info['meas_date']
is None to make onsets absolute relative to first_samp
as they are when raw.info['meas_date']
is not None; i.e., you might need to do raw.annotations.append(old_time + raw.first_time)
, by Eric Larson
The info['meas_date']
entry is now a datetime
object (or None) rather than float, by Eric Larson
Fix mne.time_frequency.AverageTFR.save()
and related functions to deal with datetime
objects properly by Eric Larson
Fix 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 Larson
Fix mne.io.read_raw_artemis123()
to add HPI locations to digitization points, by Luke Bloy
Fix mne.Epochs.shift_time()
and mne.Evoked.shift_time()
to return the modified Epochs
or Evoked
instance (instead of None
) by Daniel McCloy.
Fix mne.read_annotations()
for text files with zero or one annotations, by Adonay Nunes
Fix bug in ICA
where requesting extended infomax via fit_params={'extended': True}
was overridden, by Daniel McCloy.
Fix bug in mne.Epochs.interpolate_bads()
where the origin
was not used during MEG or EEG data interpolation by Eric Larson. Old behavior can be achieved using origin=(0., 0., 0.)
for EEG and origin=(0., 0., 0.04)
for MEG, and the new default is origin='auto'
, which uses a head-digitization-based fit.
Fix bug in mne.write_evokeds()
where evoked.nave
was not saved properly when multiple Evoked
instances were written to a single file, by Eric Larson
Fix bug in mne.preprocessing.mark_flat
where acquisition skips were not handled properly, by Eric Larson
Fix bug in mne.viz.plot_bem()
where some sources were not plotted by Jean-Remi King and Eric Larson
Fix 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 Larson
Fix handling in cases where no components are found in mne.preprocessing.corrmap()
by Eric Larson
Fix handling of repeated events in mne.Epochs
by Fahimeh Mamashli and Alex Gramfort
Fix 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 Larson
Fix mne.io.anonymize_info()
to allow shifting dates of service and to match anticipated changes in mne-cpp by Luke Bloy
Fix 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 in mne.time_frequency.tfr_multitaper()
and mne.time_frequency.tfr_morlet()
and make sure an error is raised when exceed Nyquist frequency by Adonay Nunes
Fix 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()
and mne.inverse_sparse.mixed_norm()
, by Mathurin Massias
Fix the automatic scaling of the glyphs in mne.viz.plot_vector_source_estimates()
by using 10% of the brain width, by Guillaume Favelier
Fix handling of missing values (NaNs) in mne.time_frequency.psd_welch()
by Clemens Brunner
Fix mne.decoding.LinearModel
to support the refitted estimator of GridSearchCV
in sklearn
by Chun-Hui Li
Fix mne.viz.plot_topomap()
when there are bad channels in the provided mne.Info
instance by Eric Larson
Fix check for subject definition existing in source space in mne.compute_source_morph()
and related functions by Eric Larson
Fix creation of new figures in mne.Epochs.plot_image()
and mne.viz.plot_epochs_image()
by Eric Larson
Fix bug in Xdawn
where filters where selected along the incorrect axis, by Henrich Kolkhorst
Fix bug in mne.bem.make_watershed_bem()
where some surfaces were saved incorrectly in the working directory by Yu-Han Luo
Fix support for multiple TAL (annotations) channels in BDF reader by Clemens Brunner
Fix missing brainmask
file type in mne.bem.make_watershed_bem()
by changing its default value to ws.mgz
by Fu-Te Wong
Fix bug in mne.channels.make_standard_montage()
which would return easycap-M1
even when requesting easycap-M10
by Christian Brodbeck
Fix the way planar gradiometers are combined in mne.viz.plot_tfr_topomap()
and mne.Epochs.plot_psd_topomap()
by Geoff Brookshire
Improve 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 Hartmann
Fix 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 Li
Fix bug in mne.Report.parse_folder()
, which would not recognize *meg.fif
files by Dmitrii Altukhov.
Include fit_params
when saving an ICA
instance to disk by Richard Höchenberger
Update old url link in mne.datasets.eegbci.load_data()
to EEGMI_URL = 'https://physionet.org/files/eegmmidb/1.0.0/'
by Ramiro Gatti
Ensure corrected p-values calculated by mne.stats.bonferroni_correction()
never exceed the value of 1.0 by Richard Höchenberger
mne.io.pick.get_channel_types
is now called mne.io.pick.get_channel_type_constants
to better reflect its return values, by Daniel McCloy.
mne.Evoked.as_type()
now returns an instance of mne.EvokedArray
by Sophie Herbst and Alex Gramfort
Bumped 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 an event_id
parameter (useful in tandem with event_colors
for specifying event colors by name) by Daniel McCloy.
Passing ch_types=None
has been deprecated in favor of explicitly passing ch_types='misc'
in mne.create_info()
by Eric Larson
New time conversion options for methods mne.io.Raw.to_data_frame()
, mne.Epochs.to_data_frame()
, mne.Evoked.to_data_frame()
, and mne.SourceEstimate.to_data_frame()
, by Daniel McCloy.
mne.Epochs.shift_time()
and mne.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 of mne.Evoked.plot_topomap()
and related functions has been deprecated in favor of head_radius
, by Eric Larson.
The layout
argument to topomap-related functions such as mne.Evoked.plot_topomap()
and mne.viz.plot_tfr_topomap()
has been deprecated in favor of channel-position based flattening based on the info
and sphere
argument, by Eric Larson.
The APIs of mne.io.Raw.plot_projs_topomap()
, mne.Epochs.plot_projs_topomap()
and mne.Evoked.plot_projs_topomap()
are now more similar to mne.viz.plot_projs_topomap()
by Daniel McCloy.
The function mne.setup_volume_source_space()
has a sphere_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 methods mne.io.Raw.plot_projs_topomap()
, mne.Epochs.plot_projs_topomap()
and mne.Evoked.plot_projs_topomap()
now accept parameter vlim
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
and mne.minimum_norm.cross_talk_function
by Alex Gramfort
Deprecate montage
parameter of mne.create_info()
in favor of mne.io.Raw.set_montage()
, mne.Info.set_montage()
, and related functions by Eric Larson
mne.channels.equalize_channels()
no longer operates in-place by default, but instead makes copies of the objects when necessary (see copy
parameter) by Marijn van Vliet
mne.channels.equalize_channels()
now uses the first object in the list as a template for channel ordering by Marijn van Vliet
mne.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 Vliet
mne.io.Raw.pick_channels()
, mne.Epochs.pick_channels()
and mne.Evoked.pick_channels()
now have an ordered
parameter to enforce the ordering of the picked channels by Marijn van Vliet
New methods mne.Forward.pick_channels()
, mne.Covariance.pick_channels()
, mne.Info.pick_channels
, mne.time_frequency.CrossSpectralDensity.pick_channels()
by Marijn van Vliet
New attributes mne.Forward.ch_names
and mne.Info.ch_names
by Marijn van Vliet
In Xdawn
, the components are stored in the rows of attributes filters_
and patterns_
to be consistent with CSP
and ICA
by Henrich Kolkhorst
Drop unit
keyword argument from mne.channels.read_custom_montage()
, as it was unused by Richard Höchenberger
Deprecate mne.preprocessing.run_ica
, use mne.preprocessing.ICA.detect_artifacts
instead by Richard Höchenberger
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
Add mne.cuda.set_cuda_device()
and config variable MNE_CUDA_DEVICE
to select among multiple GPUs (by numeric device ID) by Daniel McCloy.
Add mne.channels.make_standard_montage()
to create mne.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()
and mne.channels.read_polhemus_fastscan()
to read Polhemus data by Joan Massich
Add mne.channels.read_dig_captrack
to read BrainVision CapTrak (BVCT) digitization coordinate files by Stefan Appelhoff and Joan Massich
Add mne.channels.make_dig_montage()
to create mne.channels.DigMontage
objects out of np.arrays by Joan Massich
Add 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 Appelhoff
Allow mne.Annotations.crop()
to support negative tmin
and tmax
by Joan Massich
Unknown events code in GDF are now visible in the event_id
by Theodore Papadopoulo
Now mne.io.read_raw_ctf()
populates raw.annotations
with the markers in MarkerFile.mrk
if any by Joan Massich
Add options for controlling the use of the -T1
flag and the location of the brainmask output in mne watershed_bem by Eric Larson
Add support to mne.read_annotations()
to read CTF marker files by Joan Massich
Do not convert effective number of averages (nave
attribute of mne.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 Larson
Add 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 Larson
Add reader for Curry data in mne.io.read_raw_curry()
by Dirk Gütlin
Butterfly channel plots now possible for mne.Epochs.plot_psd()
with average=False
. Infrastructure for this function now shared with analogous Raw function, found in mne.viz.utils
by Jeff Hanna
Add option not to orthogonalize power envelopes with orthogonalize=False
in mne.connectivity.envelope_correlation
by Denis Engemann
Accept filenames of raw .fif files that end in _meg.fif
to enable complicance with the Brain Imaging Data Structure by Stefan Appelhoff
Add function to check the type of a FIF file using mne.what()
and mne what by Eric Larson
Add support for specifying the initial time and/or position and providing a mne.SourceMorph
instead of mne.SourceSpaces
in mne.viz.plot_volume_source_estimates()
by Eric Larson
Speed up morph map generation in mne.read_morph_map()
by ~5-10x by using numba.jit()
by Eric Larson
Speed up mne.setup_volume_source_space()
, especially when volume_label is not None
by Eric Larson
Speed 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 Larson
Add scale bars for data channels in mne.io.Raw.plot()
by Eric Larson
Add mne.viz.plot_brain_colorbar()
to plot a colorbar appropriately matched to a mne.viz.plot_source_estimates()
plot by Eric Larson
Add support for showing head surface (to visualize digitization fit) while showing a single-layer BEM to mne.viz.plot_alignment()
by Eric Larson
Add option include_tmax=True
to cropping methods mne.io.Raw.crop()
, mne.Epochs.crop()
, mne.Evoked.crop()
, mne.SourceEstimate.crop()
, mne.Dipole.crop()
, and mne.time_frequency.AverageTFR.crop()
by Eric Larson
Change the behavior of mne.io.Raw.plot()
for scalings='auto'
and remove_dc=True
to compute the scalings on the data with DC removed by Clemens Brunner
Allow creating annotations within existing annotations in mne.io.Raw.plot()
by default (the old snapping behavior can be toggled by pressing ‘p’) by Clemens Brunner
Add plotting of rank estimates in mne.viz.plot_cov()
by Eric Larson
Add a new mne.viz.plot_sensors_connectivity
function to visualize the sensor connectivity in 3D by Guillaume Favelier and Alex Gramfort
Add support for info['utc_offset']
, info['device_info']
, and info['helium_info']
components of mne.Info
by Eric Larson
Add control over dipole colors in mne.viz.plot_dipole_locations()
when using orthoview mode by Eric Larson
Use second-order-sections filtering in mne.io.Raw.plot()
and mne browse_raw by Eric Larson
Add re-referencing functionality for ecog and seeg channel types in mne.set_eeg_reference()
by Keith Doelling
Add support for median averaging and for returning unaggregated segments in mne.time_frequency.psd_welch()
by Richard Höchenberger
io.read_raw_kit()
: add support for NYU New York 2019 system update, by Christian Brodbeck
Fix setting montage eeg ref position for captrak by Joan Massich
Fix saving raw read from BDF file using tmin
and tmax
using preload=False
by Alex Gramfort
Fix mne.grand_average()
to use equal sum-to-one weights (like it used to, before changes to underlying mne.combine_evoked()
) by Daniel McCloy
Fix mne.io.Raw.filter()
to deal with instances with no data channels properly by Eric Larson
Fix one-sample baseline issue in mne.BaseEpochs
when using tmin=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 Larson
Fix bug in mne.viz.plot_volume_source_estimates()
where MRIs with voxels not in RAS orientation could not be browsed properly, by Eric Larson
Fix bug in mne.SourceMorph.apply()
where output STCs had stc.vertices
defined improperly, by Eric Larson
Fix bug in mne.SourceMorph.apply()
where the default was errantly mri_space=False
instead of mri_space=None
(as documented), by Eric Larson
Fix mne.VolVectorSourceEstimate.normal
and mne.minimum_norm.apply_inverse()
to only allow normal extraction/orientation for surface and discrete source spaces by Eric Larson
Fix mne.io.Raw.set_annotations()
for meas_date
previous to 1970 by Joan Massich
Fix horizontal spacing issues in mne.io.Raw.plot_psd()
by Jeff Hanna
Fix 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 Larson
Fix side-effect where mne.viz.plot_ica_sources()
and mne.preprocessing.ICA.plot_sources()
changed the ICA.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 Larson
Fix 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 Gramfort
Fix mne.extract_label_time_course()
behavior when using STCs generated with apply_inverse(..., label=label)
or stc.in_label
by Eric Larson
Fix bug in mne.io.read_raw_brainvision()
so that recording date timestamps are also recognized if channel reference data is negative, by Stefan Appelhoff
Fix order of info['dig']
that was alphabetical based on channel names and not following the channel order when using mne.io.Raw.set_montage()
and a mne.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 Eich
Fix formula for effective number of averages in mne.combine_evoked()
when weights='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 Maksymenko
Fix event_id='auto'
in mne.events_from_annotations()
to recover Brainvision markers after saving it in .fif
by Joan Massich
Fix mne.read_epochs_eeglab()
when epochs are stored as float. By Thomas Radman
Fix mne.Evoked.resample()
and mne.Epochs.resample()
not setting inst.info['lowpass']
properly by Eric Larson
Fix checks when constructing volumetric and surface source spaces with mne.setup_volume_source_space()
and mne.setup_source_space()
, respectively, by Eric Larson
Fix bug in handling of mne.Evoked
types that were not produced by MNE-Python (e.g., alternating average) by Eric Larson
Fix bug in mne.read_source_estimate()
where vector volumetric source estimates could not be read by Eric Larson
Fix bug in mne.inverse_sparse.mixed_norm()
and mne.inverse_sparse.tf_mixed_norm()
where weights
was supplied but weights_min
was not, by Eric Larson
Fix 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 Larson
Fix bug in mne.io.Raw.plot()
when using HiDPI displays and the MacOSX backend of matplotlib by Eric Larson
Fix bug in mne.viz.plot_compare_evokeds()
when using Neuromag 122 system by Eric Larson
Fix bug in mne.Epochs.plot_psd()
when some channels had zero/infinite psd
values causing erroneous error messages by Luke Bloy
Fix mne.Evoked.decimate()
not setting inst.first
and inst.last
properly by Marijn van Vliet
Fix mne.io.read_raw_brainvision()
not handling Event
markers created by PyCorder correctly by Richard Höchenberger
Fix support for string-like objects (such as pathlib.Path
) by Eric Larson
Fix mne.Report
silently suppressing exceptions when used as a context manager by Marijn van Vliet
Deprecate mne.channels.Montage
class, mne.channels.read_montage
and mne.channels.read_dig_montage
function by Joan Massich.
Deprecate passing Montage
, str
as montage parameter in mne.io.Raw.set_montage()
by Joan Massich.
Deprecate set_dig
parameter in mne.io.Raw.set_montage()
and update_ch_names
in mne.io.RawEEGLAB.set_montage
when using mne.channels.DigMontage
as by Joan Massich.
Now mne.io.Raw.set_montage()
raises an error when mne.channels.DigMontage
contains only a subset of the channels in raw.info
. It also adds raise_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
for mne.io.Raw.plot()
, mne.Epochs.plot()
, and mne.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 of mne.grand_average()
(which works on both Evoked
and AverageTFR
) by Daniel McCloy
Deprecate exclude
parameter in mne.viz.plot_ica_sources()
and mne.preprocessing.ICA.plot_sources()
, instead always use the exclude
attribute of the ICA object by Daniel McCloy.
Deprecate montage
parameter in favor of the set_montage
method in all EEG data readers mne.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()
and mne.read_epochs_eeglab()
by Alex Gramfort
New parameter clear
in mne.viz.plot_epochs_image()
for clearing pre-existing axes before plotting into them by Daniel McCloy
mne.viz.plot_epochs_image()
no longer supports group_by='type'
— combining by channel type is now the default when picks
is a channel type string; to get individual plots for each channel, pass picks
as a list of channel names or indices by Daniel McCloy
New parameter combine
in mne.viz.plot_compare_evokeds()
for specifying method to combine information across channels by Daniel McCloy
FIFF constants related to SmartShield (*_SMSH_*
and *_SMARTSHIELD
) have been renamed to IAS
for consistency with MEGIN, by Eric Larson
The gfp
parameter of mne.viz.plot_compare_evokeds()
is deprecated; use combine='gfp'
instead by Daniel McCloy
The truncate_yaxis='max_ticks'
parameter of mne.viz.plot_compare_evokeds()
is deprecated; use truncate_yaxis='auto'
instead by Daniel McCloy
The truncate_xaxis
and truncate_yaxis
parameters of mne.viz.plot_compare_evokeds()
now perform one-sided truncation unless both are True
by Daniel McCloy
The show_legend
parameter of mne.viz.plot_compare_evokeds()
is renamed to legend
by Daniel McCloy
mne.viz.plot_compare_evokeds()
always returns a list of figures even when a single figure is generated by Daniel McCloy
Deprecate average=True
and spatial_colors=False
for mne.Epochs.plot_psd()
by Jeff Hanna
mne.io.read_raw_brainvision()
no longer raises an error when there are inconsistencies between info['chs']
and montage
but warns instead by Joan Massich
Add update_ch_names
parameter to mne.io.RawEEGLAB.set_montage
to allow updating the channel names based on the montage by Joan Massich
Reading 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 Brunner
channels.find_ch_connectivity
now returns pre-built neighbor maps for KIT systems when available, by Christian Brodbeck
Add event_id='auto'
in mne.events_from_annotations()
to accommodate Brainvision markers by Jona Sassenhagen, Joan Massich and Eric Larson
Add 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 Vliet
Add butterfly
and order
arguments to mne.viz.plot_epochs()
and offer separated traces for non-meg data (seeg, eeg, ecog) in butterfly view by Stefan Repplinger and Eric Larson
mne.Epochs.get_data()
now takes a picks
parameter by Jona Sassenhagen
plot_compare_evokeds()
will generate topo plots if axes='topo'
by Jona Sassenhagen
mne.viz.iter_topography
can yield an additional axis, e.g., for plotting legends by Jona Sassenhagen and Daniel McCloy
Default plot title reflects channel type when picks
is a channel type in plot_compare_evokeds()
by Daniel McCloy
Color scale limits in plot_topo_image_epochs()
are now computed separately per channel type in combined mag/grad plots, by Daniel McCloy
mne.simulation.simulate_stc()
now allows for label overlaps by Nathalie Gayraud, and Ivana Kojcic
Add long_format
option to the pandas dataframe exporters, e.g mne.Epochs.to_data_frame()
by Denis Engemann
Add 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()
and mne.Evoked.apply_hilbert()
by Eric Larson
Add convenience fsaverage
subject dataset fetcher / updater mne.datasets.fetch_fsaverage()
by Eric Larson
Add fmin
and fmax
argument to mne.time_frequency.AverageTFR.crop()
and to mne.time_frequency.EpochsTFR.crop()
to crop TFR objects along frequency axis by Dirk Gütlin
Add support to mne.read_annotations()
to read CNT formats by Joan Massich
Add reject
parameter to mne.preprocessing.ICA.plot_properties()
to visualize rejected epochs by Antoine Gauthier
Add support for picking channels using channel name and type strings to functions with picks
arguments, along with a convenience mne.io.Raw.pick()
, mne.Epochs.pick()
, and mne.Evoked.pick()
method, by Eric Larson
Add 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()
and mne.datasets.sleep_physionet.temazepam.fetch_data()
) by Alex Gramfort and Joan Massich
Add envelope correlation code in mne.connectivity.envelope_correlation
by Denis Engemann, Sheraz Khan, and Eric Larson
Add option to toggle all projectors in mne.io.Raw.plot()
and related functions by Eric Larson
Add support for indexing, slicing, and iterating mne.Annotations
by Joan Massich
mne.io.Raw.plot()
now uses the lesser of n_channels
and raw.ch_names
, by Joan Massich
Add support for FIR filtering in mne.io.Raw.plot()
and mne browse_raw by passing filtorder=0
or --filtorder 0
, respectively, by Eric Larson
Add chunk_duration
parameter to mne.events_from_annotations()
to allow multiple events from a single annotation by Joan Massich
Add mne.simulation.SourceSimulator
class to simplify simulating SourceEstimates, by Samuel Deslauriers-Gauthier, Kostiantyn Maksymenko, Nathalie Gayraud, Ivana Kojcic, Alex Gramfort, and Eric Larson
mne.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 in raw.annotations
when reading by Joan Massich
Add mne.simulation.add_noise
for ad-hoc noise addition to io.Raw
, Epochs
, and Evoked
instances, by Eric Larson
Add drop_refs=True
parameter to set_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 Jeff Hanna
Add use of scipy.signal.windows.dpss()
for faster multitaper window computations in PSD functions by Eric Larson
Add mne.morph_labels()
to facilitate morphing label sets obtained from parcellations, by Eric Larson
Add mne.labels_to_stc()
to facilitate working with label data, by Eric Larson
Add mne.label.select_sources()
to simplify the selection of sources within a label, by Samuel Deslauriers-Gauthier
Add support for using mne.Info
in mne.simulation.simulate_raw()
instead of mne.io.Raw
by Eric Larson
Add support for passing an iterable and stim channel values using stc
parameter of mne.simulation.simulate_raw()
by Eric Larson
Add overlap
argument to mne.make_fixed_length_events()
by Eric Larson
Add approximate distance-based spacing
source space decimation algorithm to mne.setup_source_space()
by Eric Larson
Add 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 Larson
Add support for CUDA-based correlation computations and progress bars in mne.decoding.ReceptiveField
by Eric Larson
Add support for file-like objects in mne.io.read_raw_fif()
as long as preloading is used by Eric Larson
Add 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()
and mne.compute_proj_epochs()
) to process MEG channels jointly with meg='combined'
by Eric Larson
Add Epoch selection and metadata functionality to mne.time_frequency.EpochsTFR
using new mixin class by Keith Doelling
Add reject_by_annotation
argument to mne.preprocessing.find_ecg_events()
by Eric Larson
Add pca
argument to return the rank-reduced whitener in mne.cov.compute_whitener()
by Eric Larson
Add extrapolate
argument to mne.viz.plot_topomap()
for better control of extrapolation points placement by Mikołaj Magnuski
Add channel_wise
argument to mne.io.Raw.apply_function()
to allow applying a function on multiple channels at once by Hubert Banville
Add option copy='auto'
to control data copying in mne.io.RawArray
by Eric Larson
The mri
parameter in mne.setup_volume_source_space()
is now automatically set to T1.mgz
if subject
is provided. This allows to get a mne.SourceSpaces
of kind volume
more automatically. By Alex Gramfort
Add better __repr__
for constants, and info['dig']
entries via DigPoint
by Eric Larson
Allow string argument in mne.io.Raw.drop_channels()
to remove a single channel by Clemens Brunner
Add additional depth weighting options for inverse solvers (e.g., mne.inverse_sparse.gamma_map()
and mne.inverse_sparse.mixed_norm()
) by Eric Larson
Add depth weighting to LCMV beamformers via depth
argument in mne.beamformer.make_lcmv()
by Eric Larson
Allow toggling of DC removal in mne.io.Raw.plot()
by pressing the ‘d’ key by Clemens Brunner
Improved 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 Brunner
Add mne.realtime.LSLClient
for realtime data acquisition with LSL streams of data by Teon Brooks and Mainak Jas
Add partial support for PyVista as a 3D backend using mne.viz.use_3d_backend()
by Guillaume Favelier
Add option ids = None
in mne.event.shift_time_events()
for considering all events by Nikolas Chalas and Joan Massich
Add mne.realtime.MockLSLStream
to simulate an LSL stream for testing and examples by Teon Brooks
Add support for file-like objects in mne.read_epochs()
as long as preloading is used by Paul Roujansky
Fix annotations in split fif files mne.io.read_raw_fif()
by Joan Massich
Fix mne.Epochs.plot()
with scalings='auto'
to properly compute channel-wise scalings by Stefan Repplinger
Fix mne.gui.coregistration()
and mne coreg crashing with segmentation fault when switching subjects by Eric Larson
Fix mne.io.read_raw_brainvision()
to accommodate vmrk files which do not have any annotations by Alexander Kovrig
Fix mne.io.Raw.plot()
and mne.Epochs.plot()
to auto-scale misc
channel types by default by Eric Larson
Fix filtering functions (e.g., mne.io.Raw.filter()
) to properly take into account the two elements in n_pad
parameter by Bruno Nicenboim
Fix feature_names
parameter change after fitting in mne.decoding.ReceptiveField
by Jean-Remi King
Fix index error in mne.io.read_raw_cnt()
when creating stim_channel manually by Joan Massich
Fix bug with weight_norm='unit-gain'
in mne.beamformer.make_lcmv()
and mne.beamformer.make_dics()
by Britta Westner
Fix 32bits annotations in mne.io.read_raw_cnt()
by Joan Massich
Fix mne.events_from_annotations()
to ignore 'BAD_'` and ``'EDGE_'
annotations by default using a new default regexp
by Eric Larson
Fix bug in mne.preprocessing.mark_flat
where raw.first_samp
was not taken into account by kalenkovich
Fix date parsing in mne.io.read_raw_cnt()
by Joan Massich
Fix topological checks and error messages for BEM surfaces in mne.make_bem_model()
by Eric Larson
Fix default HTML language of mne.Report
to be "en-us"
instead of "fr"
and allow setting via report.lang
property by Eric Larson
Fix bug where loading epochs with preload=True
and subsequently using mne.Epochs.drop_bad()
with new reject
or flat
entries leads to improper data (and epochs.selection
) since v0.16.0 by Eric Larson.
If your code uses Epochs(..., 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 Larson
Fix mne.io.Raw.set_annotations()
with annotations=None
to create an empty annotations object with orig_time
that matches the mne.io.Raw
instance by Eric Larson
Fix mne.io.read_raw_edf()
returning all the annotations with the same name in GDF files by Joan Massich
Fix 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 Brunner
Fix bug where filtering was not performed with lowpass
or highpass
in mne.io.Raw.plot()
and mne browse_raw by Eric Larson
Fix 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 Gramfort
Fix checking of data
dimensionality in mne.SourceEstimate
and related constructors by Eric Larson
Fix mne.io.Raw.append()
annotations miss-alignment by Joan Massich
Fix hash bug in the mne.io.edf
module when installing on Windows by Eric Larson
Fix mne.io.read_raw_edf()
reading duplicate channel names by Larry Eisenman
Fix 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-Loccoz
Fix missing code for computing the median when method='median'
in mne.Epochs.average()
by Cristóbal Moënne-Loccoz
Fix CTF helmet plotting in mne.viz.plot_evoked_field()
by Eric Larson
Fix saving of rejection parameters in mne.Epochs.save()
by Eric Larson
Fix orientations returned by mne.dipole.get_phantom_dipoles()
(half were flipped 180 degrees) by Eric Larson
Fix bug in mne.viz.plot_compare_evokeds()
when evoked.times[0] >= 0
would cause a problem with vlines='auto'
mode by Eric Larson
Fix path bugs in mne.bem.make_flash_bem()
and mne flash_bem by Eric Larson
Fix mne.time_frequency.AverageTFR.plot_joint()
mishandling bad channels, by David Haslacher and Jona Sassenhagen
Fix mne.beamformer.make_lcmv()
failing when full rank data is used (i.e., when no projection is done) with reg=0.
, by Eric Larson
Fix issue with bad channels ignored in mne.beamformer.make_lcmv()
and mne.beamformer.make_dics()
by Alex Gramfort
Fix mne.compute_proj_raw()
when duration != None
not to apply existing proj and to avoid using duplicate raw data samples by Eric Larson
Fix reject_by_annotation
not being passed internally by mne.preprocessing.create_ecg_epochs()
and mne clean_eog_ecg to mne.preprocessing.find_ecg_events()
by Eric Larson
Fix mne.io.read_raw_edf()
failing when EDF header fields (such as patient name) contained special characters, by Clemens Brunner
Fix mne.io.read_raw_eeglab()
incorrectly parsing event durations by Clemens Brunner
Fix mne.io.read_raw_egi()
when cropping non-preloaded EGI MFF data by Alex Gramfort
Fix mne.io.Raw.interpolate_bads()
for interpolating CTF MEG channels when reference sensors are present by jeythekey
Fix a bug in mne.io.Raw.resample()
, where resampling events could result in indices > n_times-1, by jeythekey
Fix mne.preprocessing.ICA.score_sources()
to use the sfreq
of the raw data to filter rather than the sfreq
when the ICA was fit, by jeythekey
Fix a bug in mne.preprocessing.ICA
, where manually setting the attribute ICA.exclude
to an np.array resulted in the removal of random components when later also providing the exclude
argument to any apply...
-method, by jeythekey
Ascending changed to descending sorting of scores for integer ..._criterion
arguments in mne.preprocessing.ICA.detect_artifacts
and mne.preprocessing.run_ica
, as it used to be documented; the docstring in these functions was corrected for float ..._criterion
arguments, by jeythekey
Deprecate cov, iir_params, blink, ecg, chpi, random_state
and support for mne.io.Raw
instance inputs in mne.simulation.simulate_raw()
; use mne.simulation.add_noise()
, mne.simulation.add_ecg()
, mne.simulation.add_eog()
, and mne.simulation.add_chpi()
by Eric Larson
Add overwrite
parameter in mne.Epochs.save()
by Katarina Slama
Add stim_channel
parameter in mne.io.read_raw_cnt()
to toggle stim channel synthesis by Joan Massich
Python 2 is no longer supported; MNE-Python now requires Python 3.5+, by Eric Larson
A new class mne.VolVectorSourceEstimate
is returned by mne.minimum_norm.apply_inverse()
(and related functions) when a volume source space and pick_ori='vector'
is used, by Eric Larson
Converting a forward solution with a volume source space to fixed orientation using mne.convert_forward_solution()
now raises an error, by Eric Larson
raw.estimate_rank
has been deprecated and will be removed in 0.19 in favor of mne.compute_rank()
by Eric Larson
Annotations
are now kept sorted (by onset time) during instantiation and append()
operations, by Eric Larson
Deprecate mne.io.find_edf_events
by Joan Massich
Deprecate limit_depth_chs
in mne.minimum_norm.make_inverse_operator()
in favor of depth=dict(limit_depth_chs=...)
by Eric Larson
Reading BDF and GDF files with mne.io.read_raw_edf()
is deprecated and replaced by mne.io.read_raw_bdf()
and mne.io.read_raw_gdf()
, by Clemens Brunner
mne.forward.compute_depth_prior()
has been reworked to operate directly on Forward
instance as forward
rather than a representation scattered across the parameters G, is_fixed_ori, patch_info
, by Eric Larson
Deprecate method='extended-infomax'
in mne.preprocessing.ICA
; Extended Infomax can now be computed with method='infomax'
and fit_params=dict(extended=True)
by Clemens Brunner
Fix support for supplying extrapolate
via ica.plot_properties(..., topomap_args=dict(extrapolate=...))
by Sebastian Castano
The peak finder that was formerly accessible via from mne.preprocessing.peak_finder import peak_finder
should now be imported directly from the enclosing namespace as from mne.preprocessing import peak_finder
by Eric Larson
Deprecate mne.realtime
module to make a standalone module mne-realtime
that will live outside of this package by Teon Brooks
Add new tutorial for mne.Annotations
and events
by Joan Massich and Alex Gramfort
Add support for saving mne.Annotations
as CSV and TXT files by Joan Massich and Alex Gramfort
Add mne.Epochs.shift_time()
that shifts the time axis of mne.Epochs
by Thomas Hartmann
Add 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 Khan
Add mne.io.read_raw_fieldtrip()
, mne.read_epochs_fieldtrip()
and mne.read_evoked_fieldtrip()
to import FieldTrip data. By Thomas Hartmann and Dirk Gütlin.
Add rank
parameter to mne.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 Engemann
Add 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()
and mne.read_epochs()
, by Stefan Repplinger, Eric Larson and Alex Gramfort
Add optically pumped magnetometer dataset and example by Rasmus Zetter and Eric Larson
Add orgin
parameter to mne.io.Raw.time_as_index()
to allow times
to be relative to this origin
by Joan Massich
Add title
argument to mne.SourceEstimate.plot()
by Eric Larson
mne.io.Raw.set_annotations()
now changes orig_time
to match meas_date
and shift self.annotations.onset
accordingly. Previous behavior is deprecated and would be removed in 0.18. Work by Joan Massich
Add mne.compute_source_morph()
which creates a mne.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()
and mne.preprocessing.create_eog_epochs()
by Peter Molfese
Add possibility to save mne.VolSourceEstimate
and mne.MixedSourceEstimate
to HDF5 format (file extension .h5) with mne.VolSourceEstimate.save()
and mne.MixedSourceEstimate.save()
by Alex Gramfort
Add replace
parameter to mne.io.Raw.add_events()
to allow adding events while removing the old ones on the stim channel by Alex Gramfort
Add ability to pass axes
to ts_args
and topomap_args
of mne.viz.plot_evoked_joint()
by Jona Sassenhagen
Add ability to pass a precomputed forward solution to mne.simulation.simulate_raw()
by Eric Larson
Add ability to read and write beamformers with mne.beamformer.read_beamformer()
and mne.beamformer.Beamformer.save
by Eric Larson
Add resting-state source power spectral estimation example sphx_glr_auto_examples_datasets_plot_opm_rest_data.py
by Eric Larson, Denis Engemann, and Luke Bloy
Add mne.channels.make_1020_channel_selections()
to group 10/20-named EEG channels by location, by Jona Sassenhagen
Add helmet for Artemis123 for mne.viz.plot_alignment()
by Eric Larson
Add support for reading MATLAB v7.3+
files in mne.io.read_raw_eeglab()
and mne.read_epochs_eeglab()
via pymatreader by Steven Gutstein, Eric Larson, and Thomas Hartmann
Add support for raw PSD plots in mne.Report.parse_folder()
via raw_psd
argument of mne.Report
by Eric Larson
Add trig_shift_by_type
parameter in mne.io.read_raw_brainvision()
to allow to specify offsets for arbitrary marker types by Henrich Kolkhorst
Add progress bar support to mne.decoding.SlidingEstimator
and mne.decoding.GeneralizingEstimator
by Eric Larson
Add interactive visualization of volume source estimates using mne.viz.plot_volume_source_estimates()
by Mainak Jas
Add mne.head_to_mri()
to convert positions from head coordinates to MRI RAS coordinates, by Joan Massich and Alex Gramfort
Add improved CTF helmet for mne.viz.plot_alignment()
by Eric Larson
Add handling in mne.combine_evoked()
and mne.grand_average()
for input with the same channels in different orders, if required, by Jona Sassenhagen
Add split_naming
parameter to the mne.io.Raw.save
method to allow for BIDS-compatible raw file name construction by Teon Brooks
Add origin
parameter to mne.Evoked.interpolate_bads()
and related methods by Eric Larson
Add automated MEG helmet shape approximation to mne.viz.plot_alignment()
by Eric Larson
Add capability to save a mne.Report
to an HDF5 file to mne.Report.save()
by Marijn van Vliet
Add mne.open_report()
to read back a mne.Report
object that was saved to an HDF5 file by Marijn van Vliet
Add multi-taper estimation to mne.minimum_norm.compute_source_psd()
by Eric Larson
Add support for custom, e.g. robust, averaging methods in mne.Epochs.average()
by Jona Sassenhagen
Add support for Neuromag 122 system by Alex Gramfort
Add function mne.io.read_annotations_brainvision
for reading directly Brainvision marker files by Alex Gramfort
Add mne.Report.remove()
method to remove existing figures from a report, by Marijn van Vliet
Add sign to output of max-power orientation for mne.beamformer.make_dics()
by Eric Larson
Add support for pick_ori='max-power'
when weight_norm=None
in mne.beamformer.make_lcmv()
by Marijn van Vliet
Add support for weight_norm='nai'
for all pick_ori
options in mne.beamformer.make_lcmv()
by Marijn van Vliet
Add support for weight_norm='nai'
to mne.beamformer.make_dics()
by Marijn van Vliet
Add parameter rank=None
to mne.beamformer.make_dics()
by Marijn van Vliet
Add parameter rank='full'
to mne.beamformer.make_lcmv()
, which can be set to None
to auto-compute the rank of the covariance matrix before regularization by Marijn van Vliet
Handle different time vectors in topography plots using mne.viz.plot_evoked_topo()
by Jussi Nurminen
Speed up mne.inverse_sparse.mixed_norm()
if the solver
parameter is set to bcd
using scipy.linalg.get_blas_funcs()
by Quentin Bertrand
Fix bug with scaling of data in mne.cov._compute_covariance_auto
that was affecting the mne.decoding.SPoC
estimator by David Sabbagh
Fix bug in mne.minimum_norm.compute_source_psd()
where the stc.times
output was scaled by 1000, by Eric Larson
Fix default values for 'diagonal_fixed'
estimation method of mne.compute_covariance()
to be 0.1
for all channel types, as in mne.cov.regularize()
by Eric Larson
Fix 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 Massich
Fix 2nd column of events in BrainVision to no longer store duration but rather be contained by raw.annotations
by Alex Gramfort
Fix checking of the correctness of the prepared=True
argument in mne.minimum_norm.apply_inverse()
and related functions by Eric Larson
Fix 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 as ndarray
instead of mne.Evoked
instance, by Eric Larson
Fix bug with mne flash_bem
when flash30
is not used by Eric Larson
Fix bug with mne.stats.permutation_cluster_test()
and mne.stats.spatio_temporal_cluster_test()
where threshold=None
was not calculated properly for a f-oneway test by Daniel McCloy and Eric Larson
Fix bug with channel names in mgh70
montage in mne.channels.read_montage
by Eric Larson
Fix duplication of info['hpi_meas']
and info['hpi_results']
by Sara Sommariva
Fix bug in mne.io.read_raw_edf()
when reading large files on Windows by Marcin Koculak
Fix check in mne.viz.plot_sensors()
for invalid channel locations by Eric Larson
Fix bug in mne.io.read_raw_edf()
where GDF files had info['highpass']
and info['lowpass']
set to NaN and info['meas_date']
set incorrectly, by Eric Larson
Fix bug in mne.preprocessing.ICA.apply()
to handle arrays as exclude
property by Joan Massich
Fix bug in method='eLORETA'
for mne.minimum_norm.apply_inverse()
when using a sphere model and saved inv
by Eric Larson
Fix bug in mne.io.Raw
where warnings were emitted when objects were deleted by Eric Larson
Fix vector data support for mne.VolSourceEstimate
by Christian Brodbeck
Fix bug with IIR filtering axis in mne.filter.filter_data()
by Eric Larson
Fix bug with non-boxcar windows in mne.io.Raw.resample()
and mne.filter.resample()
by Eric Larson
Fix 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 Larson
Fix bug in inst.apply_proj()
where an average EEG reference was always added by Eric Larson
Fix bug in mne.time_frequency.tfr_morlet()
, mne.time_frequency.tfr_multitaper()
, and mne.time_frequency.tfr_stockwell()
where not all data channels were picked by Eric Larson
Fix bug in mne.preprocessing.ICA.plot_overlay()
and mne.make_field_map()
for CTF data with compensation by Eric Larson
Fix bug in mne.create_info()
passing int
as ch_names
on Windows by Eric Larson
Fix 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 Kolkhorst
Fix bug in mne.io.read_raw_brainvision()
where 1-indexed BrainVision events were not being converted into 0-indexed mne events by Steven Bethard
Fix bug in mne.viz.plot_snr_estimate()
and mne.minimum_norm.estimate_snr()
where the inverse rank was not properly utilized (especially affecting SSS’ed MEG data) by Eric Larson
Fix 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 Larson
Fix bug in mne.io.read_raw_ctf()
to read bad channels and segments from CTF ds files by Luke Bloy
Fix problem with mne.io.Raw.add_channels()
where raw.info['bads']
was replicated by Eric Larson
Fix bug with mne.Epochs
where an error was thrown when resizing data (e.g., during mne.Epochs.drop_bad()
) by Eric Larson
Fix naming of raw.info['buffer_size_sec']
to be raw.buffer_size_sec
as it is a writing parameter rather than a measurement parameter by Eric Larson
Fix EGI-MFF parser not to require dateutil
package by Eric Larson
Fix 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()
with mne.decoding.SlidingEstimator
by Alex Gramfort
Fix event sample number increase when combining many Epochs objects with mne.concatenate_epochs()
with by Jasper van den Bosch
Fix title of custom slider images to mne.Report
by Marijn van Vliet
Fix missing initialization of self._current
in mne.Epochs
by Henrich Kolkhorst
Fix processing of data with bad segments and acquisition skips with new skip_by_annotation
parameter in mne.preprocessing.maxwell_filter()
by Eric Larson
Fix symlinking to use relative paths in mne flash_bem` and ``mne watershed_bem
by Eric Larson
Fix 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()
when pick_ori='normal', weight_norm='unit_noise_gain'
by Marijn van Vliet
Fix MNE-C installation instructions by buildqa
Fix computation of max-power orientation in mne.beamformer.make_dics()
when pick_ori='max-power', weight_norm='unit_noise_gain'
by Marijn van Vliet
Deprecated separate reading of annotations and synthesis of STI014 channels in readers by Joan Massich:
Deprecated mne.io.read_annotations_eeglab
Deprecated annot
and annotmap
parameters in read_raw_edf()
Deprecated stim_channel
parameters in read_raw_edf()
, read_raw_brainvision()
, and read_raw_eeglab()
Annotations are now added to raw
instances directly upon reading as raw.annotations
.
They can also be read separately with mne.read_annotations()
for EEGLAB, BrainVision, EDF, and Brainstorm formats.
Use mne.events_from_annotations(raw.annotations)
to convert these to events instead of the old way (using STI014 channel synthesis followed by mne.find_events(raw)
).
Use read_raw_...(stim_channel=False)
to disable warnings (and stim channel synthesis), but other arguments for stim_channel
will still be supported.
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, but stim_channel=False
will still be acceptable for backward compatibility.
The stim_channel
keyword arguments will be removed from read_raw_...
functions.
Calling :meth:mne.io.pick.pick_info
removing channels that are needed by compensation matrices (info['comps']
) no longer raises RuntimeException
but instead logs an info level message. By Luke Bloy
mne.Epochs.save()
now has the parameter fmt
to specify the desired format (precision) saving epoched data, by Stefan Repplinger, Eric Larson and Alex Gramfort
Deprecated mne.SourceEstimate.morph_precomputed
, mne.SourceEstimate.morph
, mne.compute_morph_matrix
, mne.morph_data_precomputed
and mne.morph_data
in favor of mne.compute_source_morph()
, by Tommy Clausner
Prepare 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
and scikits-cuda
. It can be installed using conda install cupy
. By Eric Larson
Functions requiring a color cycle will now default to Matplotlib rcParams colors, by Stefan Appelhoff
mne.Evoked.plot_image()
has gained the ability to show_names
, and if a selection is provided to group_by
, axes
can now receive a dict
, by Jona Sassenhagen
Calling mne.Epochs.decimate()
with decim=1
no longer copies the data by Henrich Kolkhorst
Removed blocking (waiting for new epochs) in mne.realtime.RtEpochs.get_data()
by Henrich Kolkhorst
Warning messages are now only emitted as warnings.warn_explicit()
rather than also being emitted as logging
messages (unless a logging file is being used) to avoid duplicate warning messages, by Eric Larson
Deprecated save_stc_as_volume function in favor of mne.VolSourceEstimate.as_volume()
and mne.VolSourceEstimate.save_as_volume()
by Alex Gramfort
src.kind
now equals to 'mixed'
(and not 'combined'
) for a mixed source space (made of surfaces and volume grids) by Alex Gramfort
Deprecation of mne.io.Raw.annotations
property in favor of mne.io.Raw.set_annotations()
by Joan Massich
The default value of stop_receive_thread
in mne.realtime.RtEpochs.stop
has been changed to True
by Henrich Kolkhorst
Using 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 Larson
mne.io.Raw.annotations
when missing is set to an empty mne.Annotations
rather than None
by Joan Massich and Alex Gramfort
Mismatches in CTF compensation grade are now checked in inverse computation by Eric Larson
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
Add possibility to pass dict of floats as argument to mne.make_ad_hoc_cov()
by Nathalie Gayraud
Add support for metadata in mne.Epochs
by Chris Holdgraf, Alex Gramfort, Jona Sassenhagen, and Eric Larson
Add support for plotting a dense head in mne.viz.plot_alignment()
by Eric Larson
Allow plotting in user-created mayavi Scene in mne.viz.plot_alignment()
by Daniel McCloy
Reduce memory consumption and do not require data to be loaded in mne.Epochs.apply_baseline()
by Eric Larson
Add option render_bem
to mne.Report.parse_folder()
by Eric Larson
Add to mne.viz.plot_alignment()
plotting of coordinate frame axes via show_axes
and terrain-style interaction via interaction
, by Eric Larson
Add option initial_event
to mne.find_events()
by Clemens Brunner
Left and right arrow keys now scroll by 25% of the visible data, whereas Shift+left/right scroll by a whole page in mne.io.Raw.plot()
by Clemens Brunner
Add support for gantry tilt angle determination from Elekta FIF file header by Chris Bailey
Add possibility to concatenate mne.Annotations
objects with +
or +=
operators by Clemens Brunner
Add support for MaxShield raw files in mne.Report
by Eric Larson
Add ability to plot whitened data in mne.io.Raw.plot()
, mne.Epochs.plot()
, mne.Evoked.plot()
, and mne.Evoked.plot_topo()
by Eric Larson
Workaround for reading EGI MFF files with physiological signals that also present a bug from the EGI system in mne.io.read_raw_egi()
by Federico Raimondo
Add support for reading subject height and weight in info['subject_info']
by Eric Larson
Improve online filtering of raw data when plotting with mne.io.Raw.plot()
to filter in segments in accordance with the default skip_by_annotation=('edge', 'bad_acq_skip')
of mne.io.Raw.filter()
to avoid edge ringing by Eric Larson
Add support for multiple head position files, plotting of sensors, and control of plotting color and axes in mne.viz.plot_head_positions()
by Eric Larson
Add ability to read and write Annotations
separate from mne.io.Raw
instances via Annotations.save()
and read_annotations()
by Eric Larson
Add option to unset a montage by passing None
to mne.io.Raw.set_montage()
by Clemens Brunner
Add sensor denoising via mne.preprocessing.oversampled_temporal_projection()
by Eric Larson
Add mne.io.pick.get_channel_types
which returns all available channel types in MNE by Clemens Brunner
Use standard PCA instead of randomized PCA whitening prior to ICA to increase reproducibility by Clemens Brunner
Plot sEEG electrodes in mne.viz.plot_alignment()
by Alex Gramfort
Add support for any data type like sEEG or ECoG in covariance related functions (estimation, whitening and plotting) by Alex Gramfort and Eric Larson
Add function mne.io.read_annotations_eeglab
to allow loading annotations from EEGLAB files, by Alex Gramfort
mne.io.Raw.set_montage()
now accepts a string as its montage
argument; this will set a builtin montage, by Clemens Brunner
Add 4D BTi phantom dataset mne.datasets.phantom_4dbti.data_path()
, by Alex Gramfort
Changed the background color to grey in mne.viz.plot_alignment()
to make helmet more visible, by Alex Gramfort
Add mne.io.Raw.reorder_channels()
, mne.Evoked.reorder_channels()
, etc. to reorder channels, by Eric Larson
Add to mne coreg
and mne.gui.coregistration()
by Eric Larson:
Improved visibility of points inside the head
Projection of EEG electrodes
Orientation of extra points toward the surface
Scaling points by distance to the head surface
Display of HPI points
ICP fitting with convergence criteria
Faster display updates
Scaling of mri/*.mgz
files
Scaling of mri/trainsforms/talairach.xfm
files for conversion to MNI space
Add ability to exclude components interactively by clicking on their labels in mne.preprocessing.ICA.plot_components()
by Mikołaj Magnuski
Add reader for manual annotations of raw data produced by Brainstorm by Anne-Sophie Dubarry
Add eLORETA noise normalization for minimum-norm solvers by Eric Larson
Tighter duality gap computation in mne.inverse_sparse.tf_mxne_optim
and new parametrization with alpha
and l1_ratio
instead of alpha_space
and alpha_time
by Mathurin Massias and Daniel Strohmeier
Add dgap_freq
parameter in mne.inverse_sparse.mxne_optim
solvers to control the frequency of duality gap computation by Mathurin Massias and Daniel Strohmeier
Add support for reading Eximia files by Eric Larson and Federico Raimondo
Add the Picard algorithm to perform ICA for mne.preprocessing.ICA
, by Pierre Ablin and Alex Gramfort
Add ability to supply a mask to the plot in mne.viz.plot_evoked_image()
by Jona Sassenhagen
Add connectivity=False
to cluster-based statistical functions to perform non-clustering stats by Eric Larson
Add mne.time_frequency.csd_morlet()
and mne.time_frequency.csd_array_morlet()
to estimate cross-spectral density using Morlet wavelets, by Marijn van Vliet
Add multidictionary time-frequency support to mne.inverse_sparse.tf_mixed_norm()
by Mathurin Massias and Daniel Strohmeier
Add new DICS implementation as mne.beamformer.make_dics()
, mne.beamformer.apply_dics()
, mne.beamformer.apply_dics_csd()
and mne.beamformer.apply_dics_epochs()
, by Marijn van Vliet and Susanna Aro
Fix bug in EEG interpolation code to do nothing if there is no channel to interpolate by Mainak Jas
Fix bug in mne.preprocessing.peak_finder
to output datatype consistently and added input check for empty vectors by Tommy Clausner
Fix bug in mne.io.read_raw_brainvision()
to use the correct conversion for filters from time constant to frequency by Stefan Appelhoff
Fix bug with events when saving split files using mne.Epochs.save()
by Eric Larson
Fix bug in mne.decoding.SlidingEstimator
and mne.decoding.GeneralizingEstimator
to allow mne.decoding.cross_val_multiscore()
to automatically detect whether the base_estimator
is a classifier and use a StratifiedKFold
instead of a KFold
when cv
is not specified, by Jean-Remi King
Fix 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 Brunner
Fix bug in threshold-free cluster enhancement parameter validation (mne.stats.permutation_cluster_1samp_test()
and mne.stats.permutation_cluster_test()
) by Clemens Brunner
Fix bug in mne.io.Raw.plot()
to correctly display event types when annotations are present by Clemens Brunner
Fix bug in mne.stats.spatio_temporal_cluster_test()
default value for threshold
is now calculated based on the array sizes in X
, by Eric Larson
Fix bug in mne.simulation.simulate_raw()
with use_cps=True
where CPS was not actually used by Eric Larson
Fix bug in mne.simulation.simulate_raw()
where 1- and 3-layer BEMs were not properly transformed using trans
by Eric Larson
Fix bug in mne.viz.plot_alignment()
where the head surface file -head.fif
was not used even though present by Chris Bailey
Fix bug when writing compressed sparse column matrices (e.g., Maxwell filtering cross-talk matrices) by Marijn van Vliet and Eric Larson
Fix bug in mne.io.Raw.plot_psd()
to correctly deal with reject_by_annotation=False
by Clemens Brunner
Fix bug in mne.make_fixed_length_events()
when hitting corner case problems rounding to sample numbers by Eric Larson
Fix bug in mne.Epochs
when passing events as list with event_id=None
by Alex Gramfort
Fix bug in mne.Report.add_figs_to_section
when passing numpy.ndarray
by Eric Larson
Fix bug in CSS class setting in mne.Report
BEM section by Eric Larson
Fix bug in Annotations
where annotations that extend to the end of a recording were not extended properly by Eric Larson
Fix bug in mne.io.Raw.filter()
to properly raw data with acquisition skips in separate segments by Eric Larson
Fix bug in mne.preprocessing.maxwell_filter()
where homogeneous fields were not removed for CTF systems by Eric Larson
Fix computation of average quaternions in mne.preprocessing.maxwell_filter()
by Eric Larson
Fix bug in writing raw.annotations
where empty annotations could not be written to disk, by Eric Larson
Fix support for writing FIF files with acquisition skips by using empty buffers rather than writing zeros by Eric Larson
Fix bug in the mne make_scalp_surfaces
command where --force
(to bypass topology check failures) was ignored by Eric Larson
Fix bug in mne.preprocessing.maxwell_filter()
when providing origin
in 'meg'
coordinate frame for recordings with a MEG to head transform (i.e., non empty-room recordings) by Eric Larson
Fix bug in mne.viz.plot_cov()
that ignored colorbar
argument by Nathalie Gayraud
Fix bug when picking CTF channels that could cause data saved to disk to be unreadable by Eric Larson
Fix bug when reading event latencies (in samples) from eeglab files didn’t translate indices to 0-based python indexing by Mikołaj Magnuski
Fix consistency between mne.Epochs
and mne.stats.linear_regression_raw()
in converting between samples and times (mne.stats.linear_regression_raw()
now rounds, instead of truncating) by Phillip Alday
Fix bug in mne coreg
where sphere surfaces were scaled by Eric Larson
Fix bug in mne.Evoked.plot_topomap()
when using proj='interactive'
mode by Eric Larson
Fix bug when passing show_sensors=1
to mne.viz.plot_compare_evokeds()
resulted in sensors legend placed in lower right of the figure (position 4 in matplotlib), not upper right by Mikołaj Magnuski
Fix handling of annotations when cropping and concatenating raw data by Alex Gramfort and Eric Larson
Fix bug in mne.preprocessing.create_ecg_epochs()
where keep_ecg=False
was ignored by Eric Larson
Fix bug in mne.io.Raw.plot_psd()
when picks is not None
and picks
spans more than one channel type by Eric Larson
Fix bug in mne.make_forward_solution
when passing data with compensation channels (e.g. CTF) that contain bad channels by Alex Gramfort
Fix bug in mne.SourceEstimate.get_peak()
and mne.VolSourceEstimate.get_peak()
when there is only a single time point by Marijn van Vliet
Fix bug in mne.io.read_raw_edf()
when reading BDF files stimulus channels are now not scaled anymore by Clemens Brunner
Channels with unknown locations are now assigned position [np.nan, np.nan, np.nan]
instead of [0., 0., 0.]
, by Eric Larson
Removed unused image_mask
argument from mne.viz.plot_topomap()
by Eric Larson
Unknown measurement dates are now stored as info['meas_date'] = None
rather than using the current date. None
is also now used when anonymizing data and when determining the machine ID for writing files, by Mainak Jas and Eric Larson
mne.Evoked.plot()
will now append the number of epochs averaged for the evoked data in the first plot title, by Eric Larson
Changed the line width in mne.viz.plot_bem()
from 2.0 to 1.0 for better visibility of underlying structures, by Eric Larson
Changed the behavior of mne.io.Raw.pick_channels()
and similar methods to be consistent with mne.pick_channels()
to treat channel list as a set (ignoring order) – if reordering is necessary use inst.reorder_channels
, by Eric Larson
Changed the labeling of some plotting functions to use more standard capitalization and units, e.g. “Time (s)” instead of “time [sec]” by Eric Larson
mne.time_frequency.csd_epochs
has been refactored into mne.time_frequency.csd_fourier()
and mne.time_frequency.csd_multitaper()
, by Marijn van Vliet
mne.time_frequency.csd_array
has been refactored into mne.time_frequency.csd_array_fourier()
and mne.time_frequency.csd_array_multitaper()
, by Marijn van Vliet
Added clean_names=False
parameter to mne.io.read_raw_ctf()
for control over cleaning of main channel names and compensation channel names from CTF suffixes by Oleh Kozynets
The functions lcmv
, lcmv_epochs
, and lcmv_raw
are now deprecated in favor of mne.beamformer.make_lcmv()
and mne.beamformer.apply_lcmv()
, mne.beamformer.apply_lcmv_epochs()
, and mne.beamformer.apply_lcmv_raw()
, by Britta Westner
The functions mne.beamformer.dics
, mne.beamformer.dics_epochs
and mne.beamformer.dics_source_power
are now deprecated in favor of mne.beamformer.make_dics()
, mne.beamformer.apply_dics()
, and mne.beamformer.apply_dics_csd()
, by Marijn van Vliet
People who contributed to this release (in alphabetical order):
Alejandro Weinstein
Alexandre Gramfort
Annalisa Pascarella
Anne-Sophie Dubarry
Britta Westner
Chris Bailey
Chris Holdgraf
Christian Brodbeck
Claire Braboszcz
Clemens Brunner
Daniel McCloy
Denis A. Engemann
Desislava Petkova
Dominik Krzemiński
Eric Larson
Erik Hornberger
Fede Raimondo
Henrich Kolkhorst
Jean-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
mne.channels.Layout.plot()
and mne.viz.plot_layout()
now allows plotting a subset of channels with picks
argument by Jaakko Leppakangas
Add .bvef extension (BrainVision Electrodes File) to mne.channels.read_montage
by Jean-Baptiste Schiratti
Add mne.decoding.cross_val_multiscore()
to allow scoring of multiple tasks, typically used with mne.decoding.SlidingEstimator
, by Jean-Remi King
Add mne.decoding.ReceptiveField
module for modeling electrode response to input features by Chris Holdgraf
Add mne.decoding.TimeDelayingRidge
class, used by default by mne.decoding.ReceptiveField
, to speed up auto- and cross-correlation computations and enable Laplacian regularization by Ross Maddox and Eric Larson
Add new mne.datasets.mtrf
dataset by Chris Holdgraf
Add 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 Barachant
Add Fieldtrip’s electromyogram dataset, by Alexandre Barachant
Add reject_by_annotation
option to mne.preprocessing.find_eog_events()
(which is also utilised by mne.preprocessing.create_eog_epochs()
) to omit data that is annotated as bad by Jaakko Leppakangas
Add example for fast screening of event-related dynamics in frequency bands by Denis Engemann
Add mne.time_frequency.EpochsTFR.save()
by Jaakko Leppakangas
Add butterfly mode (toggled with ‘b’ key) to mne.io.Raw.plot()
by Jaakko Leppakangas
Add axes
parameter to plot_topo functions by Jaakko Leppakangas
Add options to change time windowing in mne.chpi.filter_chpi()
by Eric Larson
mne.channels.Montage.plot
, mne.channels.DigMontage.plot()
, and mne.viz.plot_montage()
now allow plotting channel locations as a topomap by Clemens Brunner
Add background_color
parameter to mne.Evoked.plot_topo()
and mne.viz.plot_evoked_topo()
and improve axes rendering as done in mne.viz.plot_compare_evokeds()
by Alex Gramfort
Add support for GDF files in mne.io.read_raw_edf()
by Nicolas Barascud
Add mne.io.find_edf_events
for getting the events as they are in the EDF/GDF header by Jaakko Leppakangas
Speed up mne.io.Raw.plot()
and mne.Epochs.plot()
using (automatic) decimation based on low-passing with decim='auto'
parameter by Eric Larson and Jaakko Leppakangas
Add mne.inverse_sparse.mxne_optim.dgap_l21l1
for computing the duality gap for TF-MxNE as the new stopping criterion by Daniel Strohmeier
Add option to return a list of Dipole
objects in sparse source imaging methods by Daniel Strohmeier
Add mne.inverse_sparse.make_stc_from_dipoles()
to generate stc objects from lists of dipoles by Daniel Strohmeier
Add 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 using Delaunay
triangulation of the 2d projected channel positions by Jaakko Leppakangas
Add 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 Leppakangas
Add mne.channels.Montage.get_pos2d
to get the 2D positions of channels in a montage by Clemens Brunner
Add MGH 60- and 70-channel standard montages to mne.channels.read_montage
by Eric Larson
Add option for embedding SVG instead of PNG in HTML for mne.Report
by Eric Larson
Add confidence intervals, number of free parameters, and χ² to mne.fit_dipole()
and mne.read_dipole()
by Eric Larson
mne.SourceEstimate.data
is now writable, writing to it will also update mne.SourceEstimate.times
by Marijn van Vliet
mne.io.Raw.plot()
and mne.Epochs.plot()
now use anti-aliasing to draw signals by Clemens Brunner
Allow using saved DigMontage
to import digitization to mne.gui.coregistration()
by Jaakko Leppakangas
Add function mne.channels.get_builtin_montages()
to list all built-in montages by Clemens Brunner
mne.decoding.SlidingEstimator
and mne.decoding.GeneralizingEstimator
now accept **fit_params
at fitting by Jean-Remi King
Add mne.VectorSourceEstimate
class which enables working with both source power and dipole orientations by Marijn van Vliet
Add option pick_ori='vector'
to mne.minimum_norm.apply_inverse()
to produce mne.VectorSourceEstimate
by Marijn van Vliet
Add support for numpy.random.RandomState
argument to seed
in statistical clustering functions
and better documentation of exact 1-sample tests by Eric Larson
Extend mne.viz.plot_epochs_image()
/mne.Epochs.plot_image()
with regards to grouping by or aggregating over channels. See the new example at examples/visualization/plot_roi_erpimage_by_rt.py
by Jona Sassenhagen
Add bootstrapped confidence intervals to mne.viz.plot_compare_evokeds()
by Jona Sassenhagen and Denis Engemann
Add example on how to plot ERDS maps (also known as ERSP) by Clemens Brunner
Add support for volume source spaces to spatial_src_connectivity
and spatio_temporal_src_connectivity
by Alex Gramfort
Plotting raw data (mne.viz.plot_raw()
or mne.io.Raw.plot()
) with events now includes event numbers (if there are not more than 50 events on a page) by Clemens Brunner
Add filtering functions mne.Epochs.filter()
and mne.Evoked.filter()
, as well as pad
argument to mne.io.Raw.filter()
by Eric Larson
Add 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 Larson
Enable morphing between hemispheres with mne.compute_morph_matrix
by Christian Brodbeck
Add return_residual
to mne.minimum_norm.apply_inverse()
by Eric Larson
Add return_drop_log
to mne.preprocessing.compute_proj_eog()
and mne.preprocessing.compute_proj_ecg()
by Eric Larson
Add time cursor and category/amplitude status message into the single-channel evoked plot by Jussi Nurminen
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 Larson
Fix bug in mne.io.read_raw_brainvision()
read .vhdr files with ANSI codepage by Okba Bekhelifi and Alex Gramfort
Fix unit scaling when reading in EGI digitization files using mne.channels.read_dig_montage
by Matt Boggess
Fix picks
default in mne.io.Raw.filter()
to include ref_meg
channels by default by Eric Larson
Fix mne.decoding.CSP
order of spatial filter in patterns_
by Alexandre Barachant
mne.concatenate_epochs()
now maintains the relative position of events during concatenation by Alexandre Barachant
Fix 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 Leppakangas
Fix mne.viz.plot_sensors()
to maintain proper aspect ratio by Eric Larson
Fix mne.viz.plot_topomap()
to allow 0 contours by Jaakko Leppakangas
Fix mne.preprocessing.ICA
source-picking to increase threshold for rank estimation to 1e-14 by Jesper Duemose Nielsen
Fix mne.set_bipolar_reference()
to support duplicates in anodes by Jean-Baptiste Schiratti and Alex Gramfort
Fix visuals of mne.viz.plot_evoked()
and a bug where ylim changes when using interactive topomap plotting by Jaakko Leppakangas
Fix mne.Evoked.plot_topomap()
when using the mask
argument with paired gradiometers by Eric Larson
Fix bug in mne.Label.fill()
where an empty label raised an error, by Eric Larson
Fix mne.io.read_raw_ctf()
to also include the samples in the last block by Jaakko Leppakangas
Fix mne.preprocessing.ICA.save()
to close file before attempting to delete it when write fails by Jesper Duemose Nielsen
Fix mne.simulation.simulate_evoked()
to use nave parameter instead of snr, by Yousra Bekhti
Fix mne.read_bem_surfaces()
for BEM files missing normals by Christian Brodbeck
Fix mne.transform_surface_to()
to actually copy when copy=True
by Eric Larson
Fix mne.io.read_raw_brainvision()
to read vectorized data correctly by Jaakko Leppakangas and Phillip Alday
Fix mne.connectivity.spectral_connectivity
so that if n_jobs > 1
it does not ignore last n_epochs % n_jobs
epochs by Mikołaj Magnuski
Fix mne.io.read_raw_edf()
to infer sampling rate correctly when reading EDF+ files where tal-channel has a higher sampling frequency by Jaakko Leppakangas
Fix default value of kind='topomap'
in mne.channels.Montage.plot
to be consistent with mne.viz.plot_montage()
by Clemens Brunner
Fix bug in to_data_frame
where non-consecutive picks would make the function crash by Jaakko Leppakangas
Fix channel picking and drop in mne.time_frequency.EpochsTFR
by Lukáš Hejtmánek
Fix mne.SourceEstimate.transform()
to properly update mne.SourceEstimate.times
by Marijn van Vliet
Fix mne.viz.plot_evoked_joint()
to allow custom titles without appending information about the channels by Jaakko Leppakangas
Fix writing a forward solution after being processed by mne.forward.restrict_forward_to_label()
or mne.forward.restrict_forward_to_stc()
by Marijn van Vliet
Fix bug in mne.viz.plot_compare_evokeds()
where truncate_yaxis
was ignored (default is now False
), by Jona Sassenhagen
Fix bug in mne.viz.plot_evoked()
where all xlabels were removed when using spatial_colors=True
, by Jesper Duemose Nielsen
Fix 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 Larson
Fix bug in mne.io.read_raw_brainvision()
, changed default to read coordinate information if available and added test, by Jesper Duemose Nielsen
Fix bug in mne.SourceEstimate.to_original_src()
where morphing failed if two vertices map to the same target vertex, by Marijn van Vliet
Fix mne.preprocessing.Xdawn
to give verbose error messages about rank deficiency and handle transforming mne.Evoked
, by Eric Larson
Fix bug in DC and Nyquist frequency multitaper PSD computations, e.g. in mne.time_frequency.psd_multitaper()
, by Eric Larson
Fix default padding type for mne.Epochs.resample()
and mne.Evoked.resample()
to be 'edge'
by default, by Eric Larson
Fix mne.inverse_sparse.mixed_norm()
, mne.inverse_sparse.tf_mixed_norm()
and mne.inverse_sparse.gamma_map()
to work with volume source space and sphere head models in MEG by Alex Gramfort and Yousra Bekhti
Fix 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 Larson
Fix treatment of CTF HPI coils as fiducial points in mne.gui.coregistration()
by Eric Larson
Fix resampling of events along with raw in mne.io.Raw()
to now take into consideration the value of first_samp
by Chris Bailey
Fix labels of PSD plots in mne.viz.plot_raw_psd()
by Alejandro Weinstein
Fix depth weighting of sparse solvers (mne.inverse_sparse.mixed_norm()
, mne.inverse_sparse.tf_mixed_norm()
and mne.inverse_sparse.gamma_map()
) with free orientation source spaces to improve orientation estimation by Alex Gramfort and Yousra Bekhti
Fix the threshold in mne.beamformer.rap_music()
to properly estimate the rank by Yousra Bekhti
Fix treatment of vector inverse in mne.minimum_norm.apply_inverse_epochs()
by Emily Stephen
Fix mne.find_events()
when passing a list as stim_channel parameter by Alex Gramfort
Fix parallel processing when computing covariance with shrinkage estimators by Denis Engemann
Removed the mne.datasets.megsim
dataset because it was taken down by its host (MRN). Use the mne.simulation
functions instead, by Eric Larson
Add skip_by_annotation
to mne.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 to skip_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 Larson
ICA channel names have now been reformatted to start from zero, e.g. "ICA000"
, to match indexing schemes in mne.preprocessing.ICA
and related functions, by Stefan Repplinger and Eric Larson
Add mne.beamformer.make_lcmv()
and mne.beamformer.apply_lcmv()
, mne.beamformer.apply_lcmv_epochs()
, and mne.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 allowing noise_cov=None
in mne.beamformer.lcmv
, mne.beamformer.lcmv_epochs
, and mne.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 to fir_design='firwin2'
(default in the current 0.15 release) by Eric Larson
Make the goodness of fit (GOF) of the dipoles returned by mne.beamformer.rap_music()
consistent with the GOF of dipoles returned by mne.fit_dipole()
by Alex Gramfort.
mne.decoding.SlidingEstimator
will now replace mne.decoding.TimeDecoding
to make it generic and fully compatible with scikit-learn, by Jean-Remi King and Alex Gramfort
mne.decoding.GeneralizingEstimator
will now replace mne.decoding.GeneralizationAcrossTime
to make it generic and fully compatible with scikit-learn, by Jean-Remi King and Alex Gramfort
mne.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 Gramfort
Add norm_trace
parameter to control single-epoch covariance normalization in :class:mne.decoding.CSP, by Jean-Remi King
Allow passing a list of channel names as show_names
in function mne.viz.plot_sensors()
and methods mne.Evoked.plot_sensors()
, mne.Epochs.plot_sensors()
and mne.io.Raw.plot_sensors()
to show only a subset of channel names by Jaakko Leppakangas
Make 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 for stim_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 Leppakangas
mne.io.Raw.plot_psd()
now rejects data annotated bad by default. Turn off with reject_by_annotation=False
, by Eric Larson
mne.set_eeg_reference()
and the related methods (e.g., mne.io.Raw.set_eeg_reference()
) have a new argument projection
, which if set to False directly applies an average reference instead of adding an SSP projector, by Clemens Brunner
Deprecate plot_trans
in favor of mne.viz.plot_alignment()
and add bem
parameter for plotting conductor model by Jaakko Leppakangas
mne.beamformer.tf_lcmv
now has a raw
parameter to accommodate epochs objects that already have data loaded with preload=True
, with mne.Epochs.load_data()
, or that are read from disk, by Eric Larson
mne.time_frequency.psd_welch()
and mne.time_frequency.psd_array_welch()
now use a Hamming window (instead of a Hann window) by Clemens Brunner
picks
parameter in mne.beamformer.lcmv
, mne.beamformer.lcmv_epochs
, mne.beamformer.lcmv_raw
, mne.beamformer.tf_lcmv
and mne.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 of freqs
in various time-frequency functions, e.g. mne.time_frequency.tfr_array_morlet()
, by Eric Larson
Add patterns=False
parameter in mne.decoding.ReceptiveField
. Turn on to compute inverse model coefficients, by Nicolas Barascud
The scale
, scale_time
, and unit
parameters have been deprecated in favor of scalings
, scalings_time
, and units
in mne.viz.plot_evoked_topomap()
and related functions, by Eric Larson
loose
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 Bekhti
The behavior of 'mean_flip'
label-flipping in mne.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 Larson
Deprecate force_fixed and surf_ori in mne.read_forward_solution()
by Daniel Strohmeier
mne.convert_forward_solution()
has a new argument use_cps
, which controls whether information on cortical patch statistics is applied while generating surface-oriented forward solutions with free and fixed orientation by Daniel Strohmeier
mne.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 Strohmeier
loose=None
in inverse solvers is deprecated, use explicitly loose=0
for fixed constraint and loose=1.0
for free orientations by Eric Larson
Zero-channel-value in PSD calculation in mne.viz.plot_raw_psd()
has been relaxed from error to warning by Alejandro Weinstein
Expose “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()
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
Add example of time-frequency decoding with CSP by Laura Gwilliams
Automatically create a legend in mne.viz.plot_evoked_topo()
by Jussi Nurminen
Add I/O support for Artemis123 infant/toddler MEG data by Luke Bloy
Add filter plotting functions mne.viz.plot_filter()
and mne.viz.plot_ideal_filter()
as well as filter creation function mne.filter.create_filter()
by Eric Larson
Add 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 Larson
Add option to plot individual sensors in mne.io.Raw.plot_psd()
by Alex Gramfort and Eric Larson
Add option to plot ECoG electrodes in mne.viz.plot_trans
by Eric Larson
Add convenient default values to mne.io.Raw.apply_hilbert()
and mne.io.Raw.apply_function()
by Denis Engemann
Remove MNE-C requirement for mne make_scalp_surfaces by Eric Larson
Add support for FastTrack Polhemus .mat
file outputs in hsp
argument of mne.channels.read_dig_montage
by Eric Larson
Add option to convert 3d electrode plots to a snapshot with 2d electrode positions with mne.viz.snapshot_brain_montage()
by Chris Holdgraf
Add skull surface plotting option to mne.viz.plot_trans
by Jaakko Leppakangas
Add minimum-phase filtering option in mne.io.Raw.filter()
by Eric Larson
Add support for reading ASCII BrainVision files in mne.io.read_raw_brainvision()
by Eric Larson
Add method of ICA objects for retrieving the component maps mne.preprocessing.ICA.get_components()
by Jona Sassenhagen
Add option to plot events in mne.viz.plot_epochs()
by Jaakko Leppakangas
Add dipole definitions for older phantom at Otaniemi in mne.dipole.get_phantom_dipoles()
by Eric Larson
Add spatial colors option for mne.viz.plot_raw_psd()
by Jaakko Leppakangas
Add functions like get_volume_labels_from_src()
to handle mixed source spaces by Annalisa Pascarella
Add convenience function for opening MNE documentation open_docs()
by Eric Larson
Add option in mne.io.Raw.plot()
to display the time axis relative to raw.first_samp
by Mainak Jas
Add new mne.datasets.visual_92_categories
dataset by Jaakko Leppakangas
Add option in mne.io.read_raw_edf()
to allow channel exclusion by Jaakko Leppakangas
Allow integer event codes in mne.read_epochs_eeglab()
by Jaakko Leppakangas
Add ability to match channel names in a case insensitive manner when applying a mne.channels.Montage
by Marijn van Vliet
Add yscale
keyword argument to mne.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 Magnuski
Add Representational Similarity Analysis (RSA) example on mne.datasets.visual_92_categories.data_path
dataset by Jaakko Leppakangas, Jean-Remi King and Alex Gramfort
Add support for NeuroScan files with event type 3 in mne.io.read_raw_cnt()
by Marijn van Vliet
Add interactive annotation mode to mne.io.Raw.plot()
(accessed by pressing ‘a’) by Jaakko Leppakangas
Add support for deleting all projectors or a list of indices in mne.io.Raw.del_proj()
by Eric Larson
Add source space plotting with mne.SourceSpaces.plot()
using mne.viz.plot_trans
by Eric Larson
Add mne.decoding.get_coef()
to retrieve and inverse the coefficients of a linear model - typically a spatial filter or pattern, by Jean-Remi King
Add support for reading in EGI MFF digitization coordinate files in mne.channels.read_dig_montage
by Matt Boggess
Add n_per_seg
keyword argument to mne.time_frequency.psd_welch()
and mne.time_frequency.psd_array_welch()
that allows to control segment length independently of n_fft
and use zero-padding when n_fft > n_per_seg
by Mikołaj Magnuski
Add annotation aware data getter mne.io.Raw.get_data()
by Jaakko Leppakangas
Add 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 Gramfort
Add plotting of head positions as a function of time in mne.viz.plot_head_positions()
by Eric Larson
Add real_filter
option to mne.beamformer.dics
, mne.beamformer.dics_source_power
, mne.beamformer.tf_dics
and mne.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 methods mne.preprocessing.ICA.score_sources()
, mne.preprocessing.ICA.find_bads_ecg()
, mne.preprocessing.ICA.find_bads_eog()
are now annotation aware by Jaakko Leppakangas
Allow using spatial_colors
for non-standard layouts by creating custom layouts from channel locations and add to_sphere
keyword to mne.viz.plot_sensors()
to allow plotting sensors that are not on the head surface by Jaakko Leppakangas
Concatenating raws with mne.concatenate_raws()
now creates boundary annotations automatically by Jaakko Leppakangas
mne.viz.plot_projs_topomap()
now supports plotting EEG topomaps by passing in mne.Info
by Eric Larson
Fix bug with DICS and LCMV (e.g., mne.beamformer.lcmv
, mne.beamformer.dics
) where regularization was done improperly. The default reg=0.01
has been changed to reg=0.05
, by Andrea Brovelli, Alex Gramfort, and Eric Larson
Fix callback function call in mne.viz.topo._plot_topo_onpick
by Erkka Heinila
Fix reading multi-file CTF recordings in mne.io.read_raw_ctf()
by Niklas Wilming
Fix computation of AR coefficients across channels in mne.time_frequency.fit_iir_model_raw()
by Eric Larson
Fix maxfilter channel names extra space bug in mne.preprocessing.maxwell_filter()
by Sheraz Khan
mne.channels.find_layout()
now leaves out the excluded channels by Jaakko Leppakangas
Array data constructors mne.io.RawArray
and EvokedArray
now make a copy of the info structure by Jaakko Leppakangas
Fix bug with finding layouts in mne.viz.plot_projs_topomap()
by Eric Larson
Fix bug mne.io.anonymize_info()
when Info does not contain ‘file_id’ or ‘meas_id’ fields by Jean-Remi King
Fix colormap selection in mne.viz.plot_evoked_topomap()
when using positive vmin with negative data by Jaakko Leppakangas
Fix channel name comparison in mne.channels.read_montage
so that if ch_names
is provided, the returned montage will have channel names in the same letter case by Jaakko Leppakangas
Fix inst.set_montage(montage)
to only set inst.info['dev_head_t']
if dev_head_t=True
in mne.channels.read_dig_montage
by Eric Larson
Fix 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 Rantala
Fix bug with automatic decimation in mne.io.read_raw_kit()
by Keith Doelling
Fix bug with setup_volume_source_space()
where arguments subject
and subjects_dir
were ignored by Jaakko Leppakangas
Fix sanity check for incompatible threshold
and tail
values in clustering functions like mne.stats.spatio_temporal_cluster_1samp_test()
by Eric Larson
Fix _bad_dropped
not being set when loading eeglab epoched files via mne.read_epochs_eeglab()
which resulted in len()
not working by Mikołaj Magnuski
Fix a bug in mne.time_frequency.AverageTFR.plot()
when plotting without a colorbar by Jaakko Leppakangas
Fix _filenames
attribute in creation of mne.io.RawArray
with mne.preprocessing.ICA.get_sources()
by Paul Pasler
Fix contour levels in mne.viz.plot_evoked_topomap()
to be uniform across topomaps by Jaakko Leppakangas
Fix bug in mne.preprocessing.maxwell_filter()
where fine calibration indices were mismatched leading to an AssertionError
by Eric Larson
Fix bug in mne.preprocessing.fix_stim_artifact()
where non-data channels were interpolated by Eric Larson
mne.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 parameter scalings
to determine the data scaling method (default is None
to use static channel-type-based scaling), by Asish Panda, Jean-Remi King, and Eric Larson
Raise error if the cv parameter of mne.decoding.GeneralizationAcrossTime
and mne.decoding.TimeDecoding
is not a partition and the predict_mode is “cross-validation” by Jean-Remi King
Fix bug in mne.io.read_raw_edf()
when preload=False
and channels have different sampling rates by Jaakko Leppakangas
Fix mne.read_labels_from_annot()
to set label.values[:]=1
rather than 0 for consistency with the Label
class by Jon Houck
Fix plotting non-uniform freqs (for example log-spaced) in mne.time_frequency.AverageTFR.plot()
by Mikołaj Magnuski
Fix mne.minimum_norm.compute_source_psd()
when used with pick_ori=None
by Annalisa Pascarella and Alex Gramfort
Fix bug in mne.Annotations
where concatenating two raws where orig_time
of the second run is None
by Jaakko Leppakangas
Fix 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 Magnuski
Fix reading eeglab .set
files when .chanlocs
structure does not contain X
, Y
or Z
fields by Mikołaj Magnuski
Fix bug with mne.simulation.simulate_raw()
when interp != 'zero'
by Eric Larson
Fix mne.fit_dipole()
to handle sphere model rank deficiency properly by Alex Gramfort
Raise error in mne.concatenate_epochs()
when concatenated epochs have conflicting event_id by Mikołaj Magnuski
Fix handling of n_components=None
in mne.preprocessing.ICA
by Richard Höchenberger
Fix reading of fiducials correctly from CTF data in mne.io.read_raw_ctf()
by Jaakko Leppakangas
Fix mne.beamformer.rap_music()
to return dipoles with amplitudes in Am instead of nAm by Jaakko Leppakangas
Fix computation of duality gap in mne.inverse_sparse.mxne_optim.dgap_l21
by Mathurin Massias
The filtering functions band_pass_filter
, band_stop_filter
, low_pass_filter
, and high_pass_filter
have been deprecated in favor of mne.filter.filter_data()
by Eric Larson
EvokedArray
now has default value tmin=0.
by Jaakko Leppakangas
The ch_type
argument for mne.viz.plot_trans
has been deprecated, use eeg_sensors
and meg_sensors
instead, by Eric Larson
The default tmax=60.
in mne.io.Raw.plot_psd()
will change to tmax=np.inf
in 0.15, by Eric Larson
Base classes mne.io.BaseRaw
and mne.BaseEpochs
are now public to allow easier typechecking, by Daniel McCloy
mne.io.read_raw_edf()
now combines triggers from multiple tal channels to ‘STI 014’ by Jaakko Leppakangas
The measurement info Info
no longer contains a potentially misleading info['filename']
entry. Use class properties like mne.io.Raw.filenames
or mne.Epochs.filename
instead by Eric Larson
Default fiducial name change from ‘nz’ to ‘nasion’ in mne.channels.read_montage
, so that it is the same for both mne.channels.Montage
and :class: mne.channels.DigMontage
by Leonardo Barbosa
MNE’s additional files for the fsaverage
head/brain model are now included in MNE-Python, and the now superfluous mne_root
parameter to create_default_subject()
has been deprecated by Christian Brodbeck
An overwrite=False
default parameter has been added to write_source_spaces()
to protect against accidental overwrites, by Eric Larson
The mne.decoding.LinearModel
class will no longer support plot_filters
and plot_patterns
, use mne.EvokedArray
with mne.decoding.get_coef()
instead, by Jean-Remi King
Made 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()
and mne.time_frequency.psd_array_welch()
public to allow computing TFRs and PSDs on numpy arrays by Jaakko Leppakangas
mne.preprocessing.ICA.fit()
now rejects data annotated bad by default. Turn off with reject_by_annotation=False
, by Jaakko Leppakangas
mne.io.read_raw_egi()
now names channels with pattern ‘E<idx>’. This behavior can be changed with parameter channel_naming
by Jaakko Leppakangas
the name
parameter in mne.Epochs
is deprecated, by Jaakko Leppakangas
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
Add new class AcqParserFIF
to parse Elekta/Neuromag MEG acquisition info, allowing e.g. collecting epochs according to acquisition-defined averaging categories by Jussi Nurminen
Adds automatic determination of FIR filter parameters filter_length
, l_trans_bandwidth
, and h_trans_bandwidth
and adds phase
argument in e.g. in mne.io.Raw.filter()
by Eric Larson
Adds faster n_fft='auto'
option to mne.io.Raw.apply_hilbert()
by Eric Larson
Adds new function mne.time_frequency.csd_array
to compute the cross-spectral density of multivariate signals stored in an array, by Nick Foti
Add order params ‘selection’ and ‘position’ for mne.viz.plot_raw()
to allow plotting of specific brain regions by Jaakko Leppakangas
Added the ability to decimate mne.Evoked
objects with mne.Evoked.decimate()
by Eric Larson
Add generic array-filtering function mne.filter.filter_data()
by Eric Larson
mne.viz.plot_trans
now also shows head position indicators by Christian Brodbeck
Add label center of mass function mne.Label.center_of_mass()
by Eric Larson
Added mne.viz.plot_ica_properties()
that allows plotting of independent component properties similar to pop_prop
in EEGLAB. Also mne.preprocessing.ICA
has mne.preprocessing.ICA.plot_properties()
method now. Added by Mikołaj Magnuski
Add second-order sections (instead of (b, a)
form) IIR filtering for reduced numerical error by Eric Larson
Add 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 Brodbeck
Add option to preview events in the KIT2FIFF GUI by Christian Brodbeck
Add approximation of size of io.Raw
, Epochs
, and Evoked
in repr()
by Eric Larson
Add possibility to select a subset of sensors by lasso selector to mne.viz.plot_sensors()
and mne.viz.plot_raw()
when using order=’selection’ or order=’position’ by Jaakko Leppakangas
Add the option to plot brain surfaces and source spaces to viz.plot_bem()
by Christian Brodbeck
Add the --filterchpi
option to mne browse_raw, by Felix Raimundo
Add the --no-decimate
option to mne make_scalp_surfaces to skip the high-resolution surface decimation step, by Eric Larson
Add new class mne.decoding.EMS
to transform epochs with the event-matched spatial filters and add ‘cv’ parameter to mne.decoding.compute_ems()
, by Jean-Remi King
Added mne.time_frequency.EpochsTFR
and average parameter in mne.time_frequency.tfr_morlet()
and mne.time_frequency.tfr_multitaper()
to compute time-frequency transforms on single trial epochs without averaging, by Jean-Remi King and Alex Gramfort
Added mne.decoding.TimeFrequency
to transform signals in scikit-learn pipelines, by Jean-Remi King
Added mne.decoding.UnsupervisedSpatialFilter
providing interface for scikit-learn decomposition algorithms to be used with MNE data, by Jean-Remi King and Asish Panda
Added support for multiclass decoding in mne.decoding.CSP
, by Jean-Remi King and Alexandre Barachant
Components obtained from mne.preprocessing.ICA
are now sorted by explained variance, by Mikołaj Magnuski
Adding an EEG reference channel using mne.add_reference_channels()
will now use its digitized location from the FIFF file, if present, by Chris Bailey
Added interactivity to mne.preprocessing.ICA.plot_components()
- passing an instance of io.Raw
or Epochs
in inst
argument allows to open component properties by clicking on component topomaps, by Mikołaj Magnuski
Adds 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 Sassenhagen
Added transform_into
parameter into mne.decoding.CSP
to retrieve the average power of each source or the time course of each source, by Jean-Remi King
Added support for reading MaxShield (IAS) evoked data (e.g., from the acquisition machine) in mne.read_evokeds()
by Eric Larson
Added support for functional near-infrared spectroscopy (fNIRS) channels by Jaakko Leppakangas
Added mne.io.Raw.acqparser
convenience attribute for mne.AcqParserFIF
by Eric Larson
Added example of Representational Similarity Analysis, by Jean-Remi King
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 Larson
Fixed 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 Larson
Fixed color ranges to correspond to the colorbar when plotting several time instances with mne.viz.plot_evoked_topomap()
by Jaakko Leppakangas
Added 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-Arias
Fixed minor bugs with mne.Epochs.resample()
and mne.Epochs.decimate()
by Eric Larson
Fixed a bug where duplicate vertices were not strictly checked by mne.simulation.simulate_stc()
by Eric Larson
Fixed a bug where some FIF files could not be read with mne.io.show_fiff()
by Christian Brodbeck and Eric Larson
Fixed a bug where merge_grads=True
causes mne.viz.plot_evoked_topo()
to fail when plotting a list of evokeds by Jaakko Leppakangas
Fixed 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 Leppakangas
Fixed mne.preprocessing.Xdawn
to fit shuffled epochs by Jean-Remi King
Fixed a bug with channel order determination that could lead to an AssertionError
when using mne.Covariance
matrices by Eric Larson
Fixed the check for CTF gradient compensation in mne.preprocessing.maxwell_filter()
by Eric Larson
Fixed the import of EDF files with encoding characters in mne.io.read_raw_edf()
by Guillaume Dumas
Fixed mne.Epochs
to ensure that detrend parameter is not a boolean by Jean-Remi King
Fixed bug with mne.realtime.FieldTripClient.get_data_as_epoch
when picks=None
which crashed the function by Mainak Jas
Fixed reading of units in .elc
montage files (from UnitsPosition
field) so that mne.channels.Montage
objects are now returned with the pos
attribute correctly in meters, by Chris Mullins
Fixed 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
with picks != 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 Leppakangas
Fixed 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
The add_eeg_ref
argument in core functions like mne.io.read_raw_fif()
and mne.Epochs
has been deprecated in favor of using mne.set_eeg_reference()
and equivalent instance methods like raw.set_eeg_reference()
. In functions like mne.io.read_raw_fif()
where the default in 0.13 and older versions is add_eeg_ref=True
, the default will change to add_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'
, and filter_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 of l_trans_bandwidth=h_trans_bandwidth=0.5
and filter_length='10s'
will change to 'auto'
in 0.14.
The filter_length=None
option (i.e. use len(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 previous phase='zero-double'
default will change to phase='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 Larson
Adds mne.time_frequency.csd_epochs
to replace mne.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 Foti
Weighted addition and subtraction of Evoked
as ev1 + ev2
and ev1 - ev2
have been deprecated, use explicit mne.combine_evoked(..., weights='nave')
instead by Eric Larson
Deprecated support for passing a list of filenames to mne.io.Raw
constructor, use mne.io.read_raw_fif()
and mne.concatenate_raws()
instead by Eric Larson
Added options for setting data and date formats manually in mne.io.read_raw_cnt()
by Jaakko Leppakangas
Now 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 Leppakangas
Add mne.io.anonymize_info()
function to anonymize measurements and add methods to mne.io.Raw
, mne.Epochs
and mne.Evoked
, by Jean-Remi King
Now it is possible to plot only a subselection of channels in mne.viz.plot_raw()
by using an array for order parameter by Jaakko Leppakangas
EOG 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 Rudiuk
mne.concatenate_epochs()
and mne.compute_covariance()
now check to see if all Epochs
instances have the same MEG-to-Head transformation, and errors by default if they do not by Eric Larson
Added option to pass a list of axes to mne.viz.plot_epochs_image()
by Mikołaj Magnuski
Constructing IIR filters in mne.filter.construct_iir_filter()
defaults to output='ba'
in 0.13 but this will be changed to output='sos'
by Eric Larson
Add zorder
parameter to mne.Evoked.plot()
and derived functions to sort allow sorting channels by e.g. standard deviation, by Jona Sassenhagen
The baseline
parameter of mne.Epochs.apply_baseline()
is set by default (None, 0), by Felix Raimundo
Adds mne.Evoked.apply_baseline()
to be consistent with mne.Epochs.apply_baseline()
, by Felix Raimundo
Deprecated the baseline
parameter in mne.Evoked
, by Felix Raimundo
The API of mne.SourceEstimate.plot()
and mne.viz.plot_source_estimates()
has been updated to reflect current PySurfer 0.6 API. The config_opts
parameter is now deprecated and will be removed in mne 0.14, and the default representation for time will change from ms
to s
in mne 0.14. By Christian Brodbeck
The 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 Larson
A new option set_env
has been added to mne.set_config()
that defaults to False
in 0.13 but will change to True
in 0.14, by Eric Larson
The compensation
parameter in mne.io.read_raw_fif()
has been deprecated in favor of the method mne.io.Raw.apply_gradient_compensation()
by Eric Larson
mne.decoding.EpochsVectorizer
has been deprecated in favor of mne.decoding.Vectorizer
by Asish Panda
The epochs_data
parameter has been deprecated in mne.decoding.CSP
, in favour of the X
parameter to comply to scikit-learn API, by Jean-Remi King
Deprecated mne.time_frequency.cwt_morlet
and mne.time_frequency.single_trial_power
in favour of mne.time_frequency.tfr_morlet()
with parameter average=False, by Jean-Remi King and Alex Gramfort
Add 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 Larson
Extended Infomax is now the new default in mne.preprocessing.infomax()
(extended=True
), by Clemens Brunner
mne.io.read_raw_eeglab()
and mne.read_epochs_eeglab()
now take additional argument uint16_codec
that allows to define the encoding of character arrays in set file. This helps in rare cases when reading a set file fails with TypeError: buffer is too small for requested array
. By Mikołaj Magnuski
Added mne.decoding.TemporalFilter
to filter data in scikit-learn pipelines, by Asish Panda
mne.preprocessing.create_ecg_epochs()
now includes all the channels when picks=None
by Jaakko Leppakangas
mne.set_eeg_reference()
now allows moving from a custom to an average EEG reference by Marijn van Vliet
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
Add overlay_times
parameter to mne.viz.plot_epochs_image()
to be able to display for example reaction times on top of the images, by Alex Gramfort
Animation for evoked topomap in mne.Evoked.animate_topomap()
by Jaakko Leppakangas
Make mne.channels.find_layout()
more robust for KIT systems in the presence of bad or missing channels by Jaakko Leppakangas
Add raw movement compensation to mne.preprocessing.maxwell_filter()
by Eric Larson
Add mne.Annotations
for for annotating segments of raw data by Jaakko Leppakangas
Add reading of .fif file montages by Eric Larson
Add system config utility mne.sys_info()
by Eric Larson
Automatic cross-validation and scoring metrics in mne.decoding.GeneralizationAcrossTime
, by Jean-Remi King
mne.decoding.GeneralizationAcrossTime
accepts non-deterministic cross-validations, by Jean-Remi King
Add plotting RMS of gradiometer pairs in mne.viz.plot_evoked_topo()
by Jaakko Leppakangas
Add 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 Bailey
Add reading and estimation of fixed-position dipole time courses (similar to Elekta xfit
) using mne.read_dipole()
and mne.fit_dipole()
by Eric Larson.
Accept mne.decoding.GeneralizationAcrossTime
’s scorer
parameter to be a string that refers to a scikit-learn metric scorer by Asish Panda.
Add method mne.Epochs.plot_image()
calling mne.viz.plot_epochs_image()
for better usability by Asish Panda.
Add mne.io.read_raw_cnt()
for reading Neuroscan CNT files by Jaakko Leppakangas
Add decim
parameter to mne.time_frequency.cwt_morlet
, by Jean-Remi King
Add method mne.Epochs.plot_topo_image()
by Jaakko Leppakangas
Add the ability to read events when importing raw EEGLAB files, by Jona Sassenhagen.
Add function mne.viz.plot_sensors()
and methods mne.Epochs.plot_sensors()
, mne.io.Raw.plot_sensors()
and mne.Evoked.plot_sensors()
for plotting sensor positions and mne.viz.plot_layout()
and mne.channels.Layout.plot()
for plotting layouts by Jaakko Leppakangas
Add epoch rejection based on annotated segments by Jaakko Leppakangas
Add option to use new-style MEG channel names in mne.read_selection
by Eric Larson
Add option for proj
in mne.EpochsArray
by Eric Larson
Enable the usage of mne.viz.plot_topomap()
with an mne.Info
instance for location information, by Jona Sassenhagen.
Add support for electrocorticography (ECoG) channel type by Eric Larson
Add option for first_samp
in mne.make_fixed_length_events()
by Jon Houck
Add ability to auto-scale channel types for mne.viz.plot_raw()
and mne.viz.plot_epochs()
and corresponding object plotting methods by Chris Holdgraf
mne.time_frequency.compute_raw_psd
, mne.time_frequency.compute_epochs_psd
, mne.time_frequency.psd_multitaper()
, and mne.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 to mne.time_frequency.psd_multitaper()
by Chris Holdgraf
Time-cropping functions (e.g., mne.Epochs.crop()
, mne.Evoked.crop()
, mne.io.Raw.crop()
, mne.SourceEstimate.crop()
) made consistent with behavior of tmin
and tmax
of mne.Epochs
, where nearest sample is kept. For example, for MGH data acquired with sfreq=600.614990234
, constructing Epochs(..., tmin=-1, tmax=1)
has bounds +/-1.00064103
, and now epochs.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 as mne.compute_covariance()
and mne.connectivity.spectral_connectivity
. Changes by Jaakko Leppakangas and Eric Larson
Fix 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 specifying clf
by Jean-Remi King
Fix 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 Larson
Fix 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 from scipy.linalg.orth
by Eric Larson.
Fix bug when specifying irregular train_times['slices']
in mne.decoding.GeneralizationAcrossTime
, by Jean-Remi King
Fix colorbar range on norm data by Jaakko Leppakangas
Fix bug in mne.preprocessing.run_ica
, which used the ecg_criterion
parameter for the EOG criterion instead of eog_criterion
by Christian Brodbeck
Fix normals in CTF data reader by Eric Larson
Fix bug in mne.io.read_raw_ctf()
, when omitting samples at the end by Jaakko Leppakangas
Fix info['lowpass']
value for downsampled raw data by Eric Larson
Remove measurement date from mne.Info
in mne.io.Raw.anonymize()
by Eric Larson
Fix bug that caused synthetic ecg channel creation even if channel was specified for ECG peak detection in mne.preprocessing.create_ecg_epochs()
by Jaakko Leppakangas
Fix bug with vmin and vmax when None is passed in mne.viz.plot_topo_image_epochs()
by Jaakko Leppakangas
Fix bug with mne.label_sign_flip()
(and mne.extract_label_time_course()
) by Natalie Klein and Eric Larson
Add copy parameter in mne.Epochs.apply_baseline()
and mne.io.Raw.filter()
methods by Jona Sassenhagen and Alex Gramfort
Fix bug in mne.merge_events()
when using replace_events=False
by Alex Gramfort
Fix bug in mne.Evoked
type setting in mne.stats.linear_regression_raw()
by Eric Larson
Fix bug in mne.io.edf.RawEDF
highpass filter setting to take max highpass to match warning message by Teon Brooks
Fix bugs with coordinane frame adjustments in mne.viz.plot_trans
by Eric Larson
Fix bug in colormap selection in mne.Evoked.plot_projs_topomap()
by Jaakko Leppakangas
Fix 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 Larson
Fix 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
and mne.decoding.TimeDecoding
to estimate the scores within the cross-validation as in scikit-learn as opposed to across all cross-validated y_pred
. The method can be changed with the score_mode
parameter by Jean-Remi King
Fix 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 Larson
Fix :class:mne.realtime.StimServer
by removing superfluous argument ip
used while initializing the object by Mainak Jas.
Fix removal of projectors in mne.preprocessing.maxwell_filter()
in st_only=True
mode by Eric Larson
The default picks=None
in mne.viz.plot_epochs_image()
now only plots the first 5 channels, not all channels, by Jona Sassenhagen
The mesh_color
parameter in mne.viz.plot_dipole_locations()
has been removed (use brain_color
instead), by Marijn van Vliet
Deprecated functions mne.time_frequency.compute_raw_psd
and mne.time_frequency.compute_epochs_psd
, replaced by mne.time_frequency.psd_welch()
by Chris Holdgraf
Deprecated function mne.time_frequency.multitaper_psd
and replaced by mne.time_frequency.psd_multitaper()
by Chris Holdgraf
The y_pred
attribute in mne.decoding.GeneralizationAcrossTime
and mne.decoding.TimeDecoding
is now a numpy array, by Jean-Remi King
The mne.bem.fit_sphere_to_headshape()
function now default to dig_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 a units
argument that should be set explicitly. This will default to units='mm'
in 0.12 for backward compatibility but change to units='m'
in 0.13.
Added default parameters in Epochs class namely event_id=None
, tmin=-0.2
and tmax=0.5
.
To unify and extend the behavior of mne.compute_raw_covariance()
relative to mne.compute_covariance()
, the default parameter tstep=0.2
now discards any epochs at the end of the mne.io.Raw
instance that are not the full tstep
duration. This will slightly change the computation of mne.compute_raw_covariance()
, but should only potentially have a big impact if the mne.io.Raw
instance is short relative to tstep
and the last, too short (now discarded) epoch contained data inconsistent with the epochs that preceded it.
The default picks=None
in mne.io.Raw.filter()
now picks eeg, meg, seeg, and ecog channels, by Jean-Remi King and Eric Larson
EOG, ECG and EMG channels are now plotted by default (if present in data) when using mne.viz.plot_evoked()
by Marijn van Vliet
Replace 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
to mne.Epochs.drop_bad()
, and mne.Epochs.drop_epochs
to mne.Epochs.drop()
by Alex Gramfort.
The C wrapper mne.do_forward_solution
has been deprecated in favor of the native Python version mne.make_forward_solution()
by Eric Larson
The events
parameter of mne.EpochsArray()
is set by default to chronological time-samples and event values to 1, by Jean-Remi King
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
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 Taulu
Add reader for Nicolet files in mne.io.read_raw_nicolet()
by Jaakko Leppakangas
Add FIFF persistence for ICA labels by Denis Engemann
Display ICA labels in mne.viz.plot_ica_scores()
and mne.viz.plot_ica_sources()
(for evoked objects) by Denis Engemann
Plot spatially color coded lines in mne.Evoked.plot()
by Jona Sassenhagen and Jaakko Leppakangas
Add reader for CTF data in mne.io.read_raw_ctf()
by Eric Larson
Add support for Brainvision v2 in mne.io.read_raw_brainvision()
by Teon Brooks
Improve 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 the mne.Projection
by Teon Brooks
Added methods mne.Epochs.add_eeg_average_proj
, mne.io.Raw.add_eeg_average_proj
, and mne.Evoked.add_eeg_average_proj
to add an average EEG reference.
Add reader for EEGLAB data in mne.io.read_raw_eeglab()
and mne.read_epochs_eeglab()
by Mainak Jas
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 in mne.Epochs
by Eric Larson
Fix train and test time window-length in mne.decoding.GeneralizationAcrossTime
by Jean-Remi King
Added lower bound in mne.stats.linear_regression()
on p-values p_val
(and resulting mlog10_p_val
) using double floating point arithmetic limits by Eric Larson
Fix channel name pick in mne.Evoked.get_peak()
method by Alex Gramfort
Fix drop percentages to take into account ignore
option in mne.viz.plot_drop_log()
and mne.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. Use mne.EpochsArray.add_eeg_ref
to properly add one.
Fix mne.io.read_raw_ctf()
to read n_samp_tot
instead of n_samp
by Jaakko Leppakangas
mne.io.read_raw_brainvision()
now has event_id
argument to assign non-standard trigger events to a trigger value by Teon Brooks
mne.read_epochs()
now has add_eeg_ref=False
by default, since average EEG reference can be added before writing or after reading using the method mne.Epochs.add_eeg_ref
.
mne.EpochsArray
no longer has an average EEG reference silently added (but not applied to the data) by default. Use mne.EpochsArray.add_eeg_average_proj
to properly add one.
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
Add support for generalized M-way repeated measures ANOVA for fully balanced designs with mne.stats.f_mway_rm()
by Denis Engemann
Add epochs browser to interactively view and manipulate epochs with mne.viz.plot_epochs()
by Jaakko Leppakangas
Speed 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 Jas
Add support for BEM model creation mne.make_bem_model()
by Eric Larson
Add support for BEM solution computation mne.make_bem_solution()
by Eric Larson
Add 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 King
Add 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 Gramfort
Add 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 Barachant
Add support for plotting patterns/filters in mne.decoding.CSP
and mne.decoding.LinearModel
by Romain Trachel
Add new object mne.decoding.LinearModel
for decoding M/EEG data and interpreting coefficients of linear models with patterns attribute by Romain Trachel and Alex Gramfort
Add 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 to Evoked
object by Jaakko Leppakangas
Add fetcher mne.datasets.brainstorm
for datasets used by Brainstorm in their tutorials by Mainak Jas
Add 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 to Epochs
objects by Teon Brooks
Add preload
argument to mne.read_epochs()
to enable on-demand reads from disk by Eric Larson
Big 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()
and mne.simulation.simulate_sparse_stc()
Add mne.Epochs.load_data()
method to mne.Epochs
by Teon Brooks
Add support for drawing topomaps by selecting an area in mne.Evoked.plot()
by Jaakko Leppakangas
Add support for finding peaks in evoked data in mne.Evoked.plot_topomap()
by Jona Sassenhagen and Jaakko Leppakangas
Add source space morphing in morph_source_spaces()
and SourceEstimate.to_original_src()
by Eric Larson and Denis Engemann
Adapt corrmap
function (Viola et al. 2009) to semi-automatically detect similar ICs across data sets by Jona Sassenhagen and Denis Engemann and Eric Larson
Clarify docstring for mne.preprocessing.ICA
by jeythekey
New mne flash_bem
command to compute BEM surfaces from Flash MRI images by Lorenzo Desantis, Alex Gramfort and Eric Larson. See mne.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 to mne.Report
by Teon Brooks
Fix mne.io.add_reference_channels
not setting info[nchan]
correctly by Federico Raimondo
Fix mne.stats.bonferroni_correction
reject mask output to use corrected p-values by Denis Engemann
Fix 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 Bailey
Fix dropping of events after downsampling stim channels by Marijn van Vliet
Fix scaling in :func:mne.viz.utils._setup_vmin_vmax
by Jaakko Leppakangas
Fix order of component selection in mne.decoding.CSP
by Clemens Brunner
Rename and deprecate mne.viz.plot_topo
for mne.viz.plot_evoked_topo
by Jaakko Leppakangas
Deprecated mne.decoding.transformer.ConcatenateChannels
and replaced by mne.decoding.EpochsVectorizer
by Romain Trachel
Deprecated lws
and renamed ledoit_wolf
for the reg
argument in mne.decoding.CSP
by Romain Trachel
Redesigned and rewrote mne.Epochs.plot()
(no backwards compatibility) during the GSOC 2015 by Jaakko Leppakangas, Mainak Jas, Federico Raimondo and Denis Engemann
Deprecated and renamed mne.viz.plot_image_epochs
for mne.plot.plot_epochs_image
by Teon Brooks
picks
argument has been added to mne.time_frequency.tfr_morlet()
, mne.time_frequency.tfr_multitaper()
by Teon Brooks
mne.io.Raw.preload_data
has been deprecated for mne.io.Raw.load_data()
by Teon Brooks
RawBrainVision
objects now always have event channel 'STI 014'
, and recordings with no events will have this channel set to zero by Eric Larson
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
Add support for mayavi figures in add_section
method in Report by Mainak Jas
Add 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 Leggitt
Automatically 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 Engemann
Add 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 to Raw
, Epochs
and Evoked
objects by Teon Brooks
Add EEG (based on spherical splines) and MEG (based on field interpolation) bad channel interpolation method to Raw
, Epochs
and Evoked
objects by Denis Engemann and Mainak Jas
Add parameter to whiten_evoked
, compute_whitener
and prepare_noise_cov
to set the exact rank by Martin Luessi and Denis Engemann
Add 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 Gramfort
Add Evoked.plot_white
method to diagnose the quality of the estimated noise covariance and its impact on spatial whitening by Denis Engemann and Alex Gramfort
Add mne.evoked.grand_average
function to compute grand average of Evoked data while interpolating bad EEG channels if necessary by Mads Jensen and Alex Gramfort
Improve 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 Brodbeck
Add 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 Brooks
Add example of creating MNE objects from arbitrary data and NEO files by Jaakko Leppakangas
Add plot_psd
and plot_psd_topomap
methods to epochs by Yousra Bekhti, Eric Larson and Denis Engemann
evoked.pick_types
, epochs.pick_types
, and tfr.pick_types
added by Eric Larson
rename_channels
and set_channel_types
added as methods to Raw
, Epochs
and Evoked
objects by Teon Brooks
Add 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 Jas
Add mne.Report.add_bem_to_section
, mne.Report.add_htmls_to_section
methods to mne.Report
by Teon Brooks
Add support for KIT epochs files with read_epochs_kit
by Teon Brooks
Add whitening plots for evokeds to mne.Report
by Mainak Jas
Add DigMontage
class and reader to interface with digitization info by Teon Brooks and Christian Brodbeck
Add set_montage
method to the Raw
, Epochs
, and Evoked
objects by Teon Brooks and Denis Engemann
Add 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
Fix energy conservation for STFT with tight frames by Daniel Strohmeier
Fix incorrect data matrix when tfr was plotted with parameters tmin
, tmax
, fmin
and fmax
by Mainak Jas
Fix channel names in topomaps by Alex Gramfort
Fix mapping of l_trans_bandwidth
(to low frequency) and h_trans_bandwidth
(to high frequency) in _BaseRaw.filter
by Denis Engemann
Fix 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 Engemann
Average 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 Vliet
Fix 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
apply_inverse functions have a new boolean parameter prepared
which saves computation time by calling prepare_inverse_operator
only if it is False
find_events and read_events functions have a new parameter mask
to set some bits to a don’t care state by Teon Brooks
New channels module including layouts, electrode montages, and neighbor definitions of sensors which deprecates mne.layouts
by Denis Engemann
read_raw_brainvision
, read_raw_edf
, read_raw_egi
all use a standard montage import by Teon Brooks
Fix missing calibration factors for mne.io.egi.read_raw_egi
by Denis Engemann and Federico Raimondo
Allow 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 Jas
read_hsp
, read_elp
, and write_hsp
, write_mrk
were removed and made private by Teon Brooks
When 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 to apply_inverse
by Teon Brooks
Deprecated label_time_courses
for in_label
method in SourceEstimate
by Teon Brooks
Deprecated as_data_frame
for to_data_frame
by Chris Holdgraf
Add transform
, unit
parameters to read_montage
by Teon Brooks
Deprecated fmin, fmid, fmax
in stc.plot and added clim
by Mark Wronkiewicz
Use scipy.signal.welch
instead of matplotlib.psd inside compute_raw_psd
and compute_epochs_psd
by Yousra Bekhti Eric Larson and Denis Engemann. As a consequence, Raw.plot_raw_psds
has been deprecated.
Raw
instances returned by mne.forward.apply_forward_raw
now always have times starting from
zero to be consistent with all other Raw
instances. To get the former start
and stop
times,
use raw.first_samp / raw.info['sfreq']
and raw.last_samp / raw.info['sfreq']
.
pick_types_evoked
has been deprecated in favor of evoked.pick_types
.
Deprecated changing the sensor type of channels in rename_channels
by Teon Brooks
CUDA is no longer initialized at module import, but only when first used.
add_figs_to_section
and add_images_to_section
now have a textbox
parameter to add comments to the image by Teon Brooks
Deprecated iir_filter_raw
for fit_iir_model_raw
.
Add montage
parameter to the create_info
function to create the info using montages by Teon Brooks
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
Add Python3 support by Nick Ward, Alex Gramfort, Denis Engemann, and Eric Larson
Add get_peak
method for evoked and stc objects by Denis Engemann
Add iter_topography
function for radically simplified custom sensor topography plotting by Denis Engemann
Add field line interpolation by Eric Larson
Add full provenance tacking for epochs and improve drop_log
by Tal Linzen, Alex Gramfort and Denis Engemann
Add systematic contains method to Raw
, Epochs
and Evoked
for channel type membership testing by Denis Engemann
Add 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
and Evoked
by Denis Engemann and Alex Gramfort
Add equalize_channnels
function to set common channels for a list of Raw
, Epochs
, or Evoked
objects by Denis Engemann
Add plot_events
function to visually display paradigm by Alex Gramfort
Improved 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 Brodbeck
Add color
attribute to Label
objects by Christian Brodbeck
Add max
mode for extract_label_time_course
by Mads Jensen
Add rename_channels
function to change channel names and types in info object by Dan Wakeman and Denis Engemann
Add compute_ems
function to extract the time course of experimental effects by Denis Engemann, Sébastien Marti and Alex Gramfort
Add option to expand Labels defined in a source space to the original surface (Label.fill()
) by Christian Brodbeck
GUIs can be invoked form the command line using $ mne coreg
and $ mne kit2fiff
by Christian Brodbeck
Add add_channels_epochs
function to combine different recordings at the Epochs level by Christian Brodbeck and Denis Engemann
Add 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 to mne.concatenate_raws
to concatenate events corresponding to runs by Denis Engemann
Add read_ch_connectivity
function to read FieldTrip neighbor template .mat files and obtain sensor adjacency matrices by Denis Engemann
Add 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 Larson
Add plot_image
method to Evoked object to display data as images by Jean-Remi King and Alex Gramfort and Denis Engemann
Add BCI demo with CSP on motor imagery by Martin Billinger
New ICA API with unified methods for processing Raw
, Epochs
and Evoked
objects by Denis Engemann
Apply 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
and drop_channels
mixin class to pick and drop channels from Raw
, Epochs
, and Evoked
objects by Andrew Dykstra and Denis Engemann
Add EvokedArray
class to create an Evoked object from an array by Andrew Dykstra
Add plot_bem
method to visualize BEM contours on MRI anatomical images by Mainak Jas and Alex Gramfort
Add 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
and evoked.plot_topomap
by Denis Engemann and Alex Gramfort
Add 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 Engemann
Add 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 Engemann
Improve ICA verbosity with regard to rank reduction by Denis Engemann
Fix incorrect times
attribute when stc was computed using apply_inverse
after decimation at epochs stage for certain, arbitrary sample frequencies by Denis Engemann
Fix 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
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
and parc_from_labels
in favor of read_labels_from_annot
and write_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.9
Deprecate read_evoked
and write_evoked
in favor of read_evokeds
and write_evokeds
. read_evokeds will return all Evoked
instances in a file by default.
Deprecate setno
in favor of condition
in the initialization of an Evoked instance. This affects mne.fiff.Evoked
and read_evokeds
, but not read_evoked
.
Deprecate mne.fiff
module, use mne.io
instead e.g. mne.io.Raw
instead of mne.fiff.Raw
.
Pick functions (e.g., pick_types
) are now in the mne namespace (e.g. use mne.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.
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
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 Engemann
Plotting 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 Engemann
Add ico
and oct
source space creation in native Python by Eric Larson
Add interactive rejection of bad trials in plot_epochs
by Denis Engemann
Add 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 Dykstra
Add new transform
method to SourceEstimate(s) by Andrew Dykstra
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 the pick_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 in mne.layouts.find_layout
is deprecated and will be removed in MNE-Python 0.9. Use info
instead.
plot_evoked
and Epochs.plot
now open a new figure by default. To plot on an existing figure please specify the axes
parameter.
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
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 Brodbeck
Get 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 Engemann
New 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 Engemann
Gamma-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
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.
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
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
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.
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
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.
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
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.
The committer list for this release is the following (preceded by number of commits):
80 Alexandre Gramfort
51 Martin Luessi
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.
Here are the code migration instructions when upgrading from mne-python version 0.1:
New return values for the function find_ecg_events
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
Initial release (initial commit: 2010-12-26).
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