1 package jalview.ext.archaeopteryx;
3 import jalview.analysis.TreeBuilder;
4 import jalview.datamodel.SequenceI;
5 import jalview.gui.Desktop;
6 import jalview.viewmodel.AlignmentViewport;
8 import java.awt.Dimension;
11 import org.forester.archaeopteryx.Archaeopteryx;
12 import org.forester.archaeopteryx.MainFrame;
13 import org.forester.phylogeny.Phylogeny;
14 import org.forester.phylogeny.PhylogenyNode;
16 public final class ArchaeopteryxInit
19 * This method should generally not be used as it does not bind the tree to
25 public static MainFrame createUnboundInstance(final Phylogeny aptxTree)
27 Phylogeny[] aptxTrees = { aptxTree };
28 return createBoundAptxFrame(aptxTrees, null);
31 public static MainFrame createInstance(final Phylogeny[] aptxTrees,
32 AlignmentViewport jalviewAlignmentView)
34 return createBoundAptxFrame(aptxTrees, jalviewAlignmentView);
38 public static MainFrame createInstance(final Phylogeny aptxTree,
39 final AlignmentViewport jalviewAlignmentView)
41 Phylogeny[] aptxTrees = { aptxTree }; // future possibility to load in
42 // several trees simultaneously
43 return createBoundAptxFrame(aptxTrees, jalviewAlignmentView);
47 public static MainFrame createInstance(
48 final TreeBuilder calculatedTree) // very dense method, to be split up
50 ArchaeopteryxTreeConverter aptxTreeBuilder = new ArchaeopteryxTreeConverter(
53 Phylogeny aptxTree = aptxTreeBuilder.buildAptxTree();
54 Phylogeny[] aptxTrees = { aptxTree }; // future possibility to load in
55 // several trees simultaneously
57 MainFrame aptxApp = createBoundAptxFrame(aptxTrees,
58 calculatedTree.getAvport());
59 bindNodesToJalviewSequences(aptxApp, calculatedTree.getAvport(),
60 aptxTreeBuilder.getAlignmentBoundNodes(),
61 aptxTreeBuilder.getNodesBoundAlignment());
62 return bindFrameToJalview(aptxApp);
69 private static MainFrame createBoundAptxFrame(final Phylogeny[] aptxTrees,
70 final AlignmentViewport jalviewAlignmentView)
72 MainFrame aptxApp = Archaeopteryx.createApplication(aptxTrees,
73 "_aptx_jalview_configuration_file", null);
78 private static void bindNodesToJalviewSequences(final MainFrame aptxApp,
79 final AlignmentViewport jalviewAlignViewport,
80 final Map<SequenceI, PhylogenyNode> alignMappedToNodes,
81 final Map<PhylogenyNode, SequenceI> nodesMappedToAlign)
83 new JalviewAptxBinding(aptxApp, jalviewAlignViewport,
84 alignMappedToNodes, nodesMappedToAlign);
88 private static MainFrame bindFrameToJalview(final MainFrame aptxApp)
92 aptxApp.setMinimumSize(new Dimension(width, height));
94 Desktop.addInternalFrame(aptxApp, "Archaeopteryx Tree View", true,
95 width, height, true, true);