mne.read_surface(fname, read_metadata=False, return_dict=False, file_format='auto', verbose=None)[source]

Load a Freesurfer surface mesh in triangular format.


The name of the file containing the surface.


Read metadata as key-value pairs. Only works when reading a FreeSurfer surface file. For .obj files this dictionary will be empty.

Valid keys:

  • ‘head’ : array of int

  • ‘valid’ : str

  • ‘filename’ : str

  • ‘volume’ : array of int, shape (3,)

  • ‘voxelsize’ : array of float, shape (3,)

  • ‘xras’ : array of float, shape (3,)

  • ‘yras’ : array of float, shape (3,)

  • ‘zras’ : array of float, shape (3,)

  • ‘cras’ : array of float, shape (3,)

New in version 0.13.0.


If True, a dictionary with surface parameters is returned.

file_format‘auto’ | ‘freesurfer’ | ‘obj’

File format to use. Can be ‘freesurfer’ to read a FreeSurfer surface file, or ‘obj’ to read a Wavefront .obj file (common format for importing in other software), or ‘auto’ to attempt to infer from the file name. Defaults to ‘auto’.

New in version 0.21.0.

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.

rrarray, shape=(n_vertices, 3)

Coordinate points.

trisint array, shape=(n_faces, 3)

Triangulation (each line contains indices for three points which together form a face).


If read_metadata is true, key-value pairs found in the geometry file.


The surface parameters. Only returned if return_dict is True.