/*
* 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 1, 2013
* Author: andreas
*
*/
package org.biojava.nbio.structure;
import org.biojava.nbio.structure.align.util.AtomCache;
import org.junit.Test;
import java.io.IOException;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
public class TestParsingCalcium {
@Test
public void testCalciumParsing() throws StructureException, IOException {
String pdbID = "1SU4";
// Calcium is at position 995
// HETATM 7673 CA CA A 995 64.194 12.588 7.315 1.00 41.55 CA
AtomCache cache = new AtomCache();
Structure s = cache.getStructure(pdbID);
cache.setUseMmCif(true);
Structure m = cache.getStructure(pdbID);
Group g1 = s.getNonPolyChainsByPDB("A").get(0).getGroupByPDB(new ResidueNumber("A",995,null));
Group g2 = m.getNonPolyChainsByPDB("A").get(0).getGroupByPDB(new ResidueNumber("A",995,null));
// can't do that! the atom index is not the same!
//assertEquals(g1.getAtom(0).toPDB(),g2.getAtom(0).toPDB());
assertEquals(g1.getAtom(0).getName(),"CA");
assertEquals(g1.getAtom(0).getElement(),Element.Ca);
assertEquals(g1.getAtom(0).getName(), g2.getAtom(0).getName());
}
@Test
public void testCAreturnsCalpha() throws IOException, StructureException {
// there's an ambiguity in PDB names between the C alpha of an aminoacid, named "CA"
// and the Calcium of a Calcium ion, named "CA" (or potentially any calcium present in a group)
// in PDB files both are distinguished by different paddings: " CA " (Calpha) vs "CA " (Calcium)
String pdbID = "1SU4";
// Calcium is at position 995
// HETATM 7673 CA CA A 995 64.194 12.588 7.315 1.00 41.55 CA
AtomCache cache = new AtomCache();
Structure s = cache.getStructure(pdbID);
Atom[] atoms = StructureTools.getRepresentativeAtomArray(s);
for (Atom atom:atoms) {
assertTrue("atom "+atom.getPDBserial()+" of residue "+atom.getGroup().getResidueNumber()+"-"+atom.getGroup().getPDBName()+
" is not a Carbon alpha", atom.getElement()==Element.C);
}
for (Chain c:s.getChains()) {
atoms = StructureTools.getRepresentativeAtomArray(c);
for (Atom atom:atoms) {
assertTrue("atom "+atom.getPDBserial()+" of residue "+atom.getGroup().getResidueNumber()+"-"+atom.getGroup().getPDBName()+
" is not a Carbon alpha", atom.getElement()==Element.C);
}
}
atoms = StructureTools.getBackboneAtomArray(s);
boolean hasGlycine = false;
for (Atom atom:atoms) {
assertTrue("atom "+atom.getPDBserial()+" of residue "+atom.getGroup().getResidueNumber()+"-"+atom.getGroup().getPDBName()+
" is not a backbone atom",
atom.getElement()==Element.C ||
atom.getElement()==Element.O ||
atom.getElement()==Element.N );
assertTrue("backbone atoms should not contain CB atoms",!atom.getName().equals("CB"));
if (atom.getGroup().getPDBName().equals("GLY")) {
hasGlycine = true;
}
}
assertTrue("the backbone atoms should contain atoms from at least 1 glycine",hasGlycine);
}
}