使用更改元组写入文件

时间:2015-11-13 01:26:54

标签: python python-3.x bioinformatics biopython

我的代码贯穿一系列DNA,并记录了该序列中遇到的ORF的位置。我想完成两件事。

  1. 使程序循环,直到它发现所有的ORF不是它通过的第一个
  2. 将结果写入文本文件
  3. 我已将其设置为在文本文件中写入结果,但结果存储在元组中(每次在序列中找到ORF时都会更改)。这使得最后的文本文件只包含输入的最后一个序列的最后一个ORF,而不是创建列表。

    我的代码:

    \1

    输出文件导致:

    class SeqAnalyzer :
        def __init__(self,sequence):
            self.input = Seq(sequence)
            self.reverse = self.input.reverse_complement()
            self.sequence = str(self.input)
            self.stopcodons = ["TAG", "TAA", "TGA"]
            self.start = 'ATG'
            self.length = 0
            self.result = ("+",0,0,0,0)
    
        def codon(self,frame):
            start = frame
            while start +3 <=len(self.sequence):
                    yield (self.sequence[start:start+3],start)
                    start += 3
    
    
        def ORF(self, frame, direction):
            orf_beg = 0
            for i, index in self.codon(frame):
                if (
                    (str(i) in self.start) or
                    (not self.start and i not in str(self.stopcodons))
                    ):
                        orf_beg = index + 1
                elif i in self.stopcodons:
                    orf_ending = index + 3
                    length = (orf_ending - orf_beg) + 1
                    if length > self.length:
                        self.length = length
                        self.result = (direction, frame, orf_beg, orf_ending, length)
                    break
    
        def direction(self):
            direction = "+"
            for frame in range(3):
              self.ORF(frame, direction)
            direction = "-"
            for frame in range(3):
                self.sequence = self.reverse
                self.ORF(frame, direction)
            self.results()
    
        def results(self):
            print(self.result)
            file = open("tass2ORFdata-ATG-100.txt","w")
            file.write("{}{:d} {:>5d}..{:>5d} {:>5d}".format(
                    self.result[0], self.result[1], self.result[2],
                    self.result[3], self.result[4])
                    )
    

    而不是元组在不同点包含的所有变体:

    +1     0..   13    14
    

    我已经尝试了各种方法来解决这个问题,但到目前为止还没有任何方法可以解决这个问题。

1 个答案:

答案 0 :(得分:0)

"mqtt://<myhostname>:1883?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"

__init__

然后,而不是分配到 self.result = [("+",0,0,0,0), ] ,您需要self.result到它:

append

然后是时候打印了:

self.result.append(direction, frame, ... )