首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用多个HSP删除BLAST命中

使用多个HSP删除BLAST命中
EN

Stack Overflow用户
提问于 2018-09-22 10:08:17
回答 1查看 146关注 0票数 0

我有一个大爆炸(outfmt 6)输出文件。我有兴趣在这个文件中找到相互的同系物,但我想排除与多个HSP的命中,例如。

代码语言:javascript
复制
Seq1    Seq2    (alignment 1: evalue bitscore etc)
Seq1    Seq2    (alignment 2: evalue bitscore etc)
Seq3    Seq4    (alignment 1: evalue bitscore etc)
Seq4    Seq5    (alignment 1: evalue bitscore etc)
Seq2    Seq1    (alignment 1: evalue bitscore etc)
Seq2    Seq1    (alignment 2: evalue bitscore etc)
Seq4    Seq3    (alignment 1: evalue bitscore etc)

在这种情况下,只有序列3和4之间的对齐将被返回,因为在1到2之间共享多个HSPs,而在4和5之间的对齐只有单向命中。我希望在python中这样做,这样我就可以将它与我的程序的其余部分连接起来。

有人能告诉我任何可能引导我走向正确方向的线索吗?

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-22 15:16:35

Python在这种情况下是可以的。

代码语言:javascript
复制
from collections import defaultdict

hsp_count = defaultdict(int)
for line in open("file"):
    seq1, seq2, _ = line.split(maxsplit=2)
    hsp_count[seq1, seq2] += 1

already_checked = set()
for (seq1, seq2), val1 in hsp_count.items():
    if (seq2, seq1) in already_checked:
        continue
    val2 = hsp_count.get((seq2, seq1))
    if not val2:
        continue
    already_checked.add((seq1, seq2))
    if val1 == 1 and val2 == 1:
        print(seq1, seq2)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52455618

复制
相关文章

相似问题

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