-- 作者:KEVIN1050
-- 发布时间:9/30/2007 9:34:00 AM
-- 源码查错
JAVA才学了几天就开始学数据结构,这个程序怎么看都看不懂哪里出错了,能否帮忙指正一下? 不胜感激! import java.until.random; class SequenceAlignment1{ /* using main with two command line arguments will align the arguments with minimum cost according to the meassure +1 for mismatches and indels, 0 for matches. */ private string[] character=[ A ,R, N, D, C, Q, E, G, H, I, L, K, M, F, P, S, T, W, Y,V]; private int[][] scores = /* A R N D C Q E G H I L K M F P S T W Y V */ { /* A */ { 5 }, /* R */ { -2, 7 }, /* N */ { -1,-1, 7 }, /* D */ { -2,-2, 2, 8 }, /* C */ { -1,-4,-2,-4,13 }, /* Q */ { -1, 1, 0, 0,-3, 7 }, /* E */ { -1, 0, 0, 2,-3, 2, 6 }, /* G */ { 0,-3, 0,-1,-3,-2,-3, 8 }, /* H */ { -2, 0, 1,-1,-3, 1, 0,-2,10 }, /* I */ { -1,-4,-3,-4,-2,-3,-4,-4,-4, 5 }, /* L */ { -2,-3,-4,-4,-2,-2,-3,-4,-3, 2, 5 }, /* K */ { -1, 3, 0,-1,-3, 2, 1,-2, 0,-3,-3, 6 }, /* M */ { -1,-2,-2,-4,-2, 0,-2,-3,-1, 2, 3,-2, 7 }, /* F */ { -3,-3,-4,-5,-2,-4,-3,-4,-1, 0, 1,-4, 0, 8 }, /* P */ { -1,-3,-2,-1,-4,-1,-1,-2,-2,-3,-4,-1,-3,-4,10 }, /* S */ { 1,-1, 1, 0,-1, 0,-1, 0,-1,-3,-3, 0,-2,-3,-1, 5 }, /* T */ { 0,-1, 0,-1,-1,-1,-1,-2,-2,-1,-1,-1,-1,-2,-1, 2, 5 }, /* W */ { -3,-3,-4,-5,-5,-1,-3,-3,-3,-3,-2,-3,-1, 1,-4,-4,-3,15 }, /* Y */ { -2,-1,-2,-3,-3,-1,-2,-3, 2,-1,-1,-2, 0, 4,-3,-2,-2, 2, 8 }, /* V */ { 0,-3,-3,-4,-1,-3,-3,-4,-4, 4, 1,-3, 1,-1,-3,-2, 0,-3,-1, 5 } /* A R N D C Q E G H I L K M F P S T W Y V */ }; int convert(string x) { /* A R N D C Q E G H I L K M F P S T W Y V */ int index; switch(x){ case A: index=0;break; case R: index=1;break; case N: index=2;break; case D: index=3;break; case C: index=4;break; case Q: index=5;break; case E: index=6;break; case G: index=7;break; case H: index=8;break; case I: index=9;break; case L: index=10;break; case K: index=11;break; case M: index=12;break; case F: index=13;break; case P: index=14;break; case S: index=15;break; case T: index=16;break; case W: index=17;break; case Y: index=18;break; case V: index=19;break; default:break; } return a; } int getscore(string a,string b){ int i,j; i=convert(a); j=convert(b); if(score) score=scores[i][j]; else score=scores[j][i]; } public static void main(String[] args){ /*SequenceAlignment1 sa1 = new SequenceAlignment1(string[] cmdLn); String[] res = sa1.getAlignment(); System.out.println(sa1.getValue()); System.out.println(res[0]); System.out.println(res[1]);*/ Random generator=new Random(); //int r=generator.nextInt(); for(int j=0;j<cmdLn.length;j++){ int randomIndex=generator.nextInt(19); string b; b=character[randomIndex]; } String xs, ys; // the seqs to be aligned. int n, m; // their lengths. int[][] M; // the matrix used to compute the optimal values Coord[][] traceback; public SequenceAlignment1(String a, String b){ xs = a; ys = b; n = a.length(); m = b.length(); M = new int[n+1][m+1]; traceback = new Coord[n+1][m+1]; for(int i = 1; i<=n; i++){ M[i][0] = i*(-8); traceback[i][0]=new Coord(i-1,0); } for(int j = 1; j<=m; j++){ M[0][j] = j*(-8); traceback[0][j]=new Coord(0,j-1); } for(int i = 1; i<=n; i++) for(int j = 1; j<=m; j++){ M[i][j] = max(M[i-1][j-1]+d(xs.charAt(i-1),ys.charAt(j-1)), M[i-1][j]-8, M[i][j-1]-8); if(M[i][j] == M[i-1][j-1]+d(xs.charAt(i-1),ys.charAt(j-1))) traceback[i][j] = new Coord(i-1,j-1); else if (M[i][j]==M[i-1][j]-8) traceback[i][j] = new Coord(i-1,j); else traceback[i][j] = new Coord(i,j-1); } } public int getValue(){return M[n][m];} public String[] getAlignment(){ Coord tb = new Coord(n,m); StringBuffer res1 = new StringBuffer(); StringBuffer res2 = new StringBuffer(); int i = tb.i; int j = tb.j; tb=traceback[n][m]; while(tb!=null){ if(i==tb.i)res1.append('-'); else res1.append(xs.charAt(i-1)); if(j==tb.j)res2.append('-'); else res2.append(ys.charAt(j-1)); i=tb.i; j=tb.j; tb = traceback[i][j]; } String[] res = {res1.reverse().toString(),res2.reverse().toString()}; return res; } private static final int min(int a, int b, int c){ return Math.min(a,Math.min(b,c)); } private static final int max(int a, int b, int c){ return Math.max(a,Math.max(b,c)); } // The distance function: private static final int d(char a, char b){ return a==b?0:1; } } class Coord{ int i, j; Coord(int x, int y){ i=x;j=y; } } [此贴子已经被作者于2007-9-30 23:11:44编辑过]
|