1 package jalview.ext.archaeopteryx;
3 import jalview.analysis.TreeBuilder;
4 import jalview.datamodel.SequenceI;
5 import jalview.ext.forester.ForesterMatrix;
6 import jalview.util.MessageManager;
8 import org.forester.evoinference.matrix.distance.DistanceMatrix;
9 import org.forester.phylogeny.Phylogeny;
10 import org.forester.phylogeny.PhylogenyNode;
12 public class ArchaeopteryxTreeConverter
14 protected final SequenceI[] sequences;
16 private Phylogeny aptxTree;
18 private PhylogenyNode rootNode;
20 protected final DistanceMatrix distances;
22 protected final TreeBuilder jalviewTree;
24 public String treeTitle;
28 public ArchaeopteryxTreeConverter(final TreeBuilder calculatedTree)
30 jalviewTree = calculatedTree;
31 sequences = jalviewTree.getSequences();
32 distances = ForesterMatrix.convertJalviewToForester(
33 jalviewTree.getDistances(), sequences);
34 aptxTree = new Phylogeny();
35 rootNode = new PhylogenyNode();
39 public Phylogeny buildAptxTree(final PhylogenyNode treeRoot)
50 public Phylogeny buildAptxTree()
53 for (SequenceI sequence : sequences)
55 PhylogenyNode sequenceNode = new PhylogenyNode(sequence.getName());
56 rootNode.addAsChild(sequenceNode);
58 aptxTree.setRoot(rootNode);
61 treeTitle = generateTreeName();
62 aptxTree.setName(treeTitle);
68 private Phylogeny clusterNodes()
76 * Formats a localised title for the tree panel, like
78 * Neighbour Joining Using BLOSUM62
80 * For a tree loaded from file, just uses the file name
84 public String generateTreeName()
86 if (treeTitle != null) // will currently never happen, loaded tree file will
87 // take a different path
94 * i18n description of Neighbour Joining or Average Distance method
96 String treecalcnm = MessageManager
97 .getString("label.tree_calc_" + jalviewTree.getClass()
98 .getSimpleName().substring(0, 2).toLowerCase());
100 * short score model name (long description can be too long)
102 String smn = jalviewTree.getScoreModel().getName();
105 * put them together as <method> Using <model>
107 final String ttl = MessageManager
108 .formatMessage("label.treecalc_title", treecalcnm, smn);