I have a bunch of dipoles that were fitted in the brains of several subjects.
Now I want to visualize the locations of all these dipoles in a shared brain.
Is there a way to morph the positions of the dipoles from the individual
subjects to a template brain, for example fsaverage?
I see that there is a head_to_mni function that will convert the position to MNI
space. That is close, but does not match fsaverage space. Or is there a way to
visualize the MNI brain in a 3d sort of way (not MRI image slices)?
fsaverage is in MNI space, so you should be able to use that affine if you
want. If they don't land in the right place it suggests some problem with
how you're applying the transformation or a problem return the
transformation itself, which you could manually adjust using tkregister
(then probably rerun the subsequent recon steps) or something similar.
If you want to go beyond affine, you could use the SDR volumetric
transformation code in compute_source_morph. You could try using a full 1mm
MRI resolution, but this might run into memory problems. You could code it
yourself if you want to try it from reading the MNE code, but you have to
be careful about the coordinate frames.
We could extend compute_source_morph to work with discrete source spaces
using this full-resolution MRI intermediate approach. Then you could set up
each subjects one dipole (or as many ECDs add you have) as a discrete
source space with one element, and morph it/them.
if I morph the dipoles to MNI space (mne.head_to_mni(dip.pos)) and throw them on
top of an fsaverage brain with brain.add_foci(morphed_dip_pos), I don't get
reasonable results, points are floating way outside of the brain. They are sort
of aligned on the brain, so origin point may be reasonable, but the scaling I
wouldn't exactly call close enough.
Making compute_source_morph work for discrete source spaces would be a great
solution. But that sounds hard
Have you tried to pick the closest subject surface to your dipole location
and use the morph_surface to get the alignment? Not know how the morph
works, ny hack would something like this:
If you can replicate the mni problem with sample or privately share the MRI
with me I'm happy to look into the MNI problem.
Also please open an issue about morphing discrete source spaces. We should
have a way to do it, and I actually don't think it will require many
changes.