Version 0.15 (2017-10-20)#
Changelog#
mne.channels.Layout.plot()andmne.viz.plot_layout()now allows plotting a subset of channels withpicksargument by Jaakko LeppakangasAdd .bvef extension (BrainVision Electrodes File) to
mne.channels.read_montageby Jean-Baptiste SchirattiAdd
mne.decoding.cross_val_multiscore()to allow scoring of multiple tasks, typically used withmne.decoding.SlidingEstimator, by Jean-Rémi KingAdd
mne.decoding.ReceptiveFieldmodule for modeling electrode response to input features by Chris HoldgrafAdd
mne.decoding.TimeDelayingRidgeclass, used by default bymne.decoding.ReceptiveField, to speed up auto- and cross-correlation computations and enable Laplacian regularization by Ross Maddox and Eric LarsonAdd new
mne.datasets.mtrfdataset by Chris HoldgrafAdd example of time-frequency decoding with CSP by Laura Gwilliams
Add
mne.decoding.SPoCto fit and apply spatial filters based on continuous target variables, by Jean-Rémi King and Alexandre BarachantAdd Fieldtrip’s electromyogram dataset, by Alexandre Barachant
Add
reject_by_annotationoption tomne.preprocessing.find_eog_events()(which is also utilised bymne.preprocessing.create_eog_epochs()) to omit data that is annotated as bad by Jaakko LeppakangasAdd example for fast screening of event-related dynamics in frequency bands by Denis Engemann
Add
mne.time_frequency.EpochsTFR.save()by Jaakko LeppakangasAdd butterfly mode (toggled with ‘b’ key) to
mne.io.Raw.plot()by Jaakko LeppakangasAdd
axesparameter to plot_topo functions by Jaakko LeppakangasAdd options to change time windowing in
mne.chpi.filter_chpi()by Eric Larsonmne.channels.Montage.plot,mne.channels.DigMontage.plot(), andmne.viz.plot_montage()now allow plotting channel locations as a topomap by Clemens BrunnerAdd
background_colorparameter tomne.Evoked.plot_topo()andmne.viz.plot_evoked_topo()and improve axes rendering as done inmne.viz.plot_compare_evokeds()by Alex GramfortAdd support for GDF files in
mne.io.read_raw_edf()by Nicolas BarascudAdd
mne.io.find_edf_eventsfor getting the events as they are in the EDF/GDF header by Jaakko LeppakangasSpeed up
mne.io.Raw.plot()andmne.Epochs.plot()using (automatic) decimation based on low-passing withdecim='auto'parameter by Eric Larson and Jaakko LeppakangasAdd
mne.inverse_sparse.mxne_optim.dgap_l21l1for computing the duality gap for TF-MxNE as the new stopping criterion by Daniel StrohmeierAdd option to return a list of
Dipoleobjects in sparse source imaging methods by Daniel StrohmeierAdd
mne.inverse_sparse.make_stc_from_dipoles()to generate stc objects from lists of dipoles by Daniel StrohmeierAdd
mne.channels.find_ch_connectivitythat tries to infer the correct connectivity template using channel info. If no template is found, it computes the connectivity matrix usingDelaunaytriangulation of the 2d projected channel positions by Jaakko LeppakangasAdd IO support for EGI MFF format by Jaakko Leppakangas and ramonapariciog
Add option to use matplotlib backend when plotting with
mne.viz.plot_source_estimates()by Jaakko LeppakangasAdd
mne.channels.Montage.get_pos2dto get the 2D positions of channels in a montage by Clemens BrunnerAdd MGH 60- and 70-channel standard montages to
mne.channels.read_montageby Eric LarsonAdd option for embedding SVG instead of PNG in HTML for
mne.Reportby Eric LarsonAdd confidence intervals, number of free parameters, and χ² to
mne.fit_dipole()andmne.read_dipole()by Eric Larsonmne.SourceEstimate.datais now writable, writing to it will also updatemne.SourceEstimate.timesby Marijn van Vlietmne.io.Raw.plot()andmne.Epochs.plot()now use anti-aliasing to draw signals by Clemens BrunnerAllow using saved
DigMontageto import digitization tomne.gui.coregistration()by Jaakko LeppakangasAdd function
mne.channels.get_builtin_montages()to list all built-in montages by Clemens Brunnermne.decoding.SlidingEstimatorandmne.decoding.GeneralizingEstimatornow accept**fit_paramsat fitting by Jean-Rémi KingAdd
mne.VectorSourceEstimateclass which enables working with both source power and dipole orientations by Marijn van VlietAdd option
pick_ori='vector'tomne.minimum_norm.apply_inverse()to producemne.VectorSourceEstimateby Marijn van VlietAdd support for
numpy.random.RandomStateargument toseedinstatistical clustering functionsand better documentation of exact 1-sample tests by Eric LarsonExtend
mne.viz.plot_epochs_image()/mne.Epochs.plot_image()with regards to grouping by or aggregating over channels. See the new example atexamples/visualization/plot_roi_erpimage_by_rt.pyby Jona SassenhagenAdd bootstrapped confidence intervals to
mne.viz.plot_compare_evokeds()by Jona Sassenhagen and Denis EngemannAdd example on how to plot ERDS maps (also known as ERSP) by Clemens Brunner
Add support for volume source spaces to
spatial_src_connectivityandspatio_temporal_src_connectivityby Alex GramfortPlotting raw data (
mne.viz.plot_raw()ormne.io.Raw.plot()) with events now includes event numbers (if there are not more than 50 events on a page) by Clemens BrunnerAdd filtering functions
mne.Epochs.filter()andmne.Evoked.filter(), as well aspadargument tomne.io.Raw.filter()by Eric LarsonAdd high frequency somatosensory MEG dataset by Jussi Nurminen
Add reduced set of labels for HCPMMP-1.0 parcellation in
mne.datasets.fetch_hcp_mmp_parcellation()by Eric LarsonEnable morphing between hemispheres with
mne.compute_morph_matrixby Christian BrodbeckAdd
return_residualtomne.minimum_norm.apply_inverse()by Eric LarsonAdd
return_drop_logtomne.preprocessing.compute_proj_eog()andmne.preprocessing.compute_proj_ecg()by Eric LarsonAdd time cursor and category/amplitude status message into the single-channel evoked plot by Jussi Nurminen
BUG#
Fixed a bug when creating spherical volumetric grid source spaces in
setup_volume_source_space()by improving the minimum-distance computations, which in general will decrease the number of used source space points by Eric LarsonFix bug in
mne.io.read_raw_brainvision()read .vhdr files with ANSI codepage by Okba Bekhelifi and Alex GramfortFix unit scaling when reading in EGI digitization files using
mne.channels.read_dig_montageby Matt BoggessFix
picksdefault inmne.io.Raw.filter()to includeref_megchannels by default by Eric LarsonFix
mne.decoding.CSPorder of spatial filter inpatterns_by Alexandre Barachantmne.concatenate_epochs()now maintains the relative position of events during concatenation by Alexandre BarachantFix bug in script
mne make_scalp_surfacesby Denis Engemann (this bug prevented creation of high-resolution meshes when they were absent in the first place.)Fix writing of raw files with empty set of annotations by Jaakko Leppakangas
Fix bug in
mne.preprocessing.ICA.plot_properties()where merging gradiometers would fail by Jaakko LeppakangasFix
mne.viz.plot_sensors()to maintain proper aspect ratio by Eric LarsonFix
mne.viz.plot_topomap()to allow 0 contours by Jaakko LeppakangasFix
mne.preprocessing.ICAsource-picking to increase threshold for rank estimation to 1e-14 by Jesper Duemose NielsenFix
mne.set_bipolar_reference()to support duplicates in anodes by Jean-Baptiste Schiratti and Alex GramfortFix visuals of
mne.viz.plot_evoked()and a bug where ylim changes when using interactive topomap plotting by Jaakko LeppakangasFix
mne.Evoked.plot_topomap()when using themaskargument with paired gradiometers by Eric LarsonFix bug in
mne.Label.fill()where an empty label raised an error, by Eric LarsonFix
mne.io.read_raw_ctf()to also include the samples in the last block by Jaakko LeppakangasFix
mne.preprocessing.ICA.save()to close file before attempting to delete it when write fails by Jesper Duemose NielsenFix
mne.simulation.simulate_evoked()to use nave parameter instead of snr, by Yousra BekhtiFix
mne.read_bem_surfaces()for BEM files missing normals by Christian BrodbeckFix
mne.transform_surface_to()to actually copy whencopy=Trueby Eric LarsonFix
mne.io.read_raw_brainvision()to read vectorized data correctly by Jaakko Leppakangas and Phillip AldayFix
mne.connectivity.spectral_connectivityso that ifn_jobs > 1it does not ignore lastn_epochs % n_jobsepochs by Mikołaj MagnuskiFix
mne.io.read_raw_edf()to infer sampling rate correctly when reading EDF+ files where tal-channel has a higher sampling frequency by Jaakko LeppakangasFix default value of
kind='topomap'inmne.channels.Montage.plotto be consistent withmne.viz.plot_montage()by Clemens BrunnerFix bug in
to_data_framewhere non-consecutive picks would make the function crash by Jaakko LeppakangasFix channel picking and drop in
mne.time_frequency.EpochsTFRby Lukáš HejtmánekFix
mne.SourceEstimate.transform()to properly updatemne.SourceEstimate.timesby Marijn van VlietFix
mne.viz.plot_evoked_joint()to allow custom titles without appending information about the channels by Jaakko LeppakangasFix writing a forward solution after being processed by
mne.forward.restrict_forward_to_label()ormne.forward.restrict_forward_to_stc()by Marijn van VlietFix bug in
mne.viz.plot_compare_evokeds()wheretruncate_yaxiswas ignored (default is nowFalse), by Jona SassenhagenFix bug in
mne.viz.plot_evoked()where all xlabels were removed when usingspatial_colors=True, by Jesper Duemose NielsenFix field mapping
mne.make_field_map()and MEG bad channel interpolation functions (e.g.,mne.Evoked.interpolate_bads()) to choose a better number of components during pseudoinversion when few channels are available, by Eric LarsonFix bug in
mne.io.read_raw_brainvision(), changed default to read coordinate information if available and added test, by Jesper Duemose NielsenFix bug in
mne.SourceEstimate.to_original_src()where morphing failed if two vertices map to the same target vertex, by Marijn van VlietFix
mne.preprocessing.Xdawnto give verbose error messages about rank deficiency and handle transformingmne.Evoked, by Eric LarsonFix bug in DC and Nyquist frequency multitaper PSD computations, e.g. in
mne.time_frequency.psd_multitaper, by Eric LarsonFix default padding type for
mne.Epochs.resample()andmne.Evoked.resample()to be'edge'by default, by Eric LarsonFix
mne.inverse_sparse.mixed_norm(),mne.inverse_sparse.tf_mixed_norm()andmne.inverse_sparse.gamma_map()to work with volume source space and sphere head models in MEG by Alex Gramfort and Yousra BekhtiFix
mne.Evoked.as_type()channel renaming to append'_v'instead of'_virtual'to channel names to comply with shorter naming (15 char) requirements, by Eric LarsonFix treatment of CTF HPI coils as fiducial points in
mne.gui.coregistration()by Eric LarsonFix resampling of events along with raw in
mne.io.Raw()to now take into consideration the value offirst_sampby Chris BaileyFix labels of PSD plots in
mne.viz.plot_raw_psd()by Alejandro WeinsteinFix depth weighting of sparse solvers (
mne.inverse_sparse.mixed_norm(),mne.inverse_sparse.tf_mixed_norm()andmne.inverse_sparse.gamma_map()) with free orientation source spaces to improve orientation estimation by Alex Gramfort and Yousra BekhtiFix the threshold in
mne.beamformer.rap_music()to properly estimate the rank by Yousra BekhtiFix treatment of vector inverse in
mne.minimum_norm.apply_inverse_epochs()by Emily StephenFix
mne.find_events()when passing a list as stim_channel parameter by Alex GramfortFix parallel processing when computing covariance with shrinkage estimators by Denis Engemann
API#
Removed the
mne.datasets.megsimdataset because it was taken down by its host (MRN). Use themne.simulationfunctions instead, by Eric LarsonAdd
skip_by_annotationtomne.io.Raw.filter()to process data concatenated with e.g.mne.concatenate_raws()separately. This parameter will default to the old behavior (treating all data as a single block) in 0.15 but will change toskip_by_annotation='edge', which will separately filter the concatenated chunks separately, in 0.16. This should help prevent potential problems with filter-induced ringing in concatenated files, by Eric LarsonICA channel names have now been reformatted to start from zero, e.g.
"ICA000", to match indexing schemes inmne.preprocessing.ICAand related functions, by Stefan Repplinger and Eric LarsonAdd
mne.beamformer.make_lcmv()andmne.beamformer.apply_lcmv(),mne.beamformer.apply_lcmv_epochs(), andmne.beamformer.apply_lcmv_raw()to enable the separate computation and application of LCMV beamformer weights by Britta Westner, Alex Gramfort, and Denis Engemann.Add
weight_normparameter to enable both unit-noise-gain beamformer and neural activity index (weight normalization) and make whitening optional by allowingnoise_cov=Noneinmne.beamformer.lcmv,mne.beamformer.lcmv_epochs, andmne.beamformer.lcmv_raw, by Britta Westner, Alex Gramfort, and Denis Engemann.Add new filtering mode
fir_design='firwin'(default in the next 0.16 release) that gets improved attenuation using fewer samples compared tofir_design='firwin2'(default in the current 0.15 release) by Eric LarsonMake the goodness of fit (GOF) of the dipoles returned by
mne.beamformer.rap_music()consistent with the GOF of dipoles returned bymne.fit_dipole()by Alex Gramfort.mne.decoding.SlidingEstimatorwill now replacemne.decoding.TimeDecodingto make it generic and fully compatible with scikit-learn, by Jean-Rémi King and Alex Gramfortmne.decoding.GeneralizingEstimatorwill now replacemne.decoding.GeneralizationAcrossTimeto make it generic and fully compatible with scikit-learn, by Jean-Rémi King and Alex Gramfortmne.viz.decoding.plot_gat_times,mne.viz.decoding.plot_gat_matrixare now deprecated. Use matplotlib instead as shown in the examples, by Jean-Rémi King and Alex GramfortAdd
norm_traceparameter to control single-epoch covariance normalization inmne.decoding.CSP, by Jean-Rémi KingAllow passing a list of channel names as
show_namesin functionmne.viz.plot_sensors()and methodsmne.Evoked.plot_sensors(),mne.Epochs.plot_sensors()andmne.io.Raw.plot_sensors()to show only a subset of channel names by Jaakko LeppakangasMake function
mne.io.eeglab.read_events_eeglabpublic to allow loading overlapping events from EEGLAB files, by Jona Sassenhagen.mne.find_events()mask_typeparameter will change from'not_and'to'and'in 0.16.Instead of raising an error, duplicate channel names in the data file are now appended with a running number by Jaakko Leppakangas
mne.io.read_raw_edf()has now'auto'option forstim_channel(default in version 0.16) that automatically detects if EDF annotations or GDF events exist in the header and constructs the stim channel based on these events by Jaakko Leppakangasmne.io.Raw.plot_psd()now rejects data annotated bad by default. Turn off withreject_by_annotation=False, by Eric Larsonmne.set_eeg_reference()and the related methods (e.g.,mne.io.Raw.set_eeg_reference()) have a new argumentprojection, which if set to False directly applies an average reference instead of adding an SSP projector, by Clemens BrunnerDeprecate
plot_transin favor ofmne.viz.plot_alignment()and addbemparameter for plotting conductor model by Jaakko Leppakangasmne.beamformer.tf_lcmvnow has arawparameter to accommodate epochs objects that already have data loaded withpreload=True, withmne.Epochs.load_data(), or that are read from disk, by Eric Larsonmne.time_frequency.psd_welchandmne.time_frequency.psd_array_welch()now use a Hamming window (instead of a Hann window) by Clemens Brunnerpicksparameter inmne.beamformer.lcmv,mne.beamformer.lcmv_epochs,mne.beamformer.lcmv_raw,mne.beamformer.tf_lcmvandmne.beamformer.rap_music()is now deprecated and will be removed in 0.16, by Britta Westner, Alex Gramfort, and Denis Engemann.The keyword argument
frequencieshas been deprecated in favor offreqsin various time-frequency functions, e.g.mne.time_frequency.tfr_array_morlet(), by Eric LarsonAdd
patterns=Falseparameter inmne.decoding.ReceptiveField. Turn on to compute inverse model coefficients, by Nicolas BarascudThe
scale,scale_time, andunitparameters have been deprecated in favor ofscalings,scalings_time, andunitsinmne.viz.plot_evoked_topomap()and related functions, by Eric Larsonlooseparameter in inverse solvers has now a default value'auto'depending if the source space is a surface, volume, or discrete type by Alex Gramfort and Yousra BekhtiThe behavior of
'mean_flip'label-flipping inmne.extract_label_time_course()and related functions has been changed such that the flip, instead of having arbitrary sign, maximally aligns in the positive direction of the normals of the label, by Eric LarsonDeprecate force_fixed and surf_ori in
mne.read_forward_solution()by Daniel Strohmeiermne.convert_forward_solution()has a new argumentuse_cps, which controls whether information on cortical patch statistics is applied while generating surface-oriented forward solutions with free and fixed orientation by Daniel Strohmeiermne.write_forward_solution()writes a forward solution as a forward solution with free orientation in X/Y/Z RAS coordinates if it is derived from a forward solution with free orientation and as a forward solution with fixed orientation in surface-based local coordinates otherwise by Daniel Strohmeierloose=Nonein inverse solvers is deprecated, use explicitlyloose=0for fixed constraint andloose=1.0for free orientations by Eric LarsonZero-channel-value in PSD calculation in
mne.viz.plot_raw_psd()has been relaxed from error to warning by Alejandro WeinsteinExpose “rank” parameter in
mne.viz.plot_evoked_white()to correct rank estimates on the spot during visualization by Denis Engemann, Eric Larson, Alex Gramfort.Show channel name under mouse cursor on topography plots by Jussi Nurminen
Return maximum response amplitude from
mne.Evoked.get_peak()