4.2.1. 坐标拟合和对齐 MDAnalysis.analysis.align

作者:

奥利弗·贝克斯坦,约书亚·阿德尔曼

:

2010--2013

版权所有:

GNU公共许可证v3

该模块包含使目标结构与参考结构相适应的功能。他们使用快速QCP算法来计算两个坐标集之间的均方根距离(RMSD [Theobald2005] 和旋转矩阵 R 这将RMSD降至最低 [Liu2010]. (使用本模块时,请引用这些参考资料。)

通常,人们选择一组原子(例如C-Alpha),计算RMSD和变换矩阵,并将变换应用于轨迹的当前帧以获得旋转结构。这个 alignto()AlignTraj 可以使用函数分别为单个帧和轨迹执行此操作。

这个 RMS配件教程 演示如何手动执行各个步骤,并解释中间步骤。

参见

MDAnalysis.analysis.rms

包含计算RMSD的函数(当不需要结构对齐时)

MDAnalysis.lib.qcprot

实现快速RMSD算法。

4.2.1.1. RMS配件教程

该示例使用作为MDAnalysis测试套件的一部分提供的文件(在变量中 PSFDCD ,以及 PDB_small )。对于所有其他示例,请先执行::

>>> import MDAnalysis as mda
>>> from MDAnalysis.analysis import align
>>> from MDAnalysis.analysis.rms import rmsd
>>> from MDAnalysis.tests.datafiles import PSF, DCD, PDB_small

在最简单的情况下,我们可以简单地计算两个结构之间的C-αRMSD,使用 rmsd() ::

>>> ref = mda.Universe(PDB_small)
>>> mobile = mda.Universe(PSF, DCD)
>>> rmsd(mobile.select_atoms('name CA').positions, ref.select_atoms('name CA').positions)
28.20178579474479

请注意,在本例中,翻译没有被删除。为了观察纯旋转,首先需要叠加质心(或几何体):

>>> rmsd(mobile.select_atoms('name CA').positions, ref.select_atoms('name CA').positions, center=True)
21.892591663632704

这只是一种平移叠加。如果你也想做一个旋转叠加,使用关键字叠加。这将计算参考结构和移动结构之间的最小RMSD。

>>> rmsd(mobile.select_atoms('name CA').positions, ref.select_atoms('name CA').positions,
...      superposition=True)
6.809396586471815

叠加的旋转矩阵 莫比尔县 在……上面 ref 而CA-RMSD最小化是通过 rotation_matrix() 功能::

>>> mobile0 = mobile.select_atoms('name CA').positions - mobile.select_atoms('name CA').center_of_mass()
>>> ref0 = ref.select_atoms('name CA').positions - ref.select_atoms('name CA').center_of_mass()
>>> R, rmsd = align.rotation_matrix(mobile0, ref0)
>>> rmsd
6.809396586471805
>>> R
array([[ 0.14514539, -0.27259113,  0.95111876],
...    [ 0.88652593,  0.46267112, -0.00268642],
...    [-0.43932289,  0.84358136,  0.30881368]])

把所有这些放在一起,可以叠加所有的 莫比尔县 vt.上 ref ::

>>> mobile.atoms.translate(-mobile.select_atoms('name CA').center_of_mass())
<AtomGroup with 3341 atoms>
>>> mobile.atoms.rotate(R)
<AtomGroup with 3341 atoms>
>>> mobile.atoms.translate(ref.select_atoms('name CA').center_of_mass())
<AtomGroup with 3341 atoms>
>>> mobile.atoms.write("mobile_on_ref.pdb")

4.2.1.2. 常用用法

适合单个结构 使用 alignto() ::

>>> ref = mda.Universe(PSF, PDB_small)
>>> mobile = mda.Universe(PSF, DCD)     # we use the first frame
>>> align.alignto(mobile, ref, select="protein and name CA", weights="mass")
(21.892591663632704, 6.809396586471809)

这一点将会改变 all 中的坐标 莫比尔县 从而使蛋白质C-α原子以最佳方式叠加(平移和旋转)。

符合完整的轨迹 属性设置为引用结构。 AlignTraj 班级::

>>> ref = mda.Universe(PSF, PDB_small)   # reference structure 1AKE
>>> trj = mda.Universe(PSF, DCD)         # trajectory of change 1AKE->4AKE
>>> alignment = align.AlignTraj(trj, ref, filename='rmsfit.dcd')
>>> alignment.run()
<MDAnalysis.analysis.align.AlignTraj object at ...>

还可以通过基于序列比对提供原子之间的映射来比对两个任意结构。这允许匹配结构同系物或野生型和突变体。

如果以“equences.aln”的形式提供对齐,则首先会使用 fasta2select() 函数,然后将生成的词典提供给 AlignTraj ::

>>> seldict = align.fasta2select('sequences.aln') 
>>> alignment = align.AlignTraj(trj, ref, filename='rmsfit.dcd', select=seldict) 
>>> alignment.run() 

(有关此高级用法,请参阅函数文档。)

4.2.1.3. 函数和类

在 0.10.0 版本发生变更: 功能 rmsd() 已从该模块中删除,现在可以作为独占访问 rmsd()

在 0.16.0 版本发生变更: 功能 rms_fit_trj() 不赞成,赞成 AlignTraj 班级。

在 0.17.0 版本发生变更: 已删除,已弃用 rms_fit_trj()

MDAnalysis.analysis.align.alignto(mobile, reference, select=None, weights=None, subselection=None, tol_mass=0.1, strict=False, match_atoms=True)[源代码]

通过最小化RMSD来执行空间叠加。

使原子组在空间上对齐 mobilereference 通过在RMSD上进行试穿 select 原子。

叠加是以以下方式完成的:

  1. 计算旋转矩阵以最小化以下坐标之间的RMSD mobile.select_atoms(sel1)reference.select_atoms(sel2) ;在轮换之前, mobile 平移,以使其几何中心(或质心)与 reference 。(见下文,解释如何 sel1sel2 派生自 select 。)

  2. 中的所有原子 Universe 它包含了 mobile 被移位和旋转。(请参见下面的内容,了解如何通过 subselection 关键字。)

这个 mobilereference 可以构造原子基团,以便它们已经逐个原子匹配。在这种情况下, select 应设置为“All”(或 None ),因此不会对其应用进一步的选择 mobilereference ,因此保持了确切的原子顺序(请参见 有序选择 )。

警告

的原子序数 mobilereferenceonly 保留时间 select 是“all”还是“all” None 。在任何其他情况下,都将进行新的选择,该选择将按索引对生成的原子组进行排序,从而破坏两个组之间的对应关系。 最安全的做法是不要将有序的原子组与选择字符串混合在一起。

参数:
  • mobile (Universe or AtomGroup) -- 要对齐的结构,则为 AtomGroup 或者是一个整体 Universe

  • reference (Universe or AtomGroup) -- 引用结构,一个 AtomGroup 或者是一个整体 Universe

  • select (str or dict or tuple (optional)) -- 要操作的选择;可以是以下之一:1.任何有效的选择字符串 select_atoms() 中产生相同选择的 mobilereference 或2.一本词典 {{'mobile': sel1, 'reference': sel2}} 哪里 sel1sel2 是应用于的有效选择字符串 mobilereference 分别为( MDAnalysis.analysis.align.fasta2select() 函数返回此类词典。 ClustalWSTAMP 序列比对);或3.元组 (sel1, sel2) 当使用2.或3.与 sel1sel2 然后将这些选择字符串应用于 atomgroupreference ,并应生成 等价原子团sel1sel2 每个都可以是一个 选择字符串列表 要生成一个 AtomGroup 具有定义的原子顺序,如下所述 有序选择 )。

  • match_atoms (bool (optional)) -- 是否逐个匹配流动原子和参考原子。默认 True

  • weights ({"mass", None} or array_like (optional)) -- 选择权重。使用 "mass" 使用质量作为权重;使用 None 把每个原子平均地称重。长度相同的浮点数组 mobile 时,请使用 array_like 作为中相应原子的权重 mobile

  • tol_mass (float (optional)) -- 如果匹配原子的原子质量相差超过 tol_mass ,默认 [0.1]

  • strict (bool (optional)) --

    True

    将筹集 SelectionError 如果两个选择之间的单个原子不匹配。

    False [default]

    将尝试通过丢弃含有不匹配原子的残基来准备匹配选择。看见 get_matching_atoms() 有关详细信息,请参阅。

  • subselection (str or AtomGroup or None (optional)) --

    仅将转换应用于此选定内容。

    None [default]

    适用于 mobile.universe.atoms (即,在以下选择的上下文中的所有原子 mobile 例如蛋白质的其余部分、配体和周围的水)

    selection-string

    适用于 mobile.select_atoms(selection-string)

    AtomGroup

    适用于任意原子基团

返回:

  • old_rmsd ( 浮动 )--空间对齐前的RMSD

  • new_rmsd ( 浮动 )--空间对齐后的RMSD

参见

AlignTraj

更有效的RMSD-拟合轨迹的方法。

在 1.0.0 版本发生变更: 已添加 match_atoms 关键字切换原子匹配。

在 0.8 版本发生变更: 添加了两个基团描述相同原子的检查,包括新的 tol_mass 关键字。

在 0.10.0 版本发生变更: 用途 get_matching_atoms() 使用不完整的选择和新选项的步骤 strict 关键字。新的缺省是宽大处理,而旧的行为相当于 strict = True

在 0.16.0 版本发生变更: 新的一般重量级裁判员更替 mass_weighted ,已弃用 mass_weighted

自 0.16.0 版本弃用: 而不是 mass_weighted=True 使用新的 weights='mass'

在 0.17.0 版本发生变更: 不推荐使用的关键字 mass_weighted 被移除了。

class MDAnalysis.analysis.align.AlignTraj(mobile, reference, select='all', filename=None, prefix='rmsfit_', weights=None, tol_mass=0.1, match_atoms=True, strict=False, force=True, in_memory=False, **kwargs)[源代码]

均方根(RMS)-使用选取将轨迹与参照结构对齐。

这两个参考文献 reference 以及弹道 mobile 一定是 MDAnalysis.Universe 实例。如果它们包含轨迹,则使用该轨迹。输出文件格式由的文件扩展名确定 filename 。如果想要适应当前帧,也可以使用相同的宇宙。

在 1.0.0 版本发生变更: save() 现在已被移除,作为替代用途 np.savetxt() 在……上面 results.rmsd

参数:
  • mobile (Universe) -- 包含要符合参考的轨迹的宇宙

  • reference (Universe) -- 包含作为参考的轨迹框架的宇宙

  • select (str (optional)) -- 设置为默认设置为ALL,用于UNUSESE.SELECT_ATOMERS以选择要匹配的子域

  • filename (str (optional)) -- 提供要写入的结果的文件名

  • prefix (str (optional)) -- 提供一个字符串作为文件名的前缀,以便写入结果

  • weights ({"mass", None} or array_like (optional)) -- 选择权重。使用 "mass" 使用大量的 reference 有重量的;有重量的 None 把每个原子平均地称重。如果提供了与所选内容长度相同的浮点数组,请使用 array_like 作为选择中相应原子的权重。

  • tol_mass (float (optional)) -- 给与容忍度 get_matching_atoms 找到合适的原子

  • match_atoms (bool (optional)) -- 是否逐个匹配流动原子和参考原子。默认 True

  • strict (bool (optional)) -- 力 get_matching_atoms 如果不能用精确的方法找到原子,就会失败

  • force (bool (optional)) -- 强制覆盖RMSD适配的文件名

  • in_memory (bool (optional)) -- 永久 交换机 mobile 到内存中的轨迹,以便可以就地完成对齐,这在某些情况下可以显著提高性能。在这种情况下,不会写出任何文件 (filenameprefix 被忽略),并且只有 mobile已在内存中更改

  • verbose (bool (optional)) -- 如果设置为,则将LOGGER设置为以显示计算的详细信息和详细进度 True ;默认为 False

reference_atoms

要与之对齐的参考结构的原子

类型:

AtomGroup

mobile_atoms

每个轨迹框内的原子将被RMSD_对齐

类型:

AtomGroup

results.rmsd

RMSD叠加和最小化后移动原子与参考原子之间最小RMSD的RMSD值数组

在 2.0.0 版本加入.

类型:

