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测试套件的一部分提供的文件(在变量中 PSF
, DCD
,以及 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.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来执行空间叠加。
使原子组在空间上对齐 mobile 至 reference 通过在RMSD上进行试穿 select 原子。
叠加是以以下方式完成的:
计算旋转矩阵以最小化以下坐标之间的RMSD mobile.select_atoms(sel1) 和 reference.select_atoms(sel2) ;在轮换之前, mobile 平移,以使其几何中心(或质心)与 reference 。(见下文,解释如何 sel1 和 sel2 派生自 select 。)
中的所有原子
Universe
它包含了 mobile 被移位和旋转。(请参见下面的内容,了解如何通过 subselection 关键字。)
这个 mobile 和 reference 可以构造原子基团,以便它们已经逐个原子匹配。在这种情况下, select 应设置为“All”(或
None
),因此不会对其应用进一步的选择 mobile 和 reference ,因此保持了确切的原子顺序(请参见 有序选择 )。警告
的原子序数 mobile 和 reference 是 only 保留时间 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()
中产生相同选择的 mobile 和 reference 或2.一本词典{{'mobile': sel1, 'reference': sel2}}
哪里 sel1 和 sel2 是应用于的有效选择字符串 mobile 和 reference 分别为(MDAnalysis.analysis.align.fasta2select()
函数返回此类词典。 ClustalW 或 STAMP 序列比对);或3.元组(sel1, sel2)
当使用2.或3.与 sel1 和 sel2 然后将这些选择字符串应用于 atomgroup 和 reference ,并应生成 等价原子团 。 sel1 和 sel2 每个都可以是一个 选择字符串列表 要生成一个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 到内存中的轨迹,以便可以就地完成对齐,这在某些情况下可以显著提高性能。在这种情况下,不会写出任何文件 (filename 和 prefix 被忽略),并且只有 mobile 是 已在内存中更改 。
verbose (bool (optional)) -- 如果设置为,则将LOGGER设置为以显示计算的详细信息和详细进度
True
;默认为False
。
- results.rmsd
RMSD叠加和最小化后移动原子与参考原子之间最小RMSD的RMSD值数组
在 2.0.0 版本加入.
- 类型:
- rmsd
的别名
results.rmsd
属性。自 2.0.0 版本弃用: 将在MDAnalysis 3.0.0中删除。请使用
results.rmsd
取而代之的是。- 类型:
- 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 版本发生变更: 支持
start
,stop
,以及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 到内存中的轨迹,以便可以就地完成对齐,这在某些情况下可以显著提高性能。在这种情况下,不会写出任何文件 (filename 和 prefix 被忽略),并且只有 mobile 是 已在内存中更改 。
ref_frame (int (optional)) -- 从中选择帧的帧索引 reference
verbose (bool (optional)) -- 如果设置为,则将LOGGER设置为以显示计算的详细信息和详细进度
True
;默认为False
。
- 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 版本发生变更:
universe
,positions
,以及rmsd
现在存储在一个MDAnalysis.analysis.base.Results
实例。
- MDAnalysis.analysis.align.rotation_matrix(a, b, weights=None)[源代码]
返回3x3旋转矩阵 R 对于RMSD拟合坐标集 a 和 b 。
旋转矩阵 R 变换向量 a 与矢量重叠的步骤 b (即, b 是参考结构):
\[\mathbf{b}=\mathsf{R}\cdot\mathbf{a}\]- 参数:
a (array_like) -- 将被旋转的坐标(移动集合);形状为N*3的N个原子的阵列,例如,
MDAnalysis.core.groups.AtomGroup.positions
。b (array_like) -- 参考坐标;形状为N*3的N个原子的阵列,例如,
MDAnalysis.core.groups.AtomGroup.positions
。weights (array_like (optional)) -- 用于进行加权RMSD拟合的大小为N的浮点数组(例如原子质量)
- 返回:
R ( ndarray )--旋转矩阵
rmsd ( 浮动 )--RMSD介于 a 和 b 轮换前
(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在 a 和 b 。
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_coordinates 和 ref_coordinates 已经被移动,因此它们的几何中心(或质心,取决于 weights )在原点重合。 mobile_com 和 ref_com 这些中心是 在此之前 这个班次。
旋转矩阵 \(\mathsf{{R}}\) 通过以下方式确定
rotation_matrix()
直接从 mobile_coordinates 和 ref_coordinates 。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_resids 或 target_resids ,例如:
target_resids = [a.resid for a in trj.select_atoms('name CA')]
(此转换表 is 与任何价值相结合 ref_offset 或 target_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
。- 返回类型:
参见
sequence_alignment()
,which
,programs.
在 1.0.0 版本发生变更: 通过 alnfilename 或 treefilename 作为 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)
- 返回类型:
备注
如果您更喜欢直接使用
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 optionis_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
实例 ag1 和 ag2 并返回两个原子基团 g1 和 g2 它由原子组成,所以原子的质量g1[0]
与原子的质量相同g2[0]
,g1[1]
和g2[1]
等。目前的实现非常简单,以残留物为单位进行工作:
这两组必须含有相同数量的残基。
每个基团中具有不同原子数的任何残基都被丢弃。
对相应原子的质量进行了比较。如果有任何质量差超过 tol_mass 测试被认为是失败的,并且
SelectionError
都被养大了。
日志文件(请参见
MDAnalysis.start_logging()
)将包含有关不匹配的详细信息。- 参数:
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
一个原子接一个原子匹配的实例。如果全部匹配,则这些组是原始组,或者是原始组的切片。- 返回类型:
- 抛出:
SelectionError -- 如果残基数量不匹配或如果最终匹配的质量相差超过 tol 。
备注
该算法可以通过使用例如Needleman-Wunsch算法
Bio.profile2
对齐每个残基中的原子(进行全局对齐太昂贵了)。在 0.8 版本加入.
在 0.10.0 版本发生变更: 重命名自
check_same_atoms()
至get_matching_atoms()
现在返回匹配的原子组(可能已删除残基)