python 中给定 mrna 序列的密码子计数
Codon count on a given mrna sequence in python
这是我一直在尝试使用但无法正常工作的代码:
mrna = input("Please enter mRNA sequence: ")
start = mrna.find('AUG')
if start != -1:
while start + 2 < len(mrna):
codon = mrna[start:start + 3]
if codon == "UAA":
break
print(codon)
start += 3
预期的起始密码子:AUG
预期终止密码子:UAA 或 UAG 或 UGA
例如:
input = "AUGUGA"
output = 1
input = "GAGAUGUUGGUUUAA"
output = 3
我真的不知道怎么了。
您没有在代码中的任何地方显示数字。密码子数是结束索引和起始索引之间的差值,floor 除以 3。
您可以使用生成器来帮助您检查密码子。
mrna = input("Please enter mRNA sequence: ")
start = mrna.find('AUG')
if start != -1:
end, last = next((x, mrna[x:x + 3] for x in range(start + 3, len(mrna) - 3, 3) if mrna[x:x + 3] in ('UAA', 'UAG', 'UGA')), (len(mrna), 'end'))
print(f'{(end - start) // 3} codons between AUG and {last}')
else:
print('AUG not found')
生成器 (x, mrna[x:x + 3] for x in range(start + 3, len(mrna) - 3, 3) if mrna[x:x + 3] in ('UAA', 'UAG', 'UGA'))
遍历从索引 start + 3
到结尾的所有密码子,并生成与索引 ('UAA', 'UAG', 'UGA')
中任何内容匹配的密码子。 next
通常 returns 迭代器的下一个(第一个)元素。对于第二个参数,它 returns 额外的参数作为标记,而不是在迭代器用完时引发 StopIteration
。 //
是截断除法运算符,因此即使 len(mrna)
不是 start
.
的 3 的倍数,它也能正常工作
这是我一直在尝试使用但无法正常工作的代码:
mrna = input("Please enter mRNA sequence: ")
start = mrna.find('AUG')
if start != -1:
while start + 2 < len(mrna):
codon = mrna[start:start + 3]
if codon == "UAA":
break
print(codon)
start += 3
预期的起始密码子:AUG
预期终止密码子:UAA 或 UAG 或 UGA 例如:
input = "AUGUGA"
output = 1
input = "GAGAUGUUGGUUUAA"
output = 3
我真的不知道怎么了。
您没有在代码中的任何地方显示数字。密码子数是结束索引和起始索引之间的差值,floor 除以 3。
您可以使用生成器来帮助您检查密码子。
mrna = input("Please enter mRNA sequence: ")
start = mrna.find('AUG')
if start != -1:
end, last = next((x, mrna[x:x + 3] for x in range(start + 3, len(mrna) - 3, 3) if mrna[x:x + 3] in ('UAA', 'UAG', 'UGA')), (len(mrna), 'end'))
print(f'{(end - start) // 3} codons between AUG and {last}')
else:
print('AUG not found')
生成器 (x, mrna[x:x + 3] for x in range(start + 3, len(mrna) - 3, 3) if mrna[x:x + 3] in ('UAA', 'UAG', 'UGA'))
遍历从索引 start + 3
到结尾的所有密码子,并生成与索引 ('UAA', 'UAG', 'UGA')
中任何内容匹配的密码子。 next
通常 returns 迭代器的下一个(第一个)元素。对于第二个参数,它 returns 额外的参数作为标记,而不是在迭代器用完时引发 StopIteration
。 //
是截断除法运算符,因此即使 len(mrna)
不是 start
.