pycortex icon indicating copy to clipboard operation
pycortex copied to clipboard

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

Open mvdoc opened this issue 2 years ago • 2 comments

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 avatar Jul 11 '22 17:07 mvdoc

Adding a note to myself that

  • NaNs in Vertex objects are displayed as transparent on quickflat, but not on webgl
  • NaNs in VertexRGB objects are not displayed as transparent on quickflat, but they are on webgl

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

mvdoc avatar Jul 12 '22 22:07 mvdoc

#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...

mvdoc avatar Jul 13 '22 00:07 mvdoc