Python 3.x 如何使用biopython中的Seq.IO解析fasta字符串

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:

我需要使用一个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:
    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')