[Rdkit-discuss] Stereochemistry - Differences between RDKit & Indigo
Open-Source Cheminformatics and Machine Learning
Brought to you by:
glandrum
|
From: Rob S. <rob...@gm...> - 2015-08-19 13:00:39
|
Dear RDKit community,
I'm trying to use RDKit to read in Corina generated stereoisomers (from a
Mol file), assign chiral tags and stereochemistry to the structure and
output the canonical smiles string for each isomer of a given molecule (in
Python), when I do this, half the canonical smiles strings are not unique.
When I read in the output from Corina into an Indigo instance, then use the
canonical smiles from Indigo to create an RDKit molecule, canonical smiles
strings generated from the molecule objects are all unique.
I may be missing an option to enable RDKit to 'visualise' the chiral centre
adjacent to the protonated nitrogen, so if someone can spot where I've made
a mistake, I'd really appreciate it. I've included the output and Python
script below. If you require any further information, please let me know.
Many thanks,
Rob
Output:
RDKit Read in of Molecule
RDKit Output - CCN1CC[C@@H]([N@@H+]2CC[C@@H]2[C@H](C)C)CC1
RDKit Output - CCN1CC[C@@H]([N@@H+]2CC[C@@H]2[C@H](C)C)CC1
RDKit Output - CCN1CC[C@@H]([N@H+]2CC[C@@H]2[C@H](C)C)CC1
RDKit Output - CCN1CC[C@@H]([N@H+]2CC[C@@H]2[C@H](C)C)CC1
RDKit Output - CCN1CC[C@@H]([N@@H+]2CC[C@H]2[C@H](C)C)CC1
RDKit Output - CCN1CC[C@@H]([N@@H+]2CC[C@H]2[C@H](C)C)CC1
RDKit Output - CCN1CC[C@@H]([N@H+]2CC[C@H]2[C@H](C)C)CC1
RDKit Output - CCN1CC[C@@H]([N@H+]2CC[C@H]2[C@H](C)C)CC1
INDIGO Read in of Molecule
RDKit Output - CC[N@]1CC[C@@H]([N@@H+]2CC[C@@H]2C(C)C)CC1
RDKit Output - CC[N@]1CC[C@H]([N@@H+]2CC[C@@H]2C(C)C)CC1
RDKit Output - CC[N@]1CC[C@@H]([N@H+]2CC[C@@H]2C(C)C)CC1
RDKit Output - CC[N@]1CC[C@H]([N@H+]2CC[C@@H]2C(C)C)CC1
RDKit Output - CC[N@]1CC[C@@H]([N@@H+]2CC[C@H]2C(C)C)CC1
RDKit Output - CC[N@]1CC[C@H]([N@@H+]2CC[C@H]2C(C)C)CC1
RDKit Output - CC[N@]1CC[C@@H]([N@H+]2CC[C@H]2C(C)C)CC1
RDKit Output - CC[N@]1CC[C@H]([N@H+]2CC[C@H]2C(C)C)CC1
Python script :
from rdkit import Chem
import subprocess # Used to run Corina
from indigo import *
def runCorinaTest(inputMol):
indigo = Indigo()
molFile = Chem.MolToMolBlock(inputMol)
corinaCommand = "echo \'" + molFile + "\' | "
# Then Corina - generate stereoisomers...
corinaCommand = corinaCommand + "/apps/corina/corina -t n -d
canon,stergen,preserve,names,wh,flapn,msc=7,msi=128 -i t=sdf"
corinaResult = subprocess.check_output([corinaCommand], shell=True) #
Gives the stereoisomer species as an SDF string
allMoleculeObjects = []
allMolecules = corinaResult.split("$$$$\n") # Separate Corina output
into individual molecules
allMolecules = allMolecules[0:len(allMolecules)-1]
print("RDKit Read in of Molecule")
for eachMolecule in allMolecules:
eachMolecule = eachMolecule + "$$$$\n"
mol = Chem.MolFromMolBlock(eachMolecule, sanitize=True,
removeHs=True, strictParsing=False)
Chem.rdmolops.AssignAtomChiralTagsFromStructure(mol,
replaceExistingTags=True)
Chem.rdmolops.AssignStereochemistry(mol)
print("RDKit Output - " + Chem.MolToSmiles(mol,
isomericSmiles=True))
print("INDIGO Read in of Molecule")
for eachMolecule in allMolecules:
eachMolecule = eachMolecule + "$$$$\n"
mol = indigo.loadMolecule(eachMolecule)
# print("Indigo Output - " + mol.canonicalSmiles())
# Use Indigo Canonical Smiles to create RDKit molecule
mol = Chem.MolFromSmiles(mol.canonicalSmiles())
if mol is not None:
print("RDKit Output - " + Chem.MolToSmiles(mol,
isomericSmiles=True))
return 0
mol = Chem.MolFromSmiles("CC(C)C1[NH+](C2CCN(CC)CC2)CC1")
z = runCorinaTest(mol)
|