#include #include #include #include #include using namespace std; using namespace OpenBabel; int main(int argc, char* argv[]) { ifstream ifs("EGFR_lig.sdf"); OBConversion conv; conv.SetInFormat("SDF"); OBMol mol; vector lib; while (conv.Read(&mol, &ifs)) { lib.push_back(mol); } ifs.close(); conv.SetOutFormat("CAN"); for (auto ii = lib.begin(); ii != lib.end(); ii++) { // SMILESを取得する string smiles = conv.WriteString(&*ii); smiles.erase(smiles.find('\t')); // プロパティとしてSMILES OBPairData* p = new OBPairData; p->SetAttribute("OpenBabel_SMILES"); p->SetValue(smiles); ii->SetData(p); // プロパティを1つ削除する ii->DeleteData("PUBCHEM_IUPAC_INCHI"); } // SDファイルに出力する ofstream ofs("New_EGFR_lig.sdf"); conv.SetOutFormat("SDF"); for (auto ii = lib.begin(); ii != lib.end(); ii++) { conv.Write(&*ii, &ofs); } ofs.close(); }