8.6.2. 弹道旋转 MDAnalysis.transformations.rotate

将坐标绕由方向和点形成的轴旋转给定的角度。

class MDAnalysis.transformations.rotate.rotateby(angle, direction, point=None, ag=None, weights=None, wrap=False, max_threads=1, parallelizable=True)[源代码]

将轨迹沿给定轴旋转给定角度。轴由用户定义,将方向向量和点组合在一起。该点可以是几何图形的中心,也可以是用户定义的原子组的重心,也可以是定义自定义坐标的数组。

备注

max_threads 对于执行效果更好的此转换,设置为1。

示例

例如,将坐标在由 [0,0,1] 向量和给定原子组的几何中心:

from MDAnalysis import transformations

ts = u.trajectory.ts
angle = 90
ag = u.atoms
d = [0,0,1]
rotated = transformations.rotate.rotateby(angle, direction=d, ag=ag)(ts)

例如,按自定义轴旋转坐标:

from MDAnalysis import transformations

ts = u.trajectory.ts
angle = 90
p = [1,2,3]
d = [0,0,1]
rotated = transformations.rotate.rotateby(angle, direction=d, point=p)(ts)
参数:
  • angle (float) -- 旋转角度,以度为单位

  • direction (array-like) -- 将定义自定义旋转轴从提供的点的方向的矢量。预期形状为(3,)或(1,3)。

  • ag (AtomGroup, optional) -- 使用原子组的加权中心作为定义旋转轴的起点。如果没有给出原子组,则 point 参数成为必填参数

  • point (array-like, optional) -- 将从中定义自定义旋转轴的点的坐标列表。预期形状为(3,)或(1,3)。如果没有给出任何分数,则 ag 参数将成为必填项。

  • weights ({"mass", None} or array_like, optional) -- 在计算原子组的中心时定义原子的权重。使用 "mass" 使用质量作为权重;使用 None 把每个原子平均地称重。长度相同的浮点数组 ag 时,请使用 array_like 作为中相应原子的权重 ag 。默认值为None。

  • wrap (bool, optional) -- 如果 True ,在计算质心或几何形状之前,来自给定原子组的所有原子都将被移动到单位晶胞中。默认值为 False 在计算原子组的中心之前,不会更改原子坐标。

返回类型:

MDAnalysis.coordinates.timestep.Timestep

警告

在旋转轨迹之后,可能不可能包裹/展开轨迹或执行PBC校正。

在 2.0.0 版本发生变更: 转换已从函数/闭包更改为具有 __call__

在 2.0.0 版本发生变更: 转换已更改为从基类继承,以限制线程并检查它是否可用于并行分析。

参数:
  • max_threads (int, optional) -- 可以使用最大线程数。默认值为 None ,表示默认设置或外部设置。

  • parallelizable (bool, optional) -- 检查这是否可以用于拆分-应用-合并并行分析方法。默认值为 True