private synchronized int[] getCircularFP(IAtomContainer mol) throws CDKException { CircularFingerprinter circularFingerprinter = new CircularFingerprinter(6, 1024); circularFingerprinter.setPerceiveStereo(true); IBitFingerprint bitFingerprint = circularFingerprinter.getBitFingerprint(mol); return bitFingerprint.getSetbits(); }
private synchronized int[] getCircularFP(IAtomContainer mol) throws CDKException { CircularFingerprinter circularFingerprinter = new CircularFingerprinter(6, 1024); circularFingerprinter.setPerceiveStereo(true); IBitFingerprint bitFingerprint = circularFingerprinter.getBitFingerprint(mol); return bitFingerprint.getSetbits(); }
@Test public void testGetBitFingerprint() throws Exception { assert (trivialMol != null); CircularFingerprinter circ = new CircularFingerprinter(); IBitFingerprint result = circ.getBitFingerprint(trivialMol); BitSet wantBits = new BitSet(), gotBits = result.asBitSet(); final int[] REQUIRE_BITS = {19, 152, 293, 340, 439, 480, 507, 726, 762, 947, 993}; for (int b : REQUIRE_BITS) wantBits.set(b); if (!wantBits.equals(gotBits)) throw new CDKException("Got " + gotBits + ", wanted " + wantBits); }
@Test public void protonsDontCauseNPE() throws Exception { IAtomContainer proton = new AtomContainer(1, 0, 0, 0); proton.addAtom(atom("H", +1, 0)); CircularFingerprinter circ = new CircularFingerprinter(CircularFingerprinter.CLASS_FCFP2); assertThat(circ.getBitFingerprint(proton).cardinality(), is(0)); }
/** * * @param mol * @return * @throws CDKException */ @Override public synchronized BitSet getFingerprint(IAtomContainer mol) throws CDKException { if (!has2DCoordinates(mol)) { StructureDiagramGenerator structureDiagramGenerator = new StructureDiagramGenerator(); structureDiagramGenerator.setMolecule(mol, true); if (isConnected(mol)) { structureDiagramGenerator.generateCoordinates(); mol = structureDiagramGenerator.getMolecule(); } else { LOGGER.debug("Disconnected components needs to be layout separately"); } } return fingerprinter.getBitFingerprint(mol).asBitSet(); }
IBitFingerprint fp0 = circ.getBitFingerprint(mol); IBitFingerprint fp1 = circ.getBitFingerprint(mol);
@Test public void iminesDetectionDoesntCauseNPE() throws Exception { IAtomContainer pyrazole = new AtomContainer(6, 6, 0, 0); pyrazole.addAtom(atom("H", 0, 0)); pyrazole.addAtom(atom("N", 0, 0)); pyrazole.addAtom(atom("C", 0, 1)); pyrazole.addAtom(atom("C", 0, 1)); pyrazole.addAtom(atom("C", 0, 1)); pyrazole.addAtom(atom("N", 0, 0)); pyrazole.addBond(0, 1, IBond.Order.SINGLE); pyrazole.addBond(1, 2, IBond.Order.SINGLE); pyrazole.addBond(2, 3, IBond.Order.DOUBLE); pyrazole.addBond(3, 4, IBond.Order.SINGLE); pyrazole.addBond(4, 5, IBond.Order.DOUBLE); pyrazole.addBond(1, 5, IBond.Order.SINGLE); CircularFingerprinter circ = new CircularFingerprinter(CircularFingerprinter.CLASS_FCFP2); assertNotNull(circ.getBitFingerprint(pyrazole)); }
/** * @cdk.bug 1357 */ @Test public void partialCoordinatesDontCauseNPE() throws Exception { IAtomContainer m = new AtomContainer(); m.addAtom(atom("C", 3, 0.000, 0.000)); m.addAtom(atom("C", 0, 1.299, -0.750)); m.addAtom(atom("H", 0, 0)); m.addAtom(atom("O", 0, 1)); m.addAtom(atom("C", 2, 2.598, -0.000)); m.addAtom(atom("C", 3, 3.897, -0.750)); m.addBond(0, 1, IBond.Order.SINGLE); m.addBond(1, 2, IBond.Order.SINGLE); m.addBond(1, 3, IBond.Order.SINGLE, IBond.Stereo.DOWN); m.addBond(1, 4, IBond.Order.SINGLE); m.addBond(4, 5, IBond.Order.SINGLE); CircularFingerprinter circ = new CircularFingerprinter(CircularFingerprinter.CLASS_ECFP6); assertNotNull(circ.getBitFingerprint(m)); }