@Override public IBitFingerprint getBitFingerprint(IAtomContainer atomContainer) throws CDKException { return new IntArrayFingerprint(getRawFingerprint(atomContainer)); }
@Override public ICountFingerprint getCountFingerprint(IAtomContainer container) throws CDKException { return new IntArrayCountFingerprint(getRawFingerprint(container)); }
@Test @Override public void testGetRawFingerprint() throws Exception { SignatureFingerprinter fingerprinter = new SignatureFingerprinter(0); SmilesParser sp = new SmilesParser(DefaultChemObjectBuilder.getInstance()); IAtomContainer mol = sp.parseSmiles("O(NC)CC"); Map<String, Integer> map = fingerprinter.getRawFingerprint(mol); Assert.assertEquals(3, map.size()); String[] expectedPrints = {"[O]", "[C]", "[N]"}; for (String print : expectedPrints) { Assert.assertTrue(map.containsKey(print)); } }
@Test public void compareCountFingerprintAndRawFingerprintTanimoto() throws CDKException { IAtomContainer mol1 = TestMoleculeFactory.make123Triazole(); IAtomContainer mol2 = TestMoleculeFactory.makeImidazole(); SignatureFingerprinter fingerprinter = new SignatureFingerprinter(1); ICountFingerprint countFp1 = fingerprinter.getCountFingerprint(mol1); ICountFingerprint countFp2 = fingerprinter.getCountFingerprint(mol2); Map<String, Integer> feat1 = fingerprinter.getRawFingerprint(mol1); Map<String, Integer> feat2 = fingerprinter.getRawFingerprint(mol2); float rawTanimoto = Tanimoto.calculate(feat1, feat2); double countTanimoto = Tanimoto.method1(countFp1, countFp2); Assert.assertEquals(rawTanimoto, countTanimoto, 0.001); }
/** * @throws Exception * @cdk.bug 3310138 */ @Test public void testRawTanimotoBetween0and1() throws Exception { SmilesParser smilesParser = new SmilesParser(SilentChemObjectBuilder.getInstance()); IAtomContainer mol1 = smilesParser.parseSmiles("Cc1nc(C(=O)NC23CC4CC(CC(C4)C2)C3)c(C)n1C5CCCCC5"); IAtomContainer mol2 = smilesParser .parseSmiles("CS(=O)(=O)Nc1ccc(Cc2onc(n2)c3ccc(cc3)S(=O)(=O)Nc4ccc(CCNC[C@H](O)c5cccnc5)cc4)cc1"); SignatureFingerprinter fingerprinter = new SignatureFingerprinter(0); Map<String, Integer> fp1 = fingerprinter.getRawFingerprint(mol1); Map<String, Integer> fp2 = fingerprinter.getRawFingerprint(mol2); float tanimoto = Tanimoto.calculate(fp1, fp2); Assert.assertTrue("Tanimoto expected to be between 0 and 1, was:" + tanimoto, tanimoto > 0 && tanimoto < 1); }