JAL-4091 JAL-629 ‘Add Reference Annotations’ takes description into account when...
authorJames Procter <j.procter@dundee.ac.uk>
Wed, 15 Mar 2023 17:28:43 +0000 (17:28 +0000)
committerJames Procter <j.procter@dundee.ac.uk>
Wed, 15 Mar 2023 17:28:43 +0000 (17:28 +0000)
src/jalview/analysis/AlignmentUtils.java
src/jalview/ws/datamodel/alphafold/PAEContactMatrix.java
test/jalview/analysis/AlignmentUtilsTests.java

index 42c4b76..0906872 100644 (file)
@@ -1471,9 +1471,19 @@ public class AlignmentUtils
          */
         final Iterable<AlignmentAnnotation> matchedAlignmentAnnotations = al
                 .findAnnotations(seq, dsann.getCalcId(), dsann.label);
-        if (matchedAlignmentAnnotations == null
-                || !matchedAlignmentAnnotations.iterator().hasNext())
+        boolean found=false;
+        if (matchedAlignmentAnnotations != null)
         {
+          for (AlignmentAnnotation matched:matchedAlignmentAnnotations)
+          {
+            if (dsann.description.equals(matched.description))
+            {
+              found=true;
+              break;
+            }
+          }
+        }
+        if (!found) {
           result.add(dsann);
           if (labelForCalcId != null)
           {
index 87ccab6..3ce1c83 100644 (file)
@@ -222,17 +222,17 @@ public class PAEContactMatrix implements ContactMatrixI
   @Override
   public String getAnnotDescr()
   {
-    return "Predicted Alignment Error for " + refSeq.getName();
+    return "Predicted Alignment Error"+((refSeq==null) ? "" : (" for " + refSeq.getName()));
   }
 
   @Override
   public String getAnnotLabel()
   {
     StringBuilder label = new StringBuilder("PAE Matrix");
-    if (this.getReferenceSeq() != null)
-    {
-      label.append(":").append(this.getReferenceSeq().getDisplayId(false));
-    }
+    //if (this.getReferenceSeq() != null)
+    //{
+    //  label.append(":").append(this.getReferenceSeq().getDisplayId(false));
+    //}
     return label.toString();
   }
 
index 8b6f67d..1193c39 100644 (file)
@@ -2608,15 +2608,15 @@ public class AlignmentUtilsTests
     SequenceI sq = new Sequence("a", "SSSQ");
     ContactMatrixI cm = new SeqDistanceContactMatrix(4);
     AlignmentAnnotation cm_aan = sq.addContactList(cm);
+    cm_aan.description = cm_aan.description + " cm1";
     SequenceI dssq = sq.createDatasetSequence();
-    Alignment ds = new Alignment(new SequenceI[] { dssq });
 
     // remove annotation on our non-dataset sequence
     sq.removeAlignmentAnnotation(sq.getAnnotation()[0]);
     // test transfer
     Alignment al = new Alignment(new SequenceI[] { sq });
     SortedMap<String, String> tipEntries = new TreeMap<>();
-    final Map<SequenceI, List<AlignmentAnnotation>> candidates = new LinkedHashMap<>();
+    Map<SequenceI, List<AlignmentAnnotation>> candidates = new LinkedHashMap<>();
 
     AlignmentUtils.findAddableReferenceAnnotations(al.getSequences(),
             tipEntries, candidates, al);
@@ -2631,5 +2631,17 @@ public class AlignmentUtilsTests
             "No contact matrix recovered after reference annotation transfer",
             cl);
 
+    ContactMatrixI cm2 = new SeqDistanceContactMatrix(4);
+    dssq.addContactList(cm2);
+    tipEntries = new TreeMap<>();
+    candidates = new LinkedHashMap<>();
+
+    AlignmentUtils.findAddableReferenceAnnotations(al.getSequences(),
+            tipEntries, candidates, al);
+    AlignmentUtils.addReferenceAnnotations(candidates, al, null);
+    assertTrue("Expected two contact map annotation transferred",
+            al.getAlignmentAnnotation() != null
+                    && al.getAlignmentAnnotation().length == 2);
+
   }
 }