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

Reply via email to