Re: [Rdkit-discuss] identify chiral atoms which became achiral after fragmenting
Open-Source Cheminformatics and Machine Learning
Brought to you by:
glandrum
|
From: Greg L. <gre...@gm...> - 2016-10-11 05:39:12
|
Hi Andrew,
Assuming that I understand the question correctly, your best bet here is to
call Chem.AssignStereochemistry() and make sure that you include the
cleanIt flag, which triggers removal of stereochemistry flags that are not
appropriate:
In [16]: fragmented_mol = Chem.FragmentOnBonds(mol, [0, 1],
dummyLabels=((0, 0), (0, 0)))
In [17]: Chem.SanitizeMol(fragmented_mol)
Out[17]: rdkit.Chem.rdmolops.SanitizeFlags.SANITIZE_NONE
In [19]:
Chem.AssignStereochemistry(fragmented_mol,cleanIt=True,force=True,flagPossibleStereoCenters=True)
In [21]: Chem.FindMolChiralCenters(fragmented_mol,includeUnassigned=True)
Out[21]: []
In [22]: Chem.MolToSmiles(fragmented_mol,isomericSmiles=True)
Out[22]: '[*]C([*])(O)Br.[*]Cl.[*]F'
Best,
-greg
On Fri, Oct 7, 2016 at 2:30 AM, Andrew Dalke <da...@da...>
wrote:
> I'm trying to figure out which atoms lose chirality after breaking bonds
> using FragmentOnBonds().
>
> Here's an example where a chiral carbon after fragmentation gets two "*"
> atoms, which makes the carbon achiral:
>
> >>> from rdkit import Chem
> >>> mol = Chem.MolFromSmiles("F[C@](Cl)(Br)O")
> >>> fragmented_mol = Chem.FragmentOnBonds(mol, [0, 1], dummyLabels=((0,
> 0), (0, 0)))
> >>> Chem.MolToSmiles(fragmented_mol, isomericSmiles=True)
> '[*]C([*])(O)Br.[*]Cl.[*]F'
>
> I thought I could use CanonicalRankAtoms() to look at the local symmetry.
> If a previously chiral atom after fragmentation contains two neighbors with
> the same canonical rank, then that atom is no longer chiral.
>
>
> >>> fragmented_mol.UpdatePropertyCache(strict=False)
> >>> list(Chem.CanonicalRankAtoms(fragmented_mol, breakTies=False))
> [5, 8, 6, 7, 4, 2, 0, 1, 3]
>
> As you can see, all of the atoms are considered to be different. I did not
> expect this. I expected two of the atoms (the two new dummy atoms attached
> to the carbon) would have the same canonical rank.
>
> On the other hand, if I reparse the achiral SMILES:
>
> >>> new_mol = Chem.MolFromSmiles('[*]C([*])(O)Br.[*]Cl.[*]F')
> >>> list(Chem.CanonicalRankAtoms(new_mol, breakTies=False))
> [2, 8, 2, 4, 7, 1, 6, 0, 5]
>
> The two occurrences of "2" show that the first and third are considered to
> be identical. This is what I expected earlier.
>
> The problem is the carbon in fragmented_mol still has the 'clockwise'
> chiral tag:
>
> >>> list(Chem.CanonicalRankAtoms(fragmented_mol, breakTies=False))
> [5, 8, 6, 7, 4, 2, 0, 1, 3]
> >>> fragmented_mol.GetAtomWithIdx(1).GetChiralTag()
> rdkit.Chem.rdchem.ChiralType.CHI_TETRAHEDRAL_CW
>
> If I manually remove it:
>
> >>> fragmented_mol.GetAtomWithIdx(1).SetChiralTag(Chem.
> ChiralType.CHI_UNSPECIFIED)
> >>> list(Chem.CanonicalRankAtoms(fragmented_mol, breakTies=False))
> [5, 8, 6, 7, 4, 2, 0, 1, 2]
>
> I find that I have two equivalent atoms, which is why I expected.
>
> How do I clear the useless chiral flags without removing the ones which
> still make sense?
>
> I tried calling ClearProps() and calling Chem.AssignStereochemistry() with
> force=True and flagPossibleStereoCenters=True, but they did nothing.
>
> Cheers,
>
> Andrew
> da...@da...
>
>
>
> ------------------------------------------------------------
> ------------------
> 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
> Rdk...@li...
> https://lists.sourceforge.net/lists/listinfo/rdkit-discuss
>
|