X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=test%2Fjalview%2Fws%2FPDBSequenceFetcherTest.java;h=e7f9ff1288b2332899d670f3c61d0f24a6da93ae;hb=57738a1f3c19b1c3a00bd3ac5108f8cd0af32f99;hp=27d2643eea1254bf08225b9510fb07c79307be6a;hpb=834ebffc22ed9e72b139cadf5652d1a7006da9b3;p=jalview.git diff --git a/test/jalview/ws/PDBSequenceFetcherTest.java b/test/jalview/ws/PDBSequenceFetcherTest.java index 27d2643..e7f9ff1 100644 --- a/test/jalview/ws/PDBSequenceFetcherTest.java +++ b/test/jalview/ws/PDBSequenceFetcherTest.java @@ -20,34 +20,49 @@ */ package jalview.ws; +import static org.testng.Assert.assertEquals; import static org.testng.AssertJUnit.assertTrue; import jalview.bin.Cache; import jalview.datamodel.AlignmentI; +import jalview.datamodel.SequenceFeature; import jalview.datamodel.SequenceI; -import jalview.structure.StructureViewSettings; +import jalview.gui.JvOptionPane; +import jalview.structure.StructureImportSettings; +import jalview.structure.StructureImportSettings.StructureParser; import jalview.ws.seqfetcher.DbSourceProxy; +import java.util.Arrays; import java.util.List; +import org.testng.Assert; +import org.testng.annotations.BeforeClass; import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; public class PDBSequenceFetcherTest { + @BeforeClass(alwaysRun = true) + public void setUpJvOptionPane() + { + JvOptionPane.setInteractiveMode(false); + JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION); + } + SequenceFetcher sf; @BeforeMethod(alwaysRun = true) public void setUp() throws Exception { + Cache.loadProperties("test/jalview/io/testProps.jvprops"); // ensure 'add annotation from structure' is selected Cache.applicationProperties.setProperty("STRUCT_FROM_PDB", Boolean.TRUE.toString()); Cache.applicationProperties.setProperty("ADD_SS_ANN", Boolean.TRUE.toString()); - sf = new SequenceFetcher(false); + sf = new SequenceFetcher(); } /** @@ -61,10 +76,7 @@ public class PDBSequenceFetcherTest @Test(groups = { "Network" }, enabled = true) public void testRnaSeqRetrieve() throws Exception { - Cache.applicationProperties.setProperty("STRUCT_FROM_PDB", - Boolean.TRUE.toString()); - Cache.applicationProperties.setProperty("DEFAULT_STRUCTURE_FORMAT", - "PDB"); + Cache.applicationProperties.setProperty("PDB_DOWNLOAD_FORMAT", "PDB"); List sps = sf.getSourceProxy("PDB"); AlignmentI response = sps.get(0).getSequenceRecords("2GIS"); assertTrue(response != null); @@ -84,9 +96,9 @@ public class PDBSequenceFetcherTest @Test(groups = { "Network" }, enabled = true) public void testPdbSeqRetrieve() throws Exception { - Cache.applicationProperties.setProperty("STRUCT_FROM_PDB", - Boolean.TRUE.toString()); - StructureViewSettings.setCurrentDefaultFormat("PDB"); + StructureImportSettings.setDefaultStructureFileFormat("PDB"); + StructureImportSettings + .setDefaultPDBFileParser(StructureParser.JALVIEW_PARSER); testRetrieveProteinSeqFromPDB(); } @@ -94,29 +106,77 @@ public class PDBSequenceFetcherTest @Test(groups = { "Network" }, enabled = true) public void testmmCifSeqRetrieve() throws Exception { - Cache.applicationProperties.setProperty("STRUCT_FROM_PDB", - Boolean.TRUE.toString()); - StructureViewSettings.setCurrentDefaultFormat("mmCIF"); + StructureImportSettings.setDefaultStructureFileFormat("mmCIF"); testRetrieveProteinSeqFromPDB(); } + private class TestRetrieveObject + { + String id; + + int expectedHeight; + + public TestRetrieveObject(String id, int expectedHeight) + { + super(); + this.id = id; + this.expectedHeight = expectedHeight; + } + + } + + private List toRetrieve = Arrays.asList( + new TestRetrieveObject("1QIP", 4), + new TestRetrieveObject("4IM2", 1)); + private void testRetrieveProteinSeqFromPDB() throws Exception { List sps = sf.getSourceProxy("PDB"); - AlignmentI response = sps.get(0).getSequenceRecords("1QIP"); - assertTrue(response != null); - assertTrue(response.getHeight() == 4); - for (SequenceI sq : response.getSequences()) + StringBuilder errors = new StringBuilder(); + for (TestRetrieveObject str : toRetrieve) { - assertTrue("No annotation transfered to sequence.", - sq.getAnnotation().length > 0); - assertTrue("No PDBEntry on sequence.", - sq.getAllPDBEntries().size() > 0); - org.testng.Assert - .assertEquals(sq.getEnd() - sq.getStart() + 1, - sq.getLength(), - "Sequence start/end doesn't match number of residues in sequence"); + AlignmentI response = sps.get(0).getSequenceRecords(str.id); + assertTrue("No aligment for " + str.id, response != null); + assertEquals(response.getHeight(), str.expectedHeight, + "Number of chains for " + str.id); + for (SequenceI sq : response.getSequences()) + { + assertTrue("No annotation transfered to sequence " + sq.getName(), + sq.getAnnotation().length > 0); + assertTrue("No PDBEntry on sequence " + sq.getName(), + sq.getAllPDBEntries().size() > 0); + // FIXME: should test that all residues extracted as sequences from + // chains in structure have a mapping to data in the structure + List prev = null; + int lastp = -1; + for (int col = 1; col <= sq.getLength(); col++) + { + List sf = sq.findFeatures(col, col, "RESNUM"); + if (sf.size() != 1) + { + errors.append(str.id + ": " + + "Expected one feature at column (position): " + + (col - 1) + " (" + sq.findPosition(col - 1) + ")" + + ": saw " + sf.size()); + errors.append("\n"); + if (prev != null) + { + errors.append("Last Feature was at position " + lastp + ": " + + prev.get(0).toString()); + errors.append("\n"); + } + } + else + { + prev = sf; + lastp = sq.findPosition(col - 1); + } + } + } + } + if (errors.length() > 0) + { + Assert.fail(errors.toString()); } } - }