Hi all,
What am I doing wrong in the following code:
#include <iostream>
#include <sstream>
#include <openbabel/mol.h>
#include <openbabel/obconversion.h>
int main (int argc, char * const argv[])
{
OpenBabel::OBMol mol;
OpenBabel::OBConversion smi2mol;
smi2mol.SetInFormat("smi");
OpenBabel::OBConversion mol2can;
mol2can.SetOutFormat("can");
mol2can.AddOption("n", OpenBabel::OBConversion::OUTOPTIONS);
// First Kekule representation of indole
std::stringstream ss1("[NH]1C=CC2=CC=CC=C12");
smi2mol.SetInStream(&ss1);
if (smi2mol.Read(&mol))
{
std::cout << "[NH]1C=CC2=CC=CC=C12" << std::endl;
std::cout << mol2can.WriteString(&mol, true) << std::endl;
std::cout << mol.NumAtoms() << std::endl;
}
// Second Kekule representation of indole
mol.Clear();
std::cout << std::endl;
std::stringstream ss2("[NH]1C=CC2=C1C=CC=C2");
smi2mol.SetInStream(&ss2);
if (smi2mol.Read(&mol))
{
std::cout << "[NH]1C=CC2=C1C=CC=C2" << std::endl;
std::cout << mol2can.WriteString(&mol, true) << std::endl;
std::cout << mol.NumAtoms() << std::endl;
}
}
When I run it I get the following output:
[NH]1C=CC2=CC=CC=C12
c1ccc2c(c1)[nH]cc2
2413938425
[NH]1C=CC2=C1C=CC=C2
c1ccc2c(c1)[nH]cc2
2413938425
So the generated canonical smiles are identical (which is OK), but the
number of atoms seems to be undefined...
Any clues?
Hans
------------------------------------------------------------------------------
Increase Visibility of Your 3D Game App & Earn a Chance To Win $500!
Tap into the largest installed PC base & get more eyes on your game by
optimizing for Intel(R) Graphics Technology. Get started today with the
Intel(R) Software Partner Program. Five $500 cash prizes are up for grabs.
http://p.sf.net/sfu/intelisp-dev2dev
_______________________________________________
OpenBabel-discuss mailing list
OpenBabel-discuss@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/openbabel-discuss