Bio.PDB.vectors 模块

向量类,包括与旋转相关的函数。

Bio.PDB.vectors.m2rotaxis(m)

返回与旋转矩阵 m 相对应的角度、轴对。

m 为单位矩阵时,对应于奇点,其中任何旋转轴都是有效的。在这种情况下,返回 Vector([1, 0, 0])

Bio.PDB.vectors.vector_to_axis(line, point)

向量到轴方法。

返回点与线上最接近点之间的向量(即点在直线上的垂直投影)。

参数:
  • line (L{Vector}) – 定义直线的向量

  • point (L{Vector}) – 定义点的向量

Bio.PDB.vectors.rotaxis2m(theta, vector)

计算左乘旋转矩阵。

计算一个左乘旋转矩阵,该矩阵围绕向量旋转 theta 弧度。

参数:
  • theta (float) – 旋转角

  • vector (L{Vector}) – 旋转轴

返回:

旋转矩阵,一个 3x3 NumPy 数组。

示例

>>> from numpy import pi
>>> from Bio.PDB.vectors import rotaxis2m
>>> from Bio.PDB.vectors import Vector
>>> m = rotaxis2m(pi, Vector(1, 0, 0))
>>> Vector(1, 2, 3).left_multiply(m)
<Vector 1.00, -2.00, -3.00>
Bio.PDB.vectors.rotaxis(theta, vector)

计算左乘旋转矩阵。

计算一个左乘旋转矩阵,该矩阵围绕向量旋转 theta 弧度。

参数:
  • theta (float) – 旋转角

  • vector (L{Vector}) – 旋转轴

返回:

旋转矩阵,一个 3x3 NumPy 数组。

示例

>>> from numpy import pi
>>> from Bio.PDB.vectors import rotaxis2m
>>> from Bio.PDB.vectors import Vector
>>> m = rotaxis2m(pi, Vector(1, 0, 0))
>>> Vector(1, 2, 3).left_multiply(m)
<Vector 1.00, -2.00, -3.00>
Bio.PDB.vectors.refmat(p, q)

返回一个(左乘)矩阵,该矩阵将 p 镜像到 q。

返回:

镜像操作,一个 3x3 NumPy 数组。

示例

>>> from Bio.PDB.vectors import refmat
>>> p, q = Vector(1, 2, 3), Vector(2, 3, 5)
>>> mirror = refmat(p, q)
>>> qq = p.left_multiply(mirror)
>>> print(q)
<Vector 2.00, 3.00, 5.00>
>>> print(qq)
<Vector 1.21, 1.82, 3.03>
Bio.PDB.vectors.rotmat(p, q)

返回一个(左乘)矩阵,该矩阵将 p 旋转到 q。

参数:
  • p (L{Vector}) – 移动向量

  • q (L{Vector}) – 固定向量

返回:

将 p 旋转到 q 的旋转矩阵

返回类型:

3x3 NumPy 数组

示例

>>> from Bio.PDB.vectors import rotmat
>>> p, q = Vector(1, 2, 3), Vector(2, 3, 5)
>>> r = rotmat(p, q)
>>> print(q)
<Vector 2.00, 3.00, 5.00>
>>> print(p)
<Vector 1.00, 2.00, 3.00>
>>> p.left_multiply(r)
<Vector 1.21, 1.82, 3.03>
Bio.PDB.vectors.calc_angle(v1, v2, v3)

计算角度方法。

计算表示 3 个连接点的 3 个向量之间的角度。

参数:

v3 (v1, v2,) – 定义角度的三个点

返回:

角度

返回类型:

float

Bio.PDB.vectors.calc_dihedral(v1, v2, v3, v4)

计算二面角方法。

计算表示 4 个连接点的 4 个向量之间的二面角。该角度在 ]-pi, pi] 内。

参数:

v4 (v1, v2, v3,) – 定义二面角的四个点

class Bio.PDB.vectors.Vector(x, y=None, z=None)

基础:object

3D 向量。

__init__(x, y=None, z=None)

初始化类。

__repr__()

返回向量 3D 坐标。

__neg__()

返回 Vector(-x, -y, -z)。

__add__(other)

返回 Vector+other Vector 或标量。

__sub__(other)

返回 Vector-other Vector 或标量。

__mul__(other)

返回 Vector.Vector(点积)。

__truediv__(x)

返回 Vector(coords/a)。

__pow__(other)

返回 VectorxVector(叉积)或 Vectorxscalar。

