mne.viz.Brain

class mne.viz.Brain(subject_id, hemi, surf, title=None, cortex='classic', alpha=1.0, size=800, background='black', foreground=None, figure=None, subjects_dir=None, views='auto', offset=True, show_toolbar=False, offscreen=False, interaction='trackball', units='mm', view_layout='vertical', show=True)[source]

Class for visualizing a brain.

Warning

The API for this class is not currently complete. We suggest using mne.viz.plot_source_estimates() with the PyVista backend enabled to obtain a Brain instance.

Parameters
subject_idstr

Subject name in Freesurfer subjects dir.

hemistr

Hemisphere id (ie ‘lh’, ‘rh’, ‘both’, or ‘split’). In the case of ‘both’, both hemispheres are shown in the same window. In the case of ‘split’ hemispheres are displayed side-by-side in different viewing panes.

surfstr

FreeSurfer surface mesh name (ie ‘white’, ‘inflated’, etc.).

titlestr

Title for the window.

cortexstr or None

Specifies how the cortical surface is rendered. The name of one of the preset cortex styles can be: 'classic' (default), 'high_contrast', 'low_contrast', or 'bone' or a valid color name. Setting this to None is equivalent to (0.5, 0.5, 0.5).

alphafloat in [0, 1]

Alpha level to control opacity of the cortical surface.

sizeint | array_like, shape (2,)

The size of the window, in pixels. can be one number to specify a square window, or a length-2 sequence to specify (width, height).

backgroundtuple(int, int, int)

The color definition of the background: (red, green, blue).

foregroundmatplotlib color

Color of the foreground (will be used for colorbars and text). None (default) will use black or white depending on the value of background.

figurelist of Figure | None | int

If None (default), a new window will be created with the appropriate views. For single view plots, the figure can be specified as int to retrieve the corresponding Mayavi window.

subjects_dirstr | None

If not None, this directory will be used as the subjects directory instead of the value set using the SUBJECTS_DIR environment variable.

viewslist | str

The views to use.

offsetbool

If True, aligs origin with medial wall. Useful for viewing inflated surface where hemispheres typically overlap (Default: True).

show_toolbarbool

If True, toolbars will be shown for each view.

offscreenbool

If True, rendering will be done offscreen (not shown). Useful mostly for generating images or screenshots, but can be buggy. Use at your own risk.

interactionstr

Can be “trackball” (default) or “terrain”, i.e. a turntable-style camera.

unitsstr

Can be ‘m’ or ‘mm’ (default).

view_layoutstr

Can be “vertical” (default) or “horizontal”. When using “horizontal” mode, the PyVista backend must be used and hemi cannot be “split”.

showbool

Display the window as soon as it is ready. Defaults to True.

Notes

This table shows the capabilities of each Brain backend (“✓” for full support, and “-” for partial support):

3D function:

surfer.Brain

mne.viz.Brain

add_annotation

add_data

add_foci

add_label

add_text

close

data

foci

labels

labels_dict

remove_data

remove_foci

remove_labels

save_image

save_movie

screenshot

show_view

TimeViewer

enable_depth_peeling

get_picked_points

add_data(volume)

view_layout

flatmaps

Attributes
geodict

A dictionary of pysurfer.Surface objects for each hemisphere.

overlaysdict

The overlays.

Methods

__hash__()

Hash the object.

add_annotation(annot[, borders, alpha, …])

Add an annotation file.

add_data(array[, fmin, fmid, fmax, thresh, …])

Display data from a numpy array on the surface or volume.

add_foci(coords[, coords_as_verts, …])

Add spherical foci, possibly mapping to displayed surf.

add_label(label[, color, alpha, …])

Add an ROI label to the image.

add_text(x, y, text[, name, color, opacity, …])

Add a text to the visualization.

close()

Close all figures and cleanup data structure.

enable_depth_peeling()

Enable depth peeling.

get_picked_points()

