0

だから私は、3 つの異なるフレームで DNA 文字列を読み取るクラスを作成しようとしています。ポジション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

この時点でかなりばかげていると思いますが、最善を尽くしました。このクラスでどこから修正を開始できるかについて誰かが私にアイデアを与えることができれば、それは素晴らしいことです.

4

1 に答える 1

2

まず第一に、いくつかの値を代入して のような変数に名前を付けることはできませstart+1start+2。次に、バイオインフォマティクスに関連しているため、質問にバイオインフォマティクスのタグを付けることができます。また、多くのことを 3 回繰り返しているのは、プログラマーとしてあまりにも悪いことです。ただし、次のスニペットを試すことができます。

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("")

そして、それがあなたのために働いたかどうか私たちに知らせてください. 乾杯!!

于 2014-05-13T00:42:24.820 に答える