Seems that somewhere in the guts of RDKit there might well be code that
divides atoms into equivalence classes.
In the most common (tetravalent, tetrahedral) chiral situation, if the
tetrahedral center's four connected atoms fell into 3 equivalence classes,
the center would be prochiral. Then we'd have something like aC(b)(b)d,
where a, b, and d represent the equivalence classes of the directly
attached atoms.
In the past, for a core-hopping application, I've stored a core library as
the SMILES of the stripped and H-substituted core. I've wished that I could
use SMILES '@' notation to specify which of the two H's originally held the
substituent (when only one did).
-P.
On Thu, Mar 10, 2016 at 10:53 PM, Greg Landrum <[email protected]>
wrote:
> This isn't an area I've thought much about, so this may be a bit naive.
>
> It seems like the interesting atom from the perspective of perception is
> the carbon that the Hs are attached to, not the Hs themselves; it's the
> carbon that will become a chiral center.
>
> If we neglect dependent stereochemistry for the moment, can't we just find
> carbon atoms that have two hydrogen substituents and then look to see if
> they (the carbons) have two differently ranked neighbors? The advantage to
> this is that it saves the addHs step and will generally be a lot faster to
> execute.
>
> Here's a quick code snippet, it lets you choose between using CIP ranks to
> distinguish atoms or just using their canonical rankings.
>
> def findProchiral(mol,useCIPRanks=False):
> if not useCIPRanks:
> ranks = Chem.CanonicalRankAtoms(mol,breakTies=False)
> else:
> Chem.AssignStereochemistry(mol)
> ranks = [x.GetProp('_CIPRank') for x in mol.GetAtoms()]
> res = []
> for atom in mol.GetAtoms():
> # only consider atoms with two heavy neighbors and two Hs.
> # could probably be further limited to just consider carbons
> if atom.GetTotalDegree()!=4 or atom.GetTotalNumHs()!=2:
> continue
> hvyNbrRanks=[]
> for nbr in atom.GetNeighbors():
> if nbr.GetAtomicNum()>1:
> hvyNbrRanks.append(ranks[nbr.GetIdx()])
> if len(hvyNbrRanks)==2:
> break
> if hvyNbrRanks[0] != hvyNbrRanks[1]:
> res.append(atom.GetIdx())
> return res
>
>
> Is that headed in the right direction?
> -greg
>
>
>
> On Thu, Mar 10, 2016 at 5:30 PM, Peter S. Shenkin <[email protected]>
> wrote:
>
>> Is the canonical rank of prochiral H's different or the same? (For
>> example the rank of the H's on C-1 of ethyl chloride.)
>>
>> Thanks,
>> -P.
>>
>
>
------------------------------------------------------------------------------
Transform Data into Opportunity.
Accelerate data analysis in your applications with
Intel Data Analytics Acceleration Library.
Click to learn more.
http://pubads.g.doubleclick.net/gampad/clk?id=278785111&iu=/4140
_______________________________________________
Rdkit-discuss mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/rdkit-discuss