import org.forester.phylogeny.data.NodeData;
import org.forester.phylogeny.data.Sequence;
-public class ArchaeopteryxTreeConverter // implements PhylogenyFactory
+/**
+ * Class for converting trees made in Jalview (through TreeBuilder) to trees
+ * compatible with Forester (Phylogeny objects).
+ *
+ * Note that this currently demands a 1:1 relationship between tree nodes and
+ * the sequences used for generating them.
+ *
+ * @author kjvanderheide
+ *
+ */
+public class ArchaeopteryxTreeConverter
{
protected final SequenceI[] sequences;
private final Map<SequenceI, PhylogenyNode> alignmentBoundNodes;
+ private final Map<PhylogenyNode, SequenceI> nodesBoundAlignment;
+
public ArchaeopteryxTreeConverter(final TreeBuilder calculatedTree)
{
jalviewTree = calculatedTree;
jalviewTree.getDistances(), sequences);
aptxTree = new Phylogeny();
rootNode = new PhylogenyNode();
- alignmentBoundNodes = new HashMap<>(
- distances.getSize());
+ alignmentBoundNodes = new HashMap<>(distances.getSize());
+ nodesBoundAlignment = new HashMap<>(distances.getSize());
}
for (SequenceI sequence : sequences)
{
Sequence seq = ForesterConversions
- .createForesterSequence(sequence);
+ .createForesterSequence(sequence, true);
PhylogenyNode sequenceNode = new PhylogenyNode(sequence.getName());
NodeData nodeData = sequenceNode.getNodeData();
nodeData.setSequence(seq);
+ nodesBoundAlignment.put(sequenceNode, sequence);
alignmentBoundNodes.put(sequence, sequenceNode);
rootNode.addAsChild(sequenceNode);
}
return alignmentBoundNodes;
}
+ public Map<PhylogenyNode, SequenceI> getNodesBoundAlignment()
+ {
+ return nodesBoundAlignment;
+ }
+
private Phylogeny clusterNodes()
{
return aptxTree;