pymatgen.core.operations module

class SymmOp(affine_transformation_matrix, tol=0.01)[source]

Bases: monty.json.MSONable

A symmetry operation in cartesian space. Consists of a rotation plus a translation. Implementation is as an affine transformation matrix of rank 4 for efficiency. Read: http://en.wikipedia.org/wiki/Affine_transformation.

affine_matrix

A 4x4 numpy.array representing the symmetry operation.

Initializes the SymmOp from a 4x4 affine transformation matrix. In general, this constructor should not be used unless you are transferring rotations. Use the static constructors instead to generate a SymmOp from proper rotations and translation.

Parameters:
  • affine_transformation_matrix (4x4 array) – Representing an affine transformation.
  • tol (float) – Tolerance for determining if matrices are equal.
apply_rotation_only(vector)[source]

Vectors should only be operated by the rotation matrix and not the translation vector.

Parameters:vector (3x1 array) – A vector.

Checks if two points are symmetrically related.

Parameters:
  • point_a (3x1 array) – First point.
  • point_b (3x1 array) – Second point.
  • tol (float) – Absolute tolerance for checking distance.
Returns:

True if self.operate(point_a) == point_b or vice versa.

as_dict()[source]
as_xyz_string()[source]

Returns a string of the form ‘x, y, z’, ‘-x, -y, z’, ‘-y+1/2, x+1/2, z+1/2’, etc. Only works for integer rotation matrices

static from_axis_angle_and_translation(axis, angle, angle_in_radians=False, translation_vec=(0, 0, 0))[source]

Generates a SymmOp for a rotation about a given axis plus translation.

Parameters:
  • axis – The axis of rotation in cartesian space. For example, [1, 0, 0]indicates rotation about x-axis.
  • angle (float) – Angle of rotation.
  • angle_in_radians (bool) – Set to True if angles are given in radians. Or else, units of degrees are assumed.
  • translation_vec – A translation vector. Defaults to zero.
Returns:

SymmOp for a rotation about given axis and translation.

classmethod from_dict(d)[source]
static from_origin_axis_angle(origin, axis, angle, angle_in_radians=False)[source]

Generates a SymmOp for a rotation about a given axis through an origin.

Parameters:
  • origin (3x1 array) – The origin which the axis passes through.
  • axis (3x1 array) – The axis of rotation in cartesian space. For example, [1, 0, 0]indicates rotation about x-axis.
  • angle (float) – Angle of rotation.
  • angle_in_radians (bool) – Set to True if angles are given in radians. Or else, units of degrees are assumed.
Returns:

SymmOp.

static from_rotation_and_translation(rotation_matrix=((1, 0, 0), (0, 1, 0), (0, 0, 1)), translation_vec=(0, 0, 0), tol=0.1)[source]

Creates a symmetry operation from a rotation matrix and a translation vector.

Parameters:
  • rotation_matrix (3x3 array) – Rotation matrix.
  • translation_vec (3x1 array) – Translation vector.
  • tol (float) – Tolerance to determine if rotation matrix is valid.
Returns:

SymmOp object

static from_xyz_string(xyz_string)[source]
Parameters:xyz_string – string of the form ‘x, y, z’, ‘-x, -y, z’, ‘-2y+1/2, 3x+1/2, z-y+1/2’, etc.
Returns:SymmOp
inverse

Returns inverse of transformation.

static inversion(origin=(0, 0, 0))[source]

Inversion symmetry operation about axis.

Parameters:origin (3x1 array) – Origin of the inversion operation. Defaults to [0, 0, 0].
Returns:SymmOp representing an inversion operation about the origin.
operate(point)[source]

Apply the operation on a point.

Parameters:point – Cartesian coordinate.
Returns:Coordinates of point after operation.
operate_multi(points)[source]

Apply the operation on a list of points.

Parameters:points – List of Cartesian coordinates
Returns:Numpy array of coordinates after operation
static reflection(normal, origin=(0, 0, 0))[source]

Returns reflection symmetry operation.

Parameters:
  • normal (3x1 array) – Vector of the normal to the plane of reflection.
  • origin (3x1 array) – A point in which the mirror plane passes through.
Returns:

SymmOp for the reflection about the plane

rotation_matrix

A 3x3 numpy.array representing the rotation matrix.

static rotoreflection(axis, angle, origin=(0, 0, 0))[source]

Returns a roto-reflection symmetry operation

Parameters:
  • axis (3x1 array) – Axis of rotation / mirror normal
  • angle (float) – Angle in degrees
  • origin (3x1 array) – Point left invariant by roto-reflection. Defaults to (0, 0, 0).
Returns:

Roto-reflection operation

transform_tensor(tensor)[source]

Applies rotation portion to a tensor. Note that tensor has to be in full form, not the Voigt form.

Parameters:tensor (numpy array) – a rank n tensor
Returns:Transformed tensor.
translation_vector

A rank 1 numpy.array of dim 3 representing the translation vector.