gpt4 book ai didi

python - 为序列中某些事件之间的值创建一个列表。 。 。 Python

转载 作者:行者123 更新时间:2023-11-30 23:40:37 25 4
gpt4 key购买 nike

我将发布一个关于阅读框架的上一个问题的后续问题。

sequence = 'AAATGAAATAAGGATGGGGTAGTATGATGTGTTT'

我最终正在寻找特定的模式“ATG”,并且我想扫描输入序列直到找到它。一旦找到,我希望它继续读取 3 的帧,直到找到另一个序列“TAA”或“TAG”或“TGT”,然后继续扫描,直到找到下一个具有下游“TAA”的“ATG” '或'TAG'或'TGT'

codon_list = ['ATG','AAA','TAA'],['ATG','GGG','TAG'],['ATG','ATG','TGT']

我正在尝试这个

start_frame = sequence.find('ATG')

但它只会给我第一次出现“ATG”。 (即“2”)

只是为了我写的第一个密码子列表

for codon in range(len(sequence)):
next_codon = fdna[start_frame:start_frame + 3]
codon_list.append(next_codon)
start_frame = start_frame + 3
if next_codon == 'TAA':
break
if next_codon == 'TAG':
break
elif next_codon=='TGT':
break
print codon_list
>>> ['ATG','AAA','TAA']

它仅适用于第一次出现“ATG”的情况。

下一部分是我想为每个密码子创建一个名称(0,1,2,3,...),我想我已经弄清楚了该部分:

indx = range(0,len(codon_list))

indx_codon = dict(zip(indx,codon_list)

indx_codon = {0:['ATG','AAA','TAA'],1:['ATG','GGG','TAG'],2:['ATG','ATG','TGT']}

codon_start = ['2','13','23']
codon_end = ['8','21','31']
codon_positions = []

for p,q in zip(codon_start,codon_end):
codon_positions.append(str(p)+':'+str(q))

print codon_positions
>>> ['2:8', '13:21', '23:31']

所以我最大的问题是 .find() 函数仅适用于第一次出现,并且当我创建索引时如果存在“TAA”或“TAG”,它会变得困惑' 或 'ATG' 之前的 'TGT'('ATG' 应该是 3 的阅读框的开始)

如何创建遵循这些条件的多个序列的列表(即将序列转换为 codon_list)?

最佳答案

这是一个使用正则表达式的相当简洁的解决方案:

import re
sequence = 'AAATGAAATAAGGATGGGGTAGTATGATGTGTTT'
codons = re.findall(r'ATG(?:...)*?(?:TAA|TAG|TGT)', sequence)
codon_list = [[s[i:i+3] for i in range(0, len(s), 3)] for s in codons]

结果:

>>> codon_list
[['ATG', 'AAA', 'TAA'], ['ATG', 'GGG', 'TAG'], ['ATG', 'ATG', 'TGT']]

关于python - 为序列中某些事件之间的值创建一个列表。 。 。 Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12539191/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com