用多个热休克蛋白消除爆炸打击

2024-05-20 15:28:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个大的BLAST(outfmt 6)输出文件。我有兴趣在这个文件中找到对等同系物,但我想排除与多个热休克蛋白点击,例如

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之间的比对共享多个hsp,而序列4和序列5之间的比对只有一个方向命中。我希望用python来实现这一点,这样我就可以将它与我的程序的其余部分一起插入。你知道吗

有人能给我一些建议吗?你知道吗

谢谢!你知道吗


Tags: 文件etc序列alignment兴趣blast蛋白seq2
1条回答
网友
1楼 · 发布于 2024-05-20 15:28:29

Python就可以了。你知道吗

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)

相关问题 更多 >