我有fasta格式的序列,在序列的开头包含17bp的引物。引物有时会出现错配。因此,我想删除序列的前17个字符,除了fasta标题。
序列如下所示:
> name_name_number_etc
SEQUENCEFOLLOWSHERE
> name_number_etc
SEQUENCEFOLLOWSHERE
> name_name_number_etc
SEQUENCEFOLLOWSHERE
我怎么能在python中这样做?
谢谢!乔恩
答案 0 :(得分:1)
with open('fasta_file') as f:
for line in f:
if not line.startswith('>'):
print line[17:]
答案 1 :(得分:1)
如果我理解正确,您必须仅从潜在多行序列的前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
答案 2 :(得分:0)
如果你的文件是
>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:]
答案 3 :(得分:0)
我不知道在这个帖子上发帖是否毫无意义,但是当我开始使用.fasta文件时,我遇到了一个真正帮助我的方法。
file = input('Input your fasta file')
o_file = open(file).readlines()
o_file = o_file[1:]
for line in o_file:
#do something