# 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.

cortex

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).

background

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.

figure

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_dir

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

views

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

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

view_layout

flatmaps

Attributes
geodict

A dictionary of pysurfer.Surface objects for each hemisphere.

overlaysdict

The overlays.

Methods

 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 all figures and cleanup data structure. Enable depth peeling. Return the vertices of the picked points. Remove all the ROI labels from the image. 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). 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]

Parameters
annot

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().

borders

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.

hemi

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).

thresh

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

center

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

transparent

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.

colormap

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.

vertices

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

smoothing_steps

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.

time

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

time_label

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.

hemi

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_time

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_alpha

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_options

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_kwargs

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

verbose

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.

hemi

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_thresh

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

borders

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.

hemi

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

subdir

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

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_size

The font size to use.

justification

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
points

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).

interpolation

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.

codec

The codec to use.

bitrate

The bitrate to use.

callback

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).

transparent

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.

center

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.

verbose

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
interpolation

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_idx

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
view

String view, or a dict with azimuth and elevation.

roll

The roll.

distance

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).