我的代码贯穿一系列DNA,并记录了该序列中遇到的ORF的位置。我想完成两件事。
我已将其设置为在文本文件中写入结果,但结果存储在元组中(每次在序列中找到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
我已经尝试了各种方法来解决这个问题,但到目前为止还没有任何方法可以解决这个问题。
答案 0 :(得分:0)
在"mqtt://<myhostname>:1883?maximumConnections=1000&wireFormat.maxFrameSize=104857600"
集
__init__
然后,而不是分配到 self.result = [("+",0,0,0,0), ]
,您需要self.result
到它:
append
然后是时候打印了:
self.result.append(direction, frame, ... )