pauldmccarthy / fsleyes

This is a mirror. Feel free to use the issue tracker. PRs welcome.
https://git.fmrib.ox.ac.uk/fsl/fsleyes/fsleyes/
Other
22 stars 11 forks source link

Cannot import .trk file #100

Closed mkorycinski closed 1 year ago

mkorycinski commented 2 years ago

Hi,

I would like to use ortho view to overlay T1 with tractograms I have built. However, after I try to load .trk file a pop-up window appears three times stating that:

An error occurred initialising the display for test.trk

Details: 'NoneType' object has not attribute 'compileShaders'

Tracebacks from the command line:

ERROR            status.py  161: reportIfError   - Error initialising display: An error occurred initialising the display for test.trk
   ERROR            status.py  161: reportIfError   - Error initialising display: An error occurred initialising the display for test.trk
 WARNING              idle.py  578: __idleLoop      - Idle task wrapper crashed - AttributeError: 'NoneType' object has no attribute 'compileShaders'
Traceback (most recent call last):
  File "/usr/local/fsl/fslpython/envs/fslpython/lib/python3.8/site-packages/fsleyes_widgets/utils/status.py", line 157, in reportIfError
    yield
  File "/usr/local/fsl/fslpython/envs/fslpython/lib/python3.8/site-packages/fsleyes_widgets/utils/status.py", line 178, in wrapper
    func(*wargs, **wkwargs)
  File "/usr/local/fsl/fslpython/envs/fslpython/lib/python3.8/site-packages/fsleyes/gl/slicecanvas.py", line 622, in create
    globj = glresources.get(self.globjectId(overlay),
  File "/usr/local/fsl/fslpython/envs/fslpython/lib/python3.8/site-packages/fsleyes/gl/resources.py", line 111, in get
    return set(key, createFunc(*args, **kwargs))
  File "/usr/local/fsl/fslpython/envs/fslpython/lib/python3.8/site-packages/fsleyes/gl/globject.py", line 98, in createGLObject
    return ctr(overlay, overlayList, displayCtx, threedee)
  File "/usr/local/fsl/fslpython/envs/fslpython/lib/python3.8/site-packages/fsleyes/gl/gltractogram.py", line 59, in __init__
    self.compileShaders()
  File "/usr/local/fsl/fslpython/envs/fslpython/lib/python3.8/site-packages/fsleyes/gl/gltractogram.py", line 309, in compileShaders
    fslgl.gltractogram_funcs.compileShaders(self)
AttributeError: 'NoneType' object has no attribute 'compileShaders'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
  File "/usr/local/fsl/fslpython/envs/fslpython/lib/python3.8/site-packages/fsleyes_widgets/utils/status.py", line 157, in reportIfError
    yield
  File "/usr/local/fsl/fslpython/envs/fslpython/lib/python3.8/site-packages/fsleyes_widgets/utils/status.py", line 178, in wrapper
    func(*wargs, **wkwargs)
  File "/usr/local/fsl/fslpython/envs/fslpython/lib/python3.8/site-packages/fsleyes/gl/slicecanvas.py", line 622, in create
    globj = glresources.get(self.globjectId(overlay),
  File "/usr/local/fsl/fslpython/envs/fslpython/lib/python3.8/site-packages/fsleyes/gl/resources.py", line 111, in get
    return set(key, createFunc(*args, **kwargs))
  File "/usr/local/fsl/fslpython/envs/fslpython/lib/python3.8/site-packages/fsleyes/gl/globject.py", line 98, in createGLObject
    return ctr(overlay, overlayList, displayCtx, threedee)
  File "/usr/local/fsl/fslpython/envs/fslpython/lib/python3.8/site-packages/fsleyes/gl/gltractogram.py", line 59, in __init__
    self.compileShaders()
  File "/usr/local/fsl/fslpython/envs/fslpython/lib/python3.8/site-packages/fsleyes/gl/gltractogram.py", line 309, in compileShaders
    fslgl.gltractogram_funcs.compileShaders(self)
AttributeError: 'NoneType' object has no attribute 'compileShaders'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
  File "/usr/local/fsl/fslpython/envs/fslpython/lib/python3.8/site-packages/fsl/utils/idle.py", line 576, in __idleLoop
    task.task(*task.args, **task.kwargs)
  File "/usr/local/fsl/fslpython/envs/fslpython/lib/python3.8/site-packages/fsleyes_widgets/utils/status.py", line 178, in wrapper
    func(*wargs, **wkwargs)
  File "/usr/local/fsl/fslpython/envs/fslpython/lib/python3.8/site-packages/fsleyes/gl/slicecanvas.py", line 622, in create
    globj = glresources.get(self.globjectId(overlay),
  File "/usr/local/fsl/fslpython/envs/fslpython/lib/python3.8/site-packages/fsleyes/gl/resources.py", line 111, in get
    return set(key, createFunc(*args, **kwargs))
  File "/usr/local/fsl/fslpython/envs/fslpython/lib/python3.8/site-packages/fsleyes/gl/globject.py", line 98, in createGLObject
    return ctr(overlay, overlayList, displayCtx, threedee)
  File "/usr/local/fsl/fslpython/envs/fslpython/lib/python3.8/site-packages/fsleyes/gl/gltractogram.py", line 59, in __init__
    self.compileShaders()
  File "/usr/local/fsl/fslpython/envs/fslpython/lib/python3.8/site-packages/fsleyes/gl/gltractogram.py", line 309, in compileShaders
    fslgl.gltractogram_funcs.compileShaders(self)
AttributeError: 'NoneType' object has no attribute 'compileShaders'
 WARNING              idle.py  578: __idleLoop      - Idle task wrapper crashed - AttributeError: 'NoneType' object has no attribute 'compileShaders'
Traceback (most recent call last):
  File "/usr/local/fsl/fslpython/envs/fslpython/lib/python3.8/site-packages/fsleyes_widgets/utils/status.py", line 157, in reportIfError
    yield
  File "/usr/local/fsl/fslpython/envs/fslpython/lib/python3.8/site-packages/fsleyes_widgets/utils/status.py", line 178, in wrapper
    func(*wargs, **wkwargs)
  File "/usr/local/fsl/fslpython/envs/fslpython/lib/python3.8/site-packages/fsleyes/gl/slicecanvas.py", line 622, in create
    globj = glresources.get(self.globjectId(overlay),
  File "/usr/local/fsl/fslpython/envs/fslpython/lib/python3.8/site-packages/fsleyes/gl/resources.py", line 111, in get
    return set(key, createFunc(*args, **kwargs))
  File "/usr/local/fsl/fslpython/envs/fslpython/lib/python3.8/site-packages/fsleyes/gl/globject.py", line 98, in createGLObject
    return ctr(overlay, overlayList, displayCtx, threedee)
  File "/usr/local/fsl/fslpython/envs/fslpython/lib/python3.8/site-packages/fsleyes/gl/gltractogram.py", line 59, in __init__
    self.compileShaders()
  File "/usr/local/fsl/fslpython/envs/fslpython/lib/python3.8/site-packages/fsleyes/gl/gltractogram.py", line 309, in compileShaders
    fslgl.gltractogram_funcs.compileShaders(self)
AttributeError: 'NoneType' object has no attribute 'compileShaders'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
  File "/usr/local/fsl/fslpython/envs/fslpython/lib/python3.8/site-packages/fsl/utils/idle.py", line 576, in __idleLoop
    task.task(*task.args, **task.kwargs)
  File "/usr/local/fsl/fslpython/envs/fslpython/lib/python3.8/site-packages/fsleyes_widgets/utils/status.py", line 178, in wrapper
    func(*wargs, **wkwargs)
  File "/usr/local/fsl/fslpython/envs/fslpython/lib/python3.8/site-packages/fsleyes/gl/slicecanvas.py", line 622, in create
    globj = glresources.get(self.globjectId(overlay),
  File "/usr/local/fsl/fslpython/envs/fslpython/lib/python3.8/site-packages/fsleyes/gl/resources.py", line 111, in get
    return set(key, createFunc(*args, **kwargs))
  File "/usr/local/fsl/fslpython/envs/fslpython/lib/python3.8/site-packages/fsleyes/gl/globject.py", line 98, in createGLObject
    return ctr(overlay, overlayList, displayCtx, threedee)
  File "/usr/local/fsl/fslpython/envs/fslpython/lib/python3.8/site-packages/fsleyes/gl/gltractogram.py", line 59, in __init__
    self.compileShaders()
  File "/usr/local/fsl/fslpython/envs/fslpython/lib/python3.8/site-packages/fsleyes/gl/gltractogram.py", line 309, in compileShaders
    fslgl.gltractogram_funcs.compileShaders(self)
AttributeError: 'NoneType' object has no attribute 'compileShaders'
 WARNING              idle.py  578: __idleLoop      - Idle task wrapper crashed - AttributeError: 'NoneType' object has no attribute 'compileShaders'
Traceback (most recent call last):
  File "/usr/local/fsl/fslpython/envs/fslpython/lib/python3.8/site-packages/fsl/utils/idle.py", line 576, in __idleLoop
    task.task(*task.args, **task.kwargs)
  File "/usr/local/fsl/fslpython/envs/fslpython/lib/python3.8/site-packages/fsleyes_widgets/utils/status.py", line 178, in wrapper
    func(*wargs, **wkwargs)
  File "/usr/local/fsl/fslpython/envs/fslpython/lib/python3.8/site-packages/fsleyes/gl/slicecanvas.py", line 622, in create
    globj = glresources.get(self.globjectId(overlay),
  File "/usr/local/fsl/fslpython/envs/fslpython/lib/python3.8/site-packages/fsleyes/gl/resources.py", line 111, in get
    return set(key, createFunc(*args, **kwargs))
  File "/usr/local/fsl/fslpython/envs/fslpython/lib/python3.8/site-packages/fsleyes/gl/globject.py", line 98, in createGLObject
    return ctr(overlay, overlayList, displayCtx, threedee)
  File "/usr/local/fsl/fslpython/envs/fslpython/lib/python3.8/site-packages/fsleyes/gl/gltractogram.py", line 59, in __init__
    self.compileShaders()
  File "/usr/local/fsl/fslpython/envs/fslpython/lib/python3.8/site-packages/fsleyes/gl/gltractogram.py", line 309, in compileShaders
    fslgl.gltractogram_funcs.compileShaders(self)
AttributeError: 'NoneType' object has no attribute 'compileShaders'

My setup: OS: Windows 10 + Ubuntu @ WSL2 FSLEyes: 1.4.5 installed with FSL on WSL2 filesystem Both nii.gz T1 and trk files are located outside the WSL2 filesystem, although T1 loads fine.

Is there a way to overcome this?

pauldmccarthy commented 2 years ago

Hi @mkorycinski, the tractogram visualisation feature requires OpenGL at least 2.1 or newer - my guess is that your system is currently restricted to using OpenGL 1.4 - you can check this in the FSLeyes About dialog, or at the command-line via the glxinfo command.

pauldmccarthy commented 2 years ago

Updating your system to support a newer version of OpenGL is a bit of a black art I'm afraid. You should ensure that you have the latest version of mesa installed (you can install/update indirectly by updating the mesa-utils package on Ubuntu).

On Windows 10/WSL, you may also need to adjust some options in your X server, or use a different X server. What X server are you using at the moment? Mobaxterm or vcxsrv are the best options that I am aware of (although I do not have much Windows experience, nor even access to a Windows machine).

If you have the option of upgrading to Windows 11, it has a built-in Wayland server, so there is no need to install/use a separate X server.

mkorycinski commented 2 years ago

Hi,

Yes, indeed I am using OpenGL 1.4. As far as X server goes, I am using VcXsrv with settings recommended in FSL installation guide.

Thank you for your reply, I will try to update OpenGL to 2.1.