I'm consistently seeing distinct boundaries within my lcmv estimates, and
am wondering what might be wrong with my setup. The images below are axial
and coronal slices from the nifti file produced by the lcmv example with
the sample data ( http://martinos.org/mne/auto_examples/inverse/plot_lcmv_beamformer_volume.html).
These boundaries are consistent throughout the timecourse (on Dropbox,
see link below).
I've re-run the volume data tutorial and the lcmv inverse example, but
still see this effect. The slice and timecourse figures that I get from the
example script look identical to the output on the website, so it may be
something specific to the final step. I'm using 0.6 of mne-python
(downloaded this week) with EPD, and a recent nightly build of MNE. Any
ideas on what might be happening?
I can see distinct boundaries as well, so they do not seem to be caused
by your setup. I'm not sure what is causing this and we have to
investigate why the boundaries occur. The beamformer does correctly
localize the activity, have a look at the screenshot below (frame 61 in
the nifit file, corresponding to 100ms).
As noted in the documentation, our LCMV code has not been heavily
tested, so the boundaries might indeed be caused by an error in the code.
Note that the dSPM volume inverse (link below) does not show these
boundaries and also correctly localizes the bilateral activity. If it is
an option for you, you could use this method instead of LCMV.
That fixed it, thanks! The change cleared up the boundaries, and the dSPM
& LCMV solutions are now fairly similar.
I did run into one other thing with read_source_estimate
and save_stc_as_volume. A volume source estimate read with
read_source_estimate is interpreted as a surface by is_surface, and so
can't be saved as a volume. The this seems to happen because vertno is a
1-dimensional array with N elements, rather than a 2-dimensional 1xN array.
My workaround after loading a volume stc has just been to reshape
stc.vertno [e.g., stc.vertno = stc.vertno.reshape(1,len(stc.vertno)) ].
There's probably a better way, but my attempts to change
source_estimate.py have have broken too many other things downstream.
I submitted a pull request to mne-python master that should fix
"read_source_estimate" errantly resulting in an STC file where
"stc.is_surface() == True" when reading a volume source space (i.e., a
"*-vl.stc" file). Once Alex (or someone else) gets a chance to review the
code and merge it into master, it should hopefully fix your issue. We'll
let you know once a solution has been merged.
By the way, you were correct about it being an issue relating to the
mis-interpretation of stc.vertno. Feel free to have a look at the change if
you're curious about the current solution implementation: