/** * BioJava development code * * This code may be freely distributed and modified under the * terms of the GNU Lesser General Public Licence. This should * be distributed with the code. If you do not have a copy, * see: * * http://www.gnu.org/copyleft/lesser.html * * Copyright for this code is held jointly by the individual * authors. These should be listed in @author doc comments. * * For more information on the BioJava project and its aims, * or to join the biojava-l mailing list, visit the home page * at: * * http://www.biojava.org/ * * Created on Apr 20, 2012 * Created by Andreas Prlic * * @since 3.0.2 */ package org.biojava.nbio.structure; import org.biojava.nbio.structure.align.util.AtomCache; import org.biojava.nbio.structure.io.FileParsingParameters; import org.biojava.nbio.structure.io.PDBFileReader; import org.biojava.nbio.structure.io.mmcif.ChemCompGroupFactory; import org.biojava.nbio.structure.io.mmcif.ChemCompProvider; import org.biojava.nbio.structure.io.mmcif.DownloadChemCompProvider; import org.biojava.nbio.structure.io.mmcif.chem.PolymerType; import org.junit.BeforeClass; import org.junit.Test; import java.io.IOException; import java.util.List; import static org.junit.Assert.*; /** This class tests the correct loading of Nucleotides * * @author Andreas Prlic * @since 3.0.3 */ public class TestNucleotides { private static AtomCache cache; @BeforeClass public static void beforeClass() { cache = new AtomCache(); } @Test public void test3T5N() throws IOException, StructureException{ String pdbId = "3T5N"; Structure s = getStructure(pdbId); assertEquals(2,s.getPolyChains().size()); Chain c = s.getChains().get(1); System.out.println(c); assertEquals("C", c.getName()); List<Group> ngr = c.getAtomGroups(GroupType.NUCLEOTIDE); assertEquals(6,ngr.size()); // now test if we download all definitions correctly for this one... PDBFileReader reader = new PDBFileReader(); FileParsingParameters params = new FileParsingParameters(); params.setParseSecStruc(true); params.setAlignSeqRes(true); params.setParseCAOnly(false); reader.setFileParsingParameters(params); ChemCompProvider chemProv = ChemCompGroupFactory.getChemCompProvider(); DownloadChemCompProvider download = new DownloadChemCompProvider(); ChemCompGroupFactory.setChemCompProvider(download); Structure s1 = reader.getStructureById(pdbId); assertNotNull(s1); assertEquals(2,s1.getPolyChains().size()); Chain c1 = s1.getChains().get(1); assertEquals("C", c1.getName()); Group g = c1.getAtomGroup(0); assertNotNull(g); assertNotNull(g.getChemComp()); assertNotNull(g.getChemComp().getPolymerType()); assertNotNull(g.getChemComp().getPolymerType().name()); assertTrue("Found an unknown polymertype!", (! g.getChemComp().getPolymerType().equals(PolymerType.unknown))); //System.out.println(g.getChemComp().getPolymerType()); List<Group> ngr1 = c1.getAtomGroups(GroupType.NUCLEOTIDE); assertEquals(6,ngr1.size()); ChemCompGroupFactory.setChemCompProvider(chemProv); } @Test public void test1OFX() throws StructureException, IOException { Structure s = getStructure("1OFX"); assertEquals(2,s.getPolyChains().size()); Chain a = s.getChains().get(0); assertEquals("A", a.getId()); List<Group> ngrA = a.getAtomGroups(GroupType.NUCLEOTIDE); assertEquals(10,ngrA.size()); Chain b = s.getChains().get(1); assertEquals("B", b.getId()); List<Group> ngrB = b.getAtomGroups(GroupType.NUCLEOTIDE); assertEquals(10,ngrB.size()); } private Structure getStructure(String pdbId) throws IOException, StructureException { //System.out.println("cache: " + ChemCompGroupFactory.getChemCompProvider().getClass().getName()); //System.out.println("cache: download chem comp:" + cache.getFileParsingParams().isLoadChemCompInfo()); return cache.getStructure(pdbId); } @Test public void test1REP() throws StructureException, IOException{ PDBFileReader reader = new PDBFileReader(); FileParsingParameters params = new FileParsingParameters(); params.setParseSecStruc(true); params.setAlignSeqRes(true); params.setParseCAOnly(false); reader.setFileParsingParameters(params); Structure s = reader.getStructureById("1REP"); //System.out.println(s); //System.out.println(s.toPDB()); Chain b = s.getPolyChainByPDB("B"); assertEquals(22,b.getSeqResGroups().size()); assertEquals(21,b.getAtomGroups().size()); Group n1 = b.getSeqResGroup(0); Group n2 = b.getAtomGroup(0); //System.out.println(n1); //System.out.println(n2); //System.out.println(n1.getChemComp()); assertNotNull("Could not acces Chem Comp file!" , n1.getChemComp()); assertTrue("ChemComp is not DC",n1.getChemComp().getId().equals("DC")); assertNotNull("Could not determine polymer type " , n1.getChemComp().getPolymerType()); //System.out.println(n1.getChemComp().getPolymerType()); assertTrue(n1.getChemComp().getPolymerType().equals(PolymerType.dna)); assertNotNull(n1.getPDBName()); assertNotNull(n1.getResidueNumber()); assertNotNull(n2.getResidueNumber()); assertEquals("23", n2.getResidueNumber().toString()); assertTrue(n1.getResidueNumber().equals(n2.getResidueNumber())); } }