Rosalind Java|Inferring mRNA from Protein
Rosalind编程问题之从蛋白序列推断可能的mRNA序列个数(并取余)。
Inferring mRNA from Protein
Given: A protein string of length at most 1000 aa.
Sample input:
MA
Return: The total number of different RNA strings from which the protein could have been translated, modulo 1,000,000. (Don’t neglect the importance of the stop codon in protein translation.)
Sample output:
12
题目大意很容易理解:给出一段蛋白质序列,求其可能的mRNA数量,并将其取余数(mod)。
实现思路如下:
1.获取整条蛋白质序列,并分别获得其单独的氨基酸字符。
2.单个氨基酸对应其mRNA密码子个数,并做累乘。
3.累乘完全部氨基酸对应mRNA密码子个数后,考虑3个终止密码子的影响。
下面是实现代码:
public class Inferring_mRNA_from_Protein {public static void main(String[] args) {Scanner sc = new Scanner(System.in);System.out.println("请输入蛋白序列:");String protein = sc.nextLine();TransferRNA(protein);}//1.找到每个氨基酸对应的RNA密码子数量并进行累乘public static void TransferRNA(String protein) {int pn = 1;//初始值设定为1或者0都可,后面密码子检索时都会覆盖。long mRNAnum = 3;//终止密码子有三个for (int n = 0; n < protein.length(); n++) {switch (protein.charAt(n)) {case 'I':pn = 3;break;case 'M':pn = 1;break;case 'T':pn = 4;break;case 'N':pn = 2;break;case 'K':pn = 2;break;case 'S':pn = 6;break;case 'R':pn = 6;break;case 'L':pn = 6;break;case 'P':pn = 4;break;case 'H':pn = 2;break;case 'Q':pn = 2;break;case 'V':pn = 4;break;case 'A':pn = 4;break;case 'D':pn = 2;break;case 'E':pn = 2;break;case 'G':pn = 4;break;case 'F':pn = 2;break;case 'Y':pn = 2;break;case 'C':pn = 2;break;case 'W':pn = 1;break;default:break;}mRNAnum *= pn;mRNAnum = mRNAnum % 1000000;}System.out.println(mRNAnum);}
}
为什么要取余数
在本道题的尾部,Rosalind留下了一个问题:在推断mRNA from Protein时为什么要取其余数。从计算内存占用容量角度来说,无论是int还是long类型变量,其存储范围都是有限的,不能无限累乘。但是由于我们拿到的蛋白质序列是非常长的,而每个氨基酸几乎都有多个密码子(除了甲硫氨酸等),这就使得累乘结果指数级增长,最终超出内存。因此在这里以一百万为界,取余可以等效为取出溢出的累乘数,节省计算资源。
不过在python中不会出现类似内存溢出的情况,但是取余依旧可以有效地节省计算资源,便于展示最终结果。python本道题的代码会在下篇给出。至于取余是否可能还有其他生物学意义,小编暂时没有头绪,欢迎各位大佬指点。
Rosalind Java|Inferring mRNA from Protein相关推荐
- Rosalind Python|Inferring mRNA from Protein
Python| Inferring mRNA from Protein 在上一章,小编分享了Rosalind的一套题目:Rosalind Java|Inferring mRNA from Protei ...
- Rosalind Java| Translating RNA into Protein
Rosalind编程问题之RNA翻译. Translating RNA into Protein Problem The 20 commonly occurring amino acids are a ...
- Rosalind Java|Open Reading Frames
Rosalind编程问题之读取开放阅读框. Open Reading Frames Problem Either strand of a DNA double helix can serve as t ...
- Rosalind Java|Locating Restriction Sites
Rosalind编程问题之检索限制性位点. Locating Restriction Sites Problem: A DNA string is a reverse palindrome if it ...
- Rosalind Java|Matching Random Motifs
Rosalind编程问题之计算随机序列出现并匹配待比对序列的概率. 跟Rosalind Java|Introduction to Random Strings有异曲同工之妙. Matching Ran ...
- Rosalind Java| Computing GC Content
Rosalind编程问题之计算GC含量. Computing GC Content Problem The GC-content of a DNA string is given by the per ...
- Rosalind Java| Counting Point Mutations
Rosalind编程问题之计数核酸序列突变数. Counting Point Mutations Problem Given two strings s and t of equal length, ...
- Rosalind Java|Longest Increasing Subsequence动态规划算法
Rosalind编程问题之计算集合中最长的递增元素子集. Longest Increasing Subsequence Problem: A subsequence of a permutation ...
- Rosalind Java| Finding a Shared Motif
Rosalind编程问题之寻找共有的motif. Finding a Shared Motif Problem A common substring of a collection of string ...
最新文章
- 记录 FreeBSD
- 美团/力扣(647)--回文字串
- (七)Vue 项目规范
- 数据可视化|实验四 分析1996-2015年人口数据特征间的关系
- html 图片行内剧中,HTML入门(转义字符、行内样式和块级元素、定位、锚点、跑马灯标签、图片标签、表格标签的讲解)...
- 两个摄像头合成一路_64个高空抛物摄像头安装到位 同德社区居民双手点赞
- 关于matlab匿名函数,求导
- **python入门实战**-华氏度转摄氏度python代码
- python2中urllib.unquote乱码的原因与解决方法
- 高通WLAN稳定和功耗分析--目前高通项目支持的功耗策略
- installshield 如何实现Oracle数据库脚本的执行功能
- BZOJ4049 : [Cerc2014] Mountainous landscape
- Android编程权威指南[pdf]
- 设计之路 -- 如何进行软件需求分析?
- 关于微信聊天界面更换背景
- 如何快速下载CNCF Logos-收藏
- KDE-Graphics(KDE图形图像软件)先容
- sus 逆向 writrup
- Pycharm下载地址、汉化方法与常用快捷键
- zookeeper分布式调度中心