Skip to content

Kernel appears to have crashed with mne.viz #9333

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
ilonadem opened this issue Apr 22, 2021 · 8 comments
Closed

Kernel appears to have crashed with mne.viz #9333

ilonadem opened this issue Apr 22, 2021 · 8 comments

Comments

@ilonadem
Copy link

MNE version 0.22.1
Python version 3.8.5
Remote jupyter notebook/google colab

Describe the bug

I have been trying to run several of the jupyter tutorials from the mne website in a remote jupyter notebook. Each time I try to run any command that uses mne.viz(), or any other interactive visualization, the kernel restarts and I get the message "the kernel appears to have died"

Steps to Reproduce

For example, I get the "kernel appears to have died" message when I run the following code:

%matplotlib inline

import mne
Brain = mne.viz.get_brain_class()

subjects_dir = mne.datasets.sample.data_path() + '/subjects'
mne.datasets.fetch_hcp_mmp_parcellation(subjects_dir=subjects_dir,
                                        verbose=True)

mne.datasets.fetch_aparc_sub_parcellation(subjects_dir=subjects_dir,
                                          verbose=True)

labels = mne.read_labels_from_annot(
    'fsaverage', 'HCPMMP1', 'lh', subjects_dir=subjects_dir)

brain = Brain('fsaverage', 'lh', 'inflated', subjects_dir=subjects_dir,
              cortex='low_contrast', background='white', size=(800, 600))

In particular, the kernel crashes on the last line, when there is a call to mne.viz.get_brain_class()

Is there a workaround (maybe specific to remote jupyter notebooks) to stop this crash from happening?

Additional information
I have tried running the same code in Google colab as well, which also results in the same problem.
I have also tried running other tutorials, which similarly crash whenever I try to run any of the mne.viz() functions

Platform: Remote jupyter notebook (in CoCalc), have also tried in Google Colab
Python: 3.8.5
Executable: C:\Users\yxie\Anaconda3\python.exe
CPU: Intel(R) Xeon(R) CPU Model 85 Stepping 7
Memory: 32887760 kB

mne: 0.22.1
numpy: 1.19.5 {blas=D:\a\1\s\numpy\build\openblas_info, lapack=D:\a\1\s\numpy\build\openblas_lapack_info}
scipy: 1.5.0
matplotlib: 3.2.2 {backend=module://ipykernel.pylab.backend_inline}

sklearn: 0.0
numba: 0.51.2
nibabel: 3.1.0
nilearn: 0.6.2
dipy: Not found
cupy: Not found
pandas: 1.2.3
mayavi: Not found
pyvista: 0.29.1
vtk: 9.0.1

@welcome
Copy link

welcome bot commented Apr 22, 2021

Hello! 👋 Thanks for opening your first issue here! ❤️ We will try to get back to you soon. 🚴🏽‍♂️

@larsoner
Copy link
Member

@GuillaumeFavelier it would be good if we could catch the no-OpenGL issue earlier, preferably in PyVista

In the meantime @ilonadem you could try our server environment on the remote machine to see if it works better:

https://github.com/mne-tools/mne-python/blob/main/server_environment.yml

Really what I think you need is some sort of suitably new OpenGL installed on the remote platform. MESA software rendering would work. I'm not sure about the best way to get this. The server_environment might already get it for you, not sure.

@GuillaumeFavelier
Copy link
Contributor

I will also suggest that you try:

import mne
mne.viz.set_3d_backend("notebook")
...

To successfully enable the Notebook-specific 3d backend.

@GuillaumeFavelier
Copy link
Contributor

As a side note, Google Colab is not yet supported with this backend, you can follow the progress on this in the following thread:

#8704 (comment).

@ilonadem
Copy link
Author

ilonadem commented Apr 22, 2021

Thank you for the quick response @larsoner @GuillaumeFavelier!

I have tried

import mne
mne.viz.set_3d_backend("notebook")

which produces the same kernel crash, and already have OpenGL installed in the environment.

In the meantime, I'll go ahead and try using your your server environment.

@GuillaumeFavelier
Copy link
Contributor

GuillaumeFavelier commented Apr 23, 2021

EDIT Sorry, wrong thread.

@leosunpsy
Copy link

leosunpsy commented Nov 21, 2022

You can try the following operations:

(1) Make sure mesa is installed on your ubuntu:

sudo apt update && sudo apt upgrade -y
sudo apt install mesa-utils -y
glxinfo | grep "OpenGL version"

Install/Upgrade Mesa Drivers – oibaf/graphics-drivers

sudo add-apt-repository ppa:oibaf/graphics-drivers -y
sudo apt update
sudo apt upgrade -y
glxinfo | grep "OpenGL version"

(2)Check the soft link " libstdc++.so.6" and the target file"libstdc++.so.6.0.30" (My system has libstdc++.so.6.0.30 in that folder, yours may be libstdc++.so.6.0.29 or 28)is the same (name and size) in both paths “/lib/x86_64-linux-gnu” and " /path to your anaconda/anaconda3/lib"

cd /lib/x86_64-linux-gnu
ls -al | grep libstdc++

cd /home/xxx/anaconda3/lib (I installed the anaconda here)
ls -al | grep libstdc++

If the above files are not the same in both paths:
(a)Delete the soft link “libstdc++.so, libstdc++.so.6” and target file “libstdc++.so.6.0.X” in the path “/home/xxx/anaconda3/lib”
(b)copy the target file “libstdc++.so.6.0.X” from “/lib/x86_64-linux-gnu” to " /home/xxx/anaconda3/lib":

sudo cp /lib/x86_64-linux-gnu/libstdc++.so.6.0.X  /home/xxx/anaconda3/lib

Create the soft links "libstdc++.so " and “libstdc++.so.6” for "libstdc++.so.6.0.X ":

 ln -s libstdc++.so.6.0.X libstdc++.so 
 ln -s libstdc++.so.6.0.X libstdc++.so.6

(3) Set up mne

mne.viz.set_3d_backend("pyvistaqt")
mne.viz.set_3d_options(antialias=False) 

False is useful when renderers have problems (such as software MESA renderers).

@larsoner
Copy link
Member

larsoner commented Oct 1, 2023

I think we have improved our error handling and instructions for MESA use nowadays. But let's reopen if things are still unusable for people

@larsoner larsoner closed this as completed Oct 1, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants