# mne.preprocessing.ICA¶

class mne.preprocessing.ICA(n_components=None, max_pca_components=None, n_pca_components=None, noise_cov=None, random_state=None, method='fastica', fit_params=None, max_iter=200, allow_ref_meg=False, verbose=None)[source]

M/EEG signal decomposition using Independent Component Analysis (ICA).

This object estimates independent components from mne.io.Raw, mne.Epochs, or mne.Evoked objects. Components can optionally be removed (for artifact repair) prior to signal reconstruction.

Warning

ICA is sensitive to low-frequency drifts and therefore requires the data to be high-pass filtered prior to fitting. Typically, a cutoff frequency of 1 Hz is recommended.

Parameters
n_components

Number of principal components (from the pre-whitening PCA step) that are passed to the ICA algorithm during fitting. If int, must not be larger than max_pca_components. If float between 0 and 1, the number of components with cumulative explained variance less than n_components will be used. If None, max_pca_components will be used. Defaults to None; the actual number used when executing the ICA.fit() method will be stored in the attribute n_components_ (note the trailing underscore).

max_pca_components

Number of principal components (from the pre-whitening PCA step) that are retained for later use (i.e., for signal reconstruction in ICA.apply(); see the n_pca_components parameter). If None, no dimensionality reduction occurs and max_pca_components will equal the number of channels in the mne.io.Raw, mne.Epochs, or mne.Evoked object passed to ICA.fit().

n_pca_components

Total number of components (ICA + PCA) used for signal reconstruction in ICA.apply(). At minimum, at least n_components will be used (unless modified by ICA.include or ICA.exclude). If n_pca_components > n_components, additional PCA components will be incorporated. If float between 0 and 1, the number is chosen as the number of PCA components with cumulative explained variance less than n_components (without accounting for ICA.include or ICA.exclude). If int or float, n_components_ ≤ n_pca_components ≤ max_pca_components must hold. If None, max_pca_components will be used. Defaults to None.

noise_covNone | instance of Covariance

Noise covariance used for pre-whitening. If None (default), channels are scaled to unit variance (“z-standardized”) prior to the whitening by PCA.

random_stateNone | int | instance of RandomState

If random_state is an int, it will be used as a seed for RandomState. If None, the seed will be obtained from the operating system (see RandomState for details). Default is None. As estimation can be non-deterministic it can be useful to fix the random state to have reproducible results.

method{‘fastica’, ‘infomax’, ‘picard’}

The ICA method to use in the fit method. Use the fit_params argument to set additional parameters. Specifically, if you want Extended Infomax, set method=’infomax’ and fit_params=dict(extended=True) (this also works for method=’picard’). Defaults to ‘fastica’. For reference, see [R6498ecef9c1f-1], [R6498ecef9c1f-2], [R6498ecef9c1f-3] and [R6498ecef9c1f-4].

fit_params

Additional parameters passed to the ICA estimator as specified by method.

max_iterint

Maximum number of iterations during fit. Defaults to 200.

allow_ref_megbool

Allow ICA on MEG reference channels. Defaults to False.

New in version 0.18.

verbose

If not None, override default verbose level (see mne.verbose() and Logging documentation for more).

Notes

A trailing _ in an attribute name signifies that the attribute was added to the object during fitting, consistent with standard scikit-learn practice.

Prior to fitting and applying the ICA, data is whitened (de-correlated and scaled to unit variance, also called sphering transformation) by means of a Principle Component Analysis (PCA). In addition to the whitening, this step introduces the option to reduce the dimensionality of the data, both prior to fitting the ICA (with the max_pca_components parameter) and prior to reconstructing the sensor signals (with the n_pca_components parameter). In this way, we separate the question of how many ICA components to estimate from the question of how much to reduce the dimensionality of the signal. For example: by setting high values for max_pca_components and n_pca_components, relatively little dimensionality reduction will occur when the signal is reconstructed, regardless of the value of n_components (the number of ICA components estimated).

Note

Commonly used for reasons of i) computational efficiency and ii) additional noise reduction, it is a matter of current debate whether pre-ICA dimensionality reduction could decrease the reliability and stability of the ICA, at least for EEG data and especially during preprocessing [R6498ecef9c1f-5]. (But see also [R6498ecef9c1f-6] for a possibly confounding effect of the different whitening/sphering methods used in this paper (ZCA vs. PCA).) On the other hand, for rank-deficient data such as EEG data after average reference or interpolation, it is recommended to reduce the dimensionality (by 1 for average reference and 1 for each interpolated channel) for optimal ICA performance (see the EEGLAB wiki).

Caveat! If supplying a noise covariance, keep track of the projections available in the cov or in the raw object. For example, if you are interested in EOG or ECG artifacts, EOG and ECG projections should be temporally removed before fitting ICA, for example:

