I believe I've covered the issues you've raised, but let me know if not. I'll also mention this on Twitter to see if anyone has anything to add.
https://github.com/openbabel/documentation/pull/15 On Tue, 11 Feb 2020 at 19:54, Noel O'Boyle <baoille...@gmail.com> wrote: > Hi Stefano, > > When you call GetConfig() you are setting the winding yourself. I see now > that this wasn't clear. By default, you are saying "give me the atoms in > clockwise order looking from atom x". In other words, you will never need > to check the winding of a config - you will always know it - it'll be > whatever you set when you called GetConfig(). > > While you can use the first example on the page to iterate through > OBStereoData and check for cases of ob.OBStereo.TrigonalBipyramidal if you > want, there's no code in the library to perceive these from 3D structures, > so they will never exist. The only thing we do have right now beyond tetra > and cistrans is square planar from SMILES ("Cl[Pt@SP1](F)(I)Br"), and > even that is not perceived. > > Regards, > - Noel > > On Tue, 11 Feb 2020 at 16:20, Stefano Forli <fo...@scripps.edu> wrote: > >> Hi Noel, >> indeed, that was my initial attempt to figure out how to deal with >> stereogenic centers, >> and I still didn't have a decent understanding of Id vs Idx. >> Incidentally, this is particularly clear in your documentation. >> >> I have one suggestion. >> In the section about the inversion of stereochemistry, it would be >> helpful if the example >> would show how to read the current winding. >> For example, would this work? >> >> -- >> if config.winding == ob.OBStereo.Clockwise: >> print("Clockwise winding") >> elif config.winding==ob.OBStereo.AntiClockwise: >> print("Anti-clockwise winding") >> else: # elif config.winding==ob.OBStereoUnknownWinding: ? >> print("Undefined winding winding") >> -- >> >> Also, I know the support for non-tetrahedral chirality is not complete, >> but I'm wondering >> if there a way to use the OBStereo.Type with the facade to infer if it is >> recognized or not. >> >> Thanks! >> >> S >> >> On 2020-02-09 12:36, Noel O'Boyle wrote: >> > Just a note on the code above. Many years ago Tim replaced the >> stereochemistry handling, >> > and I helped a bit. But vestiges of the original handling were left >> lying around to avoid >> > breaking the API. I guess we thought we'd remove them sooner than we >> did, as looking back >> > it makes no sense to have them lying around confusing everyone. >> > >> > Anyway, now with version 3.0, mol.FindChiralCenters() and >> atom.HasChiralitySpecified() >> > have both been removed. atom.IsChiral() I kept (though I thought about >> removing it also) >> > but changed the code so that it's now a convenience function that just >> calls the functions >> > in the modern API. >> > >> > And just to note that you should avoid subtracting 1 from the Idx to >> get the Id. Right now >> > it works, but we don't guarantee that relationship, and it certainly >> won't be true if you >> > delete atoms. Better to get the atom and then call GetId(). >> > >> > - Noel >> > >> > On Thu, 6 Feb 2020 at 06:58, Stefano Forli <fo...@scripps.edu <mailto: >> fo...@scripps.edu>> >> > wrote: >> > >> > Noel, >> > this is great! I've been following the stereochemistry issue for a >> while in the mailing >> > list and you addressed pretty much all the key aspects. >> > >> > One thing that seems to be missing is the discussion on how to >> invert chirality. In the >> > past I've tried writing code to enumerate all possible enantiomers >> of molecules with >> > unspecified chiral centers or to explicitly invert the defined ones. >> > >> > An issue found while digging into that was that >> OBAtom.HasChiralitySpecified(), and >> > facade.GetTetrahedralStereo(idx).IsSpecified() were giving >> conflicting results. >> > >> > It's been a while since I tested it, but the code was this: >> > ==================== >> > import pybel >> > ob = pybel.ob >> > mols = [ 'OCC1OC(O)C(O)C(O)C1O', >> > 'OC[C@H]1OC(O)[C@H](O)[C@@H](O)[C@@H]1O'] >> > for smi in mols: >> > print "\nMOL->", smi >> > m = pybel.readstring('smi', smi).OBMol >> > m.FindChiralCenters() >> > facade = ob.OBStereoFacade(m) >> > for a in ob.OBMolAtomIter(m): >> > if a.IsChiral(): >> > idx = a.GetIdx() >> > print "ATOM", a.GetIdx(), a.IsChiral(), >> > a.HasChiralitySpecified(), >> > print >> facade.GetTetrahedralStereo(idx-1).IsSpecified() >> > ======================= >> > >> > It would be interesting to test it with the latest development code >> and see if there are >> > still issues. >> > >> > Thas >> > >> > On 2020-02-05 14:51, Geoffrey Hutchison wrote: >> > > Yes, Naruki and I were running into confusion when using these >> classes for the >> > distance >> > > geometry implementation. >> > > >> > > The key challenge is that we'd want to save the expected stereo >> configuration >> > around atoms >> > > and bonds - and then when generating 3D coordinates, test to see >> if the generated >> > > configurations match the expected ones. >> > > >> > > I think we can probably go through the code and examine, but if >> you have >> > suggestions on >> > > how to save the expected configs for future comparison, that >> would be great. >> > > >> > > -Geoff >> > > >> > > >> > >> On Feb 5, 2020, at 4:30 PM, Noel O'Boyle <baoille...@gmail.com >> > <mailto:baoille...@gmail.com> >> > >> <mailto:baoille...@gmail.com <mailto:baoille...@gmail.com>>> >> wrote: >> > >> >> > >> Hi there, >> > >> >> > >> I've been very slowly pulling together some docs on using the >> API for stereo. I >> > remember >> > >> someone on the list a few months back discussing difficulties >> with this part of the >> > >> library - if anyone has any particular examples they'd like me >> to discuss, this >> > would be >> > >> a good time to mention them. >> > >> >> > >> Progress so far: >> > >> >> https://github.com/baoilleach/documentation/blob/stereo/Stereochemistry/stereo.rst >> > >> >> > >> Regards, >> > >> - Noel >> > >> _______________________________________________ >> > >> OpenBabel-Devel mailing list >> > >> OpenBabel-Devel@lists.sourceforge.net >> > <mailto:OpenBabel-Devel@lists.sourceforge.net> >> > <mailto:OpenBabel-Devel@lists.sourceforge.net >> > <mailto:OpenBabel-Devel@lists.sourceforge.net>> >> > >> https://lists.sourceforge.net/lists/listinfo/openbabel-devel >> > > >> > > >> > > >> > > _______________________________________________ >> > > OpenBabel-Devel mailing list >> > > OpenBabel-Devel@lists.sourceforge.net <mailto: >> OpenBabel-Devel@lists.sourceforge.net> >> > > https://lists.sourceforge.net/lists/listinfo/openbabel-devel >> > > >> > >> > -- >> > >> > Stefano Forli, PhD >> > >> > Assistant Professor >> > Center for Computational Structural Biology >> > >> > Dept. of Integrative Structural >> > and Computational Biology, MB-112A >> > The Scripps Research Institute >> > 10550 North Torrey Pines Road >> > La Jolla, CA 92037-1000, USA. >> > >> > tel: +1 (858)784-2055 >> > fax: +1 (858)784-2860 >> > email: fo...@scripps.edu <mailto:fo...@scripps.edu> >> > http://www.scripps.edu/~forli/ >> > >> >> -- >> >> Stefano Forli, PhD >> >> Assistant Professor >> Center for Computational Structural Biology >> >> Dept. of Integrative Structural >> and Computational Biology, MB-112A >> The Scripps Research Institute >> 10550 North Torrey Pines Road >> La Jolla, CA 92037-1000, USA. >> >> tel: +1 (858)784-2055 >> fax: +1 (858)784-2860 >> email: fo...@scripps.edu >> http://www.scripps.edu/~forli/ >> >>
_______________________________________________ OpenBabel-Devel mailing list OpenBabel-Devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/openbabel-devel