簡體   English   中英

閱讀三個不同的框架

[英]Reading at three different frames

所以我正在嘗試創建一個類,它在三個不同的幀中讀取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

我認為現在這幾乎是胡說八道,但我盡我所能。 如果有人能讓我知道我可以在這堂課中開始糾正的地方,那就太棒了。

首先,您不能指定一些值並命名變量,如start+1start+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("")

如果它適合您,請告訴我們。 干杯!!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM