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 LearningFramework 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 datasetsfrom chainer_chemistry.dataset.preprocessors.ggnn_preprocessor import GGNNPreprocessorfrom rdkit import Chem import numpy as npdataset, 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
smime.p7s
Description: S/MIME Cryptographic Signature
_______________________________________________ Rdkit-discuss mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/rdkit-discuss

