扫描阅读框[3]的Python(Scan Reading frame [3] Python)

2019-09-22 16:52发布

我想编写一个脚本,可以使用3阅读框来检测特定的模式,然后从该序列,去3的倍数找到另一种模式

sequence = 'TCATGAGGCTTTGGTAAATAT'

我需要它:

...以3阅读框扫描直到它找到一个所希望的图案(即,“ATG”)

......标记,其中所述第一图案(“ATG”)在原始序列开始的位置,并在那里的第二图案开始(“TAA”)的位置。 在这种情况下,这将是关于“ATG”和15关于“TAA”位置3。

...创建与每个随后的第一图案三重态的列表,直到它到达第二图案“TAA”(即,“ATG”,“AGG”,“CTT”,TGG”,‘TAA’)

如何构建一个阅读框架中套3读它? 我知道,一旦我找到一个办法让阅读我可以创建一个if语句说

reading_frame=[]

for frame in sequence:
    if k == 'ATG':
        reading_frame.append(k)

第一我需要的阅读框

Answer 1:

sequence = 'TCATGAGGCTTTGGTAAATAT'

frame1 = sequence.find('ATG')

my_list = []

for codon in range(len(sequence)):
    next_codon = sequence[frame1:frame1+3]
    my_list.append(next_codon)
    frame1 +=3
    if next_codon == 'TAA':
        break

print my_list

[ 'ATG', 'AGG', 'CTT', 'TGG', 'TAA']



Answer 2:

你可以通过分解你的启动sequence为一系列3元帧

sequence = 'TCATGAGGCTTTGGTAAATAT'
frames = [sequence[i:i+3] for i in range(0,len(sequence),3)]
print "Frames:",frames
frames_before_ATG,frames_after_ATG = frames[:frames.index("ATG")],frames[frames.index("ATG")+1:]

然后迭代的frames列表,直到找到第一个图案。



Answer 3:

为了找到的第一个位置ATGsequence ,越容易是目前为止:

>>> sequence.find('ATG')

在你的榜样,给出2 ,图案位置的索引。 然后,就找那个位置之后的第二个模式:

>>> idx_1 = sequence.find('ATG')
>>> idx_2 = sequence[idx_1:].find('TTA')

(该sequence[idx_1:]返回的元素sequence位置之后idx_1 )。

请记住, idx_2被抵消idx_1 (即,模式2的原始列表的实际位置是idx_2+idx_1 。需要注意的是,如果一个模式无法找到,该.find方法将返回-1。你可能想添加一些测试来处理这种情况。

一旦你发现了两种模式,你可以构造作为中介的名单:

>>> subsequence = sequence[idx_1:idx_2+idx_1]
>>> [subsequence[i:i+3] for i in range(0, len(subsequence), 3)]

你可以很容易地遍历下面这个例子的模式列表。

您可能需要检查是否idx_1%3 == 0 ,即如果idx_1为三(假设第一帧开始于0)的一个倍数。 如果没有,至少你知道你的序列的开始将被丢弃。



文章来源: Scan Reading frame [3] Python