Features

Any

class prescyent.dataset.features.feature.any.Any(ids: List | range, distance_unit='_', name='Any')

Bases: Feature

Default feature without specific constraints and conversions

get_distance(tensor_a: Tensor, tensor_b: Tensor) Tensor

euclidian distance

Args:

tensor_a (torch.Tensor): tensor to compare tensor_b (torch.Tensor): tensor to compare

Returns:

torch.Tensor: distance between the two tensors

Coordinate

Feature used to represent coordinates from 1D to 3D

Coordinate

class prescyent.dataset.features.feature.coordinate.Coordinate(ids: List | range, distance_unit: str = 'm', name: str = 'Coordinate')

Bases: Feature

parent class for coordinates, used for conversion and distance

get_distance(tensor_a: Tensor, tensor_b: Tensor) Tensor

computes eclidian distance

Args:

tensor_a (torch.Tensor): tensor to compare tensor_b (torch.Tensor): tensor to compare

Returns:

torch.Tensor: distance between the two tensors

CoordinateX

class prescyent.dataset.features.feature.coordinate.CoordinateX(ids: List | range, distance_unit: str = 'm', name: str = 'Coordinate')

Bases: Coordinate

1D coordinates

CoordinateXY

class prescyent.dataset.features.feature.coordinate.CoordinateXY(ids: List | range, distance_unit: str = 'm', name: str = 'Coordinate')

Bases: Coordinate

2D coordinates

CoordinateXYZ

class prescyent.dataset.features.feature.coordinate.CoordinateXYZ(ids: List | range, distance_unit: str = 'm', name: str = 'Coordinate')

Bases: Coordinate

3D coordinates


Rotation

Feature for rotations

Rotation

class prescyent.dataset.features.feature.rotation.Rotation(ids: List | range, distance_unit: str = 'rad', name: str = 'Rotation')

Bases: Feature

base class used for conversion

abstract get_distance(tensor_a: Tensor, tensor_b: Tensor)

RotationEuler

class prescyent.dataset.features.feature.rotation.RotationEuler(ids: List | range, distance_unit: str = 'rad', name: str = 'Rotation')

Bases: Rotation

euler roll pitch yaw representation

RotationQuat

class prescyent.dataset.features.feature.rotation.RotationQuat(ids: List | range, distance_unit: str = 'rad', name: str = 'Rotation')

Bases: Rotation

quaternion x, y, z, w representation

get_distance(tensor_a: Tensor, tensor_b: Tensor) Tensor

computes angular distance in radian

Args:

tensor_a (torch.Tensor): tensor to compare tensor_b (torch.Tensor): tensor to compare

Returns:

torch.Tensor: distance between the two tensors

post_process(quaternion_t: Tensor) Tensor

normalise a quaternion as postprocessing

Args:

quaternion_t (torch.Tensor): quaternion to normalize

Returns:

torch.Tensor: normalized quaternion

RotationRotMat

class prescyent.dataset.features.feature.rotation.RotationRotMat(ids: List | range, distance_unit: str = 'rad', name: str = 'Rotation')

Bases: Rotation

rotation matrix

get_distance(tensor_a: Tensor, tensor_b: Tensor) Tensor

computes angular distance in radian

Args:

tensor_a (torch.Tensor): tensor to compare tensor_b (torch.Tensor): tensor to compare

Returns:

torch.Tensor: distance between the two tensors

post_process(rotmat_t: Tensor) Tensor

Use SVD to postprocess rotation matrices

Args:

rotmat_t (torch.Tensor): matrix tensor with shape like […, 9]

Returns:

torch.Tensor: postprocessed rotation matrix tensor with shape like […, 9].

RotationRep6D

class prescyent.dataset.features.feature.rotation.RotationRep6D(ids: List | range, distance_unit: str = 'rad', name: str = 'Rotation')

Bases: Rotation

Continuous minimal representation from the rotmatrix, from: Zhou, Y., Barnes, C., Lu, J., Yang, J., & Li, H. (2020). On the continuity of rotation representations in neural networks. arXiv preprint arXiv:1812.07035.