首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python中给定mrna序列的密码子计数

python中给定mrna序列的密码子计数
EN

Stack Overflow用户
提问于 2019-09-23 18:07:19
回答 1查看 523关注 0票数 0

这是我一直试图使用的代码,但它不能正常工作:

代码语言:javascript
复制
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

预期停止密码子:UAAUAGUGA,例如:

代码语言:javascript
复制
input = "AUGUGA"
output = 1

input = "GAGAUGUUGGUUUAA"
output = 3

我真的不知道怎么回事。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-09-23 18:27:27

您在代码中的任何位置都不会显示数字。密码子数为末端与起始指数之差,层除以3。

你可以用发电机帮你检查密码。

代码语言:javascript
复制
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通常返回迭代器的下一个(第一个)元素。对于第二个参数,它以哨兵的形式返回额外的参数,而不是在迭代器运行完时引发StopIteration//是截断除法操作符,所以即使len(mrna)start之间的倍数不是3的倍数,它也能正确工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58067930

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档