Return the vertices of the picked points.

remove_labels()

Remove all the ROI labels from the image.

reset_view()

Reset the camera.

save_image(filename[, mode])

Save view from all panels to disk.

save_movie(filename[, time_dilation, tmin, …])

Save a movie (for data with a time axis).

scale_data_colormap(fmin, fmid, fmax, …[, …])

Scale the data colormap.

screenshot([mode, time_viewer])

Generate a screenshot of current view.

set_data_smoothing(n_steps)

Set the number of smoothing steps.

set_time_interpolation(interpolation)

Set the interpolation mode.

set_time_point(time_idx)

Set the time point shown (can be a float to interpolate).

show()

Display the window.

show_view([view, roll, distance, row, col, hemi])

Orient camera to display view.

update_lut([fmin, fmid, fmax])

Update color map.

__hash__()[source]

Hash the object.

add_annotation(annot, borders=True, alpha=1, hemi=None, remove_existing=True, color=None, **kwargs)[source]

Add an annotation file.

Parameters
annotstr | tuple

Either path to annotation file or annotation name. Alternatively, the annotation can be specified as a (labels, ctab) tuple per hemisphere, i.e. annot=(labels, ctab) for a single hemisphere or annot=((lh_labels, lh_ctab), (rh_labels, rh_ctab)) for both hemispheres. labels and ctab should be arrays as returned by nibabel.freesurfer.io.read_annot().

bordersbool | int

Show only label borders. If int, specify the number of steps (away from the true border) along the cortical mesh to include as part of the border definition.

alphafloat in [0, 1]

Alpha level to control opacity.

hemistr | None

If None, it is assumed to belong to the hemipshere being shown. If two hemispheres are being shown, data must exist for both hemispheres.

remove_existingbool

If True (default), remove old annotations.

colormatplotlib-style color code

If used, show all annotations in the same (specified) color. Probably useful only when showing annotation borders.

**kwargsdict

These are passed to the underlying mayavi.mlab.pipeline.surface call.

Examples using add_annotation:

add_data(array, fmin=None, fmid=None, fmax=None, thresh=None, center=None, transparent=False, colormap='auto', alpha=1, vertices=None, smoothing_steps=None, time=None, time_label='auto', colorbar=True, hemi=None, remove_existing=None, time_label_size=None, initial_time=None, scale_factor=None, vector_alpha=None, clim=None, src=None, volume_options=0.4, colorbar_kwargs=None, verbose=None)[source]

Display data from a numpy array on the surface or volume.

This provides a similar interface to surfer.Brain.add_overlay(), but it displays it with a single colormap. It offers more flexibility over the colormap, and provides a way to display four-dimensional data (i.e., a timecourse) or five-dimensional data (i.e., a vector-valued timecourse).

Note

fmin sets the low end of the colormap, and is separate from thresh (this is a different convention from surfer.Brain.add_overlay()).

Parameters
arraynumpy array, shape (n_vertices[, 3][, n_times])

Data array. For the data to be understood as vector-valued (3 values per vertex corresponding to X/Y/Z surface RAS), then array must be have all 3 dimensions. If vectors with no time dimension are desired, consider using a singleton (e.g., np.newaxis) to create a “time” dimension and pass time_label=None (vector values are not supported).

fminfloat

Minimum value in colormap (uses real fmin if None).

fmidfloat

Intermediate value in colormap (fmid between fmin and fmax if None).

fmaxfloat

Maximum value in colormap (uses real max if None).

threshNone or float

Not supported yet. If not None, values below thresh will not be visible.

centerfloat or None

If not None, center of a divergent colormap, changes the meaning of fmin, fmax and fmid.

transparentbool | None

If True: use a linear transparency between fmin and fmid and make values below fmin fully transparent (symmetrically for divergent colormaps). None will choose automatically based on colormap type.

colormapstr, list of color, or array

