I’m creating custom colormaps for a tool I’ve developed. If I create a continuous colormap I can save the scene, close, reload, and the colormap works as expect.
When I create discrete colormaps, it works initially, but when the scene is saved, closed, and reopened the colormap has no data.
I’m creating the discrete colormap by this function:
def CreateCustomColormap():
"""
more on discrete colormap nodes https://slicer.readthedocs.io/en/latest/developer_guide/script_repository.html#create-color-table-node
"""
title = "Test Colormap"
colorNode = slicer.mrmlScene.GetFirstNodeByName("TestColormap")
if colorNode is None:
colorNode = slicer.mrmlScene.CreateNodeByClass("vtkMRMLColorTableNode")
colorNode.SetTypeToUser()
colorNode.HideFromEditorsOff()
slicer.mrmlScene.AddNode(colorNode)
colorNode.UnRegister(None) # to prevent memory leaks
colorNode.SetName(slicer.mrmlScene.GenerateUniqueName("TestColormap"))
colorNode.SetNumberOfColors(3)
colorNode.SetNamesInitialised(True)
scalars_to_colours = [(0, [210, 210, 210]), (1, [255, 255, 25]), (2, [255, 0, 0])]
for (label, colour) in scalars_to_colours:
colorNode.SetColor(label, "", colour[0] / 255, colour[1] / 255, colour[2] / 255)
return colorNode.GetID()
I’ve tried this in the latest preview version of Slicer and in 5.6.1.
When initially created:
After scene save/close/reopen.
Thanks in advance for any pointers!