// C++ #include #include #include #include #include #include // C #include #include #include #include #include #include // RDKit #include #include // RDKit FingerPrint #include using namespace std; using namespace RDKit; int main(int argc, char* argv[]) { ifstream isd1("Fexofenadine.smi"); MolSupplier* ms1 = new SmilesMolSupplier(&isd1, true, "\t", 0, 1, false, true); ROMOL_SPTR ref = ROMOL_SPTR(ms1->next()); // calculate fingerprint SparseIntVect* fp_ref = MorganFingerprints::getFingerprint(*ref, 2); ifstream isd2("test19.smi"); MolSupplier* ms2 = new SmilesMolSupplier(&isd2, true, "\t", 0, 1, false, true); while (true) { if (ms2->atEnd()) break; ROMOL_SPTR mol = ROMOL_SPTR(ms2->next()); if (!mol) continue; SparseIntVect* fp_mol = MorganFingerprints::getFingerprint(*mol, 2); double Tc = TanimotoSimilarity(*fp_ref, *fp_mol); cout << mol->getProp("_Name") << "\t" << Tc << endl; } return 1; }