#rdkit #reakcjachemiczna #chemia

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
@rmrmg: zrob sobie w chroocie albo systemd-nspawn (b. wygodne) stabilne srodowisko (ubuntu/debian/fedora, zamrozony arch) do tego programu i aktualizuj w oderwaniu od głównego systemu.
Btw. ciekawa zabawka ;)
#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