删除fasta序列中的特定模式

时间:2015-03-09 11:11:43

标签: python fasta

我有一个像这样的fasta文件,

>IWB12626
AACTTGAGGGACGTGCAGCTAAGGGAGGACTACTATCCAGCACCGGAGAA[T/C]GACATGATGATCACAGAGATGCGGGCTGAATCTTGCCTCCGGTTTGAGCA
>IWB49383
CMGCTCATTTCTGCCGGGCTCGATAGCTGCCCTGTTCTTGAGAAGATCTC[A/G]ATTAAGGTGGAGGGCGATCTCCGGACTTGTCCGCGTCCATTTCACGGGTC

我需要删除方括号" []"," /"和符号#34; /"之后的核苷酸,所以基本上选择两个变体中的第一个。这是我的脚本,但我不知道如何指定程序,我需要在/.

之后删除一个字母
with open('myfile.fasta') as f:
    with open('outfile.fasta', 'w') as out:
        for line in f:
            if line.startswith('>'):
                out.write(line)
            else:
                out.write(line.translate(None, '[/a-z0-9]'))

我的预期输出,

>IWB12626
AACTTGAGGGACGTGCAGCTAAGGGAGGACTACTATCCAGCACCGGAGAATGACATGATGATCACAGAGATGCGGGCTGAATCTTGCCTCCGGTTTGAGCA
>IWB49383
CMGCTCATTTCTGCCGGGCTCGATAGCTGCCCTGTTCTTGAGAAGATCTCAATTAAGGTGGAGGGCGATCTCCGGACTTGTCCGCGTCCATTTCACGGGTC

1 个答案:

答案 0 :(得分:2)

您可以使用re.sub功能。

with open('myfile.fasta') as f:
    with open('outfile.fasta', 'w') as out:
        for line in f:
            if line.startswith('>'):
                out.write(line)
            else:
                out.write(re.sub(r'[\[\]]|/.', '', line))

/.匹配/以及正斜杠后面的字符。匹配[\[\]][符号的]字符类。 |称为交替运算符或逻辑OR运算符,通常用于组合两种模式。因此,通过用空字符串替换所有匹配的字符将为您提供所需的输出。