+ /**\r
+ * DOCUMENT ME!\r
+ *\r
+ * @return DOCUMENT ME!\r
+ */\r
+ public float[][] findDistances()\r
+ {\r
+ float[][] distance = new float[noseqs][noseqs];\r
+\r
+ if (pwtype.equals("PID"))\r
+ {\r
+ for (int i = 0; i < (noseqs - 1); i++)\r
+ {\r
+ for (int j = i; j < noseqs; j++)\r
+ {\r
+ if (j == i)\r
+ {\r
+ distance[i][i] = 0;\r
+ }\r
+ else\r
+ {\r
+ distance[i][j] = 100 -\r
+ Comparison.PID(sequenceString[i], sequenceString[j]);\r
+\r
+ distance[j][i] = distance[i][j];\r
+ }\r
+ }\r
+ }\r
+ }\r
+ else if (pwtype.equals("BL"))\r
+ {\r
+ int maxscore = 0;\r
+ int end = sequenceString[0].length();\r
+ for (int i = 0; i < (noseqs - 1); i++)\r
+ {\r
+ for (int j = i; j < noseqs; j++)\r
+ {\r
+ int score = 0;\r
+\r
+ for (int k = 0; k < end; k++)\r
+ {\r
+ try\r
+ {\r
+ score += ResidueProperties.getBLOSUM62(\r
+ sequenceString[i].substring(k, k + 1),\r
+ sequenceString[j].substring(k, k + 1));\r
+ }\r
+ catch (Exception ex)\r
+ {\r
+ System.err.println("err creating BLOSUM62 tree");\r
+ ex.printStackTrace();\r
+ }\r
+ }\r
+\r
+ distance[i][j] = (float) score;\r
+\r
+ if (score > maxscore)\r
+ {\r
+ maxscore = score;\r
+ }\r
+ }\r
+ }\r
+\r
+ for (int i = 0; i < (noseqs - 1); i++)\r
+ {\r
+ for (int j = i; j < noseqs; j++)\r
+ {\r
+ distance[i][j] = (float) maxscore - distance[i][j];\r
+ distance[j][i] = distance[i][j];\r
+ }\r
+ }\r
+ }\r
+ /* else if (pwtype.equals("SW"))\r
+ {\r
+ float max = -1;\r
+\r
+ for (int i = 0; i < (noseqs - 1); i++)\r
+ {\r
+ for (int j = i; j < noseqs; j++)\r
+ {\r
+ AlignSeq as = new AlignSeq(sequence[i], sequence[j], "pep");\r
+ as.calcScoreMatrix();\r
+ as.traceAlignment();\r
+ as.printAlignment(System.out);\r
+ distance[i][j] = (float) as.maxscore;\r
+\r
+ if (max < distance[i][j])\r
+ {\r
+ max = distance[i][j];\r
+ }\r
+ }\r
+ }\r
+\r
+ for (int i = 0; i < (noseqs - 1); i++)\r
+ {\r
+ for (int j = i; j < noseqs; j++)\r
+ {\r
+ distance[i][j] = max - distance[i][j];\r
+ distance[j][i] = distance[i][j];\r
+ }\r
+ }\r
+ }/*/\r
+\r
+ return distance;\r