Bio.pairwee2模块¶
使用动态规划算法的两两序列比对。
这提供了获得两个序列之间的全局和局部比对的功能。全局比对查找两个序列中所有字符之间的最佳一致性。局部比对只查找对齐最好的子序列。本地比对必须有一个正分才能报告,并且它们不会扩展到“零计数”比赛。这意味着局部比对将始终以正计数匹配开始和结束。
在进行比对时,您可以指定比赛比分和差距处罚。匹配分数指示序列中两个字符的比对之间的兼容性。高度兼容的字符应为正分,不兼容的字符应为负分或0。差距处罚应该是负面的。
本模块中对齐函数的名称遵循约定<alignment type>XX,其中<alignment type>是“global”或“local”,XX是一个2个字符的代码,表示它采用的参数。第一个字符表示匹配(和不匹配)的参数,第二个字符表示间隙惩罚的参数。
匹配参数为:
CODE DESCRIPTION & OPTIONAL KEYWORDS
x No parameters. Identical characters have score of 1, otherwise 0.
m A match score is the score of identical chars, otherwise mismatch
score. Keywords ``match``, ``mismatch``.
d A dictionary returns the score of any pair of characters.
Keyword ``match_dict``.
c A callback function returns scores. Keyword ``match_fn``.
差距处罚参数为:
CODE DESCRIPTION & OPTIONAL KEYWORDS
x No gap penalties.
s Same open and extend gap penalties for both sequences.
Keywords ``open``, ``extend``.
d The sequences have different open and extend gap penalties.
Keywords ``openA``, ``extendA``, ``openB``, ``extendB``.
c A callback function returns the gap penalties.
Keywords ``gap_A_fn``, ``gap_B_fn``.
所有不同的对齐函数都包含在一个对象中 align
。例如:
>>> from Bio import pairwise2
>>> alignments = pairwise2.align.globalxx("ACCGT", "ACG")
为提高可读性,所需参数可以与可选关键字一起使用:
>>> alignments = pairwise2.align.globalxx(sequenceA="ACCGT", sequenceB="ACG")
结果是两个字符串之间的对齐列表。每个比对都是一个命名元组,由两个比对序列、分数以及比对的开始和结束位置组成:
>>> print(alignments)
[Alignment(seqA='ACCGT', seqB='A-CG-', score=3.0, start=0, end=5), ...
您可以按索引或名称访问路线的每个元素:
>>> alignments[0][2]
3.0
>>> alignments[0].score
3.0
要获得漂亮的路线打印输出,请使用 format_alignment
模块的方法:
>>> from Bio.pairwise2 import format_alignment
>>> print(format_alignment(*alignments[0]))
ACCGT
| ||
A-CG-
Score=3
所有对齐函数都有以下参数:
两个序列:字符串、Biopython序列对象或列表。列表对于提供包含由一个以上字母编码的残基的序列很有用。
penalize_extend_when_opening
:boolean(默认值:false)。打开缺口时是否计算延期处罚。如果为False,则1的差距仅被处罚为“开放”处罚,否则将被处罚为“开放+扩展”。penalize_end_gaps
:布尔型。是否计算路线末端的间隙。默认情况下,它们计入全局路线,而不计入本地路线。设置penalize_end_gaps
To(Boolean,Boolean)允许您分别为两个序列指定是否应计算比对末尾的间隙。gap_char
:String(默认值:'-'
)。返回的对齐中用作间隙字符的字符。如果输入序列是列表,则必须将其更改为['-']
。force_generic
:boolean(默认值:false)。始终使用泛型、非缓存、动态编程函数(慢!)。用于调试。score_only
:boolean(默认值:false)。只得到最好的分数,不恢复任何排列。函数的返回值是分数。速度更快,使用的内存更少。one_alignment_only
:boolean(默认值:false)。仅恢复一个对齐。
对齐函数的其他参数取决于调用的函数。下面是一些示例:
找到两个序列之间的最佳全局比对。相同的字符被给予1分。不匹配或差距不扣分。
>>> for a in pairwise2.align.globalxx("ACCGT", "ACG"): ... print(format_alignment(*a)) ACCGT | || A-CG- Score=3 ACCGT || | AC-G- Score=3
和以前一样,不过是局部对齐。请注意,
format_alignment
将仅显示序列的比对部分以及起始位置。>>> for a in pairwise2.align.localxx("ACCGT", "ACG"): ... print(format_alignment(*a)) 1 ACCG | || 1 A-CG Score=3 1 ACCG || | 1 AC-G Score=3
恢复…的“历史性”行为
format_alignemt
即还显示了两个序列的未对齐部分,则使用新的关键字参数full_sequences
:>>> for a in pairwise2.align.localxx("ACCGT", "ACG"): ... print(format_alignment(*a, full_sequences=True)) ACCGT | || A-CG- Score=3 ACCGT || | AC-G- Score=3
进行全局对齐。相同的字符给2分,每个不相同的字符扣1分。不要惩罚差距。
>>> for a in pairwise2.align.globalmx("ACCGT", "ACG", 2, -1): ... print(format_alignment(*a)) ACCGT | || A-CG- Score=6 ACCGT || | AC-G- Score=6
同上,不同之处在于现在打开缺口时扣0.5分,延长缺口时扣0.1分。
>>> for a in pairwise2.align.globalms("ACCGT", "ACG", 2, -1, -.5, -.1): ... print(format_alignment(*a)) ACCGT | || A-CG- Score=5 ACCGT || | AC-G- Score=5
请注意,您可以使用关键字来提高可读性,例如:
>>> a = pairwise2.align.globalms("ACGT", "ACG", match=2, mismatch=-1, open=-.5, ... extend=-.1)
根据处罚的不同,一个序列中的空档之后可能是另一个序列中的空档。如果您不喜欢这种行为,请增加空档处罚:
>>> for a in pairwise2.align.globalms("A", "T", 5, -4, -1, -.1): ... print(format_alignment(*a)) A- -T Score=-2 >>> for a in pairwise2.align.globalms("A", "T", 5, -4, -3, -.1): ... print(format_alignment(*a)) A . T Score=-4
对齐函数还可以使用已包含在Biopython中的已知矩阵(在中
Bio.Align.substitution_matrices
):>>> from Bio.Align import substitution_matrices >>> matrix = substitution_matrices.load("BLOSUM62") >>> for a in pairwise2.align.globaldx("KEVLA", "EVL", matrix): ... print(format_alignment(*a)) KEVLA ||| -EVL- Score=13
使用参数
c
您可以定义自己的匹配函数和间隙函数。例如,要定义仿射对数间隙函数并使用它:>>> from math import log >>> def gap_function(x, y): # x is gap position in seq, y is gap length ... if y == 0: # No gap ... return 0 ... elif y == 1: # Gap open penalty ... return -2 ... return - (2 + y/4.0 + log(y)/2.0) ... >>> alignment = pairwise2.align.globalmc("ACCCCCGT", "ACG", 5, -4, ... gap_function, gap_function)
您可以为每个序列定义不同的间隙函数。自定义的匹配函数必须接受要比较的两个残数,并返回一个分数。
要查看函数参数的说明,请通过Help函数查看函数的文档字符串,例如键入 help(pairwise2.align.localds)
在Python提示符下。
- class Bio.pairwise2.identity_match(match=1, mismatch=0)¶
基类:
object
创建在路线中使用的匹配函数。
匹配和不匹配是当两个残基相等或不相等时要给出的分数。默认情况下,匹配为1,不匹配为0。
- __init__(match=1, mismatch=0)¶
初始化类。
- __call__(charA, charB)¶
调用已创建的匹配函数实例。
- class Bio.pairwise2.dictionary_match(score_dict, symmetric=1)¶
基类:
object
创建在路线中使用的匹配函数。
- 属性:
SCORE_DICT-其中关键字是元组(残数1,残数2)的字典,值是这些残数之间的匹配分数。
对称-指示分数是否对称的标志。
- __init__(score_dict, symmetric=1)¶
初始化类。
- __call__(charA, charB)¶
调用已创建的字典匹配实例。
- class Bio.pairwise2.affine_penalty(open, extend, penalize_extend_when_opening=0)¶
基类:
object
创建在路线中使用的间隙函数。
- __init__(open, extend, penalize_extend_when_opening=0)¶
初始化类。
- __call__(index, length)¶
调用已创建的GAP函数实例。
- Bio.pairwise2.calc_affine_penalty(length, open, extend, penalize_extend_when_opening)¶
计算缺口函数的惩罚分数。
- Bio.pairwise2.print_matrix(matrix)¶
打印出矩阵以供调试。
- Bio.pairwise2.format_alignment(align1, align2, score, begin, end, full_sequences=False)¶
将对齐方式巧妙地格式化为字符串。
重要提示:间隙符号必须为“-”(或 ['-'] 查看列表)!
由于Biopython1.71完全相同的匹配项显示为竖线字符,不匹配项显示为点,间隙显示为空格。
以前的版本仅使用管道字符来指示对齐区域(匹配、不匹配和间隙)。
此外,在局部比对中,如果比对不包括整个序列,则现在只显示比对的部分,以及比对的子序列的开始位置。起始位置以1为基数;因此起始位置n是 un-aligned 序列。
注意:这与比对的开始/结束值不同,后者给出了Python索引(从0开始)中的碱基/氨基酸 对齐 序列。
如果您想恢复“历史”行为,这意味着要显示整个序列(包括未对齐的部分),请使用
full_sequences=True
。在这种情况下,未对齐的前导部分和尾随部分也由匹配线中的空格表示。