>> projs, raw.info['projs'] = raw.info['projs'], []
>> ica.fit(raw)
>> raw.info['projs'] = projs


Methods currently implemented are FastICA (default), Infomax, and Picard. Standard Infomax can be quite sensitive to differences in floating point arithmetic. Extended Infomax seems to be more stable in this respect, enhancing reproducibility and stability of results; use Extended Infomax via method='infomax', fit_params=dict(extended=True). Allowed entries in fit_params are determined by the various algorithm implementations: see FastICA, picard(), infomax().

Reducing the tolerance (set in fit_params) speeds up estimation at the cost of consistency of the obtained results. It is difficult to directly compare tolerance levels between Infomax and Picard, but for Picard and FastICA a good rule of thumb is tol_fastica == tol_picard ** 2.

References

R6498ecef9c1f-1

Hyvärinen, A., 1999. Fast and robust fixed-point algorithms for independent component analysis. IEEE transactions on Neural Networks, 10(3), pp.626-634.

R6498ecef9c1f-2

Bell, A.J., Sejnowski, T.J., 1995. An information-maximization approach to blind separation and blind deconvolution. Neural computation, 7(6), pp.1129-1159.

R6498ecef9c1f-3

Lee, T.W., Girolami, M., Sejnowski, T.J., 1999. Independent component analysis using an extended infomax algorithm for mixed subgaussian and supergaussian sources. Neural computation, 11(2), pp.417-441.

R6498ecef9c1f-4

Ablin P, Cardoso J, Gramfort A, 2018. Faster Independent Component Analysis by Preconditioning With Hessian Approximations. IEEE Transactions on Signal Processing 66:4040–4049

R6498ecef9c1f-5

Artoni, F., Delorme, A., und Makeig, S, 2018. Applying Dimension Reduction to EEG Data by Principal Component Analysis Reduces the Quality of Its Subsequent Independent Component Decomposition. NeuroImage 175, pp.176–187.

R6498ecef9c1f-6

Montoya-Martínez, J., Cardoso, J.-F., Gramfort, A, 2017. Caveats with stochastic gradient and maximum likelihood based ICA for EEG. LVA-ICA International Conference, Feb 2017, Grenoble, France. 〈hal-01451432〉

Attributes
current_fitstr

Flag informing about which data type (raw or epochs) was used for the fit.

ch_nameslist-like

Channel names resulting from initial picking.

n_components_int

If fit, the actual number of PCA components used for ICA decomposition.

pre_whitener_ndarray, shape (n_channels, 1)

If fit, array used to pre-whiten the data prior to PCA.

pca_components_ndarray, shape (max_pca_components, n_channels)

If fit, the PCA components.

pca_mean_ndarray, shape (n_channels,)

If fit, the mean vector used to center the data before doing the PCA.

pca_explained_variance_ndarray, shape (max_pca_components,)

If fit, the variance explained by each PCA component.

mixing_matrix_ndarray, shape (n_components_, n_components_)

If fit, the whitened mixing matrix to go back from ICA space to PCA space. It is, in combination with the pca_components_, used by ICA.apply() and ICA.get_components() to re-mix/project a subset of the ICA components into the observed channel space. The former method also removes the pre-whitening (z-scaling) and the de-meaning.

unmixing_matrix_ndarray, shape (n_components_, n_components_)

If fit, the whitened matrix to go from PCA space to ICA space. Used, in combination with the pca_components_, by the methods ICA.get_sources() and ICA.apply() to unmix the observed data.

exclude

List or np.array of sources indices to exclude when re-mixing the data in the ICA.apply() method, i.e. artifactual ICA components. The components identified manually and by the various automatic artifact detection methods should be (manually) appended (e.g. ica.exclude.extend(eog_inds)). (There is also an exclude parameter in the ICA.apply() method.) To scrap all marked components, set this attribute to an empty list.

infoNone | instance of Info

The measurement info copied from the object fitted.

n_samples_int

The number of samples used on fit.

labels_dict

A dictionary of independent component indices, grouped by types of independent components. This attribute is set by some of the artifact detection functions.

