package jalview.ext.archaeopteryx; import jalview.analysis.TreeBuilder; import jalview.datamodel.SequenceI; import jalview.ext.treeviewer.ExternalTreeBuilderI; import jalview.ext.treeviewer.ExternalTreeViewerBindingI; import jalview.gui.Desktop; import jalview.viewmodel.AlignmentViewport; import java.awt.Dimension; import java.util.Map; import org.forester.archaeopteryx.Archaeopteryx; import org.forester.archaeopteryx.MainFrame; import org.forester.phylogeny.Phylogeny; import org.forester.phylogeny.PhylogenyNode; /** * Static class for creating Archaeopteryx tree viewer instances from calculated * trees and letting them be bound to Jalview. * * @author kjvanderheide * */ public final class ArchaeopteryxInit { /** * Test method, should generally not be used as it does not bind the tree to * its alignment * * @param aptxTrees * @return */ public static MainFrame createUnboundInstance(final Phylogeny aptxTree) { Phylogeny[] aptxTrees = { aptxTree }; return createAptxFrame(aptxTrees); } // public static MainFrame createInstance(final Phylogeny[] aptxTrees, // AlignmentViewport jalviewAlignmentView) // { // return createAptxFrameInJalview(aptxTrees); // // } // // public static MainFrame createInstance(final Phylogeny aptxTree, // final AlignmentViewport jalviewAlignmentView) // { // Phylogeny[] aptxTrees = { aptxTree }; // future possibility to load in // // several trees simultaneously // return createAptxFrameInJalview(aptxTrees); // // } public static MainFrame createInstance( final TreeBuilder calculatedTree) // very dense method, to be split up { ExternalTreeBuilderI aptxTreeBuilder = new ArchaeopteryxTreeBuilder( calculatedTree); Phylogeny aptxTree = aptxTreeBuilder.buildTree(); Phylogeny[] aptxTrees = { aptxTree }; // future possibility to load in // several trees simultaneously MainFrame aptxApp = createAptxFrame(aptxTrees); bindNodesToJalviewSequences(aptxApp, calculatedTree.getAvport(), aptxTreeBuilder.getAlignmentBoundNodes(), aptxTreeBuilder.getNodesBoundAlignment()); return bindFrameToJalview(aptxApp); } public static MainFrame createAptxFrame( final Phylogeny[] aptxTrees) { MainFrame aptxApp = Archaeopteryx.createApplication(aptxTrees, "_aptx_jalview_configuration_file", null); return aptxApp; } public static ExternalTreeViewerBindingI bindNodesToJalviewSequences( final MainFrame aptxApp, final AlignmentViewport jalviewAlignViewport, final Map alignMappedToNodes, final Map nodesMappedToAlign) { return new JalviewBinding(aptxApp, jalviewAlignViewport, alignMappedToNodes, nodesMappedToAlign); } public static MainFrame bindFrameToJalview(final MainFrame aptxApp) { int width = 400; int height = 550; aptxApp.setMinimumSize(new Dimension(width, height)); Desktop.addInternalFrame(aptxApp, "Archaeopteryx Tree View", true, width, height, true, true); return aptxApp; } }