That's a nice Python implementation of the logic that's used in
prepareMolForDrawing that does the same thing. It probably makes sense for
there to be an easy single function that you can call to do this, but that
should definitely work.

-greg


On Thu, Oct 19, 2017 at 6:43 PM, Chris Murphy <chris.mur...@schrodinger.com>
wrote:

>     chiral_atoms = [center[0] for center in Chem.FindMolChiralCenters(mol)
> ]
>     mol = Chem.AddHs(mol, explicitOnly=False, addCoords=True,
> onlyOnAtoms=chiral_atoms)
>
> On Thu, Oct 19, 2017 at 2:43 PM, Chris Murphy <
> chris.mur...@schrodinger.com> wrote:
>
>> I did need to add hydrogens for it work correctly, since the exocyclic
>> hydrogens needed to be there to be wedged/dashed, however I used these two
>> lines to ensure I only added the ones I needed:
>>
>>
>> On Thu, Oct 19, 2017 at 2:41 PM, Chris Murphy <
>> chris.mur...@schrodinger.com> wrote:
>>
>>> Greg,
>>>
>>> That did the trick, thanks so much for the help!
>>>
>>> On Wed, Oct 18, 2017 at 2:13 AM, Greg Landrum <greg.land...@gmail.com>
>>> wrote:
>>>
>>>>
>>>>
>>>> On Tue, Oct 17, 2017 at 8:16 PM, Chris Murphy <
>>>> chris.mur...@schrodinger.com> wrote:
>>>>
>>>>>
>>>>> I am trying to implement a function that cleans up chiral centers by
>>>>> moving the wedged/dashed stereo bond out of a ring and onto a function
>>>>> group or hydrogen if possible.
>>>>>
>>>>
>>>> As a general thing: the existing function Chem.WedgeMolBonds() should
>>>> already handle assigning wedged bonds to exocyclic atoms. It does not,
>>>> however, remove existing wedging. I think that this is probably what you
>>>> should be using, but for that to be useful you first need to have a
>>>> molecule with atomic stereochemistry assigned and wedging info removed from
>>>> bonds.
>>>>
>>>> If you skip sanitization when processing a mol block (which is what I
>>>> suspect based on your previous messages), you end up with a molecule that
>>>> has the atomic stereochemistry assigned, but with the wedging information
>>>> still there. Removing the existing wedging info and then calling
>>>> Chem.WedgeMolBonds() should get you what you're looking for.
>>>>
>>>> The function to remove bond wedging isn't currently exposed to Python,
>>>> I can do that, but in the meantime a python translation isn't complicated:
>>>>
>>>> In [42]: def ClearSingleBondDirFlags(m):
>>>>     ...:     for bond in m.GetBonds():
>>>>     ...:         if bond.GetBondType() == Chem.BondType.SINGLE:
>>>>     ...:             if bond.GetBondDir() == Chem.BondDir.UNKNOWN:
>>>>     ...:                 bond.SetProp("_UnknownStereo",1)
>>>>     ...:             bond.SetBondDir(Chem.BondDir.NONE)
>>>>
>>>> The piece with the _UnknownStereo property is important to make sure
>>>> info about wavy (I call them "squiggle") bonds is maintained.
>>>>
>>>> If the combination of this function and Chem.WedgeMolBonds() isn't
>>>> enough to solve the problem, I'll get into the rest of your question, but I
>>>> think/hope that this might do it and save you some time and effort.
>>>>
>>>> P.S. If anyone could offer a good suggestion for how to determine if
>>>>> the bond I am moving the dash/wedge to should be dashed or wedged that
>>>>> would also be super helpful.
>>>>>
>>>>
>>>> That's a non-trivial bit of C++ code that isn't currently exposed to
>>>> the python interface. I don't think it would be hard to do that if it would
>>>> be helpful.
>>>>
>>>> -greg
>>>>
>>>>
>>>>
>>>>
>>>>> I have been able to successfully identify the wedged bonds and the
>>>>> adjacent bond to move the wedge/dash stereo bond to and move the stereo
>>>>> bond off of the ring bond, but when I check the result, I notice that I
>>>>> assigned the wrong wedge/dash form to one of the bonds, so I want to check
>>>>> the chirality of the atoms after doing my changes and flip the ones that
>>>>> are wrong.
>>>>>
>>>>> However, I am noticing that the output of Chem.FindMolChiralCenters(mol)
>>>>> does not change (as well as atom.GetProp('_CIPCode')), even if I change 
>>>>> all
>>>>> of the bonds to either dashed or wedged, or another combination that 
>>>>> should
>>>>> clearly change the original chirality of the stereocenters. I tried
>>>>> calling rdmolops.AssignStereochemistry(mol), but the result of
>>>>> FindMolChiralCenters and atom.GetProp('_CIPCode') still does not change.
>>>>>
>>>>
>>>>> Does SetBondDir actually affect the R/S chiral tags on the atoms? Is
>>>>> there a good way to check if the changes in the bonds have changed the
>>>>> chirality at a given chiral center?
>>>>>
>>>>>
>>>>>
>>>>
>>>
>>
>
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Rdkit-discuss mailing list
Rdkit-discuss@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/rdkit-discuss

Reply via email to