Python:从fasta格式的序列开头删除字符

2024-05-16 23:02:03 发布

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

我有fasta格式的序列,在序列的开头包含17个bp的引物。引物有时会出现不匹配。因此,我想删除序列的前17个字符,除了fasta头。在

序列如下:

> name_name_number_etc
SEQUENCEFOLLOWSHERE
> name_number_etc
SEQUENCEFOLLOWSHERE
> name_name_number_etc
SEQUENCEFOLLOWSHERE

如何在python中实现这一点?在

谢谢!乔恩


Tags: namenumber格式etc序列fasta引物bp
3条回答
with open('fasta_file') as f:
    for line in f:
        if not line.startswith('>'):
            print line[17:]

如果我理解正确的话,您只需要从潜在的多行序列的前17个字符中删除底漆。你问的有点难。是的,有一个简单的解决方案,但在某些情况下可能会失败。在

我的建议是:使用Biopython来执行FASTA文件的解析。直接从教程

from Bio import SeqIO
handle = open("ls_orchid.fasta")
for seq_record in SeqIO.parse(handle, "fasta") :
    print seq_record.id
    print repr(seq_record.seq)
    print len(seq_record)
handle.close()

然后重写序列,删除前17个字母。我现在的机器上没有安装biopython,但是如果你看一下教程,总共只需要15行代码。在

如果你想做硬核,手工做,你必须做这样的事情(从第一张海报,修改)

^{2}$

如果你的文件看起来像

>MCHU - Calmodulin - Human, rabbit, bovine, rat, and chicken
ADQLTEEQIAEFKEAFSLFDKDGDGTITTKELGTVMRSLGQNPTEAELQDMINEVDADGNGTID
FPEFLTMMARKMKDTDSEEEIREAFRVFDKDGNGYISAAELRHVMTNLGEKLTDEEVDEMIREA
DIDGDGQVNYEEFVQMMTAK*

如果你想删除每个序列行的前17个字符,你可以这样做:

^{2}$

相关问题 更多 >