gallantlab / pycortex

Pycortex is a python-based toolkit for surface visualization of fMRI data
https://gallantlab.github.io/pycortex
BSD 2-Clause "Simplified" License
581 stars 137 forks source link

Inconsistent handling of nans by WebGL viewer for Vertex vs. VertexRGB objects #455

Open mvdoc opened 2 years ago

mvdoc commented 2 years ago

We known that NaNs are not handled well by the WebGL viewer for Vertex objects. However, it seems that the viewer can handle NaNs perfectly fine for RGBVertex objects. We should investigate this difference and possibly figure out a fix for the Vertex objects.

Example:

import cortex
import numpy as np

vtx = cortex.Vertex.random("fsaverage")
# get an roi to mask out 
roi = cortex.get_roi_verts("fsaverage", roi="IPS0")["IPS0"]
vtx.data[roi] = np.nan

cortex.webgl.show({"vertex": vtx, "rgbvertex": vtx.raw})

produces image image

mvdoc commented 2 years ago

Adding a note to myself that

EDIT: there seems to be an interaction with the dtype (obv. nans cannot be cast to uint8). Still investigating...

mvdoc commented 2 years ago

458 should fix the problem with VertexRGB objects. However, that PR doesn't fix the problem with Vertex objects. I explored the code for a while, and I think the problem might be in how the JS functions load the data and treat nans. But I'm still unsure about how the JS code works, so we'll have to keep this issue open...