java如何实现基因序列比较
导读:本文共1828字符,通常情况下阅读需要6分钟。同时您也可以点击右侧朗读,来听本文内容。按键盘←(左) →(右) 方向键可以翻页。
摘要: 设计算法,计算两给定基因序列的相似程度。人类基因由4种核苷酸,分别用字母ACTG表示。要求编写一个程序,按以下规则比较两个基因序列并确定它们的相似程度。即给出两个基因序列AGTGATG和GTTAG,它们有多相似呢?测量两个基因相似度的一种方法称为对齐。使用对齐方法可以在基因的适当位置加入空格,让两个基因的长度相等,然后根据基因的分值矩阵计算分数。看了很多代码基本... ...
目录
(为您整理了一些要点),点击可以直达。设计算法,计算两给定基因序列的相似程度。
人类基因由4种核苷酸,分别用字母ACTG表示。要求编写一个程序,按以下规则比较两个基因序列并确定它们的相似程度。即给出两个基因序列AGTGATG和GTTAG,它们有多相似呢?测量两个基因相似度的一种方法称为对齐。使用对齐方法可以在基因的适当位置加入空格,让两个基因的长度相等,然后根据基因的分值矩阵计算分数。
看了很多代码基本上都是用c++或者c写的,但是习惯性写java就用java实现一下
基本的思路就是,和背包问题差不多,实现还是模仿填表的形式去实现的
表达式:
s1 = result[i-1][j-1] + getScore(X[i], Y[j]) 这个是x,y序列使用坐标匹配
s2 = result[i-1][j] + getScore(X[i], ‘-') 这个是x序列匹配y的 ‘-'
s3 = result[i][j-1] + getScore('-', Y[j]) 这个是y序列匹配x的 ‘-'
result[i][j] = max(s1,s2,s3) 找出三个中最大的就是所求的值
packagealgorithmClassSet.three;importjava.util.HashMap;importjava.util.Map;/***s1=result[i-1][j-1]+getScore(X[i],Y[j])这个是x,y序列使用坐标匹配*s2=result[i-1][j]+getScore(X[i],'-')这个是x序列匹配y的‘-'*s3=result[i][j-1]+getScore('-',Y[j])这个是y序列匹配x的‘-'*result[i][j]=max(s1,s2,s3)找出三个中最大的就是所求的值*m*n*/publicclassGeneSequenceComparison{publicstaticvoidmain(String[]args){dealIt();}privatestaticvoiddealIt(){String[]X={"A","G","T","G","A","T","G"};String[]Y={"G","T","T","A","G"};intm=X.length+1;intn=Y.length+1;int[][]result=newint[m][n];for(inti=1;i<m;i++){result[i][0]=result[i-1][0]+getScore(X[i-1],"-");}for(intj=1;j<n;j++){result[0][j]=result[0][j-1]+getScore("-",Y[j-1]);}for(inti=1;i<m;i++){for(intj=1;j<n;j++){ints1=result[i-1][j-1]+getScore(X[i-1],Y[j-1]);ints2=result[i-1][j]+getScore(X[i-1],"-");ints3=result[i][j-1]+getScore("-",Y[j-1]);intmaxs=getMax(s1,s2,s3);result[i][j]=maxs;}}System.out.println("结果为:"+result[m-1][n-1]);for(inti=0;i<m;i++){for(intj=0;j<n;j++){System.out.print(result[i][j]+"");}System.out.println();}}privatestaticintgetMax(ints1,ints2,ints3){intflag=s1;if(flag<s2){flag=s2;}if(flag<s3){flag=s3;}returnflag;}//传入值获取分数privatestaticintgetScore(Stringx,Stringy){//x和y必须属于ACGT-Map<String,Integer>map=newHashMap<>();map.put("A",0);map.put("C",1);map.put("G",2);map.put("T",3);map.put("-",4);int[][]score={{5,-1,-2,-1,-3},{-1,5,-3,-2,-4},{-2,-3,5,-2,-2},{-1,-2,-2,5,-1},{-3,-4,-2,-1,-10000000}};returnscore[map.get(x)][map.get(y)];}}
</div> <div class="zixun-tj-product adv-bottom"></div> </div> </div> <div class="prve-next-news">
java如何实现基因序列比较的详细内容,希望对您有所帮助,信息来源于网络。