+ DBRefEntry p = pr.get(ip);
+ if (isProtein)
+ {
+ switch (getCanonicalName(p.getSource()))
+ {
+ case DBRefSource.UNIPROT:
+ keys |= DBRefSource.UNIPROT_MASK;
+ break;
+ case DBRefSource.ENSEMBL:
+ keys |= DBRefSource.ENSEMBL_MASK;
+ break;
+ }
+ }
+ else
+ {
+ // TODO: promote transcript refs ??
+ }
+ if (keys == 0 || !selectRefsBS(dbrefs, keys, bsSelect))
+ return;
+ // if (candidates != null)
+ {
+ for (int ic = bsSelect.nextSetBit(0); ic >= 0; ic = bsSelect
+ .nextSetBit(ic + 1))
+ // for (int ic = 0, n = candidates.size(); ic < n; ic++)
+ {
+ DBRefEntry cand = dbrefs.get(ic);// candidates.get(ic);
+ if (cand.hasMap())
+ {
+ Mapping map = cand.getMap();
+ SequenceI cto = map.getTo();
+ if (cto != null && cto != sequence)
+ {
+ // can't promote refs with mappings to other sequences
+ continue;
+ }
+ MapList mlist = map.getMap();
+ if (mlist.getFromLowest() != sstart
+ && mlist.getFromHighest() != send)
+ {
+ // can't promote refs with mappings from a region of this sequence
+ // - eg CDS
+ continue;
+ }
+ }
+ // and promote - not that version must be non-null here,
+ // as p must have passed isPrimaryCandidate()
+ cand.setVersion(p.getVersion() + " (promoted)");
+ bsSelect.clear(ic);
+ // selfs.remove(cand);
+ // toPromote.add(cand);
+ if (!cand.isPrimaryCandidate())
+ {
+ System.out.println(
+ "Warning: Couldn't promote dbref " + cand.toString()
+ + " for sequence " + sequence.toString());
+ }
+ }
+ }