From c504884a4af81cd736d6650155e176e49a76f7eb Mon Sep 17 00:00:00 2001 From: Jim Procter Date: Thu, 27 Nov 2014 10:37:06 +0000 Subject: [PATCH] JAL-674 test that PDB annotation created when importing a legacy jalview example file is mapped to the correct place as the manually created version (temperature factor in exampleFile_2_7.jar --- test/jalview/io/Jalview2xmlTests.java | 62 ++++++++++++++++++++++++++++++++- 1 file changed, 61 insertions(+), 1 deletion(-) diff --git a/test/jalview/io/Jalview2xmlTests.java b/test/jalview/io/Jalview2xmlTests.java index fec7d75..4237019 100644 --- a/test/jalview/io/Jalview2xmlTests.java +++ b/test/jalview/io/Jalview2xmlTests.java @@ -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]); + } + } + } + } + + } } -- 1.7.10.2