JAL-674 test that PDB annotation created when importing a legacy jalview example...
authorJim Procter <jprocter@dundee.ac.uk>
Thu, 27 Nov 2014 10:37:06 +0000 (10:37 +0000)
committerJim Procter <jprocter@dundee.ac.uk>
Thu, 27 Nov 2014 10:37:06 +0000 (10:37 +0000)
test/jalview/io/Jalview2xmlTests.java

index fec7d75..4237019 100644 (file)
@@ -20,7 +20,9 @@
  */
 package jalview.io;
 
-import static org.junit.Assert.*;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+import jalview.api.AlignmentViewPanel;
 import jalview.datamodel.AlignmentAnnotation;
 import jalview.datamodel.SequenceGroup;
 import jalview.datamodel.SequenceI;
@@ -246,4 +248,62 @@ public class Jalview2xmlTests
             Desktop.getAlignframes().length == 1 + origCount);
 
   }
+
+  @Test
+  public void viewRefPdbAnnotation() throws Exception
+  {
+    AlignFrame af = new jalview.io.FileLoader().LoadFileWaitTillLoaded(
+            "examples/exampleFile_2_7.jar", FormatAdapter.FILE);
+    assertTrue("Didn't read in the example file correctly.", af != null);
+    AlignmentViewPanel sps = null;
+    for (AlignmentViewPanel ap : af.alignPanel.alignFrame.getAlignPanels())
+    {
+      if ("Spinach Feredoxin Structure".equals(ap.getViewName()))
+      {
+        sps = ap;
+        break;
+      }
+    }
+    assertTrue("Couldn't find the structure view", sps != null);
+    SequenceI sq = sps.getAlignment().findName("1A70|");
+    AlignmentAnnotation refan = null;
+    for (AlignmentAnnotation ra:sps.getAlignment().getAlignmentAnnotation())
+    {
+      if (ra.graph != 0)
+      {
+        refan = ra;
+        break;
+      }
+    }
+    assertTrue("Annotation secondary structure not found.",refan!=null);
+    assertTrue("Couldn't find 1a70 null chain", sq != null);
+    // compare the manually added temperature factor annotation
+    // to the track automatically transferred from the pdb structure on load
+    for (AlignmentAnnotation ala : sq.getDatasetSequence().getAnnotation())
+    {
+      AlignmentAnnotation alaa;
+      sq.addAlignmentAnnotation(alaa = new AlignmentAnnotation(ala));
+      alaa.adjustForAlignment();
+      if (ala.graph == refan.graph)
+      {
+        for (int p = 0; p < ala.annotations.length; p++)
+        {
+          sq.findPosition(p);
+          try {
+            assertTrue(
+                    "Mismatch at alignment position " + p,
+                  (alaa.annotations[p] == null && refan.annotations[p] == null)
+                          || ala.annotations[p].value == refan.annotations[p].value);
+          }
+          catch (NullPointerException q)
+          {
+            fail("Mismatch of alignment annotations at position " + p
+                    + " Ref seq ann: " + refan.annotations[p]
+                    + " alignment " + alaa.annotations[p]);
+          }
+          }
+      }
+    }
+    
+  }
 }