Source code for simphony_mayavi.adapt2cuds
from simphony_mayavi.cuds.api import VTKMesh, VTKLattice, VTKParticles
[docs]def adapt2cuds(data_set, name='CUDS container', kind=None, rename_arrays=None):
""" Adapt a TVTK dataset to a CUDS container.
Parameters
----------
data_set : tvtk.Dataset
The dataset to import and wrap into CUDS container.
name : string
The name of the CUDS container. Default is 'CUDS container'.
kind : {'mesh', 'lattice', 'particles'}
The kind of the container to return. Default is None, where
the function will use some heuristics to infer the most
appropriate type of CUDS container to return
rename_array : dict
Dictionary mapping the array names used in the dataset object
to their related CUBA keywords that will be used in the returned
CUDS container.
.. note::
When set a shallow copy of the input data_set is created and
used by the related vtk -> cuds wrapper.
Raises
------
ValueError:
When ``kind`` is not a valid CUDS container type.
TypeError:
When it is not possible to wrap the provided data_set.
"""
if rename_arrays is not None and len(rename_arrays) != 0:
renamed = data_set.new_instance()
renamed.shallow_copy(data_set)
for name in rename_arrays:
if renamed.point_data.has_array(name):
array = renamed.point_data.get_array(name)
array.name = rename_arrays[name].name
if renamed.cell_data.has_array(name):
array = renamed.cell_data.get_array(name)
array.name = rename_arrays[name].name
data_set = renamed
if kind == 'mesh':
container = VTKMesh.from_dataset(name, data_set=data_set)
elif kind == 'lattice':
container = VTKLattice.from_dataset(name, data_set=data_set)
elif kind == 'particles':
container = VTKParticles.from_dataset(name, data_set=data_set)
elif kind is None:
for constructor in [
VTKParticles.from_dataset,
VTKMesh.from_dataset,
VTKLattice.from_dataset]:
try:
container = constructor(name, data_set=data_set)
except TypeError:
continue
else:
break
else:
message = "Cannot guess appropriate CUDS container for: {!s}"
raise TypeError(message.format(data_set))
else:
message = "Unknown type of CUDS container: {}"
raise ValueError(message.format(kind))
return container