在三个不同的框架下阅读

2024-09-28 23:17:22 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我尝试创建一个类,它在三个不同的帧中读取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

我认为这是胡说八道,但我已经尽力了。如果有人能给我一个想法,我可以开始纠正在这节课上,那将是伟大的。你知道吗


Tags: 字符串selflendefoneframestartseq
1条回答
网友
1楼 · 发布于 2024-09-28 23:17:22

首先,不能赋值和命名变量,如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("")

让我们知道它是否对你有用。干杯!!你知道吗

相关问题 更多 >