numpy.ndarray

rmsd

的别名 results.rmsd 属性。

自 2.0.0 版本弃用: 将在MDAnalysis 3.0.0中删除。请使用 results.rmsd 取而代之的是。

类型:

numpy.ndarray

filename

反映在运行RMSD对齐时将向其写入对齐位置的文件的文件名的字符串

类型:

应力

备注

  • 如果设置为 verbose=False ,则建议将该语句括在 try ...  finally 以保证在出现异常的情况下恢复日志级别。

  • 这个 in_memory 选项会更改 mobile 统一到内存中的表示形式(请参见 MDAnalysis.coordinates.memory ),用于Python会话的剩余部分。如果 mobile.trajectory 已经是一个 MemoryReader 那就是 始终 被当做 in_memory 已设置为 True

在 1.0.0 版本发生变更: 默认设置 filename 现在已更改为当前目录。

自 0.19.1 版本弃用: 默认设置 filename 目录将在1.0中更改为当前目录。

在 0.16.0 版本发生变更: 新上将 weights Kwarg更换 mass_weights

自 0.16.0 版本弃用: 而不是 mass_weighted=True 使用新的 weights='mass'

在 0.17.0 版本发生变更: 已删除,已弃用 mass_weighted 关键字

在 1.0.0 版本发生变更: 支持 startstop ,以及 step 关键字已删除。相反,这些应该传递给 AlignTraj.run()

在 2.0.0 版本发生变更: rmsd 结果现在存储在 MDAnalysis.analysis.base.Results 实例。

class MDAnalysis.analysis.align.AverageStructure(mobile, reference=None, select='all', filename=None, weights=None, tol_mass=0.1, match_atoms=True, strict=False, force=True, in_memory=False, ref_frame=0, **kwargs)[源代码]

均方根(RMS)-使用选取将轨迹与参照结构对齐,并计算轨迹的平均坐标。

这两个参考文献 reference 以及弹道 mobile 一定是 MDAnalysis.Universe 实例。如果它们包含轨迹,则使用该轨迹。如果您希望适合当前帧,也可以使用相同的语义层。

输出文件格式由的文件扩展名确定 filename

示例

import MDAnalysis as mda
from MDAnalysis.tests.datafiles import PSF, DCD
from MDAnalysis.analysis import align

u = mda.Universe(PSF, DCD)

# align to the third frame and average structure
av = align.AverageStructure(u, ref_frame=3).run()
averaged_universe = av.results.universe
参数:
  • mobile (Universe) -- 包含要符合参考的轨迹的宇宙

  • reference (Universe (optional)) -- 包含作为参考的轨迹框架的宇宙

  • select (str (optional)) -- 设置为默认设置为ALL,用于UNUSESE.SELECT_ATOMERS以选择要匹配的子域

  • filename (str (optional)) -- 提供要写入的结果的文件名

  • weights ({"mass", None} or array_like (optional)) -- 选择权重。使用 "mass" 使用大量的 reference 有重量的;有重量的 None 把每个原子平均地称重。如果提供了与所选内容长度相同的浮点数组,请使用 array_like 作为选择中相应原子的权重。

  • tol_mass (float (optional)) -- 给与容忍度 get_matching_atoms 找到合适的原子

  • match_atoms (bool (optional)) -- 是否逐个匹配流动原子和参考原子。默认 True

  • strict (bool (optional)) -- 力 get_matching_atoms 如果不能用精确的方法找到原子,就会失败

  • force (bool (optional)) -- 强制覆盖RMSD适配的文件名

  • in_memory (bool (optional)) -- 永久 交换机 mobile 到内存中的轨迹,以便可以就地完成对齐,这在某些情况下可以显著提高性能。在这种情况下,不会写出任何文件 (filenameprefix 被忽略),并且只有 mobile已在内存中更改

  • ref_frame (int (optional)) -- 从中选择帧的帧索引 reference

  • verbose (bool (optional)) -- 如果设置为,则将LOGGER设置为以显示计算的详细信息和详细进度 True ;默认为 False

reference_atoms

要与之对齐的参考结构的原子

类型:

AtomGroup

mobile_atoms

每个轨迹框内的原子将被RMSD_对齐

