public BitSet[] computeFingerprints(IAtomContainer mol) throws CDKException { final BitSet[] fingerprints = new BitSet[fingerprinters.size()]; int k=0; for (IFingerprinter fp : fingerprinters) { fingerprints[k] = fp.getBitFingerprint(mol).asBitSet(); assert (fingerprints[k].size() >= fp.getSize() && fingerprints[k].length() <= fp.getSize()); ++k; } return fingerprints; }
@Test(expected = UnsupportedOperationException.class) public void testGetCountFingerprint() throws Exception { getBitFingerprinter().getCountFingerprint(mock(IAtomContainer.class)); }
@Test(expected = UnsupportedOperationException.class) public void testGetRawFingerprint() throws Exception { getBitFingerprinter().getRawFingerprint(mock(IAtomContainer.class)); } }
public int numberOfFingerprints() { int s=0; for (IFingerprinter f : fingerprinters) s += f.getSize(); return s; }
@Test public void testFingerprint() throws Exception { SmilesParser parser = new SmilesParser(SilentChemObjectBuilder.getInstance()); IFingerprinter printer = new GraphOnlyFingerprinter(); IBitFingerprint bs1 = printer.getBitFingerprint(parser.parseSmiles("C=C-C#N")); IBitFingerprint bs2 = printer.getBitFingerprint(parser.parseSmiles("CCCN")); Assert.assertEquals(bs1, bs2); }
private void computeFp(int k, CdkFingerprintVersion.USED_FINGERPRINTS fingerprintType) { try { if (fingerprintType.requiresAromaticityPerception) perceiveAromaticity(); this.fingerprints[k] = Fingerprinter.getFingerprinter(fingerprintType).getFingerprint(molecule); } catch (CDKException e) { throw new RuntimeException(e); } }
public boolean[] fingerprintsToBooleans(BitSet[] bitSets) { int n=0; for (BitSet b : bitSets) n += b.size(); int fpn = 0; for (IFingerprinter f : fingerprinters) fpn += f.getSize(); final boolean[] bits = new boolean[fpn]; int j=0; for (int i=0; i < bitSets.length; ++i) { final BitSet b = bitSets[i]; final int N = fingerprinters.get(i).getSize(); for (int k = 0; k < N; ++k) { if (b.get(k)) bits[j] = true; ++j; } } return bits; }
@Test @Override public void testBug706786() throws Exception { IAtomContainer superStructure = bug706786_1(); IAtomContainer subStructure = bug706786_2(); addImplicitHydrogens(superStructure); addImplicitHydrogens(subStructure); // SMARTS is now correct and D will include H atoms, CDK had this wrong // for years (had it has non-H count). Whilst you can set the optional // SMARTS flavor CDK_LEGACY this is not correct AtomContainerManipulator.suppressHydrogens(superStructure); AtomContainerManipulator.suppressHydrogens(subStructure); IFingerprinter fpr = getBitFingerprinter(); IBitFingerprint superBits = fpr.getBitFingerprint(superStructure); IBitFingerprint subBits = fpr.getBitFingerprint(subStructure); assertThat(superBits.asBitSet(), is(asBitSet(0, 11, 13, 17, 40, 48, 136, 273, 274, 278, 286, 294, 299, 301, 304, 306))); assertThat(subBits.asBitSet(), is(asBitSet(1, 17, 273, 274, 278, 294, 306))); }
@Test public void testFingerprint() throws Exception { SmilesParser parser = new SmilesParser(SilentChemObjectBuilder.getInstance()); IFingerprinter printer = getBitFingerprinter(); BitSet bs1 = printer.getBitFingerprint(parser.parseSmiles("C=C-C#N")).asBitSet(); BitSet bs2 = printer.getBitFingerprint(parser.parseSmiles("C=CCC(O)CC#N")).asBitSet(); Assert.assertEquals(4860, printer.getSize()); Assert.assertTrue(FingerprinterTool.isSubset(bs2, bs1)); } }
public String fingerprintsToString(BitSet[] bitSets) { int n=0; for (BitSet b : bitSets) n += b.size(); final StringBuilder buffer = new StringBuilder(n); for (int i=0; i < bitSets.length; ++i) { final BitSet b = bitSets[i]; final int N = fingerprinters.get(i).getSize(); for (int k = 0; k < N; ++k) { if (b.get(k)) buffer.append('1'); else buffer.append('0'); } } return buffer.toString(); }
@Test public void testChebi() throws Exception { IAtomContainer searchmol = null; IAtomContainer findmol = null; String filename = "data/mdl/chebisearch.mol"; InputStream ins = this.getClass().getClassLoader().getResourceAsStream(filename); MDLV2000Reader reader = new MDLV2000Reader(ins); searchmol = reader.read(new AtomContainer()); reader.close(); filename = "data/mdl/chebifind.mol"; ins = this.getClass().getClassLoader().getResourceAsStream(filename); reader = new MDLV2000Reader(ins); findmol = reader.read(new AtomContainer()); reader.close(); IFingerprinter fingerprinter = new ExtendedFingerprinter(); BitSet superBS = fingerprinter.getBitFingerprint(findmol).asBitSet(); BitSet subBS = fingerprinter.getBitFingerprint(searchmol).asBitSet(); boolean isSubset = FingerprinterTool.isSubset(superBS, subBS); boolean isSubset2 = FingerprinterTool.isSubset(subBS, superBS); Assert.assertFalse(isSubset); Assert.assertFalse(isSubset2); }
@Test public void testGetCountFingerprint() throws Exception { IFingerprinter printer = new AtomPairs2DFingerprinter(); IAtomContainer mol1 = parser.parseSmiles("cccccccccc"); ICountFingerprint icfp = printer.getCountFingerprint(mol1); Assert.assertEquals(9, icfp.numOfPopulatedbins()); }
@Test public void ignoredAtom() throws Exception { IFingerprinter printer = new AtomPairs2DFingerprinter(); IAtomContainer mol1 = parser.parseSmiles("[Te]1cccc1"); Map<String, Integer> map = printer.getRawFingerprint(mol1); Assert.assertTrue(map.containsKey("1_C_C")); Assert.assertTrue(map.containsKey("2_C_C")); }
@Test public void testFingerprint() throws Exception { SmilesParser parser = new SmilesParser(SilentChemObjectBuilder.getInstance()); IFingerprinter printer = new EStateFingerprinter(); IBitFingerprint bs1 = printer.getBitFingerprint(parser.parseSmiles("C=C-C#N")); IBitFingerprint bs2 = printer.getBitFingerprint(parser.parseSmiles("C=CCC(O)CC#N")); Assert.assertEquals(79, printer.getSize()); Assert.assertTrue(bs1.get(7)); Assert.assertTrue(bs1.get(10)); Assert.assertTrue(FingerprinterTool.isSubset(bs2.asBitSet(), bs1.asBitSet())); }
public ExtendedFingerprintVersion(IFingerprinter... extendedFingerprinters) { this.extensions = extendedFingerprinters; this.offsets = new int[extendedFingerprinters.length]; this.underlyingFpVersion = CdkFingerprintVersion.getDefault(); offsets[0] = underlyingFpVersion.size(); this.sizes = new int[extendedFingerprinters.length]; int n=0; for (int k=0; k < extendedFingerprinters.length; ++k) { sizes[k] = extendedFingerprinters[k].getSize(); if (k +1 < extendedFingerprinters.length) offsets[k+1] = offsets[k]+sizes[k]; n += sizes[k]; } this.size = n+offsets[0]; this.properties = new MolecularProperty[this.size]; }
BitSet bs1 = fingerprinter.getBitFingerprint(structure1).asBitSet(); BitSet bs2 = fingerprinter.getBitFingerprint(structure2).asBitSet();
AtomContainerManipulator.percieveAtomTypesAndConfigureAtoms(mol); Aromaticity.cdkLegacy().apply(mol); cfp = printer.getCountFingerprint(mol); AtomContainerManipulator.percieveAtomTypesAndConfigureAtoms(mol); Aromaticity.cdkLegacy().apply(mol); cfp = printer.getCountFingerprint(mol); AtomContainerManipulator.percieveAtomTypesAndConfigureAtoms(mol); Aromaticity.cdkLegacy().apply(mol); cfp = printer.getCountFingerprint(mol); AtomContainerManipulator.percieveAtomTypesAndConfigureAtoms(mol); Aromaticity.cdkLegacy().apply(mol); cfp = printer.getCountFingerprint(mol);
@Test public void testHalogen() throws Exception { IFingerprinter printer = new AtomPairs2DFingerprinter(); IAtomContainer mol1 = parser.parseSmiles("Clc1ccccc1"); Map<String, Integer> map = printer.getRawFingerprint(mol1); Assert.assertTrue(map.containsKey("1_X_C")); Assert.assertTrue(map.containsKey("1_Cl_C")); Assert.assertTrue(map.containsKey("2_X_C")); Assert.assertTrue(map.containsKey("2_Cl_C")); Assert.assertTrue(map.containsKey("3_X_C")); Assert.assertTrue(map.containsKey("3_Cl_C")); Assert.assertTrue(map.containsKey("4_X_C")); Assert.assertTrue(map.containsKey("4_Cl_C")); }
@Test public void testFingerprint() throws Exception { SmilesParser parser = new SmilesParser(SilentChemObjectBuilder.getInstance()); IFingerprinter printer = new MACCSFingerprinter(); IAtomContainer mol1 = parser.parseSmiles("c1ccccc1CCc1ccccc1"); IAtomContainer mol2 = parser.parseSmiles("c1ccccc1CC"); IAtomContainer mol3 = parser.parseSmiles("CCC.CCC"); AtomContainerManipulator.percieveAtomTypesAndConfigureAtoms(mol1); AtomContainerManipulator.percieveAtomTypesAndConfigureAtoms(mol2); AtomContainerManipulator.percieveAtomTypesAndConfigureAtoms(mol3); Aromaticity.cdkLegacy().apply(mol1); Aromaticity.cdkLegacy().apply(mol2); Aromaticity.cdkLegacy().apply(mol3); BitSet bs1 = printer.getBitFingerprint(mol1).asBitSet(); BitSet bs2 = printer.getBitFingerprint(mol2).asBitSet(); BitSet bs3 = printer.getBitFingerprint(mol3).asBitSet(); Assert.assertEquals(166, printer.getSize()); Assert.assertFalse(bs1.get(165)); Assert.assertTrue(bs1.get(124)); Assert.assertFalse(bs2.get(124)); Assert.assertTrue(bs3.get(165)); Assert.assertFalse(FingerprinterTool.isSubset(bs1, bs2)); }
public void restoreFingerprints(Fingerprinter fingerprinter, double[] completeFp, MolecularFormula formula) { final boolean[] fp = new boolean[completeFp.length]; restoreFingerprints(fingerprinter, fp, formula); int offset = 0; for (IFingerprinter f : fingerprinter.getFingerprinters()) { if (f instanceof MACCSFingerprinter || f instanceof FixedMACCSFingerprinter) { for (int index : MACCS) { completeFp[offset+index] = fp[offset+index] ? 1 : 0; } } else if (f instanceof PubchemFingerprinter) { for (int i=0; i < PUBCHEM_FSIZE; ++i) { completeFp[offset+i] = fp[offset+i] ? 1 : 0; } } else if (f instanceof KlekotaRothFingerprinter) { for (int index : KLEKOTHA_ROTH) { completeFp[offset+index] = fp[offset+index] ? 1 : 0; } } offset += f.getSize(); } }