我有在包含17碱基对引物在序列的开头的fasta格式的序列。和引物有时不匹配。因此,我想删除的序列的第一个17个字符,除了从FASTA报头。

的序列是这样的:

> name_name_number_etc
SEQUENCEFOLLOWSHERE
> name_number_etc
SEQUENCEFOLLOWSHERE
> name_name_number_etc
SEQUENCEFOLLOWSHERE

我怎样才能做到这一点在Python?

谢谢!乔恩

有帮助吗?

解决方案

如果正确地明白你必须只从一个潜在的多序列的前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行代码的总额。

如果你想要去的铁杆,和做手工,你必须做这样的事情(从第一张海报,修改)

f = open('sequence.fsa')

first_line = False
for line in f.xreadlines():
    if line[0] == ">":
        first_line=True
        print line,
    else:
        if first_line:
             print line[17:],
        else:
             print line,
        first_line = False

其他提示

with open('fasta_file') as f:
    for line in f:
        if not line.startswith('>'):
            print line[17:]

如果你的文件看起来像

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

和要删除所有序列行的第一个字符17,你想要做的是这样的:

f = open('sequence.txt')

for line in f.xreadlines():
    if line.find('>') < 0:
        print line.strip()[17:]

我不知道是否张贴在此线程是没有意义的,但我碰到一个方法来真的帮了我,而我开始与.fasta文件的工作。

file = input('Input your fasta file')
o_file = open(file).readlines()

o_file = o_file[1:]

for line in o_file:
     #do something
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top