visualizing "activation" regions with MNE

Dear colleagues,
I have a question of visualizing interesting regions. I identified a
group of vertices of which the time course of mne pass certain
criterion, saved these vertices to a label file, and viewed them with
mne_analyze. But probably because the vertices that have mne estimation
are only a subset of all the vertices on the cortex, they appear as
isolated dots within a constrained area. So my question is: is there any
way that I can find all the vertices that are within the region this
group of "activated" vertices span? In this way, instead of showing many
isolated dots, I can show a small region on the inflated brain just as
what we usually see when we load a label file from freesurfer
parcellation.

Mingbo Cai

Department of Neuroscience

Baylor College of Medicine

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.nmr.mgh.harvard.edu/pipermail/mne_analysis/attachments/20120130/cf6cb500/attachment.html

Hi Mingbo,

This will depend on how the ROIs look from the criteria. You could try
to go through and generate a label using the vertex numbers you have
produced and tksurfer. i.e. select each of the vertices one by one and
use the draw line features to generate a closed ROI. This will likely
end up including more vertices than the ones, which have "passed the
criteria". It may also be influenced by the size of the source space
you use.

D

Thanks Dan!
I tried tksurfer but it is less intuitive for me to draw ROI there by hand. Does anyone know if there is information of neighborhood between vertices so that we can include neighbor vertices of each activated vertices in order to obtain a continuous "activation" patch?

Mingbo

Hi,

Well, given what you want to do you can simply type in the vertex
numbers and draw it like that (i.e. not by hand in theory, but in
practice it would involve some work by hand). Theoretically, you can
even write a tcl script to create them. There is information, in the
MNE files about the downsampling, if you used the --cps option (lookup
"--cps" in the manual and "nearest" in the matlab toolbox chapter),
however, adding those vertices will only change the way your ROIs
appear not what they are i.e. the data will still come from the
individual points you have at the moment (as those vertices are the
ones, which have been removed by downsampling). Drawing by hand either
with mne_analyze or tksurfer is really the only way I know of to
generate these (without writing complex code from scratch). I would
also point out that it is possible that depending on your criteria,
you could put yourself in some tricky statistical situations due to
issues of double dipping or selecting strange data points i.e. the
distributions could be bizarre etc.

HTH
D

Mingbo Cai wrote:

Thanks Dan!
I tried tksurfer but it is less intuitive for me to draw ROI there by hand. Does anyone know if there is information of neighborhood between vertices so that we can include neighbor vertices of each activated vertices in order to obtain a continuous "activation" patch?

Mingbo

For visualization purposes, you could try to use PySurfer
(http://pysurfer.github.com). In the latest version on github, there is
an example "plot_meg_inverse_solution.py", which shows how to show MEG
activations on the surface. Internally, the function
utils/smoothing_matrix is used to create a matrix which interpolates the
data from a down sampled mesh to the high resolution freesurfer mesh.

For your application, you could create an all-zero array with the same
number of elements as your low-res mesh. Set the elements corresponding
to the label to some non-zero value and then use the interpolation
matrix to create a high resolution version of your label. The obtained
array can then be visualized using the add_data function of the Brain
object.

I hope this helps,

Martin

Martin Luessi wrote:

Mingbo Cai wrote:

Thanks Dan!
I tried tksurfer but it is less intuitive for me to draw ROI there by hand. Does anyone know if there is information of neighborhood between vertices so that we can include neighbor vertices of each activated vertices in order to obtain a continuous "activation" patch?

Mingbo

For visualization purposes, you could try to use PySurfer
(http://pysurfer.github.com). In the latest version on github, there is
an example "plot_meg_inverse_solution.py", which shows how to show MEG
activations on the surface. Internally, the function
utils/smoothing_matrix is used to create a matrix which interpolates the
data from a down sampled mesh to the high resolution freesurfer mesh.

For your application, you could create an all-zero array with the same
number of elements as your low-res mesh. Set the elements corresponding
to the label to some non-zero value and then use the interpolation
matrix to create a high resolution version of your label. The obtained
array can then be visualized using the add_data function of the Brain
object.

Actually, it is even simpler than that. You can use Brain.add_data()
directly with data defined on the low-resolution mesh and PySurfer will
create the interpolation matrix automatically (you will need to specify
the vertices on which your data is defined).