Python 在fasta文件中组合具有类似头的序列

Python 在fasta文件中组合具有类似头的序列,python,Python,我有一个fasta文件,其中包含如下序列: >1 | A actgcttctttcaa >1 | B cccaatggtac >1 | C ttccggaaa >2 | A actgcggcaa >2 | B cccaatac >2 | C tacatta ........ >1000 | A actgactg >1000 | B aaccggttaacc >1000 | C ttcgttcg 我希望将标题具有相同数字的序列组合在一起,如下

我有一个fasta文件,其中包含如下序列:

>1 | A
actgcttctttcaa
>1 | B
cccaatggtac
>1 | C
ttccggaaa
>2 | A
actgcggcaa
>2 | B
cccaatac
>2 | C
tacatta
........
>1000 | A
actgactg
>1000 | B
aaccggttaacc
>1000 | C
ttcgttcg
我希望将标题具有相同数字的序列组合在一起,如下所示

>1
actgcttctttcaacccaatggtacttccggaaa
>2
cccaataccccaatactacatta
............
>1000
actgactgaaccggttaaccttcgttcg
现在我不知道怎么做了?有人能帮上忙吗?

在Python 3中:

from collections import defaultdict

with open(input_file_name) as f:
    d = defaultdict(list)
    lines = [l.strip() for l in f.readlines()]
    lines = [l for l in lines if l]
    if len(lines) % 2:
        print("WARNING: Odd number of lines")

    for line1, line2 in zip(lines[::2], lines[1::2]):
        n, *_ = line1[1:].split('|')
        d[int(n)].append(line2.strip())

    lines = ['>{:d}\n{:s}\n'.format(k, ''.join(v)) for k, v in d.items()]

with open(output_file_name, 'w') as f:
    f.writelines(lines)
上面的代码假设对于给定的数字ID(例如,1、2、3,…),子字符串(或它们被称为什么)按字母顺序排列(a、B、C)。我想说的是,如果,例如

>1 | B
cccaatggtac
>1 | C
ttccggaaa
>1 | A
actgcttctttcaa

您仍然希望获得
actgcttctttcaacccaatggtacttccggaaa

尝试将FASTA转换为TSV。使用Pandas操作数据并将TSV转换回FASTA。网上有用于格式转换的工具。我查过了。非常感谢,我想这可能是正确的方法。另请看