Version History
Known issues
Check for open issues, or report new ones on GitHub.
Fixed in 0.38.3, Windows only (#52): due to unexpected data loss in
multiprocessing.sharedctypes.RawArray
for large arrays, permutation tests on large datasets using multiprocessing could return spurious results in which p-values for all clusters were reported as exactly 0.
Major changes
New in 0.40
API:
Plotting parameters
ncol
andnrow
have been renamed tocolumns
androws
.Factor
cells that are not specified inlabels
are now ordered by their first ocurrence inx
(previously order was alphabetic).The
pool_error
argument is replaced bywithin_subject_error
.
-
Now accepts data with ragged trials (trials of different lengths).
Now stores both the l1 and l2 loss of the final fit.
Due to optimization, results may be numerically different from earlier versions.
Pipeline:
pipeline.RawICA
preprocessing pipe now allows settingfit_kwargs
.The default
pipeline.MneExperiment.subject_re
pattern for finding subjects is now more general.
Permutation tests:
Due to a change in randomization algorithm, the permutation distribution for vector-based tests may be slightly different (old and new versions are both valid randomizations).
New in 0.39
testnd.LM
now supports permutation-based significance testing.New
NDVar
functions for time series and an auditory model:pad()
,gammatone_bank()
,edge_detector()
API:
The common
ds
parameter has been renamed todata
to be more consistent with other packages.The evaluation context for
Dataset
does not includefrom numpy import *
anymore, to avoid overwriting builtins likeabs()
; instead, NumPy is accessible asnumpy
.testnd.LM
: The default number of permutations is now 10000 and the argument order has changed slightly to be consistent with othertestnd
tests. To usetestnd.LM
for two-stage tests, setsamples=0
.plot.Barplot
parameterc
renamed tocolor
.
New in 0.38
boosting()
optimized (as a consequence, the progress bar has been disabled).
New in 0.37
ICA-GUI (
gui.select_components()
): Sort noisy epochs by dominant components - makes it easier to find components that capture specific artifacts.API:
load.mne.events()
now loads events from all stim-channels. To use a subset, use thestim_channel
parameter.New plot:
plot.SensorMap3d
.plot.styles_for_twoway()
to quickly generate different color and line-style combinations.New function
set_connectivity()
to set the neighborhood structure of anNDVar
.-
pipeline.MneExperiment.plot_evoked()
: plot sensor data with corresponding source estimatesAPI: By default, events are now loaded from all stim-channels. To only use a subset of stim-channels, use the new
pipeline.MneExperiment.stim_channel
attribute.
New in 0.36
Preview cross-validation data partitions with
plot.preview_partitions()
.BoostingResult.partition_result_data()
method to retrieve results from different partitions.
New in 0.35
ICA GUI (
gui.select_components()
;pipeline.MneExperiment.make_ica_selection()
):In the source time-course window, display the range of the data before and after cleaning in real-time.
New keyboard shortcut:
alt + arrow
keys to go to the beginning/end.New context-menu commands: find top component for an epoch.
Mark pairwise comparisons individually with
plot.Barplot.mark_pair()
andplot.Boxplot.mark_pair()
.NDVar.dot()
generalized to multiple dimensions.
New in 0.34
API:
plot.Correlation
renamed toplot.Scatter
with some parameter changes for improved functionality.
New:
boosting()
: Option to store TRFs for the different test partitions (partition_results
parameter).UTS
dimension:unit
parameter to represent time in units other than seconds.report
submodule with shortcuts for data summary and visualization.load.convert_pickle_protocol()
for compatibility with older Python version.
New in 0.33
API
load.mne.events()
: The merge parameter is now by default inferred based on the raw data.Boosting: plot data partitioning scheme (
BoostingResult.splits.plot()
).MneExperiment
pipeline:New
pipeline.MneExperiment.merge_triggers
attribute.Compatibility with Microsoft Windows.
New in 0.32
Requires at least Python 3.7
API changes:
Consistent class names for tests in
test
,testnd
andpipeline
.plot.Timeplot
argument order: second and third argument switched to facilitate plotting single category.Significance markers for trends (.05 < p ≤ .1) are disabled by default.
-
When using a
basis
, the function now considers the effect of the basis when normalizing predictors. This change leads to slightly different results, so TRFs should not be compared between this and previous versions. To facilitate keeping track of this change, it corresponds to a change in theBoostingResult.algorithm_version
attribute from-1
to0
.Different
tstart
/tstop
for different predictors (contributed by Joshua Kulasingham)Cross-validation of model fit (
test
parameter)
plot.Style
to control advanced plotting options by category (see Boxplot example).New functions/methods:
MneExperiment
pipeline:Methods with
decim
parameter now also havesamplingrate
parameterMore control over Events
New in 0.31
API changes:
Var
andNDVar
argument order changed to be consistent with other data objectscombine()
: CombiningNDVar
with unequal dimensions will now raise an error; to combine them by taking the intersection of valid elements (previous behavior), usedim_intersection=True
Dataset.save_txt()
:delim
parameter renamed todelimiter
testnd
API: For permutation tests, thesamples
parameter now defaults to 10,000 (previously 0)table.difference()
: Theby
parameter is deprecated, usematch
insteadNDVar.smooth()
with a window with an even number of samples, andBoostingResult.h
forboosting()
with a basis with an even number of samples: the time axis is now consistent withscipy.signal.convolve()
(was previously shifted by half a sample)testnd.LMGroup.coefficients_dataset()
now returns a wide form table by defaultplot.Topomap.mark_sensors()
,plot.TopomapBins.mark_sensors()
andplot.SensorMap.mark_sensors()
: The second argument now specifies axis to mark
New functions:
plot.Boxplot
: Accepts additional arguments (label_fliers
andboxplot()
parameters)plot.BarplotHorizontal
: Horizontal bar-plotNon-parametric univariate tests
test.MannWhitneyU
andtest.WilcoxonSignedRank
MneExperiment
pipeline:pipeline.SubParc
: Simplified subset parcellation
New in 0.30
Support for vector data (with many contributions from Proloy Das):
Space
dimension to represent physical spaceVolumeSourceSpace
to represent volume source spacesStatistical tests:
testnd.Vector
,testnd.VectorDifferenceRelated
Plotting with
plot.GlassBrain
ICA-GUI: tool to find high amplitude signals
Documentation: New Examples section
Dataset.summary()
methodElement-wise
maximum()
andminimum()
functions forNDVar
objectsMneExperiment
pipeline:RawApplyICA
preprocessing pipe to apply ICA estimated in a different branch of the pipeline.pipeline.MneExperiment.load_evoked_stc()
API more closely matchespipeline.MneExperiment.load_epochs_stc()
New in 0.29
API: Better default parameters for
resample()
Predictor-specific stopping for
boosting()
New
NDVar
functioncorrelation_coefficient()
Plotting:
General layout parameters for plot size relative to screen size
Better plots for masked statistic maps
MneExperiment
pipeline:API:
pipeline.MneExperiment.make_rej()
renamed topipeline.MneExperiment.make_epoch_selection()
Object-based definitions (see The MneExperiment Pipeline)
New method
pipeline.MneExperiment.plot_raw()
New in 0.28
Transition to Python 3.6
API changes:
testnd.ANOVA
: Thematch
parameter is now determined automatically and does not need to be specified anymore in most cases.testnd.TTestOneSample.diff
renamed totestnd.TTestOneSample.difference
.plot.Histogram
: followingmatplotlib
, thenormed
parameter was renamed todensity
.Previously capitalized argument and attribute names
Y
,X
andXax
are now lowercase.Topomap-plot argument order changed to provide consistency between different plots.
MneExperiment
pipeline:Independent measures t-test
New in 0.27
API changes:
To change the parcellation of an
NDVar
with source-space data, use the new functionset_parc()
. TheSourceSpace.set_parc()
method has been removed because dimension objects should be treated as immutable, as they can be shared between differentNDVar
instances. Analogously,UTS.set_tmin()
is nowset_tmin()
.table.frequencies()
: If the inputy
is aVar
object, the output will also be aVar
(wasFactor
).NDVar.smooth()
: window-based smoothing now uses a symmetric window, which can lead to slightly different results.
concatenate()
: concatenate multipleNDVar
objects to form a new dimension.NDVar.ols()
: regress on a dimension.plot.brain.SequencePlotter
to plot multiple anatomical images on one figure.New functions and objects:
New methods:
New in 0.26
API changes:
A new global
configure()
function replaces module-level configuration functions.Dataset
: when a one-dimensional array is assigned to an unused key, the array is now automatically converted to aVar
object.SourceSpace.vertno
has been renamed toSourceSpace.vertices
.
Plotting:
The new
name
argument allows setting the window title without adding a title to the figure.Plots that reresent time have a new method to synchronize the time axis on multiple plots:
link_time_axis()
.Plot source space time series:
plot.brain.butterfly()
ANOVAs now support mixed models with between- and within-subjects factors (see examples at
test.ANOVA
).load.mne
: when generating epochs from raw data, a newtstop
argument allows specifying the time interval exclusive of the last sample.New functions:
New methods:
MneExperiment
pipeline:pipeline.MneExperiment.reset()
(replacingpipeline.MneExperiment.store_state()
andpipeline.MneExperiment.restore_state()
)New
pipeline.MneExperiment.auto_delete_results
attribute to control whether invalidated results are automatically deleted.
New in 0.25
Installation with
conda
(see Installing) and$ eelbrain
launch script (see Getting Started).API:
GUI/plotting:
When using iPython 5 or later, GUI start and stop is now automatic. It is possible to revert to the old behavior with
plot.configure()
.There are new hotkeys for most plots (see the individual plots’ help for details).
Plots automatically rescale when the window is resized.
MneExperiment
:A new
pipeline.MneExperiment.sessions
attribute replacesdefaults['experiment']
, with support for multiple sessions in one experiment (see Setting up the file structure).The
pipeline.MneExperiment.epochs
parametersel_epoch
has been removed, usebase
instead.The setting
raw='clm'
has been renamed toraw='raw'
.Custom preprocessing pipelines (see
pipeline.MneExperiment.raw
).The
model
parameter for ANOVA tests is now optional (seepipeline.MneExperiment.tests
).
Deconvolution using
boosting()
.Loading and saving
*.wav
files (load.wav()
andsave.wav()
).
New in 0.24
API:
pipeline.MneExperiment
: For data from the NYU New York system converted withmne
< 0.13, thepipeline.MneExperiment.meg_system
attribute needs to be set to"KIT-157"
to distinguish it from data collected with the KIT UMD system.masked_parameter_map()
method of cluster-based test results: use ofpmin=None
is deprecated, usepmin=1
instead.
New test:
test.TTestRelated
.pipeline.MneExperiment.make_report_rois()
includes corrected p-values in reports for tests in more than one ROIpipeline.MneExperiment.make_rej()
now has adecim
parameter to improve display performance.pipeline.MneExperiment
: BEM-solution files are now created dynamically withmne
and are not cached any more. This can lead to small changes in results due to improved numerical precision. Delete old files to free up space withmne_experiment.rm('bem-sol-file', subject='*')
.New
pipeline.MneExperiment.make_report_coreg()
method.New
pipeline.MneExperiment
: analysis parameter connectivityplot.TopoButterfly
: pressShift-T
for a large topo-map with sensor names.
New in 0.23
API
plot.colors_for_twoway()
andplot.colors_for_categorial()
: new color model, different options.testnd.TContrastRelated
contrasts can contain*
to include the average of multiple cells.New
NDVar
methods:NDVar.envelope()
,NDVar.fft()
.
New in 0.22
Epoch Rejection GUI:
New “Tools” menu.
New “Info” tool to show summary info on the rejection.
New “Find Bad Channels” tool to automatically find bad channels.
Set marked channels by clicking on topo-map.
Faster page redraw.
plot.Barplot
andplot.Boxplot
: newcells
argument to customize the order of bars/boxes.pipeline.MneExperiment
: new methodpipeline.MneExperiment.show_rej_info()
.NDVar
: new methodNDVar.label_clusters()
.plot.configure()
: option to revert to wxPython backend forplot.brain
.
New in 0.21
MneExperiment
:New epoch parameters:
trigger_shift
andvars
(seepipeline.MneExperiment.epochs
).load_selected_events()
: newvardef
parameter to load variables from a test definition.Log files stored in the root directory.
Parcellations (
pipeline.MneExperiment.parcs
) based on combinations can also include split commands.
New
Factor
method:Factor.floodfill()
.Model
methods:get_table()
replaced withas_table()
, newhead()
andtail()
.API:
.sort_idx
methods renamed to.sort_index
.
New in 0.20
pipeline.MneExperiment
: new analysis parameterselect_clusters='all'
to keep all clusters in cluster tests (see select_clusters (cluster selection criteria)).Use
testnd.configure()
to limit the number of CPUs that are used in permutation cluster tests.
New in 0.19
Two-stage tests (see
pipeline.MneExperiment.tests
).Safer cache-handling. See note at Analysis.
Dataset.head()
andDataset.tail()
methods for more efficiently inspecting partial Datasets.The default format for plots in reports is now SVG since they are displayed correctly in Safari 9.0. Use
plot.configure()
to change the default format.API: Improvements in
plot.Topomap
with concomitant changes in the constructor signature. For examples see the meg/topographic plotting example.API:
plot.ColorList
has a new argument called labels.API:
testnd.ANOVA
attributeprobability_maps
renamed top
analogous to othertestnd
results.Rejection-GUI: The option to plot the data range only has been removed.
New in 0.18
API: The first argument for
pipeline.MneExperiment.plot_annot()
is now parc.API: the
fill_in_missing
parameter tocombine()
has been deprecated and replaced with a new parameter calledincomplete
.API: Several plotting functions have a new
xticklabels
parameter to suppress x-axis tick labels (e.g.plot.UTSStat
).The objects returned by
plot.brain
plotting functions now contain aplot_colorbar()
method to create a correspondingplot.ColorBar
plot.New function
choose()
to combine data in differentNDVars
on a case by case basis.Rejection-GUI (
gui.select_epochs()
): Press Shift-i when hovering over an epoch to enter channels for interpolation manually.pipeline.MneExperiment.show_file_status()
now shows the last modification date of each file.Under OS X 10.8 and newer running code under a notifier statement now automatically prevents the computer from going to sleep.
New in 0.17
pipeline.MneExperiment.brain_plot_defaults
can be used to customize PySurfer plots in movies and reports.pipeline.MneExperiment.trigger_shift
can now also be a dictionary mapping subject name to shift value.The rejection GUI now allows selecting individual channels for interpolation using the ‘i’ key.
Parcellations based on combinations of existing labels, as well as parcellations based on regions around points specified in MNI coordinates can now be defined in
pipeline.MneExperiment.parcs
.Source space
NDVar
can be indexed with lists of region names, e.g.,ndvar.sub(source=['cuneus-lh', 'lingual-lh'])
.API:
plot.brain.bin_table()
function signature changed slightly (more parameters, newhemi
parameter inserted to match other functions’ argument order).API:
combine()
now raisesKeyError
when trying to combineDataset
objects with unequal keys; setfill_in_missing=True
to reproduce previous behavior.API: Previously,
Var.as_factor()
mapped unspecified values tostr(value)
. Now they are mapped to''
. This also applies topipeline.MneExperiment.variables
entries with unspecified values.
New in 0.16
New function for plotting a legend for annot-files:
plot.brain.annot_legend()
(automatically used in reports).Epoch definitions in
pipeline.MneExperiment.epochs
can now include a'base'
parameter, which will copy the given “base” epoch and modify it with the current definition.pipeline.MneExperiment.make_mov_ttest()
andpipeline.MneExperiment.make_mov_ga_dspm()
are fixed but require PySurfer 0.6.New function:
table.melt_ndvar()
.API:
plot.brain
function signatures changed slightly to accommodate more layout-related arguments.API: use
Brain.image()
instead ofplot.brain.image()
.
New in 0.15
The Eelbrain package on the PYPI is now compiled with Anaconda. This means that the package can now be installed into an Anaconda distribution with
pip
, whereaseasy_install
has to be used for the Canopy distribution.GUI
gui.select_epochs()
: Set marked channels through menu (View > Mark Channels)Datasets can be saved as tables in RTF format (
Dataset.save_rtf()
).API
plot.Timeplot
: the default spread indicator changed to SEM, and there is a new argument for timelabels.API:
test.anova
is now a function with a slightly changed signature. The old class has been renamed totest.ANOVA
.API:
test.oneway
was removed. Usetest.ANOVA
.API: the default value of the
plot.Timeplot
parameter bottom changed from 0 to None (determined by the data).API:
Factor.relabel()
renamed toFactor.update_labels()
.Plotting: New option for the figure legend
'draggable'
(drag the legend with the mouse pointer).
New in 0.14
API: the
plot.Topomap
argument sensors changed to sensorlabels.GUI: The python/Quit Eelbrain menu command now closes all windows to ensure that unsaved documents are handled properly. In order to yield to the terminal without closing windows, use the Go/Yield to Terminal command (Command-Alt-Q).
testnd.TContrastRelated
: support for unary operation abs.
New in 0.13
The
gui.select_epochs()
GUI can now also be used to set bad channels.pipeline.MneExperiment
subclasses will combine bad channel information from rejection files with bad channel information from bad channel files. Note that while bad channel files set bad channels for a given raw file globally, rejection files set bad channels only for the given epoch.Factor
objects can now remember a custom cell order which determines the order in tables and plots.The
Var.as_factor()
method can now assign all unmentioned codes to a default value.MneExperiment
:API: Subclasses should remove the
subject
andexperiment
parameters frompipeline.MneExperiment.label_events()
.API:
pipeline.MneExperiment
can now be imported directly fromeelbrain
.API: The
pipeline.MneExperiment._defaults
attribute should be renamed topipeline.MneExperiment.defaults
.A draft for a guide at The MneExperiment Pipeline.
Cached files are now saved in a separate folder at
root/eelbrain-cache
. The cache can be cleared usingpipeline.MneExperiment.clear_cache()
. To preserve cached test results, move theroot/test
folder into theroot/eelbrain-cache
folder.
New in 0.12
API:
Dataset
construction changed, allows setting the number of cases in the Dataset.API:
plot.SensorMap2d
was renamed toplot.SensorMap
.MneExperiment
:API: The default number of samples for reports is now 10’000.
New epoch parameter
'n_cases'
: raise an error if an epoch definition does not yield expected number of trials.A custom baseline period for epochs can now be specified as a parameter in the epoch definition (e.g.,
'baseline': (-0.2, -0.1)
). When loading data, specifyingbaseline=True
uses the epoch’s custom baseline.
New in 0.11
MneExperiment
:Change in the way the covariance matrix is defined: The epoch for the covariance matrix should be specified in
MneExperiment.epochs['cov']
. The regularization is no longer part ofpipeline.MneExperiment.set_inv()
, but is instead set withMneExperiment.set(cov='reg')
orMneExperiment.set(cov='noreg')
.New option
cov='bestreg'
automatically selects the regularization parameter for each subejct.
Var.as_factor()
allows more efficient labeling when multiple values share the same label.API: Previously
plot.configure_backend()
is nowplot.configure()
New in 0.10
Tools for generating colors for categories (see Plotting).
Plots now all largely respect matplotlib rc-parameters (see Customizing Matplotlib).
Fixed an issue in the
testnd
module that could affect permutation based p-values when multiprocessing was used.
New in 0.9
Factor
API change: Therep
argument was renamed torepeat
.T-values for regression coefficients through
NDVar.ols_t()
.pipeline.MneExperiment
: subject name patterns and eog_sns are now handled automatically.UTSStat
andBarplot
plots can use pooled error for variability estimates (on by default for related measures designs, can be turned off using thepool_error
argument).API: for consistency, the argument to specify the kind of error to plot changed to
error
in both plots.
New in 0.8
New in 0.6
New recipes (outdated).
New in 0.5
The
eelbrain.lab
andeelbrain.eellab
modules are deprecated. Everything can now me imported fromeelbrain
directly.
New in 0.4
Optimized ANOVA evaluation, support for unbalanced fixed effects models.
rpy2 interaction:
Dataset.from_r()
to create aDataset
from an R Data Frame, andDataset.to_r()
to cerate an R Data Frame from aDataset
.
New in 0.3
Optimized clustering for cluster permutation tests.
New in 0.2
gui.SelectEpochs
Epoch rejection GIU has a new “GA” button to plot the grand average of all accepted trialsCluster permutation tests in
testnd
use multiple cores; To disable multiprocessing seteelbrain._stats.testnd.multiprocessing = False
.
New in 0.1.7
gui.SelectEpochs
can now be initialized with a singlemne.Epochs
instance (data needs to be preloaded).Parameters that take
NDVar
objects now also acceptmne.Epochs
andmne.fiff.Evoked
objects.
New in 0.1.5
plot.topo.TopoButterfly
plot: new keyboard commands (t
,left arrow
,right arrow
).