addedXref |= importCrossRefSeq(cf, newDsSeqs, doNotAdd, dss,
retrievedDss);
}
+ // JBPNote: What assumptions are made for dbref structures on
+ // retrieved sequences ?
+ // addedXref will be true means importCrossRefSeq found
+ // sequences with dbrefs with mappings to sequences congruent with dss
+
if (!addedXref)
{
// try again, after looking for matching IDs
private void removeAlreadyRetrievedSeqs(List<DBRefEntry> sourceRefs,
boolean fromDna)
{
- List<DBRefEntry> dbrSourceSet = new ArrayList<DBRefEntry>(sourceRefs);
+ List<DBRefEntry> dbrSourceSet = new ArrayList<>(sourceRefs);
List<SequenceI> dsSeqs = dataset.getSequences();
- for (int ids = dsSeqs.size(); --ids >= 0;)
+ for (int ids = 0, nds = dsSeqs.size(); ids < nds; ids++)
{
SequenceI sq = dsSeqs.get(ids);
boolean dupeFound = false;
if (sq.isProtein() == fromDna)
{
List<DBRefEntry> sqdbrefs = sq.getPrimaryDBRefs();
- for (int idb = sqdbrefs.size(); --idb >= 0;)
+ for (int idb = 0, ndb = sqdbrefs.size(); idb < ndb; idb++)
{
DBRefEntry dbr = sqdbrefs.get(idb);
List<DBRefEntry> searchrefs = DBRefUtils.searchRefs(dbrSourceSet, dbr, DBRefUtils.SEARCH_MODE_FULL);
- for (int isr = searchrefs.size(); --isr >= 0;)
+ for (int isr = 0, nsr = searchrefs.size(); isr < nsr; isr++)
{
sourceRefs.remove(searchrefs.get(isr));
dupeFound = true;
/**
* process sequence retrieved via a dbref on source sequence to resolve and
- * transfer data
+ * transfer data JBPNote: as of 2022-02-03 - this assumes retrievedSequence
+ * has dbRefs with Mapping references to a sequence congruent with
+ * sourceSequence
*
* @param cf
* @param sourceSequence
List<DBRefEntry> dbr = retrievedSequence.getDBRefs();
if (dbr != null)
{
- for (int ib = 0, nb = dbr.size(); ib < nb; ib++)
+ for (int ib = 0, nb = dbr.size(); ib < nb; ib++)
{
- DBRefEntry dbref = dbr.get(ib);
+ DBRefEntry dbref = dbr.get(ib);
+ // matched will return null if the dbref has no map
SequenceI matched = findInDataset(dbref);
if (matched == sourceSequence)
{
Mapping map = dbref.getMap();
if (map != null)
{
- SequenceI ms = map.getTo();
+ SequenceI ms = map.getTo();
if (ms != null && map.getMap() != null)
{
if (ms == sourceSequence)
* Returns null or the first sequence in the dataset which is identical to
* xref.mapTo, and has a) a primary dbref matching xref, or if none found, the
* first one with an ID source|xrefacc
- *
+ * JBPNote: Could refactor this to AlignmentI/DatasetI
* @param xref
* with map and mapped-to sequence
* @return
* Updates any empty mappings in the cross-references with one to a compatible
* retrieved sequence if found, and adds any new mappings to the
* AlignedCodonFrame
- *
+ * JBPNote: TODO: this relies on sequence IDs like UNIPROT|ACCESSION - which do not always happen.
* @param mapFrom
* @param xrefs
* @param retrieved
if (fromDna)
{
- AlignmentUtils.computeProteinFeatures(mapFrom, mapTo, mapping);
+ // AlignmentUtils.computeProteinFeatures(mapFrom, mapTo, mapping);
mappings.addMap(mapFrom, mapTo, mapping);
}
else