X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=test%2Fmc_view%2FPDBfileTest.java;fp=test%2Fmc_view%2FPDBfileTest.java;h=0000000000000000000000000000000000000000;hb=4f77328104498504339216829abf5ea87e2791ec;hp=0e34a24374471abee2700b5afcd3a7e46f5db861;hpb=2b8c0785318a3528e1876e8e2dd48b7d831eae69;p=jalview.git diff --git a/test/mc_view/PDBfileTest.java b/test/mc_view/PDBfileTest.java deleted file mode 100644 index 0e34a24..0000000 --- a/test/mc_view/PDBfileTest.java +++ /dev/null @@ -1,336 +0,0 @@ -/* - * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$) - * Copyright (C) $$Year-Rel$$ The Jalview Authors - * - * This file is part of Jalview. - * - * Jalview is free software: you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation, either version 3 - * of the License, or (at your option) any later version. - * - * Jalview is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty - * of MERCHANTABILITY or FITNESS FOR A PARTICULAR - * PURPOSE. See the GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Jalview. If not, see . - * The Jalview Authors are detailed in the 'AUTHORS' file. - */ -package mc_view; - -import static org.testng.AssertJUnit.assertEquals; -import static org.testng.AssertJUnit.assertFalse; -import static org.testng.AssertJUnit.assertNull; -import static org.testng.AssertJUnit.assertSame; -import static org.testng.AssertJUnit.assertTrue; - -import jalview.bin.Cache; -import jalview.datamodel.Alignment; -import jalview.datamodel.AlignmentAnnotation; -import jalview.datamodel.AlignmentI; -import jalview.datamodel.PDBEntry; -import jalview.datamodel.Sequence; -import jalview.datamodel.SequenceI; -import jalview.gui.JvOptionPane; -import jalview.io.DataSourceType; -import jalview.structure.StructureImportSettings; - -import java.io.IOException; -import java.util.List; - -import org.testng.annotations.BeforeClass; -import org.testng.annotations.BeforeMethod; -import org.testng.annotations.Test; - -public class PDBfileTest -{ - - @BeforeClass(alwaysRun = true) - public void setUpJvOptionPane() - { - JvOptionPane.setInteractiveMode(false); - JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION); - } - - @Test(groups = { "Functional" }) - public void testIsRna() - { - SequenceI seq = new Sequence("Seq1", "CGAU"); - assertTrue(PDBfile.isRNA(seq)); - - seq.setSequence("CGAu"); - assertFalse(PDBfile.isRNA(seq)); - - seq.setSequence("CGAT"); - assertFalse(PDBfile.isRNA(seq)); - - seq.setSequence("GRSWYFLAVM"); - assertFalse(PDBfile.isRNA(seq)); - } - - /** - * Test the 'high level' outputs of parsing. More detailed tests in - * PDBChainTest. - * - * @throws IOException - */ - @Test(groups = { "Functional" }) - public void testParse() throws IOException - { - /* - * Constructor with file path performs parse() - */ - PDBfile pf = new PDBfile(false, false, false, "examples/3W5V.pdb", - DataSourceType.FILE); - - assertEquals("3W5V", pf.getId()); - // verify no alignment annotations created - assertNull(getAlignmentAnnotations(pf)); - - assertEquals(4, pf.getChains().size()); - assertEquals("A", pf.getChains().get(0).id); - assertEquals("B", pf.getChains().get(1).id); - assertEquals("C", pf.getChains().get(2).id); - assertEquals("D", pf.getChains().get(3).id); - - PDBChain chainA = pf.getChains().get(0); - SequenceI seqA = pf.getSeqs().get(0); - - assertEquals(0, chainA.seqstart); // not set - assertEquals(0, chainA.seqend); // not set - assertEquals(18, chainA.sequence.getStart()); - assertEquals(314, chainA.sequence.getEnd()); - assertTrue(chainA.sequence.getSequenceAsString().startsWith("KCSKKQEE")); - assertTrue(chainA.sequence.getSequenceAsString().endsWith("WNVEVY")); - assertEquals("3W5V|A", chainA.sequence.getName()); - assertNull(chainA.sequence.getAnnotation()); - assertEquals(1, seqA.getAllPDBEntries().size()); - PDBEntry pdb = seqA.getAllPDBEntries().get(0); - assertEquals("A", pdb.getChainCode()); - assertEquals("PDB", pdb.getType()); - assertEquals("3W5V", pdb.getId()); - - PDBChain chainB = pf.getChains().get(1); - assertEquals(1, chainB.sequence.getStart()); - assertEquals(96, chainB.sequence.getEnd()); - assertTrue(chainB.sequence.getSequenceAsString().startsWith("ATYNVK")); - assertTrue(chainB.sequence.getSequenceAsString().endsWith("KEEELT")); - assertEquals("3W5V|B", chainB.sequence.getName()); - - PDBChain chainC = pf.getChains().get(2); - assertEquals(18, chainC.sequence.getStart()); - assertEquals(314, chainC.sequence.getEnd()); - assertTrue(chainC.sequence.getSequenceAsString().startsWith("KCSKKQEE")); - assertTrue(chainC.sequence.getSequenceAsString().endsWith("WNVEVY")); - assertEquals("3W5V|C", chainC.sequence.getName()); - - PDBChain chainD = pf.getChains().get(3); - assertEquals(1, chainD.sequence.getStart()); - assertEquals(96, chainD.sequence.getEnd()); - assertTrue(chainD.sequence.getSequenceAsString().startsWith("ATYNVK")); - assertTrue(chainD.sequence.getSequenceAsString().endsWith("KEEELT")); - assertEquals("3W5V|D", chainD.sequence.getName()); - - /* - * verify PDB-related data in parsed sequences - */ - List seqs = pf.getSeqs(); - assertEquals(4, seqs.size()); - assertEquals("3W5V|A", seqs.get(0).getName()); - assertEquals("3W5V|B", seqs.get(1).getName()); - assertEquals("3W5V|C", seqs.get(2).getName()); - assertEquals("3W5V|D", seqs.get(3).getName()); - assertEquals(1, seqs.get(0).getAllPDBEntries().size()); - PDBEntry pdbe = seqs.get(0).getAllPDBEntries().get(0); - assertEquals("A", pdbe.getChainCode()); - assertEquals("3W5V", pdbe.getId()); - assertEquals(PDBEntry.Type.PDB.toString(), pdbe.getType()); - } - - /** - * Test parsing, with annotations added to the alignment but no secondary - * structure prediction - * - * @throws IOException - */ - @Test(groups = { "Functional" }) - public void testParse_withAnnotations_noSS() throws IOException - { - PDBfile pf = new PDBfile(true, false, false, "examples/3W5V.pdb", - DataSourceType.FILE); - - AlignmentAnnotation[] anns = getAlignmentAnnotations(pf); - assertEquals(4, anns.length); - - /* - * Inspect temp factor annotation for chain A - */ - AlignmentAnnotation chainAnnotation = anns[0]; - assertEquals("Temperature Factor", chainAnnotation.label); - // PDBChain constructor changes PDB id to lower case (why?) - assertEquals("Temperature Factor for 3w5vA", - chainAnnotation.description); - assertSame(pf.getSeqs().get(0), chainAnnotation.sequenceRef); - assertEquals(AlignmentAnnotation.LINE_GRAPH, chainAnnotation.graph); - assertEquals(0f, chainAnnotation.graphMin, 0.001f); - assertEquals(40f, chainAnnotation.graphMax, 0.001f); - assertEquals(297, chainAnnotation.annotations.length); - assertEquals(40f, chainAnnotation.annotations[0].value, 0.001f); - - /* - * Chain B temp factor - */ - chainAnnotation = anns[1]; - assertEquals("Temperature Factor for 3w5vB", - chainAnnotation.description); - assertSame(pf.getSeqs().get(1), chainAnnotation.sequenceRef); - assertEquals(96, chainAnnotation.annotations.length); - - /* - * Chain C temp factor - */ - chainAnnotation = anns[2]; - assertEquals("Temperature Factor for 3w5vC", - chainAnnotation.description); - assertSame(pf.getSeqs().get(2), chainAnnotation.sequenceRef); - assertEquals(297, chainAnnotation.annotations.length); - - /* - * Chain D temp factor - */ - chainAnnotation = anns[3]; - assertEquals("Temperature Factor for 3w5vD", - chainAnnotation.description); - assertSame(pf.getSeqs().get(3), chainAnnotation.sequenceRef); - assertEquals(96, chainAnnotation.annotations.length); - } - - /** - * Test parsing including secondary structure annotation using JMol; this test - * for the case where flag to add annotations to alignment is set false - * - * @throws IOException - */ - @Test(groups = { "Functional" }) - public void testParse_withJmol_noAnnotations() throws IOException - { - PDBfile pf = new PDBfile(false, true, false, "examples/3W5V.pdb", - DataSourceType.FILE); - - /* - * alignment annotations _are_ created anyway (in - * AlignSeq.replaceMatchingSeqsWith()) - */ - final AlignmentAnnotation[] anns = getAlignmentAnnotations(pf); - assertEquals(4, anns.length); - - /* - * no sequence annotations created - tempFactor annotation is not added - * unless the flag to 'addAlignmentAnnotations' is set true - */ - for (PDBChain c : pf.getChains()) - { - assertNull(c.sequence.getAnnotation()); - } - } - - /** - * Test parsing including secondary structure prediction and annotation using - * JMol - * - * @throws IOException - */ - @Test(groups = { "Functional" }) - public void testParse_withJmolAddAlignmentAnnotations() - throws IOException - { - PDBfile pf = new PDBfile(true, true, false, "examples/3W5V.pdb", - DataSourceType.FILE); - - /* - * Alignment annotations for TempFactor, SecStruct, per sequence (chain) - */ - AlignmentAnnotation[] anns = getAlignmentAnnotations(pf); - assertEquals(8, anns.length); - - /* - * other tests have detailed assertions for Temp Factor annotations - */ - assertEquals("Temperature Factor for 3w5vA", anns[1].description); - assertEquals("Temperature Factor for 3w5vB", anns[3].description); - assertEquals("Temperature Factor for 3w5vC", anns[5].description); - assertEquals("Temperature Factor for 3w5vD", anns[7].description); - - /* - * PDBFileWithJmol (unlike PDBChain!) leaves PDB id upper case - */ - assertEquals("Secondary Structure for 3w5vA", anns[0].description); - assertEquals("Secondary Structure for 3w5vB", anns[2].description); - assertEquals("Secondary Structure for 3w5vC", anns[4].description); - assertEquals("Secondary Structure for 3w5vD", anns[6].description); - - /* - * Verify SS annotations are linked to respective sequences (chains) - */ - assertSame(pf.getSeqs().get(0), anns[0].sequenceRef); - assertSame(pf.getSeqs().get(1), anns[2].sequenceRef); - assertSame(pf.getSeqs().get(2), anns[4].sequenceRef); - assertSame(pf.getSeqs().get(3), anns[6].sequenceRef); - - /* - * Verify a sample of SS predictions - */ - for (int i = 0; i < 20; i++) - { - assertNull(anns[0].annotations[i]); - assertEquals("E", anns[0].annotations[20].displayCharacter); - assertEquals('E', anns[0].annotations[20].secondaryStructure); - assertEquals("E", anns[2].annotations[18].displayCharacter); - assertEquals("H", anns[2].annotations[23].displayCharacter); - } - } - - /** - * Placeholder for a test of parsing RNA structure with secondary structure - * prediction using the Annotate3D service - * - * @throws IOException - */ - - @Test(groups = { "Functional" }, enabled = false) - public void testParse_withAnnotate3D() throws IOException - { - // TODO requires a mock for Annotate3D processing - // and/or run as an integration test - PDBfile pf = new PDBfile(true, true, true, "examples/2GIS.pdb", - DataSourceType.FILE); - } - - /** - * Helper method to extract parsed annotations from the PDBfile - * - * @param pf - * @return - */ - private AlignmentAnnotation[] getAlignmentAnnotations(PDBfile pf) - { - AlignmentI al = new Alignment(pf.getSeqsAsArray()); - pf.addAnnotations(al); - return al.getAlignmentAnnotation(); - } - - @BeforeMethod(alwaysRun = true) - public void setUp() - { - Cache.loadProperties("test/jalview/io/testProps.jvprops"); - Cache.setPropertyNoSave("STRUCT_FROM_PDB", - Boolean.TRUE.toString()); - Cache.setPropertyNoSave("ADD_TEMPFACT_ANN", - Boolean.TRUE.toString()); - Cache.setPropertyNoSave("ADD_SS_ANN", - Boolean.TRUE.toString()); - StructureImportSettings.setDefaultStructureFileFormat("PDB"); - } -}