JAL-2305 comments re testFindXrefSequences_withFetch is failing - looks like test...
authorJim Procter <j.procter@dundee.ac.uk>
Thu, 3 Feb 2022 13:18:44 +0000 (13:18 +0000)
committerJim Procter <j.procter@dundee.ac.uk>
Thu, 3 Feb 2022 13:18:44 +0000 (13:18 +0000)
src/jalview/analysis/CrossRef.java
test/jalview/analysis/CrossRefTest.java

index c54357e..1783f37 100644 (file)
@@ -443,6 +443,11 @@ public class CrossRef
         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
@@ -516,7 +521,9 @@ public class CrossRef
 
   /**
    * 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
@@ -535,10 +542,11 @@ public class CrossRef
     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)
         {
@@ -550,7 +558,7 @@ public class CrossRef
         Mapping map = dbref.getMap();
         if (map != null)
         {
-               SequenceI ms = map.getTo();
+          SequenceI ms = map.getTo();
           if (ms != null && map.getMap() != null)
           {
             if (ms == sourceSequence)
@@ -716,7 +724,7 @@ public class CrossRef
    * 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
@@ -814,7 +822,7 @@ public class CrossRef
    * 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
index 2ca112f..4bd38d2 100644 (file)
@@ -415,15 +415,19 @@ public class CrossRefTest
   @Test(groups = { "Functional_Failing" })
   public void testFindXrefSequences_withFetch()
   {
+    // JBPNote: this fails because pep1 and pep2 do not have DbRefEntrys with mappings
+    // Fix#1 would be to revise the test data so it fits with 2.11.2+ Jalview assumptions
+    // that ENA retrievals yield dbrefs with Mappings
+    
     SequenceI dna1 = new Sequence("AF039662", "GGGGCAGCACAAGAAC");
     dna1.addDBRef(new DBRefEntry("UNIPROT", "ENA:0", "Q9ZTS2"));
     dna1.addDBRef(new DBRefEntry("UNIPROT", "ENA:0", "P30419"));
     dna1.addDBRef(new DBRefEntry("UNIPROT", "ENA:0", "P00314"));
     final SequenceI pep1 = new Sequence("Q9ZTS2", "MYQLIRSSW");
-    pep1.addDBRef(new DBRefEntry("UNIPROT", "0", "Q9ZTS2"));
+    pep1.addDBRef(new DBRefEntry("UNIPROT", "0", "Q9ZTS2",null,true));
 
     final SequenceI pep2 = new Sequence("P00314", "MRKLLAASG");
-    pep2.addDBRef(new DBRefEntry("UNIPROT", "0", "P00314"));
+    pep2.addDBRef(new DBRefEntry("UNIPROT", "0", "P00314",null,true));
 
     /*
      * argument false suppresses adding DAS sources