package jalview.ext.archaeopteryx; import jalview.analysis.TreeBuilder; import jalview.datamodel.SequenceI; import jalview.math.MatrixI; import org.forester.evoinference.distance.NeighborJoiningF; import org.forester.io.parsers.SymmetricalDistanceMatrixParser; import org.forester.msa.Msa; import org.forester.phylogeny.Phylogeny; import org.forester.phylogeny.PhylogenyNode; public class ArchaeopteryxTreeBuilder // cannot inherit // TreeBuilder as that // demands the use of // SequenceNode (instead // of PhylogenyNode) { protected SequenceI[] sequences; private Phylogeny aptxTree; private PhylogenyNode rootNode; protected MatrixI distances; protected Msa msa; protected SymmetricalDistanceMatrixParser distanceParser = SymmetricalDistanceMatrixParser .createInstance(); public ArchaeopteryxTreeBuilder() { this.rootNode = new PhylogenyNode(); this.aptxTree = new Phylogeny(); } public ArchaeopteryxTreeBuilder(PhylogenyNode treeRoot) { this.rootNode = treeRoot; this.aptxTree = new Phylogeny(); } public Phylogeny buildAptxTree(TreeBuilder tree) { this.sequences = tree.getSequences(); aptxTree.setName( "PLEASE FIX ME reheaheth35yheqhb3q5hyq3bt3q5u4jwqjwuh6"); final NeighborJoiningF nj = NeighborJoiningF.createInstance(false, 5); distances = tree.getDistances(); // final Phylogeny phy = nj.execute(JalviewMatrixToForesterMatrix // .convertJalviewToForester(distances)); return buildAptxTree(sequences); } public Phylogeny buildAptxTree(SequenceI[] sequences) { for (SequenceI sequence : sequences) { PhylogenyNode treeNode = new PhylogenyNode(sequence.getName()); rootNode.addAsChild(treeNode); } aptxTree.setRoot(rootNode); return aptxTree; } /** * Formats a localised title for the tree panel, like *

* Neighbour Joining Using BLOSUM62 *

* For a tree loaded from file, just uses the file name * * @return */ // public String getPanelTitle() // { // if (treeTitle != null) // { // return treeTitle; // } // else // { // /* // * i18n description of Neighbour Joining or Average Distance method // */ // String treecalcnm = MessageManager // .getString("label.tree_calc_" + treeType.toLowerCase()); // // /* // * short score model name (long description can be too long) // */ // String smn = substitutionMatrix; // // /* // * put them together as Using // */ // final String ttl = MessageManager // .formatMessage("label.treecalc_title", treecalcnm, smn); // return ttl; // } // } }