On Tue, Jun 18, 2013 at 1:48 PM, Noel O'Boyle <baoille...@gmail.com> wrote:

> This is for marking the molecule as 2D (i.e. having 2D coordinates
> associated with it). After reading a SMILES it should be marked as 0D.
>

Right, that makes sense.  I suspect that I added the SetDimension(2) call a
long time ago, and Tim's recent changes to the stereo code fixed whatever
OB bug caused SetDimension(2) to be needed for SMILES parsing.

Thanks,
Craig


>
> - Noel
>
> On 18 June 2013 19:48, Craig James <cja...@emolecules.com> wrote:
> > (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
> >
>
------------------------------------------------------------------------------
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

Reply via email to