Methods

 __contains__(self, ch_type) Check channel type membership. __hash__(self, /) Return hash(self). apply(self, inst[, include, exclude, …]) Remove selected components from the signal. copy(self) Copy the ICA object. detect_artifacts(self, raw[, start_find, …]) Run ICA artifacts detection workflow. find_bads_ecg(self, inst[, ch_name, …]) Detect ECG related components using correlation. find_bads_eog(self, inst[, ch_name, …]) Detect EOG related components using correlation. find_bads_ref(self, inst[, ch_name, …]) Detect MEG reference related components using correlation. fit(self, inst[, picks, start, stop, decim, …]) Run the ICA decomposition on raw data. get_components(self) Get ICA topomap for components as numpy arrays. get_sources(self, inst[, add_channels, …]) Estimate sources given the unmixing matrix. plot_components(self[, picks, ch_type, res, …]) Project unmixing matrix on interpolated sensor topography. plot_overlay(self, inst[, exclude, picks, …]) Overlay of raw and cleaned signals given the unmixing matrix. plot_properties(self, inst[, picks, axes, …]) Display component properties. plot_scores(self, scores[, exclude, labels, …]) Plot scores related to detected components. plot_sources(self, inst[, picks, exclude, …]) Plot estimated latent sources given the unmixing matrix. save(self, fname) Store ICA solution into a fiff file. score_sources(self, inst[, target, …]) Assign score to components based on statistic or metric.
__contains__(self, ch_type)[source]

Check channel type membership.

Parameters
ch_typestr

Channel type to check for. Can be e.g. ‘meg’, ‘eeg’, ‘stim’, etc.

Returns
inbool

Whether or not the instance contains the given channel type.

Examples

Channel type membership can be tested as:

>>> 'meg' in inst
True
>>> 'seeg' in inst
False

__hash__(self, /)

Return hash(self).

apply(self, inst, include=None, exclude=None, n_pca_components=None, start=None, stop=None)[source]

Remove selected components from the signal.

Given the unmixing matrix, transform data, zero out components, and inverse transform the data. This procedure will reconstruct M/EEG signals from which the dynamics described by the excluded components is subtracted. The data is processed in place.

Parameters
instinstance of Raw, Epochs or Evoked

The data to be processed. The instance is modified inplace.

includearray_like of int.

The indices referring to columns in the ummixing matrix. The components to be kept.

excludearray_like of int.

The indices referring to columns in the ummixing matrix. The components to be zeroed out.

n_pca_components

The number of PCA components to be kept, either absolute (int) or percentage of the explained variance (float). If None (default), all PCA components will be used.

start

First sample to include. If float, data will be interpreted as time in seconds. If None, data will be used from the first sample.

stop

Last sample to not include. If float, data will be interpreted as time in seconds. If None, data will be used to the last sample.

Returns
outinstance of Raw, Epochs or Evoked

The processed data.

Examples using apply:

property compensation_grade

copy(self)[source]

Copy the ICA object.

Returns
icainstance of ICA

The copied object.

detect_artifacts(self, raw, start_find=None, stop_find=None, ecg_ch=None, ecg_score_func='pearsonr', ecg_criterion=0.1, eog_ch=None, eog_score_func='pearsonr', eog_criterion=0.1, skew_criterion=0, kurt_criterion=0, var_criterion=-1, add_nodes=None)[source]

Run ICA artifacts detection workflow.

Note. This is still experimental and will most likely change over the next releases. For maximum control use the workflow exposed in the examples.

Hints and caveats: - It is highly recommended to bandpass filter ECG and EOG data and pass them instead of the channel names as ecg_ch and eog_ch arguments. - please check your results. Detection by kurtosis and variance may be powerful but misclassification of brain signals as noise cannot be precluded. - Consider using shorter times for start_find and stop_find than for start and stop. It can save you much time.

Example invocation (taking advantage of the defaults):

ica.detect_artifacts(ecg_channel='MEG 1531', eog_channel='EOG 061')

Parameters
rawinstance of Raw

Raw object to draw sources from. No components are actually removed here, i.e. ica is not applied to raw in this function. Use ica.apply() for this after inspection of the identified components.

start_find

First sample to include for artifact search. If float, data will be interpreted as time in seconds. If None, data will be used from the first sample.

stop_find

Last sample to not include for artifact search. If float, data will be interpreted as time in seconds. If None, data will be used to the last sample.

ecg_ch

The target argument passed to ica.find_sources_raw. Either the name of the ECG channel or the ECG time series. If None, this step will be skipped.

ecg_score_func

The score_func argument passed to ica.find_sources_raw. Either the name of function supported by ICA or a custom function.

ecg_criterionfloat | int | list-like | slice

The indices of the sorted ecg scores. If float, sources with absolute scores greater than the criterion will be dropped. Else, the absolute scores sorted in descending order will be indexed accordingly. E.g. range(2) would return the two sources with the highest absolute score. If None, this step will be skipped.

eog_ch

The target argument or the list of target arguments subsequently passed to ica.find_sources_raw. Either the name of the vertical EOG channel or the corresponding EOG time series. If None, this step will be skipped.

eog_score_func

The score_func argument passed to ica.find_sources_raw. Either the name of function supported by ICA or a custom function.

