package org.biojava.nbio.structure.io.mmtf;
import static org.junit.Assert.assertEquals;
import java.io.File;
import java.io.IOException;
import java.nio.file.Paths;
import java.util.ArrayList;
import org.biojava.nbio.structure.AminoAcidImpl;
import org.biojava.nbio.structure.Atom;
import org.biojava.nbio.structure.AtomImpl;
import org.biojava.nbio.structure.Chain;
import org.biojava.nbio.structure.ChainImpl;
import org.biojava.nbio.structure.Element;
import org.biojava.nbio.structure.EntityInfo;
import org.biojava.nbio.structure.Group;
import org.biojava.nbio.structure.PDBHeader;
import org.biojava.nbio.structure.ResidueNumber;
import org.biojava.nbio.structure.Structure;
import org.biojava.nbio.structure.StructureImpl;
import org.biojava.nbio.structure.io.mmcif.model.ChemComp;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.TemporaryFolder;
/**
* Test that Biojava can read and write MMTF data.
* @author Anthony Bradley
*
*/
public class TestBasicMmtf {
/**
* A test folder for testing writing files.
*/
@Rule
public TemporaryFolder testFolder = new TemporaryFolder();
/**
* Test that Biojava can read a file from the file system.
* @throws IOException
*/
@Test
public void testRead() throws IOException {
ClassLoader classLoader = getClass().getClassLoader();
Structure structure = MmtfActions.readFromFile((Paths.get(classLoader.getResource("org/biojava/nbio/structure/io/mmtf/4CUP.mmtf").getPath())));
assertEquals(structure.getPDBCode(),"4CUP");
assertEquals(structure.getChains().size(),6);
}
/**
* Test the writing of Structure objects to a file.
* @throws IOException
*/
@Test
public void testWrite() throws IOException {
Structure structure = new StructureImpl();
PDBHeader pdbHeader = new PDBHeader();
pdbHeader.setExperimentalTechnique("X-RAY DIFFRACTION");
structure.setEntityInfos(new ArrayList<EntityInfo>());
structure.setPDBHeader(pdbHeader);
Chain chain = new ChainImpl();
chain.setId("A");
chain.setName("A");
Group group = new AminoAcidImpl();
group.setPDBName("FKF");
ChemComp chemComp = new ChemComp();
chemComp.setType("TYPfdl");
chemComp.setOne_letter_code("A");
group.setChemComp(chemComp);
Atom atom = new AtomImpl();
atom.setName("A");
atom.setElement(Element.Ag);
atom.setCoords(new double[] {1.0,2.0,3.0});
chain.addGroup(group);
group.addAtom(atom);
ResidueNumber residueNumber = new ResidueNumber();
residueNumber.setInsCode('A');
residueNumber.setSeqNum(100);
group.setResidueNumber(residueNumber);
structure.addChain(chain);
File tempFile = testFolder.newFile("tmpfile");
MmtfActions.writeToFile(structure, tempFile.toPath());
}
}