Python| Inferring mRNA from Protein

在上一章,小编分享了Rosalind的一套题目:Rosalind Java|Inferring mRNA from Protein。

其题目大意如下:给出一段蛋白质序列,求其可能的mRNA数量,并将其取余数(mod)。
实现思路如下:
1.获取整条蛋白质序列,并分别获得其单独的氨基酸字符。
2.单个氨基酸对应其mRNA密码子个数,并做累乘。
3.累乘完全部氨基酸对应mRNA密码子个数后,考虑3个终止密码子的影响。


在博客之后留下了一个悬念,也就是用Python方案编写本道题。思路与上一篇如出一辙,以下提供其代码:

codon_map = {'UUU': 'F', 'CUU': 'L', 'AUU': 'I', 'GUU': 'V','UUC': 'F', 'CUC': 'L', 'AUC': 'I', 'GUC': 'V','UUA': 'L', 'CUA': 'L', 'AUA': 'I', 'GUA': 'V','UUG': 'L', 'CUG': 'L', 'AUG': 'M', 'GUG': 'V','UCU': 'S', 'CCU': 'P', 'ACU': 'T', 'GCU': 'A','UCC': 'S', 'CCC': 'P', 'ACC': 'T', 'GCC': 'A','UCA': 'S', 'CCA': 'P', 'ACA': 'T', 'GCA': 'A','UCG': 'S', 'CCG': 'P', 'ACG': 'T', 'GCG': 'A','UAU': 'Y', 'CAU': 'H', 'AAU': 'N', 'GAU': 'D','UAC': 'Y', 'CAC': 'H', 'AAC': 'N', 'GAC': 'D','UAA': 'Stop', 'CAA': 'Q', 'AAA': 'K', 'GAA': 'E','UAG': 'Stop', 'CAG': 'Q', 'AAG': 'K', 'GAG': 'E','UGU': 'C', 'CGU': 'R', 'AGU': 'S', 'GGU': 'G','UGC': 'C', 'CGC': 'R', 'AGC': 'S', 'GGC': 'G','UGA': 'Stop', 'CGA': 'R', 'AGA': 'R', 'GGA': 'G','UGG': 'W', 'CGG': 'R', 'AGG': 'R', 'GGG': 'G'
}def codon_frequency():frequency = {}for k, v in codon_map.items():if v not in frequency:frequency[v] = 0frequency[v] += 1return (frequency)def possible_sequences(sequence):f = codon_frequency()n = f['Stop']for seq in sequence:n *= f[seq]# print(n)return (n % 1000000)with open('C:/Users/Administrator/Desktop/rosalind_mrna.txt') as file: protein_seq = file.read().strip()
print(possible_sequences(protein_seq))

取余方式的调整——分步取余

在python的解决方案中,由于没有变量类型内存的限制,暴力累乘是可以得到正确结果的。然而由于java语言中long类型或者int类型都是有取值范围的,因此会出现内存溢出的情况。故而采用边累乘边取余的方式。 值得注意的是,累乘导致积数巨大,积数的位数不断飙升。高位数是不断受到低位数(比如个位和十位上的数)累乘而变化的。但是其低位的数却不受高位的影响,一句话来讲:百万位以下的数(低位数)该怎么乘还怎么成。因此分布取余能够在不影响最终结果的情况下减少计算负荷,减少计算资源的消耗。

Rosalind Python|Inferring mRNA from Protein相关推荐

  1. Rosalind Java|Inferring mRNA from Protein

    Rosalind编程问题之从蛋白序列推断可能的mRNA序列个数(并取余). Inferring mRNA from Protein Given: A protein string of length ...

  2. Rosalind Java| Translating RNA into Protein

    Rosalind编程问题之RNA翻译. Translating RNA into Protein Problem The 20 commonly occurring amino acids are a ...

  3. 生信刷题之ROSALIND——Part 4 (MPRT, MRNA, ORF)

    目录 写在前面 1.Finding a Protein Motif Problem Sample Dataset Sample Output Code Output 2.Inferring mRNA ...

  4. 【Rosalind】Finding a Protein Motif – 正则表达式的使用

    Rosalind习题Finding a Protein Motif 先祝大家中秋和国庆双节快乐! 在这个日历我还在努力地学习代码(指只有晚上写了2h白天都在睡觉)zzzz 最近在做Rosalind上的 ...

  5. Python:PDB文件中原子和残基重新编号

    Python脚本:PDB文件中原子和残基重新编号 Command: python renumber_pdb.py -i protein.pdb -a -r > output.pdb renumb ...

  6. Rosalind Java|Open Reading Frames

    Rosalind编程问题之读取开放阅读框. Open Reading Frames Problem Either strand of a DNA double helix can serve as t ...

  7. python重新编号功能_Python:PDB文件中原子和残基重新编号

    Python脚本:PDB文件中原子和残基重新编号 Command: python renumber_pdb.py -i protein.pdb -a -r > output.pdb renumb ...

  8. 数据警务_如何停止网上种族歧视警务

    数据警务 重点 (Top highlight) "You don't need to get all worked up over this." "You're too ...

  9. Genbank的gbff格式转gff3格式

    使用方法: [以下操作适用于linux和 MacOS,windows暂未测试] 非软件计算机等专业或者搞不定运行环境的同学也可以参考另一篇稍微简单点的python脚本:Genbank的gbff格式转g ...

最新文章

  1. MyBatis基础知识汇总
  2. SQL Server 字符串操作
  3. 这几个juniper巡检命令超实用
  4. jacoco底层原理解析
  5. HashTable和HashMap的区别(网上整理)
  6. Java GUI 基础知识
  7. C++类的定义和对象的创建
  8. android 逆向终极版,【首发】Eugenio改版最强OD(完美终结版)拥有众强大插件、足以秒杀所有强壳......
  9. Unity RTS 策略游戏等建造系统仿照COC游戏的插件 - City Building Perfect Kit
  10. 游戏感:虚拟感觉的游戏设计师指南——第十九章 游戏感的未来
  11. 嵌入式系统开发环境概述
  12. 使用Audacity软件分析浊音、清音、爆破音的时域及频域特性。
  13. 计算机更换固态硬盘方法,换SSD不重装系统的方法
  14. java ar教程_JavaFX教程整理
  15. Nide.js安装配置
  16. python发送短信接口_python 调用接口发短信
  17. java.net.url 中文乱码_asp.net URL中包含中文参数造成乱码的解决方法
  18. 人工智能技术与专利技术变革
  19. 2022杭电多校第八场题解
  20. 最不伤耳朵的耳机有哪些,分享五款不伤耳的骨传导耳机

热门文章

  1. CMMI 级别有几级,详细定义是什么
  2. 蚂蚁金服 Service Mesh 深度实践
  3. 数字 IC 设计、FPGA 设计秋招笔试题目、答案、解析(1)2022 紫光展锐(上)
  4. 仿58同城的伪静态写法
  5. 五线谱音名和组别对照表_认识五线谱,大谱表与钢琴对照表
  6. 人脸识别API/SDK 汇总(转)
  7. PTA字符串关键字的散列映射 (哈希表)
  8. 搜索引擎的小技巧【可以组合起来使用】:
  9. 2014年实习生招聘之武汉光庭信息技术有限公司实习生招聘部分笔试题(Java)—2014/04/14
  10. 测试计划、测试方案、测试策略、测试用例的区别