}\r
}\r
\r
+ /**\r
+ *\r
+ * used when the alignment associated to a tree has changed.\r
+ *\r
+ * @param alignment Vector\r
+ */\r
+ public void UpdatePlaceHolders(Vector alignment) {\r
+ Vector leaves = new Vector();\r
+ findLeaves(top, leaves);\r
+ int sz = leaves.size();\r
+ SequenceIdMatcher seqmatcher=null;\r
+ int i=0;\r
+ while (i<sz) {\r
+ SequenceNode leaf = (SequenceNode) leaves.elementAt(i++);\r
+ if (alignment.contains(leaf.element()))\r
+ leaf.setPlaceholder(false);\r
+ else {\r
+ if (seqmatcher==null) {\r
+ // Only create this the first time we need it\r
+ SequenceI[] seqs = new SequenceI[alignment.size()];\r
+ for (int j=0; j<seqs.length; j++)\r
+ seqs[j] = (SequenceI) alignment.elementAt(j);\r
+ seqmatcher = new SequenceIdMatcher(seqs);\r
+ }\r
+ SequenceI nam = seqmatcher.findIdMatch(leaf.getName());\r
+ if (nam!=null) {\r
+ leaf.setPlaceholder(false);\r
+ leaf.setElement(nam);\r
+ } else {\r
+ leaf.setPlaceholder(true);\r
+ }\r
+ }\r
+ }\r
+ }\r
+\r
public NJTree(SequenceI[] sequence,int start, int end) {\r
this(sequence,"NJ","BL",start,end);\r
}\r
k + 1),\r
sequence[j].getSequence(k,\r
k + 1));\r
- }catch(Exception ex){System.out.println("err creating BLOSUM62 tree");}\r
+ }catch(Exception ex){System.err.println("err creating BLOSUM62 tree");ex.printStackTrace();}\r
}\r
distance[i][j] = (float)score;\r
if (score > maxscore) {\r
return found;\r
}\r
\r
+ /**\r
+ * printNode is mainly for debugging purposes.\r
+ *\r
+ * @param node SequenceNode\r
+ */\r
public void printNode(SequenceNode node) {\r
if (node == null) {\r
return;\r