/**
* 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 2013-06-24
* Created by Douglas Myers-Turnbull
*
* @since 3.0.6
*/
package org.biojava.nbio.structure.rcsb;
import org.junit.Test;
import java.io.InputStream;
import java.util.List;
import static org.junit.Assert.assertEquals;
/**
* Tests {@link RCSBLigandsFactory}.
* @author dmyerstu
*/
public class RCSBLigandsFactoryTest {
/**
* Opens the file as a {@link InputStream}.
*/
private InputStream openStream(String filename) {
InputStream is = this.getClass().getClassLoader().getResourceAsStream(filename);
return is;
}
/**
* Tests on the live database. Just makes sure the resource can be found.
* If this test fails, it may be because the database changed.
*/
@Test
public void testFromPdbIdUrl() {
RCSBLigands ligands = RCSBLigandsFactory.getFromPdbId("1w0p");
assertEquals(4, ligands.getLigands().size());
assertEquals("CA", ligands.getLigands().get(0).getId());
}
/**
* Tests on the live database. Just makes sure the resource can be found.
* If this test fails, it may be because the database changed.
*/
@Test
public void testFromPdbIdsUrl() {
List<RCSBLigands> ligands = RCSBLigandsFactory.getFromPdbIds("1w0p", "4hhb");
assertEquals(4, ligands.get(0).getLigands().size());
assertEquals("CA", ligands.get(0).getLigands().get(0).getId());
assertEquals(2, ligands.get(1).getLigands().size());
assertEquals("HEM", ligands.get(1).getLigands().get(0).getId());
assertEquals("C34 H32 FE N4 O4", ligands.get(1).getLigands().get(0).getFormula());
assertEquals("O4 P -3", ligands.get(1).getLigands().get(1).getFormula());
}
@Test
public void testFromPdbId() {
RCSBLigands description = RCSBLigandsFactory.getFromPdbId(openStream("describeMol/4hhb_ligands.xml"));
assertEquals("4HHB", description.getPdbId());
List<RCSBLigand> ligands = description.getLigands();
assertEquals(2, ligands.size());
RCSBLigand ligand;
ligand = ligands.get(0);
assertEquals("HEM", ligand.getId());
assertEquals("non-polymer", ligand.getType());
assertEquals(616.487, ligand.getWeight(), 0.0);
assertEquals("PROTOPORPHYRIN IX CONTAINING FE", ligand.getName());
assertEquals("C34 H32 FE N4 O4", ligand.getFormula());
assertEquals("FEDYMSUPMFCVOD-UJJXFSCMSA-N", ligand.getInChIKey());
assertEquals("InChI=1S/C34H34N4O4/c1-7-21-17(3)25-13-26-19(5)23(9-11-33(39)40)31(37-26)16-32-24(10-12-34(41)42)20(6)28(38-32)15-30-22(8-2)18(4)27(36-30)14-29(21)35-25/h7-8,13-16,36-37H,1-2,9-12H2,3-6H3,(H,39,40)(H,41,42)/b25-13-,26-13-,27-14-,28-15-,29-14-,30-15-,31-16-,32-16-", ligand.getInChI());
assertEquals("Cc1c2/cc/3\\nc(/cc\\4/c(c(/c(/[nH]4)c/c5n/c(c\\c(c1CCC(=O)O)[nH]2)/C(=C5C)CCC(=O)O)C=C)C)C(=C3C)C=C", ligand.getSmiles());
ligand = ligands.get(1);
assertEquals("PO4", ligand.getId());
assertEquals("non-polymer", ligand.getType());
assertEquals(94.971, ligand.getWeight(), 0.0);
assertEquals("PHOSPHATE ION", ligand.getName());
assertEquals("O4 P -3", ligand.getFormula());
assertEquals("NBIIXXVUZAFLBC-UHFFFAOYSA-K", ligand.getInChIKey());
assertEquals("InChI=1S/H3O4P/c1-5(2,3)4/h(H3,1,2,3,4)/p-3", ligand.getInChI());
assertEquals("[O-]P(=O)([O-])[O-]", ligand.getSmiles());
}
@Test
public void testFromHeteroAtomIdsUrl() {
List<RCSBLigand> ligands = RCSBLigandsFactory.getFromHeteroAtomIds("NAG", "EBW");
assertEquals("Wrong number of ligands", 2, ligands.size());
assertEquals("Wrong formula", "C8 H15 N O6", ligands.get(0).getFormula());
assertEquals("Wrong formula", "C27 H38 N2 O 2", ligands.get(1).getFormula());
}
@Test
public void testFromHeteroAtomIdUrl() {
List<RCSBLigand> ligands = RCSBLigandsFactory.getFromHeteroAtomIds("NAG");
assertEquals("Wrong number of ligands", 1, ligands.size());
RCSBLigand ligand = ligands.get(0);
assertEquals("Wrong formula", "C8 H15 N O6", ligand.getFormula());
}
}