@Override public String toString() { StringBuilder buf = new StringBuilder(); for (int i = 0; i < length(); i++) { buf.append(get(i)); if (i + 1 < length()) buf.append(','); } return buf.toString(); }
static public Object toObject(IDescriptorResult result, int index) throws DescriptorException { if(result instanceof DoubleArrayResult){ double doubleValue = ((DoubleArrayResult)result).get(index); validateValue(doubleValue); return Double.valueOf(doubleValue); } else if(result instanceof IntegerArrayResult){ int intValue = ((IntegerArrayResult)result).get(index); return Integer.valueOf(intValue); } throw new DescriptorException(String.valueOf(result)); }
@Test public void testComplex2() throws Exception { SmilesParser sp = new SmilesParser(DefaultChemObjectBuilder.getInstance()); IAtomContainer mol = sp.parseSmiles("C#CC(C)=C"); IntegerArrayResult ret = (IntegerArrayResult) descriptor.calculate(mol).getValue(); Assert.assertEquals(1, ret.get(0)); Assert.assertEquals(1, ret.get(1)); Assert.assertEquals(1, ret.get(2)); Assert.assertEquals(0, ret.get(3)); Assert.assertEquals(1, ret.get(4)); Assert.assertEquals(1, ret.get(5)); Assert.assertEquals(0, ret.get(6)); Assert.assertEquals(0, ret.get(7)); Assert.assertEquals(0, ret.get(8)); }
@Test public void testComplex1() throws Exception { SmilesParser sp = new SmilesParser(DefaultChemObjectBuilder.getInstance()); IAtomContainer mol = sp.parseSmiles("C(C)(C)C=C(C)C"); IntegerArrayResult ret = (IntegerArrayResult) descriptor.calculate(mol).getValue(); Assert.assertEquals(0, ret.get(0)); Assert.assertEquals(0, ret.get(1)); Assert.assertEquals(0, ret.get(2)); Assert.assertEquals(1, ret.get(3)); Assert.assertEquals(1, ret.get(4)); Assert.assertEquals(4, ret.get(5)); Assert.assertEquals(0, ret.get(6)); Assert.assertEquals(1, ret.get(7)); Assert.assertEquals(0, ret.get(8)); }
@Test public void testButane() throws Exception { SmilesParser sp = new SmilesParser(DefaultChemObjectBuilder.getInstance()); IAtomContainer mol = sp.parseSmiles("CCCC"); IntegerArrayResult ret = (IntegerArrayResult) descriptor.calculate(mol).getValue(); Assert.assertEquals(0, ret.get(0)); Assert.assertEquals(0, ret.get(1)); Assert.assertEquals(0, ret.get(2)); Assert.assertEquals(0, ret.get(3)); Assert.assertEquals(0, ret.get(4)); Assert.assertEquals(2, ret.get(5)); Assert.assertEquals(2, ret.get(6)); Assert.assertEquals(0, ret.get(7)); Assert.assertEquals(0, ret.get(8)); }
@Test public void testGet_int() { IntegerArrayResult result = new IntegerArrayResult(); Assert.assertNotNull(result); Assert.assertEquals("", result.toString()); result.add(5); Assert.assertEquals(5, result.get(0)); result.add(2); Assert.assertEquals(5, result.get(0)); Assert.assertEquals(2, result.get(1)); result.add(-1); Assert.assertEquals(5, result.get(0)); Assert.assertEquals(2, result.get(1)); Assert.assertEquals(-1, result.get(2)); }
for (int n = 0; n < names.length; n++) { if (names[n].equals("nSmallRings")) gotSmallRings = values.get(n); else if (names[n].equals("nRingBlocks")) gotRingBlocks = values.get(n); else if (names[n].equals("nAromRings")) gotAromRings = values.get(n); else if (names[n].equals("nAromBlocks")) gotAromBlocks = values.get(n);
@Test public void testFCount() throws Exception { IBioPolymer protein = ProteinBuilderTool.createProtein("FF", SilentChemObjectBuilder.getInstance()); IDescriptorResult result = descriptor.calculate(protein).getValue(); Assert.assertTrue(result instanceof IntegerArrayResult); IntegerArrayResult iaResult = (IntegerArrayResult) result; Assert.assertEquals(2, iaResult.get(8)); Assert.assertEquals(4, iaResult.get(5)); // thingy is symmetrical, so two mappings at each AA position possible }
@Test public void testTCount() throws Exception { IBioPolymer protein = ProteinBuilderTool.createProtein("TT", SilentChemObjectBuilder.getInstance()); IDescriptorResult result = descriptor.calculate(protein).getValue(); Assert.assertTrue(result instanceof IntegerArrayResult); IntegerArrayResult iaResult = (IntegerArrayResult) result; Assert.assertEquals(2, iaResult.get(8)); Assert.assertEquals(2, iaResult.get(16)); }
@Test public void test2() throws Exception { SmilesParser sp = new SmilesParser(DefaultChemObjectBuilder.getInstance()); IAtomContainer mol = sp.parseSmiles("c1c(CN)cc(CCNC)cc1C(CO)CC(=O)CCOCCCO"); AtomContainerManipulator.percieveAtomTypesAndConfigureAtoms(mol); Aromaticity.cdkLegacy().apply(mol); DescriptorValue value = descriptor.calculate(mol); IntegerArrayResult result = (IntegerArrayResult) value.getValue(); Assert.assertEquals(79, result.length()); Assert.assertEquals(2, result.get(getIndex("khs.sOH"))); Assert.assertEquals(1, result.get(getIndex("khs.dO"))); Assert.assertEquals(1, result.get(getIndex("khs.ssO"))); Assert.assertEquals(1, result.get(getIndex("khs.sNH2"))); Assert.assertEquals(1, result.get(getIndex("khs.ssNH"))); }
@Test public void testAACount() throws Exception { IBioPolymer protein = ProteinBuilderTool.createProtein("ARNDCFQEGHIPLKMSTYVW", SilentChemObjectBuilder.getInstance()); IDescriptorResult result = descriptor.calculate(protein).getValue(); Assert.assertTrue(result instanceof IntegerArrayResult); IntegerArrayResult iaResult = (IntegerArrayResult) result; for (int i = 0; i < iaResult.length(); i++) { Assert.assertTrue(iaResult.get(i) >= 1); // all AAs are found at least once } Assert.assertEquals(20, iaResult.get(8)); // glycine is in all of them, so 20 times }
@Override public DescriptorValue calculate(IAtomContainer molecule){ DescriptorValue value = getDescriptor().calculate(molecule); int index = getIndex(); IDescriptorResult result = value.getValue(); if(result instanceof DoubleArrayResult){ DoubleArrayResult arrayResult = (DoubleArrayResult)result; result = new DoubleResult(arrayResult.get(index)); } else if(result instanceof IntegerArrayResult){ IntegerArrayResult arrayResult = (IntegerArrayResult)result; result = new IntegerResult(arrayResult.get(index)); } else { throw new IllegalStateException(); } return new DescriptorValue(getSpecification(), getParameterNames(), getParameters(), result, getDescriptorNames()); }
StringBuffer buffer = new StringBuffer(); for (int i = 0; i < result.length(); i++) { buffer.append(result.get(i) + " ");
@Test public void test3() throws Exception { SmilesParser sp = new SmilesParser(DefaultChemObjectBuilder.getInstance()); IAtomContainer mol = sp.parseSmiles("C#CC(C)(C)C(C)(C)C#C"); AtomContainerManipulator.percieveAtomTypesAndConfigureAtoms(mol); Aromaticity.cdkLegacy().apply(mol); DescriptorValue value = descriptor.calculate(mol); IntegerArrayResult result = (IntegerArrayResult) value.getValue(); Assert.assertEquals(79, result.length()); Assert.assertEquals(2, result.get(getIndex("khs.tsC"))); Assert.assertEquals(2, result.get(getIndex("khs.ssssC"))); } }
/** * Checks that the results of the first and the second descriptor results * are identical. * * @param v1 first {@link IDescriptorResult} * @param v2 second {@link IDescriptorResult} * @param errorMessage error message to report when the results are not the same */ private void assertEqualOutput(IDescriptorResult v1, IDescriptorResult v2, String errorMessage) { if (v1 instanceof IntegerResult) { Assert.assertEquals(errorMessage, ((IntegerResult) v1).intValue(), ((IntegerResult) v2).intValue()); } else if (v1 instanceof DoubleResult) { Assert.assertEquals(errorMessage, ((DoubleResult) v1).doubleValue(), ((DoubleResult) v2).doubleValue(), 0.00001); } else if (v1 instanceof BooleanResult) { Assert.assertEquals(errorMessage, ((BooleanResult) v1).booleanValue(), ((BooleanResult) v2).booleanValue()); } else if (v1 instanceof DoubleArrayResult) { DoubleArrayResult da1 = (DoubleArrayResult) v1; DoubleArrayResult da2 = (DoubleArrayResult) v2; for (int i = 0; i < da1.length(); i++) { Assert.assertEquals(errorMessage, da1.get(i), da2.get(i), 0.00001); } } else if (v1 instanceof IntegerArrayResult) { IntegerArrayResult da1 = (IntegerArrayResult) v1; IntegerArrayResult da2 = (IntegerArrayResult) v2; for (int i = 0; i < da1.length(); i++) { Assert.assertEquals(errorMessage, da1.get(i), da2.get(i)); } } }
@Test public void test1() throws Exception { SmilesParser sp = new SmilesParser(DefaultChemObjectBuilder.getInstance()); IAtomContainer mol = sp.parseSmiles("CCO"); AtomContainerManipulator.percieveAtomTypesAndConfigureAtoms(mol); Aromaticity.cdkLegacy().apply(mol); DescriptorValue value = descriptor.calculate(mol); IntegerArrayResult result = (IntegerArrayResult) value.getValue(); Assert.assertEquals(79, result.length()); Assert.assertEquals(1, result.get(getIndex("khs.sOH"))); }