Name of matplotlib colormap to use, a list of matplotlib colors, or a custom look up table (an n x 4 array coded with RBGA values between 0 and 255), the default “auto” chooses a default divergent colormap, if “center” is given (currently “icefire”), otherwise a default sequential colormap (currently “rocket”).

alphafloat in [0, 1]

Alpha level to control opacity of the overlay.

verticesnumpy array

Vertices for which the data is defined (needed if len(data) < nvtx).

smoothing_stepsint or None

Number of smoothing steps (smoothing is used if len(data) < nvtx) The value ‘nearest’ can be used too. None (default) will use as many as necessary to fill the surface.

timenumpy array

Time points in the data array (if data is 2D or 3D).

time_labelstr | callable() | None

Format of the time label (a format string, a function that maps floating point time values to strings, or None for no label). The default is 'auto', which will use time=%0.2f ms if there is more than one time point.

colorbarbool

Whether to add a colorbar to the figure. Can also be a tuple to give the (row, col) index of where to put the colorbar.

hemistr | None

If None, it is assumed to belong to the hemisphere being shown. If two hemispheres are being shown, an error will be thrown.

remove_existingbool

Not supported yet. Remove surface added by previous “add_data” call. Useful for conserving memory when displaying different data in a loop.

time_label_sizeint

Font size of the time label (default 14).

initial_timefloat | None

Time initially shown in the plot. None to use the first time sample (default).

scale_factorfloat | None (default)

The scale factor to use when displaying glyphs for vector-valued data.

vector_alphafloat | None

Alpha level to control opacity of the arrows. Only used for vector-valued data. If None (default), alpha is used.

climdict

Original clim arguments.

srcinstance of SourceSpaces | None

The source space corresponding to the source estimate. Only necessary if the STC is a volume or mixed source estimate.

volume_optionsfloat | dict | None

Options for volumetric source estimate plotting, with key/value pairs:

  • 'resolution'float | None

    Resolution (in mm) of volume rendering. Smaller (e.g., 1.) looks better at the cost of speed. None (default) uses the volume source space resolution, which is often something like 7 or 5 mm, without resampling.

  • 'blending'str

    Can be “mip” (default) for maximum intensity projection or “composite” for composite blending using alpha values.

  • 'alpha'float | None

    Alpha for the volumetric rendering. Defaults are 0.4 for vector source estimates and 1.0 for scalar source estimates.

  • 'surface_alpha'float | None

    Alpha for the surface enclosing the volume(s). None (default) will use half the volume alpha. Set to zero to avoid plotting the surface.

  • 'silhouette_alpha'float | None

    Alpha for a silhouette along the outside of the volume. None (default) will use 0.25 * surface_alpha.

  • 'silhouette_linewidth'float

    The line width to use for the silhouette. Default is 2.

A float input (default 1.) or None will be used for the 'resolution' entry.

colorbar_kwargsdict | None

Options to pass to pyvista.BasePlotter.add_scalar_bar() (e.g., dict(title_font_size=10)).

verbosebool, str, int, or None

If not None, override default verbose level (see mne.verbose() and Logging documentation for more). If used, it should be passed as a keyword-argument only.

Notes

If the data is defined for a subset of vertices (specified by the “vertices” parameter), a smoothing method is used to interpolate the data onto the high resolution surface. If the data is defined for subsampled version of the surface, smoothing_steps can be set to None, in which case only as many smoothing steps are applied until the whole surface is filled with non-zeros.

Due to a Mayavi (or VTK) alpha rendering bug, vector_alpha is clamped to be strictly < 1.

add_foci(coords, coords_as_verts=False, map_surface=None, scale_factor=1, color='white', alpha=1, name=None, hemi=None)[source]

Add spherical foci, possibly mapping to displayed surf.

The foci spheres can be displayed at the coordinates given, or mapped through a surface geometry. In other words, coordinates from a volume-based analysis in MNI space can be displayed on an inflated average surface by finding the closest vertex on the white surface and mapping to that vertex on the inflated mesh.

