1 package org.openscience.cdk.qsar.descriptors.atomic;
2 
3 import java.io.InputStream;
4 
5 import org.junit.Assert;
6 import org.junit.Before;
7 import org.junit.Test;
8 import org.openscience.cdk.Atom;
9 import org.openscience.cdk.AtomContainer;
10 import org.openscience.cdk.ChemFile;
11 import org.openscience.cdk.ChemObject;
12 import org.openscience.cdk.interfaces.IAtom;
13 import org.openscience.cdk.interfaces.IAtomContainer;
14 import org.openscience.cdk.interfaces.IAtomContainerSet;
15 import org.openscience.cdk.interfaces.IChemModel;
16 import org.openscience.cdk.interfaces.IChemSequence;
17 import org.openscience.cdk.io.IChemObjectReader.Mode;
18 import org.openscience.cdk.io.MDLV2000Reader;
19 import org.openscience.cdk.qsar.DescriptorValue;
20 import org.openscience.cdk.qsar.result.DoubleArrayResult;
21 import org.openscience.cdk.qsar.result.IDescriptorResult;
22 
23 /**
24  * @cdk.module test-qsaratomic
25  */
26 public class RDFProtonDescriptor_G3RTest extends AtomicDescriptorTest {
27 
RDFProtonDescriptor_G3RTest()28     public RDFProtonDescriptor_G3RTest() {}
29 
30     @Before
setUp()31     public void setUp() throws Exception {
32         setDescriptor(RDFProtonDescriptor_G3R.class);
33     }
34 
35     @Test
testExample1()36     public void testExample1() throws Exception {
37         //firstly read file to molecule
38         String filename = "data/mdl/hydroxyamino.mol";
39         InputStream ins = this.getClass().getClassLoader().getResourceAsStream(filename);
40         MDLV2000Reader reader = new MDLV2000Reader(ins, Mode.STRICT);
41         ChemFile chemFile = (ChemFile) reader.read((ChemObject) new ChemFile());
42         IChemSequence seq = chemFile.getChemSequence(0);
43         IChemModel model = seq.getChemModel(0);
44         IAtomContainerSet som = model.getMoleculeSet();
45         IAtomContainer mol = som.getAtomContainer(0);
46 
47         for (int i = 0; i < mol.getAtomCount(); i++) {
48             //			System.out.println("Atom: " + mol.getAtom(i).getSymbol());
49             if (mol.getAtom(i).getSymbol().equals("H")) {
50                 //secondly perform calculation on it.
51                 RDFProtonDescriptor_G3R descriptor = new RDFProtonDescriptor_G3R();
52                 DescriptorValue dv = descriptor.calculate(mol.getAtom(i), mol);
53                 IDescriptorResult result = dv.getValue();
54                 //				System.out.println("array: " + result.toString());
55                 Assert.assertNotNull(result);
56                 Assert.assertEquals(dv.getNames().length, result.length());
57             }
58 
59         }
60     }
61 
62     @Test
testReturnsNaNForNonHydrogen()63     public void testReturnsNaNForNonHydrogen() throws Exception {
64         IAtomContainer mol = new AtomContainer();
65         IAtom atom = new Atom("O");
66         mol.addAtom(atom);
67         DescriptorValue dv = descriptor.calculate(atom, mol);
68         IDescriptorResult result = dv.getValue();
69         Assert.assertNotNull(result);
70         Assert.assertTrue(result instanceof DoubleArrayResult);
71         DoubleArrayResult dResult = (DoubleArrayResult) result;
72         for (int i = 0; i < result.length(); i++) {
73             Assert.assertEquals(Double.NaN, dResult.get(i), 0.000001);
74         }
75     }
76 
77 }
78