#rdkit #c++
Biblioteka rdkit nie ma porządnej dokumentacji do C++ API. Kilka przykładów w źródłach i tyle. Korzystając z przykładu zrobiłem minimalny kod który tylko tworzy obiekt MOL.
#include
#include
#include
#include
//#include
//#include
//#include
#include
#include
#include
using namespace RDKit;
//namespace io=boost::iostreams;
void readsmiles() {
std::string smiles="C1CCCC1";
RWMol *m;
m = SmilesToMol(smiles);
std::cout << m;
}
int main(int argc,char *argv[]) {
readsmiles();
}
Includy mocno na pałe, zakomentowałem tylko to co
Biblioteka rdkit nie ma porządnej dokumentacji do C++ API. Kilka przykładów w źródłach i tyle. Korzystając z przykładu zrobiłem minimalny kod który tylko tworzy obiekt MOL.
#include
#include
#include
#include
//#include
//#include
//#include
#include
#include
#include
using namespace RDKit;
//namespace io=boost::iostreams;
void readsmiles() {
std::string smiles="C1CCCC1";
RWMol *m;
m = SmilesToMol(smiles);
std::cout << m;
}
int main(int argc,char *argv[]) {
readsmiles();
}
Includy mocno na pałe, zakomentowałem tylko to co
W rdkicie można "robić" reakcje chemiczne określając substraty, produkt(y?). Można numerować atomy - generanie wszystko co SMARTS przewiduje. Reakcja z dwoma substratami ("." rozdziela substraty a po ">>" jest produkt):
r3=AllChem.ReactionFromSmarts('[C:1]=[C:2].[C:3]=[*:4][*:5]=[C:6]>>[C:1]1[C:2][C:3][*:4]=[*:5][C:6]1')
Potem uruchomienie RunReactants z krotką substratów powinno zwrócić listę(albo krotkę) z możliwymi produktami.
przykład z dokumentacji (bloga). Jednak nie działa:
p2=r3.RunReactants((Chem.MolFromSmiles('OC=C'), Chem.MolFromSmiles('C=CC(N)=C')))
daje błąd:
TypeError: No topython (by-value) converter found for C++ type: boost::sharedptr
Co jest
Btw. ciekawa zabawka ;)