__getitem__(i)

返回数组索引 i 的值。

__setitem__(i, value)

将值分配给数组索引 i。

__contains__(i)

验证 i 是否在数组中。

norm()

返回向量范数。

normsq()

返回向量范数的平方。

normalize()

规范化 Vector 对象。

更改 self 的状态,不返回值。如果需要链接函数调用或创建新对象,请使用 normalized 方法。

normalized()

返回 Vector 的规范化副本。

为了避免分配新对象,请使用 normalize 方法。

angle(other)

返回两个向量之间的角度。

get_array()

返回(坐标的副本)数组。

left_multiply(matrix)

返回 Vector=Matrix x Vector。

right_multiply(matrix)

返回 Vector=Vector x Matrix。

copy()

返回 Vector 的深拷贝。

Bio.PDB.vectors.homog_rot_mtx(angle_rads: float, axis: str) ndarray

生成一个 4x4 的单轴 NumPy 旋转矩阵。

参数:
  • angle_rads (float) – 想要的旋转角度,以弧度表示

  • axis (char) – 指定旋转轴的字符

Bio.PDB.vectors.set_Z_homog_rot_mtx(angle_rads: float, mtx: ndarray)

将现有的 Z 旋转矩阵更新为新的角度。

Bio.PDB.vectors.set_Y_homog_rot_mtx(angle_rads: float, mtx: ndarray)

将现有的 Y 旋转矩阵更新为新的角度。

Bio.PDB.vectors.set_X_homog_rot_mtx(angle_rads: float, mtx: ndarray)

将现有的 X 旋转矩阵更新为新的角度。

Bio.PDB.vectors.homog_trans_mtx(x: float, y: float, z: float) ndarray

生成一个 4x4 的 NumPy 平移矩阵。

参数:

z (x, y,) – 每个轴的平移

Bio.PDB.vectors.set_homog_trans_mtx(x: float, y: float, z: float, mtx: ndarray)

将现有的平移矩阵更新为新的值。

Bio.PDB.vectors.homog_scale_mtx(scale: float) ndarray

生成一个 4x4 的 NumPy 缩放矩阵。

参数:

scale (float) – 缩放倍数

Bio.PDB.vectors.get_spherical_coordinates(xyz: ndarray) tuple[float, float, float]

计算 X、Y、Z 点的球坐标 (r、方位角、极角)。

参数:

xyz (array) – 列向量(3 行 x 1 列 NumPy 数组)

返回:

输入坐标的 r、方位角、极角的元组

Bio.PDB.vectors.coord_space(a0: ndarray, a1: ndarray, a2: ndarray, rev: bool = False) tuple[ndarray, ndarray | None]

生成变换矩阵到由 3 个点定义的坐标空间。

新的坐标空间将有

acs[0] 在 XZ 平面上 acs[1] 原点 acs[2] 在 +Z 轴上

参数:
  • acs (NumPy 列数组 x3) – X、Y、Z 列输入坐标 x3

  • rev (bool) – 如果为 True,则还返回反向变换矩阵(从 coord_space 返回)

返回:

4x4 NumPy 数组,如果 rev=True,则 x2

Bio.PDB.vectors.multi_rot_Z(angle_rads: ndarray) ndarray

为 [entries] 个角度创建 [entries] 个 NumPy Z 旋转矩阵。

参数:
  • entries – 生成的矩阵数量。

  • angle_rads – 角度的 NumPy 数组

返回:

entries x 4 x 4 齐次旋转矩阵

Bio.PDB.vectors.multi_rot_Y(angle_rads: ndarray) ndarray

为 [entries] 个角度创建 [entries] 个 NumPy Y 旋转矩阵。

参数:
  • entries – 生成的矩阵数量。

  • angle_rads – 角度的 NumPy 数组

返回:

entries x 4 x 4 齐次旋转矩阵

Bio.PDB.vectors.multi_coord_space(a3: ndarray, dLen: int, rev: bool = False) ndarray

生成 [dLen] 个变换矩阵到由 3 个点定义的坐标空间。

新的坐标空间将有

acs[0] 在 XZ 平面上 acs[1] 原点 acs[2] 在 +Z 轴上

:param NumPy 数组 [entries]x3x3 [entries] 个 XYZ 坐标,对应于 3 个原子 :param bool rev: 如果为 True,则还返回反向变换矩阵(从 coord_space 返回) :returns: [entries] 个 4x4 NumPy 数组,如果 rev=True,则 x2