Python 3.x 如何使用biopython中的Seq.IO解析fasta字符串
我需要使用一个fasta字符串而不是fasta文件在python3的Seq.IO中解析它Python 3.x 如何使用biopython中的Seq.IO解析fasta字符串,python-3.x,biopython,fasta,Python 3.x,Biopython,Fasta,我需要使用一个fasta字符串而不是fasta文件在python3的Seq.IO中解析它 from Bio import SeqIO fasta_string = '>name\nACCTGTGGCTGCTTGCTTGCTTGGGCT' rec = SeqIO.parse(fasta_string, "fasta") print (rec[0]) 我读到我需要使用io模块创建一个文件对象,如 import io with io.StringIO() as f:
from Bio import SeqIO
fasta_string = '>name\nACCTGTGGCTGCTTGCTTGCTTGGGCT'
rec = SeqIO.parse(fasta_string, "fasta")
print (rec[0])
我读到我需要使用io模块创建一个文件对象,如
import io
with io.StringIO() as f:
f.write('abcdef')
print('gh', file=f)
f.seek(0)
print(f.read())
但是Seq.IO需要一个文件路径,不仅是目标文件,而且我不能写临时文件
有什么想法吗
提前谢谢你。我不太明白你的问题 无论如何:
from Bio import SeqIO
fasta_string = '>name\nACCTGTGGCTGCTTGCTTGCTTGGGCT'
rec = SeqIO.parse(fasta_string, "fasta")
print (rec[0])
给出错误:
FileNotFoundError: [Errno 2] No such file or directory: '>name\nACCTGTGGCTGCTTGCTTGCTTGGGCT'
所以要用BioPython将序列写入fasta文件
我可以使用:
from Bio import SeqIO
from Bio.Seq import Seq
from Bio.SeqRecord import SeqRecord
fasta_string = '>name\nACCTGTGGCTGCTTGCTTGCTTGGGCT'
fasta_string_name , fasta_string_seq = fasta_string.strip('>').split('\n')
print(fasta_string_name , fasta_string_seq,'\n\n') # this one just to check the values
# SeqRecord object see https://biopython.org/wiki/SeqRecord
rec = SeqRecord(
Seq(fasta_string_seq),
id='',
name='',
description=fasta_string_name)
print('SeqRecord object : ',rec, sep='\n') # this one just to check the SeqRecord object
recordz =[rec] #this one not necessary but if you have more rec
#I believe you need them into a list for SeqIO to write them out check it
SeqIO.write(recordz, "example.fasta", "fasta") #this one write out your string as fasta file
example.fast写入脚本路径的文件是:
> name
ACCTGTGGCTGCTTGCTTGCTTGGGCT
同样,我也不确定这是否是您想要实现的目标,请告诉我。好的,我想我是从这里得到的: 输出:
ID: name
Name: name
Description: name
Number of features: 0
Seq('ACCTGTGGCTGCTTGCTTGCTTGGGCT')
ID: name2
Name: name2
Description: name2
Number of features: 0
Seq('CCCCCCCCCGGGGGGGGGGGTTTTTTTAAA')
谢谢你的回复。其主要思想是将一个文件(包含许多记录)作为一个巨大的字符串传递给Seq.IO parse。我知道我可以自己解析这个fasta字符串,但是我想知道是否有任何选项可以使用Seq.IO parse而不将fasta作为文件保存和打开。我正在尝试解析流中的fasta文件,而不写入和读取文件。请参阅此处:Biopython从变量而不是文件解析请参阅答案2。必须将您的问题标记为重复才能保持原样此处:fastq_io=StringIO(rec)records=SeqIO.parse(fastq_io,“fastq”)fastq_io.close()不幸的是,我之前没有找到这篇文章,对此给您带来的不便深表歉意。非常感谢你的解释!
ID: name
Name: name
Description: name
Number of features: 0
Seq('ACCTGTGGCTGCTTGCTTGCTTGGGCT')
ID: name2
Name: name2
Description: name2
Number of features: 0
Seq('CCCCCCCCCGGGGGGGGGGGTTTTTTTAAA')