biotite.structure.move_inside_box

biotite.structure.move_inside_box(coord, box)[source]

Move all coordinates into the given box, with the box vectors originating at (0,0,0).

Coordinates are outside the box, when they cannot be represented by a linear combination of the box vectors with scalar factors \(0 \le a_i \le 1\). In this case the affected coordinates are translated by the box vectors, so that they are inside the box.

Parameters
coordndarray, dtype=float, shape=(n,3) or shape=(m,n,3)

The coordinates for one or multiple models.

boxndarray, dtype=float, shape=(3,3) or shape=(m,3,3)

The box(es) for one or multiple models. When coord is given for multiple models, box must be given for multiple models as well.

Returns
moved_coordndarray, dtype=float, shape=(n,3) or shape=(m,n,3)

The moved coordinates. Has the same shape is the input coord.

Examples

>>> box = np.array([[10,0,0], [0,10,0], [0,0,10]], dtype=float)
>>> inside_coord        = [ 1,  2,  3]
>>> outside_coord       = [ 1, 22, 54]
>>> other_outside_coord = [-4,  8,  6]
>>> coord = np.stack([inside_coord, outside_coord, other_outside_coord])
>>> print(coord)
[[ 1  2  3]
 [ 1 22 54]
 [-4  8  6]]
>>> moved_coord = move_inside_box(coord, box)
>>> print(moved_coord.astype(int))
[[1 2 3]
 [1 2 4]
 [6 8 6]]