所以我试图创建一个读取三个不同帧中DNA串的类 - 一个从0位(或第一个碱基)开始,另一个从位置1开始(第二个碱基),以及第三个开始在第2位(第三个基地)阅读。到目前为止,这就是我一直在玩的:
def codons(self, frame_one, frame_two, frame_three):
start = frame_one
while start + 3 <=len(self.seq):
yield (self.seq[start:start+3], start)
start += 3
start+1 = frame_two
while start + 3 <=len(self.seq):
yield (self.seq[start+1:start+4], start)
start += 3
start+2 = frame_three
while start + 3 <=len(self.seq):
yield (self.seq[start+2:start+5], start)
start += 3
我认为现在这几乎是胡说八道,但我尽我所能。如果有人能让我知道我可以在这堂课中开始纠正的地方,那就太棒了。
答案 0 :(得分:2)
首先,您无法指定某些值并为start+1
,start+2
等变量命名。接下来,由于它与生物信息学相关,您可以将您的问题标记为生物信息学。此外,你重复了很多次的东西,这对程序员来说太糟糕了。但是,您可以尝试使用以下代码段:
class Codons(object):
def __init__(self, seq):
self.seq = seq
def codons(self, frame_one, frame_two, frame_three):
while frame_one <=len(self.seq):
yield (self.seq[frame_one:frame_one+3])
frame_one += 3
while frame_two <=len(self.seq):
yield (self.seq[frame_two:frame_two+3])
frame_two += 3
while frame_three <=len(self.seq):
yield (self.seq[frame_three:frame_three+3])
frame_three += 3
test_codons = Codons("ATCGTG-")
val = test_codons.codons(0,1,2)
print("Codons are: ")
for i in val:
print(i)
print("")
让我们知道它是否适合您。干杯!!