我不得不浏览我的字典以获取我所有基因的分类单元,每次遇到一个分类单元时,我打开同名的.fasta
文件,在这个fasta文件中我必须查找我遇到的geneID分类研究。这是可能的,因为在我使用我的字典的文件中有“taxon1 | geneID1,taxon1 | geneID2,taxon2 | geneID1,...”。因此,当我在特定的fasta文件中遇到特定的geneID时,我必须存储特定geneID下的所有行,以便能够将其写入新文件中。 fasta文件看起来像:
>taxon|gene1
ACTGCATCGCTAGCTAGAAATCGCTA
TACGATCAAACCTAGCGATCTTACGA
>taxon|gene2
TAGCTAGCTAGCTAGAATATCCCGAT
GCTAGCAATGCTCTTCCGGTAGCTAT
因此,当我在fasta文件中遇到正确的geneID时,我必须复制/存储的行是以下2行所有ATGC。我做了一些函数来完成我说的所有内容,但是我被卡住了,而且文件的写入部分来自我库存的数据。这是我的代码的一部分:
def readFastaFile(taxonomy, searchGeneId):
fastaFile = open(taxonomy + ".fasta", "r")
banco = False
geneIdSequence = ""
for line in fastaFile:
if line[0] == ">":
elements = line.split("|")
taxonomy = elements[0]
geneID = elements[1]
if geneID == searchGeneId:
banco = True
else:
banco = False
else:
if banco == True:
geneIdSequence += line
fastaFile.close()
return geneIdSequence
def getSequencesFromFastasAndWriteThemInNewFastas(dictio):
for groupName in dictio:
taxonAndGene = dictio[groupName]
groupFastaFile = open(groupName + ".fasta", "w")
for taxon in taxonAndGene:
geneIDs = taxonAndGene[taxon]
#print("search" + str(geneIDs) + " in " + taxon + ".fasta")
for geneId in geneIDS:
readFastaFile(taxon, geneId)
groupFastaFile.write() #HERE is the part where i'm stuck
groupFastaFile.write("\n")
groupFastaFile.close()
我的问题出现在最后一行(由#HERE评论标记):
我不知道在()
之间写什么来将fasta文件中的数据写入我的新文件。
感谢您的回答。
答案 0 :(得分:0)
无论如何,我找到了解决问题的方法。
我添加了一行:
tempoGeneID = elements[1]
geneID = tempoGeneID[0:-1]
在我的功能中:
def readFastaFile(taxonomy, searchGeneId):
删除geneID末尾的“\ n”,然后添加行:
for geneID in geneIDs:
groupFastaFile.write(">" + taxon + "|" + geneID + "\n" + readFastaFile(taxon, geneID))
在我的功能中:
def getSequencesFromFastasAndWriteThemInNewFastas(dictio):
所以它按预期完美运作。如果我的帖子花了你一些时间,你很抱歉。祝你有美好的一天。