Thank you very much Jan, this in fact fixed the issue. I just had to add  "
AllChem.EmbedMolecule(mol)".

Best,
Navid

On Fri, Sep 13, 2019 at 5:49 AM Jan Holst Jensen <j...@biochemfusion.com>
wrote:

> Hi Navid,
>
> I am not familiar with the paper you mention, but I believe that the
> problem is caused by non-isomeric input SMILES.
>
> Below is an Alanine read in from molfile, with coordinates. It has a
> chiral center with "S" configuration. When you output it as non-isomeric
> SMILES and read it back in, the chiral information is lost because the
> molecule no longer has a conformation:
>
> >>> mol = Chem.MolFromMolBlock("""
> ...   BIOCHEMF09131911262D
> ...
> ...   7  6  0  0  1  0  0  0  0  0999 V2000
> ...     0.0000    0.0000    0.0000 N   0  0  0  0  0  0  0  0  0  0  0  0
> ...     0.7145    0.4125    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
> ...     1.4290    0.0000    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
> ...     1.4209   -0.8208    0.0000 O   0  0  0  0  0  0  0  0  0  0  0  0
> ...     0.7084    1.2417    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
> ...    -1.0000    0.0000    0.0000 H   0  0  0  0  0  0  0  0  0  0  0  0
> ...     2.4290    0.0000    0.0000 O   0  0  0  0  0  0  0  0  0  0  0  0
> ...   2  3  1  0  0  0  0
> ...   1  2  1  0  0  0  0
> ...   3  4  2  0  0  0  0
> ...   2  5  1  1  0  0  0
> ...   1  6  1  0  0  0  0
> ...   3  7  1  0  0  0  0
> ... M  END
> ... """)
> >>> Chem.AssignAtomChiralTagsFromStructure(mol)
> >>> Chem.FindMolChiralCenters(mol)
> [(1, 'S')]
> >>> Chem.MolToSmiles(mol)
> 'CC(N)C(=O)O'
> >>> mol = Chem.MolFromSmiles("CC(N)C(=O)O")
> >>> Chem.AssignAtomChiralTagsFromStructure(mol)
> >>> Chem.FindMolChiralCenters(mol)
> []
> >>>
>
>
> You can generate a conformation that produces chiral information by 3D
> embedding the molecule.
>
> >>> from rdkit.Chem import AllChem
> >>> AllChem.EmbedMolecule(mol)
> 0
> >>> Chem.AssignAtomChiralTagsFromStructure(mol)
> >>> Chem.FindMolChiralCenters(mol)
> [(1, 'S')]
> >>>
>
>
> Another way would be if you can get isomeric SMILES as input. Then the
> chiral information is right there.
>
> >>> Chem.MolToSmiles(mol, isomericSmiles = True)
> 'C[C*@*H](N)C(=O)O'
> >>> mol = Chem.MolFromSmiles("C[C@H](N)C(=O)O")
> >>> Chem.FindMolChiralCenters(mol)
> [(1, 'S')]
> >>>
>
>
> Cheers
> -- Jan Holst Jensen
>
>
> On 2019-09-12 04:44, Navid Shervani-Tabar wrote:
>
> Hello,
>
> In the paper: "Graph Networks as a Universal Machine Learning
> Framework for Molecules and Crystals", authors introduce chirality as an
> atom feature input to analyze QM9 dataset. I was trying to recreate this
> atom feature as following
>
> > Chirality: (categorical) R, S, or not a Chiral center (one-hot encoded).
>
> The code I used is:
>
>     from chainer_chemistry import datasets
>     from chainer_chemistry.dataset.preprocessors.ggnn_preprocessor import
> GGNNPreprocessor
>     from rdkit import Chem
>     import numpy as np
>
>     dataset, dataset_smiles = datasets.get_qm9(GGNNPreprocessor(),
> return_smiles=True)
>
>     for i in range(len(dataset_smiles)):
>         mol = Chem.MolFromSmiles(dataset_smiles[i])
>         Chem.AssignAtomChiralTagsFromStructure(mol)
>         chiral_cc = Chem.FindMolChiralCenters(mol)
>
>         if not len(chiral_cc) == 0:
>             print(chiral_cc)
>
> The output shows no Chiral centers for this dataset. When I use
> `includeUnassigned=True`, code gives a list of tuples, but instead of
> "R/S", I get "?". I was wondering if there is a mistake in my
> implementation. If this is expected, any thoughts on how chirality was
> assigned in the above paper? Thanks.
>
> Sincerely,
> Navid
>
>
>
_______________________________________________
Rdkit-discuss mailing list
Rdkit-discuss@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/rdkit-discuss

Reply via email to