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='auto', show_toolbar=False, offscreen=False, interaction='trackball', units='mm', view_layout='vertical', silhouette=False, theme='auto', 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 | str

If True, shifts the right- or left-most x coordinate of the left and right surfaces, respectively, to be at zero. This is useful for viewing inflated surface where hemispheres typically overlap. Can be “auto” (default) use True with inflated surfaces and False otherwise (Default: ‘auto’). Only used when hemi='both'.

Changed in version 0.23: Default changed to “auto”.

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

silhouettedict | bool

As a dict, it contains the color, linewidth, alpha opacity and decimate (level of decimation between 0 and 1 or None) of the brain’s silhouette to display. If True, the default values are used and if False, no silhouette will be displayed. Defaults to False.

themestr | path-like

Can be “auto” (default), “light”, or “dark” or a path-like to a custom stylesheet. For Dark-Mode and automatic Dark-Mode-Detection, qdarkstyle respectively and darkdetect is required.

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

remove_foci

remove_labels

remove_annotations

scale_data_colormap

save_image

save_movie

screenshot

show_view

TimeViewer

enable_depth_peeling

get_picked_points

add_data(volume)

view_layout

flatmaps

vertex picking

label picking

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.

apply_auto_scaling()

Detect automatically fitting scaling parameters.

clear_glyphs()

Clear the picking glyphs.

close()

Close all figures and cleanup data structure.

enable_depth_peeling()

Enable depth peeling.

get_picked_points()

Return the vertices of the picked points.

help()

Display the help window.

plot_time_course(hemi, vertex_id, color)

Plot the vertex time course.

plot_time_line()

Add the time line to the MPL widget.

remove_annotations()

Remove all annotations from the image.

remove_labels()

Remove all the ROI labels from the image.

reset()

Reset view and time step.

reset_view()

Reset the camera.

restore_user_scaling()

Restore original scaling parameters.

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

screenshot([mode, time_viewer])

Generate a screenshot of current view.

set_data_smoothing(n_steps)

Set the number of smoothing steps.

set_playback_speed(speed)

Set the time playback speed.

set_time(time)

Set the time to display (in seconds).

set_time_interpolation(interpolation)

Set the interpolation mode.

set_time_point(time_idx)

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

setup_time_viewer([time_viewer, show_traces])

Configure the time viewer parameters.

show()

Display the window.

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

Orient camera to display view.

toggle_interface([value])

Toggle the interface.

toggle_playback([value])

Toggle time playback.

update_lut([fmin, fmid, fmax, alpha])

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, resolution=50)[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.

resolutionint

The resolution of the spheres.

Examples using add_foci:

add_label(label, color=None, alpha=1, scalar_thresh=None, borders=False, hemi=None, subdir=None, reset_camera=True)[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')).

reset_camerabool

If True, reset the camera view after adding the label. Defaults to True.

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:

apply_auto_scaling()[source]

Detect automatically fitting scaling parameters.

clear_glyphs()[source]

Clear the picking glyphs.

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.

help()[source]

Display the help window.

property interaction

The interaction style.

plot_time_course(hemi, vertex_id, color)[source]

Plot the vertex time course.

Parameters
hemistr

The hemisphere id of the vertex.

vertex_idint

The vertex identifier in the mesh.

colormatplotlib color

The color of the time course.

Returns
linematplotlib object

The time line object.

plot_time_line()[source]

Add the time line to the MPL widget.

remove_annotations()[source]

Remove all annotations from the image.

remove_labels()[source]

Remove all the ROI labels from the image.

reset()[source]

Reset view and time step.

reset_view()[source]

Reset the camera.

restore_user_scaling()[source]

Restore original scaling parameters.

save_image(filename=None, 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=None, 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.

Returns
dialogobject

The opened dialog is returned for testing purpose only.

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_playback_speed(speed)[source]

Set the time playback speed.

Parameters
speedfloat

The speed of the playback.

set_time(time)[source]

Set the time to display (in seconds).

Parameters
timefloat

The time to show, in seconds.

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.

setup_time_viewer(time_viewer=True, show_traces=True)[source]

Configure the time viewer parameters.

Parameters
time_viewerbool

If True, enable widgets interaction. Defaults to True.

show_tracesbool

If True, enable visualization of time traces. Defaults to True.

Notes

The keyboard shortcuts are the following:

‘?’: Display help window ‘i’: Toggle interface ‘s’: Apply auto-scaling ‘r’: Restore original clim ‘c’: Clear all traces ‘n’: Shift the time forward by the playback speed ‘b’: Shift the time backward by the playback speed ‘Space’: Start/Pause playback ‘Up’: Decrease camera elevation angle ‘Down’: Increase camera elevation angle ‘Left’: Decrease camera azimuth angle ‘Right’: Increase camera azimuth angle

show()[source]

Display the window.

show_view(view=None, roll=None, distance=None, row=0, col=0, hemi=None, align=True)[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).

alignbool

If True, consider view arguments relative to canonical MRI directions (closest to MNI for the subject) rather than native MRI space. This helps when MRIs are not in standard orientation (e.g., have large rotations).

Examples using show_view:

property time_interpolation

The interpolation mode.

toggle_interface(value=None)[source]

Toggle the interface.

Parameters
valuebool | None

If True, the widgets are shown and if False, they are hidden. If None, the state of the widgets is toggled. Defaults to None.

Examples using toggle_interface:

toggle_playback(value=None)[source]

Toggle time playback.

Parameters
valuebool | None

If True, automatic time playback is enabled and if False, it’s disabled. If None, the state of time playback is toggled. Defaults to None.

update_lut(fmin=None, fmid=None, fmax=None, alpha=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).

alphafloat | None

Alpha to use in the update.

Examples using mne.viz.Brain