#include #include #include #include #include #include #include using namespace std; using namespace OpenBabel; int main(int argc, char* argv[]) { OBConversion conv; conv.SetInFormat("SMI"); // フィンガープリントの設定(ECFP4) OBFingerprint* pFP = OBFingerprint::FindFingerprint("ECFP4"); // OBFingerprint* pFP = OBFingerprint::FindFingerprint("MACCS"); // 参照分子の読み込み ifstream ifs1("Fexofenadine.smi"); OBMol ref; conv.Read(&ref, &ifs1); ifs1.close(); // 参照分子のフィンガープリントを取得 vector fp_ref; pFP->GetFingerprint(&ref, fp_ref); // テスト分子の読み込み開始 ifstream ifs2("test19.smi"); vector fp_mol; OBMol mol; while (conv.Read(&mol, &ifs2)) { // テスト分子のフィンガープリントを取得して谷本係数を計算 pFP->GetFingerprint(&mol, fp_mol); double Tc = OBFingerprint::Tanimoto(fp_ref, fp_mol); cout << mol.GetTitle() << "\t" << Tc << endl; // フィンガープリントをクリア fp_mol.clear(); } ifs2.close(); return 0; }