It turns out (I think!) you can take just about any subcortical ROI and turn it into a surface using a few FreeSurfer commands:
mri_tessellate aseg.mgz 17 lh.hippocampus.orig
mri_tessellate aseg.mgz 53 rh.hippocampus.orig
mris_extract_main_component lh.hippocampus.orig lh.hippocampus.orig
mris_extract_main_component rh.hippocampus.orig rh.hippocampus.orig
mris_smooth -nw lh.hippocampus.orig lh.hippocampus.smooth
mris_smooth -nw rh.hippocampus.orig rh.hippocampus.smooth
The .smooth surfaces look reasonable for the MNE sample subject:

And they can be inflated to a sphere (so that they can be subdivided via ico/oct) with:
mris_inflate -no-save-sulc lh.hippocampus.smooth lh.hippocampus.inflated
mris_inflate -no-save-sulc rh.hippocampus.smooth rh.hippocampus.inflated
mris_sphere -q lh.hippocampus.inflated lh.hippocampus.qsphere
mris_sphere -q rh.hippocampus.inflated rh.hippocampus.qsphere
Here is a starting API proposal:
setup_source_space(..., surf='...') allow surf to be a list/tuple of names in aseg.mgz, not just surf/ files. The default would stay 'white', which is an alias for (as would be pial and other cortical surfaces) ('lh.white', 'rh.white') to create a cortical surface source space.
- Currently we use
FIFF.FIFFV_MNE_SURF_LEFT_HEMI = 101 for left, 102 for right; maybe we should use 1000+aseg_value for any non-cortical surface, and left/right hemi would keep their "special" / exceptional values of 101 and 102 (their numbers in aseg.mgz appear to be 2 or 3 and 41 or 42)
- The
.kind for a SourceSpaces with just these surfaces would be not 'surf' (keep this for cortical surf source spaces only) but instead 'subcortical_surf' or something. And combinations of cortical surf + subcortical surf would be, as usual, 'mixed'.
- Figure out morphing somehow. In theory we might be able to do this procedure for
fsaverage and use FreeSurfer commands to align the surfaces (make .sphere instead of just .qsphere surfaces). Now that make_morph_maps is not horribly slow anymore, creating the morph maps on the fly might be acceptable since these surfaces in general will have way fewer vertices.
- Improve plotting to support multiple surfaces.
It turns out (I think!) you can take just about any subcortical ROI and turn it into a surface using a few FreeSurfer commands:
The
.smoothsurfaces look reasonable for the MNEsamplesubject:And they can be inflated to a sphere (so that they can be subdivided via ico/oct) with:
Here is a starting API proposal:
setup_source_space(..., surf='...')allowsurfto be a list/tuple of names in aseg.mgz, not justsurf/files. The default would stay'white', which is an alias for (as would bepialand other cortical surfaces)('lh.white', 'rh.white')to create a cortical surface source space.FIFF.FIFFV_MNE_SURF_LEFT_HEMI = 101for left, 102 for right; maybe we should use1000+aseg_valuefor any non-cortical surface, and left/right hemi would keep their "special" / exceptional values of 101 and 102 (their numbers inaseg.mgzappear to be 2 or 3 and 41 or 42).kindfor aSourceSpaceswith just these surfaces would be not'surf'(keep this for cortical surf source spaces only) but instead'subcortical_surf'or something. And combinations of cortical surf + subcortical surf would be, as usual,'mixed'.fsaverageand use FreeSurfer commands to align the surfaces (make.sphereinstead of just.qspheresurfaces). Now thatmake_morph_mapsis not horribly slow anymore, creating the morph maps on the fly might be acceptable since these surfaces in general will have way fewer vertices.