JAL-2795 added back test loop for Aptx tree naming & initTreePanel
[jalview.git] / src / jalview / ext / archaeopteryx / ArchaeopteryxTreeConverter.java
1 package jalview.ext.archaeopteryx;
2
3 import jalview.analysis.TreeBuilder;
4 import jalview.datamodel.SequenceI;
5 import jalview.ext.forester.ForesterMatrix;
6 import jalview.util.MessageManager;
7
8 import org.forester.evoinference.matrix.distance.DistanceMatrix;
9 import org.forester.phylogeny.Phylogeny;
10 import org.forester.phylogeny.PhylogenyNode;
11
12 public class ArchaeopteryxTreeConverter
13 {
14   protected final SequenceI[] sequences;
15
16   private Phylogeny aptxTree;
17
18   private PhylogenyNode rootNode;
19
20   protected final DistanceMatrix distances;
21   
22   protected final TreeBuilder jalviewTree;
23   
24   public String treeTitle;
25
26
27
28   public ArchaeopteryxTreeConverter(final TreeBuilder calculatedTree)
29   {
30     jalviewTree = calculatedTree;
31     sequences = jalviewTree.getSequences();
32     distances = ForesterMatrix.convertJalviewToForester(
33             jalviewTree.getDistances(), sequences);
34     aptxTree = new Phylogeny();
35     rootNode = new PhylogenyNode();
36
37   }
38
39   public Phylogeny buildAptxTree(final PhylogenyNode treeRoot)
40   {
41
42     rootNode = treeRoot;
43
44     buildAptxTree();
45
46     return aptxTree;
47
48   }
49
50   public Phylogeny buildAptxTree()
51   {
52     // test loop
53     for (SequenceI sequence : sequences)
54     {
55       PhylogenyNode sequenceNode = new PhylogenyNode(sequence.getName());
56       rootNode.addAsChild(sequenceNode);
57     }
58     aptxTree.setRoot(rootNode);
59
60
61     treeTitle = generateTreeName();
62     aptxTree.setName(treeTitle);
63
64     return aptxTree;
65
66   }
67
68   private Phylogeny clusterNodes()
69   {
70     return aptxTree;
71
72   }
73
74
75   /**
76    * Formats a localised title for the tree panel, like
77    * <p>
78    * Neighbour Joining Using BLOSUM62
79    * <p>
80    * For a tree loaded from file, just uses the file name
81    * 
82    * @return
83    */
84   public String generateTreeName()
85   {
86     if (treeTitle != null) // will currently never happen, loaded tree file will
87                            // take a different path
88     {
89       return treeTitle;
90     }
91     else
92     {
93       /*
94       * i18n description of Neighbour Joining or Average Distance method
95       */
96       String treecalcnm = MessageManager
97               .getString("label.tree_calc_" + jalviewTree.getClass()
98                       .getSimpleName().substring(0, 2).toLowerCase());
99       /*
100       * short score model name (long description can be too long)
101       */
102       String smn = jalviewTree.getScoreModel().getName();
103
104       /*
105       * put them together as <method> Using <model>
106       */
107       final String ttl = MessageManager
108               .formatMessage("label.treecalc_title", treecalcnm, smn);
109       return ttl;
110     }
111   }
112 }