Don't show the figure from stc.plot()

  • MNE-Python version: 0.23.0
  • operating system: win10
    I want to visualize the response of certain brain areas to stimuli, so I used the stc.plot() method to plot the brain image.
    But I have 14subject400trails3bands*8timewindows=134,400 images in my experiment. If I display them one by one and use brain.save_image(), it will take a few days (even if the GPU is used).
    So I want to know, is there any way to save the image without displaying the image?
    thank you very much!

If you ask MNE-Python to use the mayavi 3D engine instead of pyvista, then there is an option mayavi.mlab.options.offscreen = True that you can set in your script. Note that 3D brain plots with mayavi do not have the same options as pyvista (i.e., things like show_traces won’t work). But maybe that is good enough?

If using mayavi isn’t an option, then if you can find a Linux computer you can plot offscreen using pyvista by using xvfb (the x virtual frame buffer) which creates a fake hidden “screen” where figures are “drawn” and then can be saved to file, without ever actually being displayed. (Windows doesn’t use the X windowing system, so xvfb doesn’t work at all on Windows).

In theory it would be possible (I think?) for us to instantiate the pyvista.BackgroundPlotter with the option (show=False) if users wanted that… @GuillaumeFavelier would know best whether exposing this option would be easy or possible.


I used the mayavi backend to draw the image but the following error is displayed. Do you know why?
I tried to look at the source code, but I didn’t find the reason.

It may be the reason of the parameter views=‘axial’. I can draw the image by deleting this, but the image is not what I want. I will carefully study how to restore the view angle of the image to normal.

see https://pysurfer.github.io/auto_examples/show_views.html for allowed view names.

Alex

specifically, they are

  • lateral
  • medial
  • rostral
  • caudal
  • dorsal
  • ventral
  • frontal
  • parietal