JAL-2349 fix up tests for Java 11 compatibility and require sequence associated mappa...
authorJames Procter <j.procter@dundee.ac.uk>
Sun, 14 May 2023 13:24:27 +0000 (14:24 +0100)
committerJames Procter <j.procter@dundee.ac.uk>
Sun, 14 May 2023 13:24:27 +0000 (14:24 +0100)
src/jalview/datamodel/Sequence.java
src/jalview/ws/datamodel/alphafold/MappableContactMatrix.java
src/jalview/ws/datamodel/alphafold/PAEContactMatrix.java
test/jalview/analysis/AlignmentUtilsTests.java

index 5ae7195..2b331d7 100755 (executable)
@@ -39,6 +39,7 @@ import jalview.util.Comparison;
 import jalview.util.DBRefUtils;
 import jalview.util.MapList;
 import jalview.util.StringUtils;
+import jalview.ws.datamodel.alphafold.MappableContactMatrix;
 
 /**
  * 
@@ -2151,6 +2152,10 @@ public class Sequence extends ASequence implements SequenceI
     }
     aa.annotations = _aa;
     aa.setSequenceRef(this);
+    if (cm instanceof MappableContactMatrix && !((MappableContactMatrix) cm).hasReferenceSeq())
+    {
+      ((MappableContactMatrix) cm).setRefSeq(this);
+    }
     aa.createSequenceMapping(this, getStart(), false);
     addAlignmentAnnotation(aa);
     return aa;
index ae2b37c..9497d85 100644 (file)
@@ -55,7 +55,11 @@ public abstract class MappableContactMatrix<T extends MappableContactMatrix<T>>
     return toSeq;
   }
 
-  protected void setRefSeq(SequenceI _refSeq)
+  /**
+   * set the reference sequence and construct the mapping between the start-end positions of given sequence and row/columns of contact matrix
+   * @param _refSeq
+   */
+  public void setRefSeq(SequenceI _refSeq)
   {
     refSeq = _refSeq;
     while (refSeq.getDatasetSequence() != null)
index d496097..d48d539 100644 (file)
@@ -382,7 +382,7 @@ public class PAEContactMatrix extends MappableContactMatrix<PAEContactMatrix> im
         }
       }
     }
-    return ContactMatrixI.super.getGroupsFor(column);
+    return super.getGroupsFor(column);
   }
 
   HashMap<BitSet,Color> colorMap = new HashMap<>();
index 4baa384..54093ee 100644 (file)
@@ -2626,6 +2626,11 @@ public class AlignmentUtilsTests
                     && al.getAlignmentAnnotation().length == 1);
     AlignmentAnnotation alan = al.findAnnotations(sq, null, cm_aan.label)
             .iterator().next();
+    ContactMatrixI t_cm = al.getContactMatrixFor(alan);
+    assertNotNull("No contact map for the transferred annotation row.",t_cm);
+    assertTrue(t_cm instanceof SeqDistanceContactMatrix);
+    assertTrue(((SeqDistanceContactMatrix)t_cm).hasReferenceSeq());
+    
     ContactListI cl = al.getContactListFor(alan, 1);
     assertNotNull(
             "No contact matrix recovered after reference annotation transfer",