java如何实现基因序列比较(java,编程语言)

时间:2024-05-09 09:10:10 作者 : 石家庄SEO 分类 : 编程语言
  • TAG :

设计算法,计算两给定基因序列的相似程度。

人类基因由4种核苷酸,分别用字母ACTG表示。要求编写一个程序,按以下规则比较两个基因序列并确定它们的相似程度。即给出两个基因序列AGTGATG和GTTAG,它们有多相似呢?测量两个基因相似度的一种方法称为对齐。使用对齐方法可以在基因的适当位置加入空格,让两个基因的长度相等,然后根据基因的分值矩阵计算分数。

看了很多代码基本上都是用c++或者c写的,但是习惯性写java就用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)];}}

java如何实现基因序列比较

 </div> <div class="zixun-tj-product adv-bottom"></div> </div> </div> <div class="prve-next-news">
本文:java如何实现基因序列比较的详细内容,希望对您有所帮助,信息来源于网络。
上一篇:如何使用js动态获取浏览器或页面等容器的宽高下一篇:

4 人围观 / 0 条评论 ↓快速评论↓

(必须)

(必须,保密)

阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18