Python3在新文件

时间:2015-06-19 07:28:53

标签: python dictionary stock fasta

我不得不浏览我的字典以获取我所有基因的分类单元,每次遇到一个分类单元时,我打开同名的.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文件中的数据写入我的新文件。

感谢您的回答。

1 个答案:

答案 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):

所以它按预期完美运作。如果我的帖子花了你一些时间,你很抱歉。祝你有美好的一天。