1 package jalview.analysis;
3 import java.util.Vector;
4 import java.util.Hashtable;
5 import jalview.datamodel.SequenceI;
10 * <p>Description: </p>
11 * Routine which does approximate Sequence Id resolution by name using string containment rather than equivalence
12 * <p>Copyright: Copyright (c) 2004</p>
14 * <p>Company: Dundee University</p>
16 * @author not attributable
19 public class SequenceIdMatcher
22 private class SeqIdName
33 return (id.substring(0, 4).hashCode());
36 public boolean equals(Object s)
38 if (s instanceof SeqIdName)
40 return this.equals( (SeqIdName) s);
44 if (s instanceof String)
46 return this.equals( (String) s);
52 public boolean equals(SeqIdName s)
54 if (id.startsWith(s.id) || s.id.startsWith(id))
61 public boolean equals(String s)
63 if (id.startsWith(s) || s.startsWith(id))
71 private Hashtable names;
73 public SequenceIdMatcher(SequenceI[] seqs)
75 names = new Hashtable();
76 for (int i = 0; i < seqs.length; i++)
78 names.put(new SeqIdName(seqs[i].getName()), seqs[i]);
82 SequenceI findIdMatch(SequenceI seq)
84 SeqIdName nam = new SeqIdName(seq.getName());
85 if (names.containsKey(nam))
87 return (SequenceI) names.get(nam);
92 SequenceI findIdMatch(String seqnam)
94 SeqIdName nam = new SeqIdName(seqnam);
95 if (names.containsKey(nam))
97 return (SequenceI) names.get(nam);
105 * Return pointers to sequences (or sequence object containers)
106 * which have same Id as a given set of different sequence objects
108 * @param seqs SequenceI[]
109 * @return SequenceI[]
112 SequenceI[] findIdMatch(SequenceI[] seqs)
114 SequenceI[] namedseqs = new SequenceI[seqs.length];
122 nam = new SeqIdName(seqs[i].getName());
123 if (names.containsKey(nam))
125 namedseqs[i] = (SequenceI) names.get(nam);
132 while (i++ < seqs.length);