1 package jalview.ext.archaeopteryx;
3 import jalview.analysis.SequenceIdMatcher;
4 import jalview.datamodel.SequenceI;
5 import jalview.ext.treeviewer.ExternalLoadedTreeAssociationI;
6 import jalview.ext.treeviewer.ExternalTreeI;
7 import jalview.ext.treeviewer.ExternalTreeNodeI;
8 import jalview.util.MappingUtils;
10 import java.util.HashMap;
11 import java.util.Iterator;
15 public class LoadedTreeSequenceAssociation
16 implements ExternalLoadedTreeAssociationI
18 SequenceI[] alignSequences;
22 Map<SequenceI, ExternalTreeNodeI> alignmentWithNodes;
24 Map<ExternalTreeNodeI, SequenceI> nodesWithAlignment;
26 public LoadedTreeSequenceAssociation(SequenceI[] alignmentSequences,
27 ExternalTreeI aptxTree)
29 alignSequences = alignmentSequences;
31 alignmentWithNodes = new HashMap<>(alignSequences.length);
32 nodesWithAlignment = new HashMap<>(alignSequences.length);
39 * Tries to match sequences from Jalview with tree nodes in Archaeopteryx and
40 * fills in the tree node with sequence data if a match is found.
42 * Partially refactored from the old Jalview TreeModel
43 * associateLeavesToSequences method.
49 public void associateLeavesToSequences()
52 SequenceIdMatcher algnIds = new SequenceIdMatcher(alignSequences);
53 SequenceI nodeSequence;
54 String nodeSequenceName;
58 for (final Iterator<ExternalTreeNodeI> iter = tree
59 .iterateInPreOrder(); iter
62 ExternalTreeNodeI treeNode = iter.next();
63 nodeSequenceName = treeNode.getNodeName();
65 nodeSequence = algnIds.findIdMatch(nodeSequenceName);
66 if (nodeSequence != null)
69 treeNode.setSequence(nodeSequence);
71 MappingUtils.putWithDuplicationCheck(alignmentWithNodes,
72 nodeSequence, treeNode);
73 MappingUtils.putWithDuplicationCheck(nodesWithAlignment, treeNode,
86 public Map<SequenceI, ExternalTreeNodeI> getAlignmentWithNodes()
88 return alignmentWithNodes;
91 public Map<ExternalTreeNodeI, SequenceI> getNodesWithAlignment()
93 return nodesWithAlignment;