e3fp.fingerprint.array_ops module¶
Various array operations.
Author: Seth Axen E-mail: seth.axen@gmail.com
- as_unit(v, axis=1)[source]¶
Return array of unit vectors parallel to vectors in v.
- Parameters
v (ndarray of float)
axis (int, optional) – Axis along which to normalize length.
- Returns
ndarray of float – magnitude along axis.
- Return type
Unit vector of v, i.e. v divided by its
- calculate_angles(vec_arr, ref, ref_norm=None)[source]¶
Calculate angles between vectors in vec_arr and ref vector.
If ref_norm is not provided, angle ranges between 0 and pi. If it is provided, angle ranges between 0 and 2pi. Note that if ref_norm is orthogonal to vec_arr and ref, then the angle is rotation around the axis, but if a non-orthogonal axis is provided, this may not be the case.
- Parameters
vec_arr (Nx3 array of float) – Array of N 3D vectors.
ref (1x3 array of float) – Reference vector
ref_norm (1x3 array of float) – Normal vector.
- Returns
Array of N angles
- Return type
1-D array
- make_distance_matrix(coords)[source]¶
Build pairwise distance matrix from coordinates.
- Parameters
coords (ndarray of float) – an Mx3 array of cartesian coordinates.
- Returns
ndarray of float
- Return type
square symmetrical distance matrix
- make_rotation_matrix(v0, v1)[source]¶
Create 3x3 matrix of rotation from v0 onto v1.
Should be used by dot(R, v0.T).T.
- Parameters
v0 (1x3 array of float) – Initial vector before alignment.
v1 (1x3 array of float) – Vector to which to align v0.
- make_transform_matrix(center, y=None, z=None)[source]¶
Make 4x4 homogenous transformation matrix.
Given Nx4 array A where A[:, 4] = 1., the transform matrix M should be used with dot(M, A.T).T. Order of operations is 1. translation, 2. align y x z plane to yz-plane 3. align y to y-axis.
- Parameters
center (1x3 array of float) – Coordinate that should be centered after transformation.
y (None or 1x3 array of float) – Vector that should lie on the y-axis after transformation
z (None or 1x3 array of float) – Vector that after transformation should lie on yz-plane in direction of z-axis.
- Returns
4x4 homogenous transformation matrix.
- Return type
4x4 array of float
- pad_array(a, n=1.0, axis=1)[source]¶
Return a with row of n appended to axis.
- Parameters
a (ndarray) – Array to pad
n (float or int, optional) – Value to pad a with
axis (int, optional) – Axis of a to pad with n.
- Returns
Padded array.
- Return type
ndarray
- project_to_plane(vec_arr, norm)[source]¶
Project array of vectors to plane with normal norm.
- Parameters
vec_arr (Nx3 array) – Array of N 3D vectors.
norm (1x3 array) – Normal vector to plane.
- Returns
Array of vectors projected onto plane.
- Return type
Nx3 array
- quaternion_to_transform_matrix(quaternion, translation=array([0., 0., 0.]))[source]¶
Convert quaternion to homogenous 4x4 transform matrix.
- Parameters
quaternion (4x1 array of float) – Quaternion describing rotation after translation.
translation (3x1 array of float, optional) – Translation to be performed before rotation.
- rotate_angles(angles, amount)[source]¶
Rotate angles by amount, keeping in 0 to 2pi range.
- Parameters
angles (1-D array of float) – Angles in radians
amount (float) – Amount to rotate angles by
- Returns
1-D array of float
- Return type
Rotated angles
- transform_array(transform_matrix, a)[source]¶
Pad an array with 1s, transform, and return with original dimensions.
- Parameters
transform_matrix (4x4 array of float) – 4x4 homogenous transformation matrix
a (Nx3 array of float) – Array of 3-D coordinates.
- Returns
Nx3 array of float
- Return type
Transformed array