Parameters
coordsndarray, shape (n_coords, 3)

Coordinates in stereotaxic space (default) or array of vertex ids (with coord_as_verts=True).

coords_as_vertsbool

Whether the coords parameter should be interpreted as vertex ids.

map_surfaceNone

Surface to map coordinates through, or None to use raw coords.

scale_factorfloat

Controls the size of the foci spheres (relative to 1cm).

colormatplotlib color code

HTML name, RBG tuple, or hex code.

alphafloat in [0, 1]

Opacity of focus gylphs.

namestr

Internal name to use.

hemistr | None

If None, it is assumed to belong to the hemipshere being shown. If two hemispheres are being shown, an error will be thrown.

Examples using add_foci:

add_label(label, color=None, alpha=1, scalar_thresh=None, borders=False, hemi=None, subdir=None)[source]

Add an ROI label to the image.

Parameters
labelstr | instance of Label

Label filepath or name. Can also be an instance of an object with attributes “hemi”, “vertices”, “name”, and optionally “color” and “values” (if scalar_thresh is not None).

colormatplotlib-style color | None

Anything matplotlib accepts: string, RGB, hex, etc. (default “crimson”).

alphafloat in [0, 1]

Alpha level to control opacity.

scalar_threshNone | float

Threshold the label ids using this value in the label file’s scalar field (i.e. label only vertices with scalar >= thresh).

bordersbool | int

Show only label borders. If int, specify the number of steps (away from the true border) along the cortical mesh to include as part of the border definition.

hemistr | None

If None, it is assumed to belong to the hemipshere being shown.

subdirNone | str

If a label is specified as name, subdir can be used to indicate that the label file is in a sub-directory of the subject’s label directory rather than in the label directory itself (e.g. for $SUBJECTS_DIR/$SUBJECT/label/aparc/lh.cuneus.label brain.add_label('cuneus', subdir='aparc')).

Notes

To remove previously added labels, run Brain.remove_labels().

Examples using add_label:

add_text(x, y, text, name=None, color=None, opacity=1.0, row=- 1, col=- 1, font_size=None, justification=None)[source]

Add a text to the visualization.

Parameters
xfloat

X coordinate.

yfloat

Y coordinate.

textstr

Text to add.

namestr

Name of the text (text label can be updated using update_text()).

colortuple

Color of the text. Default is the foreground color set during initialization (default is black or white depending on the background color).

opacityfloat

Opacity of the text (default 1.0).

rowint

Row index of which brain to use.

colint

Column index of which brain to use.

font_sizefloat | None

The font size to use.

justificationstr | None

The text justification.

Examples using add_text:

close()[source]

Close all figures and cleanup data structure.

Examples using close:

property data

Data used by time viewer and color bar widgets.

enable_depth_peeling()[source]

Enable depth peeling.

get_picked_points()[source]

Return the vertices of the picked points.

Returns
pointslist of int | None

The vertices picked by the time viewer.

property interaction

The interaction style.

remove_labels()[source]

Remove all the ROI labels from the image.

reset_view()[source]

Reset the camera.

save_image(filename, mode='rgb')[source]

Save view from all panels to disk.

Parameters
filenamestr

Path to new image file.

modestr

Either ‘rgb’ or ‘rgba’ for values to return.

Examples using save_image:

save_movie(filename, time_dilation=4.0, tmin=None, tmax=None, framerate=24, interpolation=None, codec=None, bitrate=None, callback=None, time_viewer=False, **kwargs)[source]

Save a movie (for data with a time axis).

The movie is created through the imageio module. The format is determined by the extension, and additional options can be specified through keyword arguments that depend on the format. For available formats and corresponding parameters see the imageio documentation: http://imageio.readthedocs.io/en/latest/formats.html#multiple-images

Warning

This method assumes that time is specified in seconds when adding data. If time is specified in milliseconds this will result in movies 1000 times longer than expected.

