java实现基因序列比较的示例代码
设计算法,计算两给定基因序列的相似程度。
人类基因由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;imap=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)]; } }
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。