eog_criterionfloat | int | list-like | slice

The indices of the sorted eog scores. If float, sources with absolute scores greater than the criterion will be dropped. Else, the absolute scores sorted in descending order will be indexed accordingly. E.g. range(2) would return the two sources with the highest absolute score. If None, this step will be skipped.

skew_criterionfloat | int | list-like | slice

The indices of the sorted skewness scores. If float, sources with absolute scores greater than the criterion will be dropped. Else, the absolute scores sorted in descending order will be indexed accordingly. E.g. range(2) would return the two sources with the highest absolute score. If None, this step will be skipped.

kurt_criterionfloat | int | list-like | slice

The indices of the sorted kurtosis scores. If float, sources with absolute scores greater than the criterion will be dropped. Else, the absolute scores sorted in descending order will be indexed accordingly. E.g. range(2) would return the two sources with the highest absolute score. If None, this step will be skipped.

var_criterionfloat | int | list-like | slice

The indices of the sorted variance scores. If float, sources with absolute scores greater than the criterion will be dropped. Else, the absolute scores sorted in descending order will be indexed accordingly. E.g. range(2) would return the two sources with the highest absolute score. If None, this step will be skipped.

Additional list if tuples carrying the following parameters of ica nodes: (name : str, target : str | array, score_func : callable, criterion : float | int | list-like | slice). This parameter is a generalization of the artifact specific parameters above and has the same structure. Example: add_nodes=(‘ECG phase lock’, ECG 01’, my_phase_lock_function, 0.5)

Returns
selfinstance of ICA

The ICA object with the detected artifact indices marked for exclusion

find_bads_ecg(self, inst, ch_name=None, threshold=None, start=None, stop=None, l_freq=8, h_freq=16, method='ctps', reject_by_annotation=True, verbose=None)[source]

Detect ECG related components using correlation.

Note

If no ECG channel is available, routine attempts to create an artificial ECG based on cross-channel averaging.

Parameters
instinstance of Raw, Epochs or Evoked

Object to compute sources from.

ch_namestr

The name of the channel to use for ECG peak detection. The argument is mandatory if the dataset contains no ECG channels.

thresholdfloat

The value above which a feature is classified as outlier. If method is ‘ctps’, defaults to 0.25, else defaults to 3.0.

start

First sample to include. If float, data will be interpreted as time in seconds. If None, data will be used from the first sample.

stop

Last sample to not include. If float, data will be interpreted as time in seconds. If None, data will be used to the last sample.

l_freqfloat

Low pass frequency.

h_freqfloat

High pass frequency.

method{‘ctps’, ‘correlation’}

The method used for detection. If ‘ctps’, cross-trial phase statistics [1] are used to detect ECG related components. Thresholding is then based on the significance value of a Kuiper statistic. If ‘correlation’, detection is based on Pearson correlation between the filtered data and the filtered ECG channel. Thresholding is based on iterative z-scoring. The above threshold components will be masked and the z-score will be recomputed until no supra-threshold component remains. Defaults to ‘ctps’.

reject_by_annotationbool

If True, data annotated as bad will be omitted. Defaults to True.

New in version 0.14.0.

verbose

If not None, override default verbose level (see mne.verbose() and Logging documentation for more). Defaults to self.verbose.

Returns
ecg_idx

The indices of ECG related components.

scoresnp.ndarray of float, shape (n_components_)

The correlation scores.

References

[1] Dammers, J., Schiek, M., Boers, F., Silex, C., Zvyagintsev,

M., Pietrzyk, U., Mathiak, K., 2008. Integration of amplitude and phase statistics for complete artifact removal in independent components of neuromagnetic recordings. Biomedical Engineering, IEEE Transactions on 55 (10), 2353-2362.

Examples using find_bads_ecg:

find_bads_eog(self, inst, ch_name=None, threshold=3.0, start=None, stop=None, l_freq=1, h_freq=10, reject_by_annotation=True, verbose=None)[source]

Detect EOG related components using correlation.

Detection is based on Pearson correlation between the filtered data and the filtered EOG channel. Thresholding is based on adaptive z-scoring. The above threshold components will be masked and the z-score will be recomputed until no supra-threshold component remains.

Parameters
instinstance of Raw, Epochs or Evoked

Object to compute sources from.

ch_namestr

The name of the channel to use for EOG peak detection. The argument is mandatory if the dataset contains no EOG channels.

threshold

The value above which a feature is classified as outlier.

start

First sample to include. If float, data will be interpreted as time in seconds. If None, data will be used from the first sample.

stop

Last sample to not include. If float, data will be interpreted as time in seconds. If None, data will be used to the last sample.

l_freqfloat

Low pass frequency.

h_freqfloat

High pass frequency.

reject_by_annotationbool

