X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fanalysis%2FTreeModel.java;h=1c19dbfd42e6e4abf4eddabf20ead77c267ca3b3;hb=c58f08345070f16bdc228c5e272db1bfd9cb6241;hp=2f8d7883f40d2fe37f1b875eb7026b8da517af8a;hpb=be27d7b3cadbfb5c488066034c48b1735799b429;p=jalview.git diff --git a/src/jalview/analysis/TreeModel.java b/src/jalview/analysis/TreeModel.java index 2f8d788..1c19dbf 100644 --- a/src/jalview/analysis/TreeModel.java +++ b/src/jalview/analysis/TreeModel.java @@ -46,7 +46,7 @@ public class TreeModel * SequenceData is a string representation of what the user * sees. The display may contain hidden columns. */ - public AlignmentView seqData; + private AlignmentView seqData; int noseqs; @@ -68,7 +68,7 @@ public class TreeModel /** * Create a new TreeModel object with leaves associated with sequences in - * seqs, and original alignment data represented by Cigar strings + * seqs, and (optionally) original alignment data represented by Cigar strings * * @param seqs * SequenceI[] @@ -77,24 +77,12 @@ public class TreeModel * @param treefile * NewickFile */ - public TreeModel(SequenceI[] seqs, AlignmentView odata, NewickFile treefile) + public TreeModel(SequenceI[] seqs, AlignmentView odata, + NewickFile treefile) { - this(seqs, treefile); + this(seqs, treefile.getTree(), treefile.hasDistances(), + treefile.hasBootstrap(), treefile.hasRootDistance()); seqData = odata; - } - - /** - * Creates a new TreeModel object from a tree from an external source - * - * @param seqs - * SequenceI which should be associated with leafs of treefile - * @param treefile - * A parsed tree - */ - public TreeModel(SequenceI[] seqs, NewickFile treefile) - { - this(seqs, treefile.getTree(), treefile.HasDistances(), treefile - .HasBootstrap(), treefile.HasRootDistance()); associateLeavesToSequences(seqs); } @@ -106,8 +94,9 @@ public class TreeModel */ public TreeModel(TreeBuilder tree) { - this(tree.getSequences(), tree.getTopNode(), tree.hasDistances(), tree - .hasBootstrap(), tree.hasRootDistance()); + this(tree.getSequences(), tree.getTopNode(), tree.hasDistances(), + tree.hasBootstrap(), tree.hasRootDistance()); + seqData = tree.getOriginalData(); } /** @@ -141,29 +130,27 @@ public class TreeModel Vector leaves = findLeaves(top); - int i = 0; int namesleft = seqs.length; - SequenceNode j; - SequenceI nam; - String realnam; - Vector one2many = new Vector(); + SequenceI nodeSequence; + String nodeSequenceName; + Vector one2many = new Vector<>(); // int countOne2Many = 0; - while (i < leaves.size()) + + for (SequenceNode sn : leaves) { - j = leaves.elementAt(i++); - realnam = j.getName(); - nam = null; + nodeSequenceName = sn.getName(); + nodeSequence = null; if (namesleft > -1) { - nam = algnIds.findIdMatch(realnam); + nodeSequence = algnIds.findIdMatch(nodeSequenceName); } - if (nam != null) + if (nodeSequence != null) { - j.setElement(nam); - if (one2many.contains(nam)) + sn.setElement(nodeSequence); + if (one2many.contains(nodeSequence)) { // countOne2Many++; // if (jalview.bin.Cache.log.isDebugEnabled()) @@ -172,14 +159,14 @@ public class TreeModel } else { - one2many.addElement(nam); + one2many.addElement(nodeSequence); namesleft--; } } else { - j.setElement(new Sequence(realnam, "THISISAPLACEHLDER")); - j.setPlaceholder(true); + sn.setElement(new Sequence(nodeSequenceName, "THISISAPLACEHLDER")); + sn.setPlaceholder(true); } } // if (jalview.bin.Cache.log.isDebugEnabled() && countOne2Many>0) { @@ -199,8 +186,12 @@ public class TreeModel { NewickFile fout = new NewickFile(getTopNode()); - return fout.print(hasBootstrap(), hasDistances(), - hasRootDistance()); // output all data available for tree + return fout.print(hasBootstrap(), hasDistances(), hasRootDistance()); // output + // all + // data + // available + // for + // tree } /** @@ -260,8 +251,8 @@ public class TreeModel if (!leaf.isPlaceholder()) { // Construct a new placeholder sequence object for this leaf - leaf.setElement(new Sequence(leaf.getName(), - "THISISAPLACEHLDER")); + leaf.setElement( + new Sequence(leaf.getName(), "THISISAPLACEHLDER")); } leaf.setPlaceholder(true); @@ -302,7 +293,7 @@ public class TreeModel */ public Vector findLeaves(SequenceNode nd) { - Vector leaves = new Vector(); + Vector leaves = new Vector<>(); findLeaves(nd, leaves); return leaves; } @@ -396,7 +387,7 @@ public class TreeModel */ public List groupNodes(float threshold) { - List groups = new ArrayList(); + List groups = new ArrayList<>(); _groupNodes(groups, getTopNode(), threshold); return groups; } @@ -468,39 +459,6 @@ public class TreeModel } /** - * - * @return true if original sequence data can be recovered - */ - public boolean hasOriginalSequenceData() - { - return seqData != null; - } - - /** - * Returns original alignment data used for calculation - or null where not - * available. - * - * @return null or cut'n'pasteable alignment - */ - public String printOriginalSequenceData(char gapChar) - { - if (seqData == null) - { - return null; - } - - StringBuffer sb = new StringBuffer(); - String[] seqdatas = seqData.getSequenceStrings(gapChar); - for (int i = 0; i < seqdatas.length; i++) - { - sb.append(new jalview.util.Format("%-" + 15 + "s").form(sequences[i] - .getName())); - sb.append(" " + seqdatas[i] + "\n"); - } - return sb.toString(); - } - - /** * DOCUMENT ME! * * @param nd @@ -523,8 +481,8 @@ public class TreeModel System.out.println(" name = " + ((SequenceI) nd.element()).getName()); } - System.out.println(" dist = " + nd.dist + " " + nd.count + " " - + nd.height); + System.out.println( + " dist = " + nd.dist + " " + nd.count + " " + nd.height); } /** @@ -553,7 +511,8 @@ public class TreeModel { // if (_lycount<_lylimit) // { - // System.err.println("Warning: depth of _recount greater than number of nodes."); + // System.err.println("Warning: depth of _recount greater than number of + // nodes."); // } if (nd == null) { @@ -704,10 +663,15 @@ public class TreeModel public void applyToNodes(NodeTransformI nodeTransformI) { for (Enumeration nodes = node.elements(); nodes - .hasMoreElements(); nodeTransformI.transform(nodes - .nextElement())) + .hasMoreElements(); nodeTransformI + .transform(nodes.nextElement())) { ; } } + + public AlignmentView getOriginalData() + { + return seqData; + } }