Hi all,
I am very new to the RDKit and am in the process of running a few test to
understand how things are working.
One of the first example I have been playing with is the canonical SMILES for
Aspirin. This is the piece of code I put together:
RWMol *mol=new RWMol();
//Atoms for Aspirin mol->addAtom(new Atom(6)); mol->addAtom(new Atom(6));
mol->addAtom(new Atom(6)); mol->addAtom(new Atom(6)); mol->addAtom(new
Atom(6)); mol->addAtom(new Atom(6)); mol->addAtom(new Atom(6));
mol->addAtom(new Atom(8)); mol->addAtom(new Atom(8)); mol->addAtom(new
Atom(8)); mol->addAtom(new Atom(6)); mol->addAtom(new Atom(8));
mol->addAtom(new Atom(6));
//Bonds for Aspirin mol->addBond(0,1,Bond::DOUBLE);
mol->addBond(1,2,Bond::SINGLE); mol->addBond(2,3,Bond::DOUBLE);
mol->addBond(3,4,Bond::SINGLE); mol->addBond(4,5,Bond::DOUBLE);
mol->addBond(5,0,Bond::SINGLE); mol->addBond(5,6,Bond::SINGLE);
mol->addBond(6,7,Bond::SINGLE); mol->addBond(6,8,Bond::DOUBLE);
mol->addBond(4,9,Bond::SINGLE); mol->addBond(9,10,Bond::SINGLE);
mol->addBond(10,11,Bond::DOUBLE); mol->addBond(10,12,Bond::SINGLE);
RDKit::MolOps::sanitizeMol(*mol); std::string smiles; smiles =
MolToSmiles(*(static_cast<ROMol *>(mol)),true); BOOST_LOG(rdInfoLog)<<"
CANONICAL SMILES FOR ASPIRIN: " <<smiles<<std::endl;
This gave me the following result:
CC(Oc1ccccc1C(O)=O)=O
But I was expecting
CC(=O)Oc1ccccc1C(=O)O)
In addition to being new to the RDKit, I'm also new to Cheminformatics in
general, so my question may be silly, but I assumed the canonical SMILES for a
given molecule is unique and was surprised to get a different SMILES to the one
given in my textbook.
I would be very grateful if someone could help me understand why, as I am sure
there's a very good explanation for this.
Many thanks for your help,
George.
_________________________________________________________________
Twice the fun—Share photos while you chat with Windows Live Messenger. Learn
more.
http://www.microsoft.com/uk/windows/windowslive/products/messenger.aspx