mne.setup_volume_source_space(subject=None, pos=5.0, mri=None, sphere=(0.0, 0.0, 0.0, 90.0), bem=None, surface=None, mindist=5.0, exclude=0.0, subjects_dir=None, volume_label=None, add_interpolator=True, verbose=None)[source]

Set up a volume source space with grid spacing or discrete source space.

subjectstr | None

Subject to process. If None, the path to the MRI volume must be absolute to get a volume source space. If a subject name is provided the T1.mgz file will be found automatically. Defaults to None.

posfloat | dict

Positions to use for sources. If float, a grid will be constructed with the spacing given by pos in mm, generating a volume source space. If dict, pos[‘rr’] and pos[‘nn’] will be used as the source space locations (in meters) and normals, respectively, creating a discrete source space. NOTE: For a discrete source space (pos is a dict), mri must be None.

mristr | None

The filename of an MRI volume (mgh or mgz) to create the interpolation matrix over. Source estimates obtained in the volume source space can then be morphed onto the MRI volume using this interpolator. If pos is a dict, this cannot be None. If subject name is provided, pos is a float or volume_label are not provided then the mri parameter will default to ‘T1.mgz’ else it will stay None.

spherendarray, shape (4,) | ConductorModel

Define spherical source space bounds using origin and radius given by (ox, oy, oz, rad) in mm. Only used if bem and surface are both None. Can also be a spherical ConductorModel, which will use the origin and radius.

bemstr | None | ConductorModel

Define source space bounds using a BEM file (specifically the inner skull surface) or a ConductorModel for a 1-layer of 3-layers BEM.

surfacestr | dict | None

Define source space bounds using a FreeSurfer surface file. Can also be a dictionary with entries ‘rr’ and ‘tris’, such as those returned by mne.read_surface().


Exclude points closer than this distance (mm) to the bounding surface.


Exclude points closer than this distance (mm) from the center of mass of the bounding surface.

subjects_dirstr, or None

Path to SUBJECTS_DIR if it is not set in the environment.

volume_labelstr | list | None

Region of interest corresponding with freesurfer lookup table.


If True and mri is not None, then an interpolation matrix will be produced.

verbosebool, str, int, or None

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


A SourceSpaces object containing one source space for each entry of volume_labels, or a single source space if volume_labels was not specified.


Volume source spaces are related to an MRI image such as T1 and allow to visualize source estimates overlaid on MRIs and to morph estimates to a template brain for group analysis. Discrete source spaces don’t allow this. If you provide a subject name the T1 MRI will be used by default.

When you work with a source space formed from a grid you need to specify the domain in which the grid will be defined. There are three ways of specifying this: (i) sphere, (ii) bem model, and (iii) surface. The default behavior is to use sphere model (sphere=(0.0, 0.0, 0.0, 90.0)) if bem or surface is not None then sphere is ignored. If you’re going to use a BEM conductor model for forward model it is recommended to pass it here.

To create a discrete source space, pos must be a dict, ‘mri’ must be None, and ‘volume_label’ must be None. To create a whole brain volume source space, pos must be a float and ‘mri’ must be provided. To create a volume source space from label, ‘pos’ must be a float, ‘volume_label’ must be provided, and ‘mri’ must refer to a .mgh or .mgz file with values corresponding to the freesurfer lookup-table (typically aseg.mgz).