1 package jalview.ext.treeviewer;
3 import jalview.analysis.SequenceIdMatcher;
4 import jalview.datamodel.SequenceI;
5 import jalview.util.MappingUtils;
7 import java.util.HashMap;
8 import java.util.Iterator;
11 public class LoadedTreeSequenceAssociation
12 implements ExternalLoadedTreeAssociationI
14 SequenceI[] alignSequences;
18 Map<SequenceI, ExternalTreeNodeI> alignmentWithNodes;
20 Map<ExternalTreeNodeI, SequenceI> nodesWithAlignment;
22 public LoadedTreeSequenceAssociation(SequenceI[] alignmentSequences,
23 ExternalTreeI extTree)
25 alignSequences = alignmentSequences;
27 alignmentWithNodes = new HashMap<>(alignSequences.length);
28 nodesWithAlignment = new HashMap<>(alignSequences.length);
33 * Tries to match sequences from Jalview with tree nodes in Archaeopteryx and
34 * fills in the tree node with sequence data if a match is found.
36 * Partially refactored from the old Jalview TreeModel
37 * associateLeavesToSequences method.
43 public void associateLeavesToSequences()
46 SequenceIdMatcher algnIds = new SequenceIdMatcher(alignSequences);
47 SequenceI nodeSequence;
48 String nodeSequenceName;
52 for (final Iterator<ExternalTreeNodeI> iter = tree
53 .iterateInPreOrder(); iter
56 ExternalTreeNodeI treeNode = iter.next();
57 nodeSequenceName = treeNode.getNodeName();
59 nodeSequence = algnIds.findIdMatch(nodeSequenceName);
60 if (nodeSequence != null)
63 treeNode.setSequence(nodeSequence);
65 MappingUtils.putWithDuplicationCheck(alignmentWithNodes,
66 nodeSequence, treeNode);
67 MappingUtils.putWithDuplicationCheck(nodesWithAlignment, treeNode,
81 public Map<SequenceI, ExternalTreeNodeI> getAlignmentWithNodes()
83 return alignmentWithNodes;
87 public Map<ExternalTreeNodeI, SequenceI> getNodesWithAlignment()
89 return nodesWithAlignment;