(forgot to cc list the first time...)
On Tue, Jun 18, 2013 at 10:34 AM, Noel O'Boyle <baoille...@gmail.com> wrote:
> I understand where the expected output is coming from, but where's the
> 'wrong' output coming from?
>
Sorry for not making that clear ... the "expected" output is from obabel,
and the "wrong" output is from my C++ program.
>
> You have pmol_conv_ich->SetInAndOutFormats("inchi", "inchi");
>
> This does mean you are reading one of those InChIs and roundtripping
> it? Or are you reading the SMILES somewhere else and using this
> OBConversion object?
>
The latter ... there's a separate OBConversion object with in/out formats
of "smi".
OK, I think I found the problem. In my code that parses the SMILES I found
this:
pmol->SetDimension(2); // workaround for OpenBabel bug: discards
// chirality if this isn't set.
This must have been put in there a long time ago, and I have no idea if
it's still relevant or not. If I take it out, the InChI strings are
created properly.
However, I can't find any meaningful documentation about what
SetDimension() is supposed to do or how it's used. I suspect I had to add
SetDimension() because of this code in canon.cpp:
// Determine stereochemistry from coordinates if needed
if (!mol->HasChiralityPerceived()) {
switch (mol->GetDimension()) {
case 2:
mol->DeleteData(OBGenericDataType::StereoData);
TetrahedralFrom2D(mol, stereoUnits);
CisTransFrom2D(mol, stereoUnits);
break;
case 3:
mol->DeleteData(OBGenericDataType::StereoData);
TetrahedralFrom3D(mol, stereoUnits);
CisTransFrom3D(mol, stereoUnits);
break;
default:
TetrahedralFrom0D(mol, stereoUnits);
CisTransFrom0D(mol, stereoUnits);
break;
}
}
... but who knows? I'll have to dig into it a bit more...
Thanks,
Craig
> - Noel
>
> On 18 June 2013 16:45, Craig James <cja...@emolecules.com> wrote:
> > I'm getting different InChI strings from obabel than when I invoke the
> InChI
> > format directly from C++ code. It looks like it has to do with options
> ...
> > but my code isn't setting any I/O options for the InChI writer. Here's
> the
> > output from my test program:
> >
> > ERROR: incorrect InChI:
> > expected:
> >
> 'InChI=1S/C15H17NO5/c1-10(14(18)20-2)16-13(17)9-6-11-4-7-12(8-5-11)15(19)21-3/h4-10H,1-3H3,(H,16,17)/b9-6+/t10-/m0/s1'
> > got:
> >
> 'InChI=1S/C15H17NO5/c1-10(14(18)20-2)16-13(17)9-6-11-4-7-12(8-5-11)15(19)21-3/h4-10H,1-3H3,(H,16,17)'
> > SMILES is: 'COC(=O)[C@@H](NC(=O)/C=C/c1ccc(cc1)C(=O)OC)C
> >
> > The "expected" string is from "obabel -i smi -o inchi". Note that it
> seems
> > to be stereo information that differs between the two.
> >
> > The C++ code I'm using is pretty simple:
> >
> > OBConversion *pmol_conv_ich = NULL;
> > pmol_conv_ich = new OBConversion();
> > pmol_conv_ich->SetInAndOutFormats("inchi", "inchi");
> > ...
> > string inchi = pmol_conv_ich->WriteString(pmol, true);
> >
> > I don't set any options on pmol_conf_ich. The SMILES shown above is from
> > the same pmol OBMol object.
> >
> > Why is this output different from obabel's output?
> >
> > Thanks,
> > Craig
> >
> >
> >
> ------------------------------------------------------------------------------
> > This SF.net email is sponsored by Windows:
> >
> > Build for Windows Store.
> >
> > http://p.sf.net/sfu/windows-dev2dev
> > _______________________________________________
> > OpenBabel-Devel mailing list
> > OpenBabel-Devel@lists.sourceforge.net
> > https://lists.sourceforge.net/lists/listinfo/openbabel-devel
> >
>
------------------------------------------------------------------------------
This SF.net email is sponsored by Windows:
Build for Windows Store.
http://p.sf.net/sfu/windows-dev2dev
_______________________________________________
OpenBabel-Devel mailing list
OpenBabel-Devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/openbabel-devel