java如何实现基因序列比较

  介绍

这篇文章将为大家详细讲解有关java如何实现基因序列比较,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

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

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

看了很多代码基本上都是用c++或者c写的,但是习惯性写java就用java实现一下

癹ava如何实现基因序列比较“

基本的思路就是,和背包问题差不多,实现还是模仿填表的形式去实现的

表达式:

<李>

s1=结果(张)(j - 1) + getScore (X[我],[j])这个是X, Y序列使用坐标匹配

<李>

s2=结果(张)[j] + getScore (X[我],' & # 39;)这个是X序列匹配Y的' & # 39;

<李>

s3=结果[我][j - 1] + getScore (& # 39; & # 39;, Y [j])这个是Y序列匹配X的' & # 39;

<李>

结果[我][j]=max (s1, s2、s3)找出三个中最大的就是所求的值

package  algorithmClassSet.three;      import  java.util.HashMap;   import  java.util.Map;/* *=,* s1 结果(张)(j - 1), +, getScore (X[我],,Y [j]),这个是X, Y序列使用坐标匹配=,* s2 结果(张)[j], +, getScore (X[我],& # 39;& # 39;),,这个是X序列匹配y的,”& # 39;=,* s3 结果[我][j - 1], +, getScore (& # 39; & # 39;,, Y [j]),这个是Y序列匹配x的,”& # 39;   结果,*[我][j],=,马克斯(s1, s2、s3),,找出三个中最大的就是所求的值   ,* m * n   ,*/public  class  GeneSequenceComparison  {   public 才能;static  void  main (String [], args), {   ,,,dealIt ();   ,,}      private 才能static  void  dealIt (), {   ,,,String [], X =, {“A",,“G",,“T",,“G",,“A",,“T",,“G"};   ,,,String [], Y =, {“G",,“T",,“T",,“A",,“G"};   ,,,int  m =, X.length  +, 1;   ,,,int  n =, Y.length  +, 1;   ,,,int [] [], result =, new  int [m] [n];      ,,,for  (int 小姐:=,1;,小姐:& lt;,,,我+ +),{   ,,,,,结果[我][0],=,结果[小姐,安康;1][0],+,getScore (X[小姐,安康;1],“产生绯闻;);   ,,,}   ,,,for  (int  j =, 1,, j  & lt;, n;, j + +), {   ,,,,,结果[0][j],=,结果[0][j 安康;1],+,getScore(“产生绯闻;,,Y [j 作用;1]);   ,,,}      ,,,for  (int 小姐:=,1;,小姐:& lt;,,,我+ +),{   ,,,,,for  (int  j =, 1,, j  & lt;, n;, j + +), {   ,,,,,,,int  s1 =,结果[小姐,安康;1][j 安康;1],+,getScore (X[小姐,安康;1],,Y [j 安康;1]);   ,,,,,,,int  s2 =,结果[小姐,安康;1][j], +, getScore (X[小姐,安康;1],“产生绯闻;);   ,,,,,,,int  s3 =,结果[我][j 安康;1],+,getScore(“产生绯闻;,,Y [j 作用;1]);   ,,,,,,,int  maxs =, getMax (s1, s2, s3);   ,,,,,,,结果[我][j],=, max;   ,,,,,}   ,,,}   ,,,System.out.println(“结果为:“,+,结果[m 安康;1][n 作用;1]);         ,,,for  (int 小姐:=,0;,小姐:& lt;,,,我+ +),{   ,,,,,for  (int  j =, 0;, j  & lt;, n;, j + +), {   ,,,,,,,System.out.print(结果[我][j], +,“,“);   ,,,,,}   ,,,,,System.out.println ();   ,,,}   ,,}      private 才能static  int  getMax (int , s1, int  s2, int  s3), {   ,,,int  flag =, s1;   ,,,if  (flag  & lt;, s2), {   ,,,,,flag =, s2;   ,,,}   ,,,if  (flag  & lt;, s3), {   ,,,,,flag =, s3;   ,,,}   ,,,return 旗帜;   ,,}//传才能入值获取分数   private 才能static  int  getScore (String  x,, String  y), {   ,,,//x和y必须属于,ACGT -   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

java如何实现基因序列比较