package org.biojava.nbio.structure.io; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStream; import org.biojava.nbio.structure.Atom; import org.biojava.nbio.structure.Chain; import org.biojava.nbio.structure.Group; import org.biojava.nbio.structure.Structure; import org.junit.Test; /** * This class will test parsing short CONECT lines. * @since Nov 30, 2016 * @author larsonm */ public class TestShortLines { @Test public void testConect() throws IOException { PDBFileParser pdbPars = new PDBFileParser(); FileParsingParameters params = pdbPars.getFileParsingParameters(); params.setCreateAtomBonds(true); // CONECTS will be deprecated, but will we create bonds? // Like the LINK records, should BioJava create BondImpl when params.setCreateAtomBonds(true)? StringBuilder sb = new StringBuilder(); sb.append("HETATM 2398 P FAD A 500 8.398 46.448 73.490 1.00 13.51 P \n"); sb.append("HETATM 2399 PA FAD A 500 6.089 45.580 75.235 1.00 15.88 P \n"); sb.append("HETATM 2400 O1P FAD A 500 7.908 47.684 72.869 1.00 4.19 O \n"); sb.append("CONECT 2400 2398\n"); String shortLine = sb.toString(); Structure s; // Parse short try(InputStream is = new ByteArrayInputStream(shortLine.getBytes())) { s = pdbPars.parsePDBFile(is); } // After 4.2, CONECTS are deprecated, but there is not yet an implementation // describing how CONECTS will be replaced - will Bonds be created? // assertEquals(1, s.getConnections().size()); assertNotNull(s); } @Test public void testLINK() throws IOException { Structure s; PDBFileParser pdbPars = new PDBFileParser(); FileParsingParameters params = pdbPars.getFileParsingParameters(); params.setCreateAtomBonds(true); StringBuilder sb = new StringBuilder(); sb.append("ATOM 2412 C21 2EG A 7 0.888 44.973 72.238 1.00 29.17 C \n"); sb.append("ATOM 2413 C22 2EG B 19 0.888 44.973 72.238 1.00 29.17 C \n"); //sb.append("LINK C21 2EG A 7 C22 2EG B 19 1555 1555 1.56 "); sb.append("LINK C21 2EG A 7 C22 2EG B 19\n"); String shortLine = sb.toString(); // Parse short try(InputStream is = new ByteArrayInputStream(shortLine.getBytes())) { s = pdbPars.parsePDBFile(is); } // Should be a bond present in the Atoms. Chain c = s.getChainByIndex(0, 0); Group g = c.getAtomGroups().get(0); Atom a = g.getAtom(0); assertEquals(1, a.getBonds().size()); } }