删除fasta序列中的特定模式

2024-10-01 15:47:00 发布

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

我有一个像这样的文件

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

我需要去掉方括号“[]”、“/”和这个符号“/”后面的核苷酸,所以基本上选择两个变体中的第一个。这是我的脚本,但我不知道如何指定程序,我需要一个字母后删除/。你知道吗

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

Tags: 文件aswithlineopenoutfastawrite
1条回答
网友
1楼 · 发布于 2024-10-01 15:47:00

您可以使用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))

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

相关问题 更多 >

    热门问题