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(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。