代码之家  ›  专栏  ›  技术社区  ›  Gloom

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

  •  0
  • Gloom  · 技术社区  · 7 年前

    我有一个大的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)
    

    有人能给我一些建议吗?

    谢谢!

    1 回复  |  直到 7 年前
        1
  •  1
  •   Hielke Walinga    7 年前

    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)
    
    推荐文章