首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用pairwise2在生物工程中匹配残基的索引

用pairwise2在生物工程中匹配残基的索引
EN

Stack Overflow用户
提问于 2018-06-05 03:46:15
回答 1查看 102关注 0票数 0

我想知道在python中使用pairwise2匹配字符串的残差索引。

例如,我有两个字符串

代码语言:javascript
复制
A:' EEEEE      HHH     HHH             EEEEE'

代码语言:javascript
复制
B: 'EEE       EEEE       HHH'

使用以下代码:

代码语言:javascript
复制
from Bio import pairwise2
from Bio.pairwise2 import format_alignment

alignment = pairwise2.align.localdc(A,B, matrix,gap_function_1,gap_function_2)

我得到的对齐之一是:

代码语言:javascript
复制
EEE-------EE---      HHH     HHH             EEEEE
|||       ||   |||||||||
EEE       EEEE       HHH--------------------------
  Score=29.6

我想要获取匹配的索引,即序列A中与序列B匹配的所有EsHs' '的原始位置。

我该怎么做?

EN

回答 1

Stack Overflow用户

发布于 2018-06-07 17:06:56

我假设A中的第一个空格是一个打字错误?否则,对齐方式看起来会不一样。

因此,假设:

代码语言:javascript
复制
A = 'EEEEE      HHH     HHH             EEEEE'
B = 'EEE       EEEE       HHH'

alignment = """EEE-------EE---      HHH     HHH             EEEEE
|||       ||   |||||||||
EEE       EEEE       HHH--------------------------
  Score=29.6"""

我们可以编写一个函数compare()

代码语言:javascript
复制
def compare(align, matches, original):
    result = []
    index = -1
    for char, match in zip(align, matches):
        if char == '-':
            index += 0
        else:
            index += 1
        if match == '|':
            assert original[index] == char
            result.append(index)
    return result

然后

代码语言:javascript
复制
align_A, matches, align_B, score = alignment.splitlines()
print(compare(align_A, matches, A))

提供[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13]。快速的视觉检查确认了这一点:A的前14个字符是匹配的(5个Es,6个空格和3个Hs)。和

代码语言:javascript
复制
print(compare(align_B, matches, B))

提供[0, 1, 2, 10, 11, 15, 16, 17, 18, 19, 20, 21, 22, 23]

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50687768

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档