trimesh.voxel.encoding#

OO interfaces to encodings for ND arrays which caching.

class trimesh.voxel.encoding.BinaryRunLengthEncoding(data)#

Bases: RunLengthEncoding

1D binary run length encoding.

See trimesh.voxel.runlength documentation for implementation details.

__init__(data)#
Parameters:

data (binary run length encoded data.) –

binary_run_length_data(dtype=<class 'numpy.int64'>)#
copy()#
property dense#
static from_brle(brle_data, dtype=None)#
static from_dense(dense_data, encoding_dtype=<class 'numpy.int64'>)#
static from_rle(rle_data, dtype=None)#
gather(indices)#
gather_nd(indices)#
property is_empty#
mask(mask)#
run_length_data(dtype=<class 'numpy.int64'>)#
property size#
sorted_gather(ordered_indices)#
property sparse_components#
property sparse_indices#
property sparse_values#
property stripped#

Get encoding with all zeros stripped from the start and end of each axis.

Returns:

  • encoding (?)

  • padding ((n, 2) int) – Padding at the start and end that was stripped

property sum#
class trimesh.voxel.encoding.DenseEncoding(data)#

Bases: Encoding

Simple Encoding implementation based on a numpy ndarray.

__init__(data)#
copy()#
property dense#
property dtype#
property flat#
gather(indices)#
gather_nd(indices)#
get_value(index)#
property is_empty#
mask(mask)#
reshape(shape)#
property shape#
property size#
property sparse_components#
property sparse_indices#
property sparse_values#
property sum#
class trimesh.voxel.encoding.Encoding(data)#

Bases: ABC

Base class for objects that implement a specific subset of of ndarray ops.

This presents a unified interface for various different ways of encoding conceptually dense arrays and to interoperate between them.

Example implementations are ND sparse arrays, run length encoded arrays and dense encodings (wrappers around np.ndarrays).

__init__(data)#
binary_run_length_data(dtype=<class 'numpy.int64'>)#
abstract copy()#
property data#
abstract property dense#
abstract property dtype#
property flat#
flip(axis=0)#
abstract gather_nd(indices)#
abstract get_value(index)#
property is_empty#
abstract mask(mask)#
property mutable#
property ndims#
reshape(shape)#
run_length_data(dtype=<class 'numpy.int64'>)#
abstract property shape#
abstract property size#
property sparse_components#
abstract property sparse_indices#
abstract property sparse_values#
property stripped#

Get encoding with all zeros stripped from the start and end of each axis.

Returns:

  • encoding (?)

  • padding ((n, 2) int) – Padding at the start and end that was stripped

abstract property sum#
transpose(perm)#
class trimesh.voxel.encoding.FlattenedEncoding(data)#

Bases: LazyIndexMap

Lazily flattened encoding.

Dense equivalent is np.reshape(data, (-1,)) (np.flatten creates a copy).

copy()#
property dense#
property flat#
mask(mask)#
property shape#
class trimesh.voxel.encoding.FlippedEncoding(encoding, axes)#

Bases: LazyIndexMap

Encoding with entries flipped along one or more axes.

Dense equivalent is np.flip

__init__(encoding, axes)#
copy()#
property dense#
flip(axis=0)#
mask(mask)#
property shape#
class trimesh.voxel.encoding.LazyIndexMap(data)#

Bases: Encoding

Abstract class for implementing lazy index mapping operations.

Implementations include transpose, flatten/reshaping and flipping

Derived classes must implement:
  • _to_base_indices(indices)

  • _from_base_indices(base_indices)

  • shape

  • dense

  • mask(mask)

property dtype#
gather_nd(indices)#
get_value(index)#
property is_empty#
property size#
property sparse_indices#
property sparse_values#
property sum#
class trimesh.voxel.encoding.RunLengthEncoding(data, dtype=None)#

Bases: Encoding

1D run length encoding.

See trimesh.voxel.runlength documentation for implementation details.

__init__(data, dtype=None)#
Parameters:
  • data (run length encoded data.) –

  • dtype (dtype of encoded data. Each second value of data is cast will be) – cast to this dtype if provided.

binary_run_length_data(dtype=<class 'numpy.int64'>)#
copy()#
property dense#
property dtype#
static from_brle(brle_data, dtype=None)#
static from_dense(dense_data, dtype=<class 'numpy.int64'>, encoding_dtype=<class 'numpy.int64'>)#
static from_rle(rle_data, dtype=None)#
gather(indices)#
gather_nd(indices)#
get_value(index)#
property is_empty#
mask(mask)#
property ndims#
run_length_data(dtype=<class 'numpy.int64'>)#
property shape#
property size#
sorted_gather(ordered_indices)#
property sparse_components#
property sparse_indices#
property sparse_values#
property stripped#

Get encoding with all zeros stripped from the start and end of each axis.

Returns:

  • encoding (?)

  • padding ((n, 2) int) – Padding at the start and end that was stripped

property sum#
class trimesh.voxel.encoding.ShapedEncoding(encoding, shape)#

Bases: LazyIndexMap

Lazily reshaped encoding.

Numpy equivalent is np.reshape

__init__(encoding, shape)#
copy()#
property dense#
property flat#
mask(mask)#
property shape#
trimesh.voxel.encoding.SparseBinaryEncoding(indices, shape=None)#

Convenient factory constructor for SparseEncodings with values all ones.

Parameters:
  • indices ((m, n) sparse indices into conceptual rank-n array) –

  • shape (length n iterable or None. If None, maximum of indices along first) – axis + 1 is used

Return type:

rank n bool SparseEncoding with True values at each index.

class trimesh.voxel.encoding.SparseEncoding(indices, values, shape=None)#

Bases: Encoding

Encoding implementation based on an ND sparse implementation.

Since the scipy.sparse implementations are for 2D arrays only, this implementation uses a single-column CSC matrix with index raveling/unraveling.

__init__(indices, values, shape=None)#
Parameters:
  • indices ((m, n)-sized int array of indices) –

  • values ((m, n)-sized dtype array of values at the specified indices) –

  • shape ((n,) iterable of integers. If None, the maximum value of indices) –

    • 1 is used.

copy()#
property dense#
property dtype#
static from_dense(dense_data)#
gather_nd(indices)#
get_value(index)#
mask(mask)#
property ndims#
property shape#
property size#
property sparse_components#
property sparse_indices#
property sparse_values#
property stripped#

Get encoding with all zeros stripped from the start/end of each axis.

Returns:

SparseEncoding with same values but indices shifted down

by padding[:, 0]

padding: (n, 2) array of ints denoting padding at the start/end

that was stripped

Return type:

encoding

property sum#
class trimesh.voxel.encoding.TransposedEncoding(base_encoding, perm)#

Bases: LazyIndexMap

Lazily transposed encoding

Dense equivalent is np.transpose

__init__(base_encoding, perm)#
copy()#
property data#
property dense#
gather(indices)#
get_value(index)#
mask(mask)#
property perm#
property shape#
transpose(perm)#