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