If True, data annotated as bad will be omitted. Defaults to True.

New in version 0.14.0.

verbose

If not None, override default verbose level (see mne.verbose() and Logging documentation for more). Defaults to self.verbose.

Returns
eog_idx

The indices of EOG related components, sorted by score.

scoresnp.ndarray of float, shape (n_components_) | list of array

The correlation scores.

Examples using find_bads_eog:

find_bads_ref(self, inst, ch_name=None, threshold=3.0, start=None, stop=None, l_freq=None, h_freq=None, reject_by_annotation=True, verbose=None)[source]

Detect MEG reference related components using correlation.

Parameters
instinstance of Raw, Epochs or Evoked

Object to compute sources from. Should contain at least one channel i.e. component derived from MEG reference channels.

ch_name: list of int

Which MEG reference components to use. If None, then all channels that begin with REF_ICA

threshold

The value above which a feature is classified as outlier.

start

First sample to include. If float, data will be interpreted as time in seconds. If None, data will be used from the first sample.

stop

Last sample to not include. If float, data will be interpreted as time in seconds. If None, data will be used to the last sample.

l_freqfloat

Low pass frequency.

h_freqfloat

High pass frequency.

reject_by_annotationbool

If True, data annotated as bad will be omitted. Defaults to True.

verbose

If not None, override default verbose level (see mne.verbose() and Logging documentation for more). Defaults to self.verbose.

Returns
ref_idx

The indices of MEG reference related components, sorted by score.

scoresnp.ndarray of float, shape (n_components_) | list of array

The correlation scores.

Notes

Detection is based on Pearson correlation between the MEG data components and MEG reference components. Thresholding is based on adaptive z-scoring. The above threshold components will be masked and the z-score will be recomputed until no supra-threshold component remains.

Recommended procedure is to perform ICA separately on reference channels, extract them using .get_sources(), and then append them to the inst using .add_channels(), preferably with the prefix REF_ICA so that they can be automatically detected.

New in version 0.18.

fit(self, inst, picks=None, start=None, stop=None, decim=None, reject=None, flat=None, tstep=2.0, reject_by_annotation=True, verbose=None)[source]

Run the ICA decomposition on raw data.

Caveat! If supplying a noise covariance keep track of the projections available in the cov, the raw or the epochs object. For example, if you are interested in EOG or ECG artifacts, EOG and ECG projections should be temporally removed before fitting the ICA.

Parameters
instinstance of Raw, Epochs or Evoked

Raw measurements to be decomposed.

picks