Parameters
filenamestr

Path at which to save the movie. The extension determines the format (e.g., '*.mov', '*.gif', …; see the imageio documentation for available formats).

time_dilationfloat

Factor by which to stretch time (default 4). For example, an epoch from -100 to 600 ms lasts 700 ms. With time_dilation=4 this would result in a 2.8 s long movie.

tminfloat

First time point to include (default: all data).

tmaxfloat

Last time point to include (default: all data).

frameratefloat

Framerate of the movie (frames per second, default 24).

interpolationstr | None

Interpolation method (scipy.interpolate.interp1d parameter). Must be one of ‘linear’, ‘nearest’, ‘zero’, ‘slinear’, ‘quadratic’, or ‘cubic’. If None, it uses the current brain.interpolation, which defaults to 'nearest'. Defaults to None.

codecstr | None

The codec to use.

bitratefloat | None

The bitrate to use.

callbackcallable() | None

A function to call on each iteration. Useful for status message updates. It will be passed keyword arguments frame and n_frames.

time_viewerbool

If True, include time viewer traces. Only used if time_viewer=True and separate_canvas=False.

**kwargsdict

Specify additional options for imageio.

scale_data_colormap(fmin, fmid, fmax, transparent, center=None, alpha=1.0, verbose=None)[source]

Scale the data colormap.

Parameters
fminfloat

Minimum value in colormap (uses real fmin if None).

fmidfloat

Intermediate value in colormap (fmid between fmin and fmax if None).

fmaxfloat

Maximum value in colormap (uses real max if None).

transparentbool | None

If True: use a linear transparency between fmin and fmid and make values below fmin fully transparent (symmetrically for divergent colormaps). None will choose automatically based on colormap type.

centerfloat or None

If not None, center of a divergent colormap, changes the meaning of fmin, fmax and fmid.

alphafloat in [0, 1]

Alpha level to control opacity.

verbosebool, str, int, or None

If not None, override default verbose level (see mne.verbose() and Logging documentation for more). If used, it should be passed as a keyword-argument only. Defaults to self.verbose.

screenshot(mode='rgb', time_viewer=False)[source]

Generate a screenshot of current view.

Parameters
modestr

Either ‘rgb’ or ‘rgba’ for values to return.

time_viewerbool

If True, include time viewer traces. Only used if time_viewer=True and separate_canvas=False.

Returns
screenshotarray

Image pixel values.

Examples using screenshot:

set_data_smoothing(n_steps)[source]

Set the number of smoothing steps.

Parameters
n_stepsint

Number of smoothing steps.

set_time_interpolation(interpolation)[source]

Set the interpolation mode.

Parameters
interpolationstr | None

Interpolation method (scipy.interpolate.interp1d parameter). Must be one of ‘linear’, ‘nearest’, ‘zero’, ‘slinear’, ‘quadratic’, or ‘cubic’.

set_time_point(time_idx)[source]

Set the time point shown (can be a float to interpolate).

Parameters
time_idxint | float

The time index to use. Can be a float to use interpolation between indices.

show()[source]

Display the window.

show_view(view=None, roll=None, distance=None, row=0, col=0, hemi=None)[source]

Orient camera to display view.

Parameters
viewstr | dict

String view, or a dict with azimuth and elevation.

rollfloat | None

The roll.

distancefloat | None

The distance.

rowint

The row to set.

colint

The column to set.

hemistr

Which hemi to use for string lookup (when in “both” mode).

Examples using show_view:

property time_interpolation

The interpolation mode.

update_lut(fmin=None, fmid=None, fmax=None)[source]

Update color map.

Parameters
fminfloat

Minimum value in colormap (uses real fmin if None).

fmidfloat

Intermediate value in colormap (fmid between fmin and fmax if None).

fmaxfloat

Maximum value in colormap (uses real max if None).

Examples using mne.viz.Brain