+ /**
+ * create/return unique hash string for sq
+ * @param sq
+ * @return new or existing unique string for sq
+ */
+ String seqHash(SequenceI sq)
+ {
+ if (seqsToIds==null)
+ {
+ initSeqRefs();
+ }
+ if (seqsToIds.containsKey(sq))
+ {
+ return (String) seqsToIds.get(sq);
+ } else {
+ // create sequential key
+ String key = "sq"+(seqsToIds.size()+1);
+ seqsToIds.put(sq, key);
+ return key;
+ }
+ }
+ void clearSeqRefs()
+ {
+ seqRefIds.clear();
+ seqsToIds.clear();
+ }
+ void initSeqRefs()
+ {
+ if (seqsToIds==null)
+ {
+ seqsToIds = new IdentityHashMap();
+ }
+ if (seqRefIds==null)
+ {
+ seqRefIds = new Hashtable();
+ }
+ }
+ java.util.IdentityHashMap seqsToIds = null; // SequenceI->key resolution
+ java.util.Hashtable seqRefIds = null; // key->SequenceI resolution