{\r
Vector cluster;\r
SequenceI[] sequence;\r
+\r
+ //SequenceData is a string representation of what the user\r
+ //sees. The display may contain hidden columns.\r
+ String [] sequenceString;\r
+\r
int[] done;\r
int noseqs;\r
int noClus;\r
String pwtype;\r
Object found = null;\r
Object leaves = null;\r
- int start;\r
- int end;\r
\r
- /**\r
- * Creates a new NJTree object.\r
- *\r
- * @param node DOCUMENT ME!\r
- */\r
- public NJTree(SequenceNode node)\r
- {\r
- top = node;\r
- maxheight = findHeight(top);\r
- }\r
+ boolean hasDistances = true; // normal case for jalview trees\r
+ boolean hasBootstrap = false; // normal case for jalview trees\r
+\r
+ private boolean hasRootDistance = true;\r
+\r
\r
/**\r
* Creates a new NJTree object.\r
* @param seqs DOCUMENT ME!\r
* @param treefile DOCUMENT ME!\r
*/\r
- public NJTree(SequenceI[] seqs, NewickFile treefile)\r
+ public NJTree(SequenceI[] seqs, NewickFile treefile)\r
{\r
top = treefile.getTree();\r
+\r
+ if (sequenceString == null)\r
+ {\r
+ sequenceString = new String[sequence.length];\r
+ for (int i = 0; i < sequence.length; i++)\r
+ {\r
+ sequenceString[i] = sequence[i].getSequence();\r
+ }\r
+ }\r
+\r
+\r
+ hasDistances = treefile.HasDistances();\r
+ hasBootstrap = treefile.HasBootstrap();\r
+ hasRootDistance = treefile.HasRootDistance();\r
+\r
maxheight = findHeight(top);\r
\r
SequenceIdMatcher algnIds = new SequenceIdMatcher(seqs);\r
* Creates a new NJTree object.\r
*\r
* @param sequence DOCUMENT ME!\r
- * @param start DOCUMENT ME!\r
- * @param end DOCUMENT ME!\r
- */\r
- public NJTree(SequenceI[] sequence, int start, int end)\r
- {\r
- this(sequence, "NJ", "BL", start, end);\r
- }\r
-\r
- /**\r
- * Creates a new NJTree object.\r
- *\r
- * @param sequence DOCUMENT ME!\r
* @param type DOCUMENT ME!\r
* @param pwtype DOCUMENT ME!\r
* @param start DOCUMENT ME!\r
* @param end DOCUMENT ME!\r
*/\r
- public NJTree(SequenceI[] sequence, String type, String pwtype, int start,\r
- int end)\r
+ public NJTree(SequenceI[] sequence,\r
+ String [] sequenceString,\r
+ String type,\r
+ String pwtype,\r
+ int start, int end)\r
{\r
this.sequence = sequence;\r
this.node = new Vector();\r
this.type = type;\r
this.pwtype = pwtype;\r
- this.start = start;\r
- this.end = end;\r
+\r
+ if (sequenceString == null)\r
+ {\r
+ this.sequenceString = new String[sequence.length];\r
+ for(int i=0; i<sequence.length; i++)\r
+ {\r
+ this.sequenceString[i] = sequence[i].getSequence(start, end);\r
+ }\r
+ }\r
+ else\r
+ this.sequenceString = sequenceString;\r
+\r
\r
if (!(type.equals("NJ")))\r
{\r
else\r
{\r
distance[i][j] = 100 -\r
- Comparison.PID(sequence[i], sequence[j], start, end);\r
+ Comparison.PID(sequenceString[i], sequenceString[j]);\r
+\r
distance[j][i] = distance[i][j];\r
}\r
}\r
else if (pwtype.equals("BL"))\r
{\r
int maxscore = 0;\r
-\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 = start; k < end; k++)\r
+ for (int k = 0; k < end; k++)\r
{\r
try\r
{\r
- score += ResidueProperties.getBLOSUM62(sequence[i].getSequence(\r
- k, k + 1), sequence[j].getSequence(k, k +\r
- 1));\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
}\r
}\r
}\r
- else if (pwtype.equals("SW"))\r
+ /* else if (pwtype.equals("SW"))\r
{\r
float max = -1;\r
\r
distance[j][i] = distance[i][j];\r
}\r
}\r
- }\r
+ }/*/\r
\r
return distance;\r
}\r
return top;\r
}\r
\r
+ public String printOriginalSequenceData()\r
+ {\r
+ StringBuffer sb = new StringBuffer();\r
+ for(int i=0; i<sequenceString.length; i++)\r
+ {\r
+ sb.append(new jalview.util.Format("%-" + 15 + "s").form(\r
+ sequence[i].getName()));\r
+ sb.append(" "+sequenceString[i]+"\n");\r
+ }\r
+ return sb.toString();\r
+ }\r
+\r
/**\r
* DOCUMENT ME!\r
*\r
* @param node DOCUMENT ME!\r
*/\r
- public static void printN(SequenceNode node)\r
+ public void printN(SequenceNode node)\r
{\r
if (node == null)\r
{\r
{\r
return top;\r
}\r
+ /**\r
+ *\r
+ * @return true if tree has real distances\r
+ */\r
+ public boolean isHasDistances() {\r
+ return hasDistances;\r
+ }\r
+\r
+ /**\r
+ *\r
+ * @return true if tree has real bootstrap values\r
+ */\r
+ public boolean isHasBootstrap() {\r
+ return hasBootstrap;\r
+ }\r
+\r
+ public boolean isHasRootDistance()\r
+ {\r
+ return hasRootDistance;\r
+ }\r
+\r
}\r
\r
\r