@Test
public void keggR00258() throws java.lang.Exception {

    SmilesParser sp = new SmilesParser(DefaultChemObjectBuilder.getInstance());
    String smiles1 = "O=C(O)CCC(=O)C(=O)O";
    String smiles2 = "O=C(O)C(N)CCC(=O)O";
    String smiles3 = "O=C(O)C(N)C";
    String smiles4 = "CC(=O)C(=O)O";
    IAtomContainer molecule1 = sp.parseSmiles(smiles1);
    IAtomContainer molecule2 = sp.parseSmiles(smiles2);
    IAtomContainer molecule3 = sp.parseSmiles(smiles3);
    IAtomContainer molecule4 = sp.parseSmiles(smiles4);
    Fingerprinter fingerprinter = new Fingerprinter(1024, 6);
    BitSet bs1 = fingerprinter.getBitFingerprint(molecule1).asBitSet();
    BitSet bs2 = fingerprinter.getBitFingerprint(molecule2).asBitSet();
    BitSet bs3 = fingerprinter.getBitFingerprint(molecule3).asBitSet();
    BitSet bs4 = fingerprinter.getBitFingerprint(molecule4).asBitSet();
    assertThat((double) Tanimoto.calculate(bs1, bs2), is(closeTo(0.75, 0.1)));
    assertThat((double) Tanimoto.calculate(bs1, bs3), is(closeTo(0.46, 0.1)));
    assertThat((double) Tanimoto.calculate(bs1, bs4), is(closeTo(0.52, 0.1)));
    assertThat((double) Tanimoto.calculate(bs2, bs3), is(closeTo(0.53, 0.1)));
    assertThat((double) Tanimoto.calculate(bs2, bs4), is(closeTo(0.42, 0.1)));
    assertThat((double) Tanimoto.calculate(bs3, bs4), is(closeTo(0.8, 0.1)));
}