Hi All,
I am trying to run the following example (K3D-jupyter/volume_renderer.ipynb at 3fef1ea419a84a51c8aed56cb285b9fcf0a18c9a · K3D-tools/K3D-jupyter · GitHub) in jupyter notebook.
import k3d
import math
import numpy as np
import nibabel as nib
from k3d.helpers import download
import ipywidgets as widgets
import vtk
from vtkmodules.util import numpy_support
basic_color_maps = [(attr, getattr(k3d.basic_color_maps, attr)) for attr in dir(k3d.basic_color_maps) if
not attr.startswith('__')]
paraview_color_maps = [(attr, getattr(k3d.paraview_color_maps, attr)) for attr in dir(k3d.paraview_color_maps) if
not attr.startswith('__')]
matplotlib_color_maps = [(attr, getattr(k3d.matplotlib_color_maps, attr)) for attr in dir(k3d.matplotlib_color_maps)
if not attr.startswith('__')]
colormaps = basic_color_maps + paraview_color_maps + matplotlib_color_maps
filename = download('https://vedo.embl.es/examples/data/embryo.slc')
reader = vtk.vtkSLCReader()
reader.SetFileName(filename)
reader.Update()
vti = reader.GetOutput()
bounds = vti.GetBounds()
x, y, z = vti.GetDimensions()
img = numpy_support.vtk_to_numpy(vti.GetPointData().GetArray(0)).reshape(-1, y, x)
tf_editor = k3d.transfer_function_editor()
volume = k3d.volume(img.astype(np.float16))
@widgets.interact(x=widgets.Dropdown(options=colormaps, description='ColorMap:'))
def g(x):
tf_editor.color_map = np.array(x, dtype=np.float32)
plot = k3d.plot()
plot += volume
tf_editor.display()
plot.display()
a = widgets.jslink((tf_editor, 'color_map'), (volume, 'color_map'))
a = widgets.jslink((tf_editor, 'opacity_function'), (volume, 'opacity_function'))
and I get the following error
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
Input In [1], in <cell line: 25>()
23 bounds = vti.GetBounds()
24 x, y, z = vti.GetDimensions()
---> 25 img = numpy_support.vtk_to_numpy(vti.GetPointData().GetArray(0)).reshape(-1, y, x)
27 tf_editor = k3d.transfer_function_editor()
28 volume = k3d.volume(img.astype(np.float16))
File ~\anaconda3\envs\differential_networks\lib\site-packages\vtkmodules\util\numpy_support.py:215, in vtk_to_numpy(vtk_array)
200 def vtk_to_numpy(vtk_array):
201 """Converts a VTK data array to a numpy array.
202
203 Given a subclass of vtkDataArray, this function returns an
(...)
213
214 """
--> 215 typ = vtk_array.GetDataType()
216 assert typ in get_vtk_to_numpy_typemap().keys(), \
217 "Unsupported array type %s"%typ
218 assert typ != vtkConstants.VTK_BIT, 'Bit arrays are not supported.'
AttributeError: 'NoneType' object has no attribute 'GetDataType'
I am not sure how to fix this error. Suggestions will be really helpful.