类型:

AtomGroup

results.universe

平均仓位的新宇宙

在 2.0.0 版本加入.

类型:

MDAnalysis.Universe

universe

的别名 results.universe 属性。

自 2.0.0 版本弃用: 将在MDAnalysis 3.0.0中删除。请使用 results.universe 取而代之的是。

类型:

MDAnalysis.Universe

results.positions

平均仓位

在 2.0.0 版本加入.

类型:

Np.ndarray(dtype=浮动)

positions

的别名 results.positions 属性。

自 2.0.0 版本弃用: 将在MDAnalysis 3.0.0中删除。请使用 results.positions 取而代之的是。

类型:

Np.ndarray(dtype=浮动)

results.rmsd

每帧的平均RMSD

在 2.0.0 版本加入.

类型:

浮动

rmsd

的别名 results.rmsd 属性。

自 2.0.0 版本弃用: 将在MDAnalysis 3.0.0中删除。请使用 results.rmsd 取而代之的是。

类型:

浮动

filename

反映写入平均结构的文件的文件名的字符串

类型:

应力

备注

  • 如果设置为 verbose=False ,则建议将该语句括在 try ...  finally 以保证在出现异常的情况下恢复日志级别。

  • 这个 in_memory 选项会更改 mobile 统一到内存中的表示形式(请参见 MDAnalysis.coordinates.memory ),用于Python会话的剩余部分。如果 mobile.trajectory 已经是一个 MemoryReader 那就是 始终 被当做 in_memory 已设置为 True

在 1.0.0 版本加入.

在 2.0.0 版本发生变更: universepositions ,以及 rmsd 现在存储在一个 MDAnalysis.analysis.base.Results 实例。

MDAnalysis.analysis.align.rotation_matrix(a, b, weights=None)[源代码]

返回3x3旋转矩阵 R 对于RMSD拟合坐标集 ab

旋转矩阵 R 变换向量 a 与矢量重叠的步骤 b (即, b 是参考结构):

\[\mathbf{b}=\mathsf{R}\cdot\mathbf{a}\]
参数:
返回:

  • R ( ndarray )--旋转矩阵

  • rmsd ( 浮动 )--RMSD介于 ab 轮换前

  • (R, rmsd) RMSD和旋转矩阵 R

示例

R 可以用作参数 MDAnalysis.core.groups.AtomGroup.rotate() 要生成旋转的选区,例如:

>>> from MDAnalysisTests.datafiles import TPR, TRR
>>> from MDAnalysis.analysis import align
>>> A = mda.Universe(TPR,TRR)
>>> B = A.copy()
>>> R = rotation_matrix(A.select_atoms('backbone').positions,
...                     B.select_atoms('backbone').positions)[0]
>>> A.atoms.rotate(R)
<AtomGroup with 47681 atoms>
>>> A.atoms.write("rotated.pdb")

备注

该函数执行以下操作 not 移动质心或几何体;这需要由用户完成。

参见

MDAnalysis.analysis.rms.rmsd

计算RMSD在 ab

alignto

两个结构的完全契合。

AlignTraj

符合整个弹道。

4.2.1.4. 帮助器函数

本模块中的其他函数使用以下函数。与普通用户相比,开发人员可能对它们更感兴趣。

MDAnalysis.analysis.align._fit_to(mobile_coordinates, ref_coordinates, mobile_atoms, mobile_com, ref_com, weights=None)[源代码]

执行RMSD拟合以确定旋转矩阵并对齐原子

参数:
  • mobile_coordinates (ndarray) -- 待对准的原子的坐标

  • ref_coordinates (ndarray) -- 要与之匹配的原子坐标

  • mobile_atoms (AtomGroup) -- 需要翻译的原子

  • mobile_com (ndarray) -- 移动质心的XYZ坐标数组

  • ref_com (ndarray) -- 参考质心的XYZ坐标数组

  • weights (array_like (optional)) -- 选择权重。使用 None 把每个原子平均地称重。长度相同的浮点数组 mobile_coordinates 时,请使用 array_like 作为中相应原子的权重 mobile_coordinates

返回:

  • mobile_atoms ( AtomGroup )--平移和旋转原子的原子群

  • min_rmsd ( 浮动 )--坐标的最小RMSD

