Hi all, I was applying the code from the ConstrainedEmbed tutorial
<http://rdkit.blogspot.com/2013/12/using-allchemconstrainedembed.html> and
found a problem when trying to embed a molecule with an aromatic atom that
is not in the core. As an example, 1-aminopropan-2-one and 2-acetylpyridine:
[image: image.png]
from rdkit import Chem
from rdkit.Chem import AllChem, rdFMCS
m1 = Chem.MolFromSmiles("CC(CN)=O")
m2 = Chem.MolFromSmiles("CC(C1=CC=CC=N1)=O")
AllChem.EmbedMolecule(m1, useRandomCoords=True)
mols = [m1, m2]
res = rdFMCS.FindMCS(mols, threshold=0.8, completeRingsOnly=False)
p = Chem.MolFromSmarts(res.smartsString)
print(m1.HasSubstructMatch(p)) # True
print(m2.HasSubstructMatch(p)) # True
core1 =
AllChem.DeleteSubstructs(AllChem.ReplaceSidechains(Chem.RemoveHs(m1), p),
Chem.MolFromSmiles('*'))
core1.UpdatePropertyCache()
print(m1.HasSubstructMatch(core1)) # True
print(m2.HasSubstructMatch(core1)) # False
Of course, when I try:
m3 = Chem.AddHs(m2, addCoords=True)
Chem.AllChem.ConstrainedEmbed(m3, core1, ignoreSmoothingFailures=True,
useTethers=True)
I get ValueError("molecule doesn't match the core")
For some reason, after p is converted to core1, it stops matching the
aromatic N. If the N in m2 is not aromatic, the program works.
In some cases, I was able to match m2 to the core, but the core is missing
the N atom.
Any thoughts on how to solve this? I am actually reading the scaffold m1
from a .mol file, so I need that aromatic N there. Maybe there is a way to
add information on m1 that states that its N should be aromatic.
Thank you in advance
--
Rafael da Fonseca Lameiro
MSc Organic and Biological Chemistry
___
Rdkit-discuss mailing list
Rdkit-discuss@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/rdkit-discuss