Bio.pairwise2模块

使用动态规划算法的成对序列比对。

这提供了获得两个序列之间的全局和局部比对的功能。全局对齐会找到两个序列中所有字符之间的最佳一致性。局部对齐只找到最好对齐的子索。局部比对必须具有正分才能报告,并且不会因“零计数”匹配而扩展。这意味着局部对齐始终以正计数匹配开始和结束。

进行比对时,可以指定匹配分数和空位罚分。 匹配分数指示序列中两个字符的比对之间的兼容性。高度相容的性状应给予正分,不相容的性状应给予负分或0分。 差距惩罚应该是负的。

此模块中的对齐函数的名称遵循约定<alignment type>XX,其中<alignment type>是“全局”或“本地”,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 :布尔值(默认值:False)。拉开空档时是否计入延期处罚。如果为假,差距为1只会受到“开放”处罚,否则会受到“开放+延长”处罚。

  • penalize_end_gaps :布尔值。是否计算路线两端的间隙。默认情况下,它们被计入全局对齐,但不计入局部对齐。设置 penalize_end_gaps to(bo布尔,bo布尔)允许您分别指定两个序列是否应计算对齐结束时的间隙。

  • gap_char :字符串(默认: '-' ).返回的对齐中使用哪个字符作为间隔字符。如果输入序列是列表,则必须将其更改为 ['-'] .

  • force_generic :布尔值(默认值:False)。始终使用通用的、非缓存的动态编程函数(慢!)。为了调试。

  • score_only :布尔值(默认值:False)。只获得最好的分数,不恢复任何对齐。该函数的返回值是分数。速度更快且内存更少。

  • one_alignment_only :布尔值(默认值: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(pairwise2.align.localds) 在Python提示符处。

class Bio.pairwise2.Alignment(seqA, seqB, score, start, end)

基类:tuple

__getnewargs__()

将自我返回为一个简单的二元组。 由复制和腌制使用。

__match_args__ = ('seqA', 'seqB', 'score', 'start', 'end')
static __new__(_cls, seqA, seqB, score, start, end)

创建对齐的新实例(seqA、seqB、分数、开始、结束)

__replace__(**kwds)

返回新的对齐对象,用新值替换指定字段

__repr__()

返回格式良好的表示字符串

__slots__ = ()
end

字段号4的收件箱

score

字段2的收件箱

seqA

字段号0的收件箱

seqB

字段号1的收件箱

start

字段号3的收件箱

class Bio.pairwise2.identity_match(match=1, mismatch=0)

基类:object

创建匹配函数以用于对齐。

匹配和错配是当两个残基相等或不相等时给出的分数。 默认情况下,匹配为1,不匹配为0。

__init__(match=1, mismatch=0)

初始化课程。

__call__(charA, charB)

调用已创建的匹配函数实例。

__firstlineno__ = 1256
__static_attributes__ = ('match', 'mismatch')
class Bio.pairwise2.dictionary_match(score_dict, symmetric=1)

基类:object

创建匹配函数以用于对齐。

属性:
  • 分数_dict - 一个字典,其中键是二元组(残基1、残基2),值是这些残基之间的匹配分数。

  • 对称 - 指示分数是否对称的标志。

__init__(score_dict, symmetric=1)

初始化课程。

__call__(charA, charB)

调用已经创建的字典匹配实例。

__firstlineno__ = 1275
__static_attributes__ = ('score_dict', 'symmetric')
class Bio.pairwise2.affine_penalty(open, extend, penalize_extend_when_opening=0)

基类:object

创建用于对齐的间隙函数。

__init__(open, extend, penalize_extend_when_opening=0)

初始化课程。

__call__(index, length)

调用已创建的间隙函数实例。

__firstlineno__ = 1301
__static_attributes__ = ('extend', 'open', 'penalize_extend_when_opening')
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)

将对齐方式漂亮地格式化为字符串。

重要信息:间隙符号必须是“-”(或 ['-'] 列表)!

由于Biopython 1.71相同的匹配用管道字符显示,不匹配用点显示,间隙用空间显示。

之前的版本仅使用管道字符来指示对齐的区域(匹配、不匹配和间隙)。

此外,在局部比对中,如果比对不包括整个序列,则现在仅示出比对部分以及比对序列的起始位置。起始位置是基于1的;因此起始位置n是序列中的第n个碱基/氨基酸。 un-aligned 顺序

注意:这与对齐的开始/结束值不同,后者给出了对齐中碱基/氨基酸的Python指数(以0为基础) aligned 序列的

如果你想恢复“历史”行为,这意味着显示整个序列(包括未对齐的部分),使用 full_sequences=True .在这种情况下,未对齐的前半部分和后半部分也由匹配线中的空白指示。