package jalview.ext.archaeopteryx;
import jalview.analysis.TreeBuilder;
+import jalview.datamodel.SequenceI;
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
{
- public static MainFrame createInstance(Phylogeny[] aptxTrees)
+ /**
+ * 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(Phylogeny aptxTree)
- {
- Phylogeny[] aptxTrees = { aptxTree }; // future possibility to load in
- // several trees simultaneously
- 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(
- TreeBuilder calculatedTree)
+ final TreeBuilder calculatedTree) // very dense method, to be split up
{
- ArchaeopteryxTreeBuilder aptxTreeBuilder = new ArchaeopteryxTreeBuilder();
- Phylogeny aptxTree = aptxTreeBuilder.buildAptxTree(calculatedTree);
+ ExternalTreeBuilderI<Phylogeny, PhylogenyNode> aptxTreeBuilder = new ArchaeopteryxTreeBuilder(
+ calculatedTree);
+
+ Phylogeny aptxTree = aptxTreeBuilder.buildTree();
Phylogeny[] aptxTrees = { aptxTree }; // future possibility to load in
// several trees simultaneously
- return createAptxFrame(aptxTrees);
+ MainFrame aptxApp = createAptxFrame(aptxTrees);
+
+ bindNodesToJalviewSequences(aptxApp, calculatedTree.getAvport(),
+ aptxTreeBuilder.getAlignmentBoundNodes(),
+ aptxTreeBuilder.getNodesBoundAlignment());
+ return bindFrameToJalview(aptxApp);
}
- private static MainFrame createAptxFrame(Phylogeny[] aptxTrees)
+
+
+ public static MainFrame createAptxFrame(
+ final Phylogeny[] aptxTrees)
{
MainFrame aptxApp = Archaeopteryx.createApplication(aptxTrees,
"_aptx_jalview_configuration_file", null);
- return bindFrameToJalview(aptxApp);
+ return aptxApp;
}
+ public static JalviewTreeViewerBindingI<?> bindNodesToJalviewSequences(
+ final MainFrame aptxApp,
+ final AlignmentViewport jalviewAlignViewport,
+ final Map<SequenceI, PhylogenyNode> alignMappedToNodes,
+ final Map<PhylogenyNode, SequenceI> nodesMappedToAlign)
+ {
+ return new JalviewAptxBinding(aptxApp, jalviewAlignViewport,
+ alignMappedToNodes, nodesMappedToAlign);
+ }
- private static MainFrame bindFrameToJalview(MainFrame aptxApp)
+ public static MainFrame bindFrameToJalview(final MainFrame aptxApp)
{
int width = 400;
int height = 550;