Python 解析两个文件以汇集数据并创建新的Fasta文件

Python 解析两个文件以汇集数据并创建新的Fasta文件,python,biopython,fasta,Python,Biopython,Fasta,我有两个文件,human.fa和protein-coding_gene.txt(有数百种不同的蛋白质信息)。我必须通过蛋白质编码基因进行解析,然后通过human.fa(10个蛋白质名称)进行解析,以将数据汇集到一个新的fasta文件中 蛋白质编码_基因.txt: Protein1 PreviousNames1 PreviousSymbols1 Symbol1 Chromosome1 Protein2 PreviousNames2 PreviousSymbols2 Symbol2 Chromoso

我有两个文件,human.fa和protein-coding_gene.txt(有数百种不同的蛋白质信息)。我必须通过蛋白质编码基因进行解析,然后通过human.fa(10个蛋白质名称)进行解析,以将数据汇集到一个新的fasta文件中

蛋白质编码_基因.txt:

Protein1 PreviousNames1 PreviousSymbols1 Symbol1 Chromosome1
Protein2 PreviousNames2 PreviousSymbols2 Symbol2 Chromosome2
human.fa:

>Protein1  Sequence1
>Protein2 Sequence2
我需要一个新的fasta文件来输出:

>Protein1 Synonyms1 Chromsome1 Sequence1
>Protein2 Synonyms2 Chromosome2 Sequence2 
我目前的代码是:

类蛋白质:
定义初始(自我、姓名、同义词、染色体):
self.Name=Name
self.Synonyms=同义词
自我染色体=染色体
蛋白质=[]
以open('protein-coding_gene.txt','r')作为文件:
对于文件中的行:
parseline=line.rstrip().split(“\t”)
Name=parseline[2]
同义词=语法分析行[6]
染色体=parseline[7]
蛋白质.附加(蛋白质(名称,同义词,染色体))
f=开放(“human.fa”)
seqs={}
对于f中的i:
行=i.条带()
如果第[0]行=='>':
l=行。拆分()
gene=l[0][1:]
seqs[基因]=“”
其他:
seqs[基因]=seqs[基因]+系
f、 关闭()
对于蛋白质中的p:
打印(p.名称,p.同义词,p.染色体,sep=“,”)
对于名称,seq在seqs.items()中:
打印(名称,序号)
来自Bio import SeqIO
新人类=[]
SeqIO.write[newhuman,“fastaML.fa”,“fasta”)

现在它打印出我想要的所有蛋白质编码文件(名称、同义词、染色体)然后打印整个human.fa文件。我需要它进行排序,只打印fasta文件中的10个蛋白质名称,以及来自蛋白质编码基因.txt的信息和序列。如果您需要任何帮助,我们将不胜感激。

您想要的格式不是有效的fasta格式。。但是如果您仍然希望在
fastaML.fa
中获得相同的输出>然后不应该使用SeqIO.write()方法,而应该使用基本的文件处理

类蛋白质:
定义初始(自我、姓名、同义词、染色体):
self.Name=Name
self.Synonyms=同义词
自我染色体=染色体
def添加_序列(自身,序列):
self.Sequence=Sequence
蛋白质=[]
以open('protein-coding_gene.txt','r')作为文件:
对于文件中的行:
parseline=line.rstrip().split(“”)
Name=parseline[0]
同义词=语法分析行[1:4]
染色体=parseline[4]
蛋白质.附加(蛋白质(“>”+名称,同义词,染色体))
f=开放(“human.fa”)
seqs={}
gene=“”
对于f中的i:
行=i.条带()
如果第[0]行=='>':
l=行。拆分()
基因=l[0]
seqs[基因]=l[1]
其他:
seqs[基因]=seqs[基因]+系
f、 关闭()
对于蛋白质中的p:
对于名称,seq在seqs.items()中:
如果(p.Name==名称):
p、 添加顺序(seq)
以open('fastaML.fa','w')作为文件:
对于蛋白质中的p:
file.write(p.Name+“”+p.Synonyms[0]+“”+p.Synonyms[1]+“”+p.Synonyms[2]+“”+p.chromose+“”+p.Sequence+“\n”)
#我在这里使用了单个空格。您可以根据需要修改它。

.

谢谢你的帮助。如果你能帮我看看它在哪里,我得到了一个AttributeError。我检查了你的建议,但我不得不拒绝这些更改,因为这是一个一般性的回答,它给读者一个想法,甚至可能在将来帮助别人。通过查看你的代码,我可以判断AttributeError是由于
seqs[gene]=''
保留为空。相反,您应该执行
seqs[gene]=l[1]
,但是
文件中会出现另一个错误。write()
,因为它不接受多个参数。这就是我在其中使用串联操作的原因。