备注

此函数假定 mobile_coordinatesref_coordinates 已经被移动,因此它们的几何中心(或质心,取决于 weights )在原点重合。 mobile_comref_com 这些中心是 在此之前 这个班次。

  1. 旋转矩阵 \(\mathsf{{R}}\) 通过以下方式确定 rotation_matrix() 直接从 mobile_coordinatesref_coordinates

  2. mobile_atoms \(X\) 根据旋转矩阵旋转,并根据

    \[X‘=\mathsf{R}(X-\bar{X})+\bar{X}_{\Text{ref}}\]

    哪里 \(\bar{{X}}\) 是中心。

MDAnalysis.analysis.align.fasta2select(fastafilename, is_aligned=False, ref_resids=None, target_resids=None, ref_offset=0, target_offset=0, verbosity=3, alnfilename=None, treefilename=None, clustalw='clustalw2')[源代码]

返回将选择等价残基的选择字符串。

该函数对FASTA文件中提供的两个序列进行比对,并构建常见原子的MDAnalysis选择字符串。当这两个字符串应用于两个不同的蛋白质时,它们将产生排列的残基的原子组。

fastafilename 包含FASTA格式的两个未对齐的序列。假设参考是第一序列,目标是第二序列。 ClustalW 生成成对对齐(写入带有后缀的文件 .aln )。输出包含在两个结构中选择相同原子的原子选择字符串。

除非 ref_offset 和/或 target_offset 结构中的残基被假定对应于未对齐序列中的位置,即第一个残基具有RESID==1。

在更复杂的情况下(例如,当输入结构中的残留物编号由于缺少部件而有间隙时),只需提供在中的拓扑中出现的残留物序列 ref_residstarget_resids ,例如:

target_resids = [a.resid for a in trj.select_atoms('name CA')]

(此转换表 is 与任何价值相结合 ref_offsettarget_offset !)

参数:
  • fastafilename (str, path to filename) -- FASTA文件,第一个序列为参考序列,第二个序列为待比对的序列(顺序很重要!)

  • is_aligned (bool (optional)) -- False (默认)运行CLUSTORW以进行序列比对; True 使用文件中的对齐方式(例如来自图章) [False]

  • ref_offset (int (optional)) -- 将该数字与FASTA文件中的列号相加,得到原始残留号,默认为0

  • target_offset (int (optional)) -- 将该数字与FASTA文件中的列号相加,得到原始残留号,默认为0

  • ref_resids (str (optional)) -- 在参考结构中出现的残基序列

  • target_resids (str (optional)) -- 目标中出现的残留物序列

  • alnfilename (str (optional)) -- 由生成的Clusta W对齐(Clustal格式)的文件名 俱乐部俱乐部 什么时候 is_aligned = False 。默认设置 None 使用的名称和路径 Fastafilename 并将后缀替换为“.aln”。

  • treefilename (str (optional)) -- Clusta W指南树的文件名(Newick格式);如果是默认格式 None 文件名是从 Alnfilename 后缀为“.dnd”而不是“.aln”

  • clustalw (str (optional)) -- ClustaW(或ClustaW2)二进制文件的路径;仅在以下情况下需要 is_aligned = False ,默认:“ClustaW2”

返回:

select_dict --带有‘Reference’和‘Mobile’选择字符串的词典,可立即在 AlignTraj 作为 select=select_dict

返回类型:

dict

参见

sequence_alignment(), which, programs.

在 1.0.0 版本发生变更: 通过 alnfilenametreefilename 作为 None 将在当前工作目录中创建一个文件。

MDAnalysis.analysis.align.sequence_alignment(*args, **kwds)

sequence_alignment 已被弃用!

生成两个残基组之间的全局序列比对。

The residues in reference and mobile will be globally aligned. The global alignment uses the Needleman-Wunsch algorithm as implemented in Bio.Align.PairwiseAligner. The parameters of the dynamic programming algorithm can be tuned with the keywords. The defaults should be suitable for two similar sequences. For sequences with low sequence identity, more specialized tools such as clustalw, muscle, tcoffee, or similar should be used.