Channels to include. Slices and lists of integers will be interpreted as channel indices. In lists, channel type strings (e.g., ['meg', 'eeg']) will pick channels of those types, channel name strings (e.g., ['MEG0111', 'MEG2623'] will pick the given channels. Can also be the string values “all” to pick all channels, or “data” to pick data channels. None (default) will pick good data channels(excluding reference MEG channels). This selection remains throughout the initialized ICA solution.

start

First sample to include. If float, data will be interpreted as time in seconds. If None, data will be used from the first sample.

stop

Last sample to not include. If float, data will be interpreted as time in seconds. If None, data will be used to the last sample.

decim

Increment for selecting each nth time slice. If None, all samples within start and stop are used.

reject

Rejection parameters based on peak-to-peak amplitude. Valid keys are ‘grad’, ‘mag’, ‘eeg’, ‘seeg’, ‘ecog’, ‘eog’, ‘ecg’, ‘hbo’, ‘hbr’. If reject is None then no rejection is done. Example:

reject = dict(grad=4000e-13, # T / m (gradiometers)
mag=4e-12, # T (magnetometers)
eeg=40e-6, # V (EEG channels)
eog=250e-6 # V (EOG channels)
)


It only applies if inst is of type Raw.

flat

Rejection parameters based on flatness of signal. Valid keys are ‘grad’, ‘mag’, ‘eeg’, ‘seeg’, ‘ecog’, ‘eog’, ‘ecg’, ‘hbo’, ‘hbr’. Values are floats that set the minimum acceptable peak-to-peak amplitude. If flat is None then no rejection is done. It only applies if inst is of type Raw.

tstepfloat

Length of data chunks for artifact rejection in seconds. It only applies if inst is of type Raw.

reject_by_annotationbool

Whether to omit bad segments from the data before fitting. If True, annotated segments with a description that starts with ‘bad’ are omitted. Has no effect if inst is an Epochs or Evoked object. Defaults to True.

New in version 0.14.0.

verbose

If not None, override default verbose level (see mne.verbose() and Logging documentation for more). Defaults to self.verbose.

Returns
selfinstance of ICA

Returns the modified instance.

Examples using fit:

get_components(self)[source]

Get ICA topomap for components as numpy arrays.

Returns
componentsarray, shape (n_channels, n_components)

The ICA components (maps).

get_sources(self, inst, add_channels=None, start=None, stop=None)[source]

Estimate sources given the unmixing matrix.

This method will return the sources in the container format passed. Typical usecases:

1. pass Raw object to use raw.plot for ICA sources

2. pass Epochs object to compute trial-based statistics in ICA space

3. pass Evoked object to investigate time-locking in ICA space

Parameters
instinstance of Raw, Epochs or Evoked

Object to compute sources from and to represent sources in.

Additional channels to be added. Useful to e.g. compare sources with some reference. Defaults to None

start

First sample to include. If float, data will be interpreted as time in seconds. If None, the entire data will be used.

stop

Last sample to not include. If float, data will be interpreted as time in seconds. If None, the entire data will be used.

Returns
sourcesinstance of Raw, Epochs or Evoked

The ICA sources time series.

plot_components(self, picks=None, ch_type=None, res=64, layout=None, vmin=None, vmax=None, cmap='RdBu_r', sensors=True, colorbar=False, title=None, show=True, outlines='head', contours=6, image_interp='bilinear', head_pos=None, inst=None, plot_std=True, topomap_args=None, image_args=None, psd_args=None, reject='auto')[source]

Project unmixing matrix on interpolated sensor topography.

Parameters
picks

Channels to include. Slices and lists of integers will be interpreted as channel indices. In lists, channel type strings (e.g., ['meg', 'eeg']) will pick channels of those types, channel name strings (e.g., ['MEG0111', 'MEG2623'] will pick the given channels. Can also be the string values “all” to pick all channels, or “data” to pick data channels. None (default) will pick all channels. If None all are plotted in batches of 20.

ch_type‘mag’ | ‘grad’ | ‘planar1’ | ‘planar2’ | ‘eeg’ | None

The channel type to plot. For ‘grad’, the gradiometers are collected in pairs and the RMS for each pair is plotted. If None, then channels are chosen in the order given above.

resint

The resolution of the topomap image (n pixels along each side).

layout

Layout instance specifying sensor positions (does not need to be specified for Neuromag data). If possible, the correct layout is inferred from the data.

vmin

The value specifying the lower bound of the color range. If None, and vmax is None, -vmax is used. Else np.min(data). If callable, the output equals vmin(data). Defaults to None.

vmax

The value specifying the upper bound of the color range. If None, the maximum absolute value is used. If callable, the output equals vmax(data). Defaults to None.

cmapmatplotlib colormap | (colormap, bool) | ‘interactive’ | None

Colormap to use. If tuple, the first value indicates the colormap to use and the second value is a boolean defining interactivity. In interactive mode the colors are adjustable by clicking and dragging the colorbar with left and right mouse button. Left mouse button moves the scale up and down and right mouse button adjusts the range. Hitting space bar resets the range. Up and down arrows can be used to change the colormap. If None, ‘Reds’ is used for all positive data, otherwise defaults to ‘RdBu_r’. If ‘interactive’, translates to (None, True). Defaults to ‘RdBu_r’.

Warning

Interactive mode works smoothly only for a small amount of topomaps.

sensors

Add markers for sensor locations to the plot. Accepts matplotlib plot format string (e.g., ‘r+’ for red plusses). If True (default), circles will be used.

colorbarbool

Plot a colorbar.

title

Title to use.

showbool

Show figure if True.

outlines‘head’ | ‘skirt’ | dict | None

The outlines to be drawn. If ‘head’, the default head scheme will be drawn. If ‘skirt’ the head scheme will be drawn, but sensors are allowed to be plotted outside of the head circle. If dict, each key refers to a tuple of x and y positions, the values in ‘mask_pos’ will serve as image mask, and the ‘autoshrink’ (bool) field will trigger automated shrinking of the positions due to points outside the outline. Alternatively, a matplotlib patch object can be passed for advanced masking options, either directly or as a function that returns patches (required for multi-axis plots). If None, nothing will be drawn. Defaults to ‘head’.

contours

The number of contour lines to draw. If 0, no contours will be drawn. When an integer, matplotlib ticker locator is used to find suitable values for the contour thresholds (may sometimes be inaccurate, use array for accuracy). If an array, the values represent the levels for the contours. Defaults to 6.

image_interpstr

The image interpolation to be used. All matplotlib options are accepted.

If None (default), the sensors are positioned such that they span the head circle. If dict, can have entries ‘center’ (tuple) and ‘scale’ (tuple) for what the center and scale of the head should be relative to the electrode locations.

inst

To be able to see component properties after clicking on component topomap you need to pass relevant data - instances of Raw or Epochs (for example the data that ICA was trained on). This takes effect only when running matplotlib in interactive mode.

plot_std: bool | float

Whether to plot standard deviation in ERP/ERF and spectrum plots. Defaults to True, which plots one standard deviation above/below. If set to float allows to control how many standard deviations are plotted. For example 2.5 will plot 2.5 standard deviation above/below.

topomap_args

Dictionary of arguments to plot_topomap. If None, doesn’t pass any additional arguments. Defaults to None.

image_args

Dictionary of arguments to plot_epochs_image. If None, doesn’t pass any additional arguments. Defaults to None.

psd_args

Dictionary of arguments to psd_multitaper. If None, doesn’t pass any additional arguments. Defaults to None.

reject‘auto’ | dict | None

Allows to specify rejection parameters used to drop epochs (or segments if continuous signal is passed as inst). If None, no rejection is applied. The default is ‘auto’, which applies the rejection parameters used when fitting the ICA object.

Returns
figinstance of matplotlib.figure.Figure or list

The figure object(s).

Notes

When run in interactive mode, plot_ica_components allows to reject components by clicking on their title label. The state of each component is indicated by its label color (gray: rejected; black: retained). It is also possible to open component properties by clicking on the component topomap (this option is only available when the inst argument is supplied).

Examples using plot_components:

plot_overlay(self, inst, exclude=None, picks=None, start=None, stop=None, title=None, show=True)[source]

Overlay of raw and cleaned signals given the unmixing matrix.

This method helps visualizing signal quality and artifact rejection.

Parameters
instinstance of mne.io.Raw or mne.Evoked

The signals to be compared given the ICA solution. If Raw input, The raw data are displayed before and after cleaning. In a second panel the cross channel average will be displayed. Since dipolar sources will be canceled out this display is sensitive to artifacts. If evoked input, butterfly plots for clean and raw signals will be superimposed.

excludearray_like of int | None (default)

The components marked for exclusion. If None (default), ICA.exclude will be used.

picks

Channels to include. Slices and lists of integers will be interpreted as channel indices. In lists, channel type strings (e.g., ['meg', 'eeg']) will pick channels of those types, channel name strings (e.g., ['MEG0111', 'MEG2623'] will pick the given channels. Can also be the string values “all” to pick all channels, or “data” to pick data channels. None (default) will pick all channels that were included during fitting.

startint

X-axis start index. If None from the beginning.

stopint

X-axis stop index. If None to the end.

titlestr

The figure title.

showbool

Show figure if True.

Returns
figinstance of Figure

The figure.

Examples using plot_overlay:

plot_properties(self, inst, picks=None, axes=None, dB=True, plot_std=True, topomap_args=None, image_args=None, psd_args=None, figsize=None, show=True, reject='auto')[source]

Display component properties.

Properties include the topography, epochs image, ERP/ERF, power spectrum, and epoch variance.

Parameters
inst: instance of Epochs or Raw

The data to use in plotting properties.

picks

Channels to include. Slices and lists of integers will be interpreted as channel indices. In lists, channel type strings (e.g., ['meg', 'eeg']) will pick channels of those types, channel name strings (e.g., ['MEG0111', 'MEG2623'] will pick the given channels. Can also be the string values “all” to pick all channels, or “data” to pick data channels. None (default) will pick the first five sources. If more than one components were chosen in the picks, each one will be plotted in a separate figure.

axes: list of matplotlib axes | None

List of five matplotlib axes to use in plotting: [topomap_axis, image_axis, erp_axis, spectrum_axis, variance_axis]. If None a new figure with relevant axes is created. Defaults to None.

dB: bool

Whether to plot spectrum in dB. Defaults to True.

plot_std: bool | float

Whether to plot standard deviation/confidence intervals in ERP/ERF and spectrum plots. Defaults to True, which plots one standard deviation above/below for the spectrum. If set to float allows to control how many standard deviations are plotted for the spectrum. For example 2.5 will plot 2.5 standard deviation above/below. For the ERP/ERF, by default, plot the 95 percent parametric confidence interval is calculated. To change this, use ci in ts_args in image_args (see below).

topomap_args

Dictionary of arguments to plot_topomap. If None, doesn’t pass any additional arguments. Defaults to None.

image_args

Dictionary of arguments to plot_epochs_image. If None, doesn’t pass any additional arguments. Defaults to None.

psd_args

Dictionary of arguments to psd_multitaper. If None, doesn’t pass any additional arguments. Defaults to None.

figsizearray_like, shape (2,) | None

Allows to control size of the figure. If None, the figure size defaults to [7., 6.].

showbool

Show figure if True.

reject‘auto’ | dict | None

Allows to specify rejection parameters used to drop epochs (or segments if continuous signal is passed as inst). If None, no rejection is applied. The default is ‘auto’, which applies the rejection parameters used when fitting the ICA object.

Returns
figlist

List of matplotlib figures.

Notes

New in version 0.13.

Examples using plot_properties:

plot_scores(self, scores, exclude=None, labels=None, axhline=None, title='ICA component scores', figsize=None, show=True)[source]

Plot scores related to detected components.

Use this function to asses how well your score describes outlier sources and how well you were detecting them.

Parameters
scoresarray_like of float, shape (n_ica_components,) | list of array

Scores based on arbitrary metric to characterize ICA components.

exclude

The components marked for exclusion. If None (default), ICA.exclude will be used.

labelsstr | list | ‘ecg’ | ‘eog’ | None

The labels to consider for the axes tests. Defaults to None. If list, should match the outer shape of scores. If ‘ecg’ or ‘eog’, the labels_ attributes will be looked up. Note that ‘/’ is used internally for sublabels specifying ECG and EOG channels.

axhlinefloat

Draw horizontal line to e.g. visualize rejection threshold.

titlestr

The figure title.

figsize

The figure size. If None it gets set automatically.

showbool

Show figure if True.

Returns
figinstance of Figure

The figure object

Examples using plot_scores:

plot_sources(self, inst, picks=None, exclude='deprecated', start=None, stop=None, title=None, show=True, block=False, show_first_samp=False, show_scrollbars=True)[source]

Plot estimated latent sources given the unmixing matrix.

Typical usecases:

1. plot evolution of latent sources over time based on (Raw input)

2. plot latent source around event related time windows (Epochs input)

3. plot time-locking in ICA space (Evoked input)

Parameters
inst

The object to plot the sources from.

picks

Channels to include. Slices and lists of integers will be interpreted as channel indices. In lists, channel type strings (e.g., ['meg', 'eeg']) will pick channels of those types, channel name strings (e.g., ['MEG0111', 'MEG2623'] will pick the given channels. Can also be the string values “all” to pick all channels, or “data” to pick data channels. None (default) will pick all sources in the order as fitted.

exclude‘deprecated’

The exclude parameter is deprecated and will be removed in version 0.20; specify excluded components using the ICA.exclude attribute instead.

startint

X-axis start index. If None, from the beginning.

stopint

X-axis stop index. If None, next 20 are shown, in case of evoked to the end.

title

The window title. If None a default is provided.

showbool

Show figure if True.

blockbool

Whether to halt program execution until the figure is closed. Useful for interactive selection of components in raw and epoch plotter. For evoked, this parameter has no effect. Defaults to False.

show_first_sampbool

If True, show time axis relative to the raw.first_samp.

show_scrollbarsbool

Whether to show scrollbars when the plot is initialized. Can be toggled after initialization by pressing z (“zen mode”) while the plot window is focused. Default is True.

New in version 0.19.0.

Returns
figinstance of Figure

The figure.

Notes

For raw and epoch instances, it is possible to select components for exclusion by clicking on the line. The selected components are added to ica.exclude on close.

New in version 0.10.0.

Examples using plot_sources:

save(self, fname)[source]

Store ICA solution into a fiff file.

Parameters
fnamestr

The absolute path of the file name to save the ICA solution into. The file name should end with -ica.fif or -ica.fif.gz.

Examples using save:

score_sources(self, inst, target=None, score_func='pearsonr', start=None, stop=None, l_freq=None, h_freq=None, reject_by_annotation=True, verbose=None)[source]

Assign score to components based on statistic or metric.

Parameters
instinstance of Raw, Epochs or Evoked

The object to reconstruct the sources from.

target

Signal to which the sources shall be compared. It has to be of the same shape as the sources. If str, a routine will try to find a matching channel name. If None, a score function expecting only one input-array argument must be used, for instance, scipy.stats.skew (default).

score_func

Callable taking as arguments either two input arrays (e.g. Pearson correlation) or one input array (e. g. skewness) and returns a float. For convenience the most common score_funcs are available via string labels: Currently, all distance metrics from scipy.spatial and All functions from scipy.stats taking compatible input arguments are supported. These function have been modified to support iteration over the rows of a 2D array.

start

First sample to include. If float, data will be interpreted as time in seconds. If None, data will be used from the first sample.

stop

Last sample to not include. If float, data will be interpreted as time in seconds. If None, data will be used to the last sample.

l_freqfloat

Low pass frequency.

h_freqfloat

High pass frequency.

reject_by_annotationbool

If True, data annotated as bad will be omitted. Defaults to True.

New in version 0.14.0.

verbose

If not None, override default verbose level (see mne.verbose() and Logging documentation for more). Defaults to self.verbose.

Returns
scoresndarray

scores for each source as returned from score_func