/** * 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 Nov 28, 2012 * Created by Andreas Prlic * * @since 3.0.2 */ package org.biojava.nbio.structure; import java.io.IOException; import java.util.Iterator; import org.biojava.nbio.structure.align.util.AtomCache; import org.biojava.nbio.structure.io.FileParsingParameters; import org.junit.Test; import static org.junit.Assert.*; public class TestCloning { @Test public void test1a4wCloning() throws StructureException, IOException { Structure s; AtomCache cache = new AtomCache(); FileParsingParameters params = new FileParsingParameters(); params.setAlignSeqRes(true); cache.setFileParsingParams(params); StructureIO.setAtomCache(cache); s = StructureIO.getStructure("1a4w"); Structure c = s.clone(); compareCloned(s,c); } @Test public void testAsymUnitCloning() throws StructureException, IOException { Structure s; AtomCache cache = new AtomCache(); FileParsingParameters params = new FileParsingParameters(); params.setAlignSeqRes(false); cache.setFileParsingParams(params); StructureIO.setAtomCache(cache); s = StructureIO.getStructure("1stp"); Structure c = s.clone(); compareCloned(s,c); } @Test public void testBioUnitCloning() throws StructureException, IOException { Structure s; s = StructureIO.getBiologicalAssembly("1stp",1); Structure c = s.clone(); compareCloned(s,c); } /** * A Structure with alt locs, we make sure they are being cloned too * @throws StructureException * @throws IOException */ @Test public void test3piuCloning() throws StructureException, IOException { AtomCache cache = new AtomCache(); FileParsingParameters params = new FileParsingParameters(); params.setAlignSeqRes(true); cache.setFileParsingParams(params); StructureIO.setAtomCache(cache); Structure s = StructureIO.getStructure("3piu"); Structure c = s.clone(); compareCloned(s, c); } private void compareCloned(Structure s, Structure c) throws StructureException { assertEquals(s.getChains().size(), c.getChains().size()); for ( Chain chain : s.getChains()) { Chain test = c.getChain(chain.getId()); assertEquals("Could not correctly clone seqres for chain " + chain.getId() , chain.getSeqResLength(),test.getSeqResLength()); assertEquals("Could not correctly clone atom records for chain " + chain.getId() , chain.getAtomLength(),test.getAtomLength()); Iterator<Group> it = test.getAtomGroups().iterator(); for (Group g : chain.getAtomGroups()) { Group testGroup = it.next(); //if (g.hasAltLoc()) { // System.out.println(g.toString()); //} assertEquals(g.getAltLocs().size(), testGroup.getAltLocs().size()); } it = test.getSeqResGroups().iterator(); for (Group g: chain.getSeqResGroups()) { Group testGroup = it.next(); assertEquals(g.getAltLocs().size(), testGroup.getAltLocs().size()); } } Atom[] allAtoms = StructureTools.getAllAtomArray(s); Atom[] allAtomsCloned = StructureTools.getAllAtomArray(c); assertEquals(allAtoms.length,allAtomsCloned.length); } }