参数:
  • mobile (AtomGroup) -- 待对齐的原子基团

  • reference (AtomGroup) -- 要对齐的原子基团

  • match_score (float (optional), default 2) -- 匹配残基的分数,默认为2

  • mismatch_penalty (float (optional), default -1) -- 对不匹配的残留物的处罚,默认:-1

  • gap_penalty (float (optional), default -2) -- 对打开缺口的惩罚;较高的缺省值为高度相同的序列创建紧凑的比对,但可能不适用于同源性较低的序列,默认为-2

  • gapextension_penalty (float (optional), default -0.1) -- 扩大差距的罚金,默认:-0.1

返回:

对齐方式 --顶端序列匹配输出的元组 ('Sequence A', 'Sequence B', score, begin, end)

返回类型:

tuple

备注

如果您更喜欢直接使用 Bio.Align 对象,然后您就可以使用 Bio.Alig.PairwiseAligner AS::

import Bio.Align.PairwiseAligner

aligner = Bio.Align.PairwiseAligner(
   mode="global",
   match_score=match_score,
   mismatch_score=mismatch_penalty,
   open_gap_score=gap_penalty,
   extend_gap_score=gapextension_penalty)
aln = aligner.align(reference.residues.sequence(format="Seq"),
                    mobile.residues.sequence(format="Seq"))

# choose top alignment with highest score
topalignment = aln[0]

这个 topalignment 是一种 Bio.Align.PairwiseAlignment 实例,可用于您的生物信息学工作流。

参见

BioPython documentation for PairwiseAligner. Alternatively, use fasta2select() with clustalw2 and the option is_aligned=False.

在 0.10.0 版本加入.

在 2.4.0 版本发生变更: 取代已弃用的用法 Bio.pairwise2.align.globalms() 使用 Bio.Align.PairwiseAligner

自 2.4.0 版本弃用: 有关如何在ResidueGroups中直接使用Bio.Align.PairwieAligner的说明,请参阅说明下的文档。 sequence_alignment 将在3.0版中删除。

MDAnalysis.analysis.align.get_matching_atoms(ag1, ag2, tol_mass=0.1, strict=False, match_atoms=True)[源代码]

返回具有一对一匹配原子的两个原子基团。

该函数接受两个参数 AtomGroup 实例 ag1ag2 并返回两个原子基团 g1g2 它由原子组成,所以原子的质量 g1[0] 与原子的质量相同 g2[0]g1[1]g2[1] 等。

目前的实现非常简单,以残留物为单位进行工作:

  1. 这两组必须含有相同数量的残基。

  2. 每个基团中具有不同原子数的任何残基都被丢弃。

  3. 对相应原子的质量进行了比较。如果有任何质量差超过 tol_mass 测试被认为是失败的,并且 SelectionError 都被养大了。

日志文件(请参见 MDAnalysis.start_logging() )将包含有关不匹配的详细信息。

参数:
  • ag1 (AtomGroup) -- 第一 AtomGroup 要比较的实例

  • ag2 (AtomGroup) -- 第二 AtomGroup 要比较的实例

  • tol_mass (float (optional)) -- Reject if the atomic masses for matched atoms differ by more than tol_mass [0.1]

  • strict (bool (optional)) --

    True

    将筹集 SelectionError 如果两个选择之间的单个原子不匹配。

    False [default]

    将尝试通过丢弃含有不匹配原子的残基来准备匹配选择。看见 get_matching_atoms() 有关详细信息,请参阅。

  • match_atoms (bool (optional)) -- True 将尝试根据质量匹配原子 False 不会尝试根据质量匹配原子

返回:

(G1、G2) --元组,带 AtomGroup 一个原子接一个原子匹配的实例。如果全部匹配,则这些组是原始组,或者是原始组的切片。

返回类型:

tuple

抛出:

SelectionError -- 如果残基数量不匹配或如果最终匹配的质量相差超过 tol

备注

该算法可以通过使用例如Needleman-Wunsch算法 Bio.profile2 对齐每个残基中的原子(进行全局对齐太昂贵了)。

在 0.8 版本加入.

在 0.10.0 版本发生变更: 重命名自 check_same_atoms()get_matching_atoms() 现在返回匹配的原子组(可能已删除残基)