The reason constraint embed didn’t work is the molecule simply can’t be embedded using the rdkit’s algorithm.
> In [25]: mol_child = Chem.MolFromSmiles('C[C@@H]1CC[C@H](O)CC1=O') > > > In [26]: AllChem.EmbedMolecule(mol_child) > > Out[26]: -1 See more discussion here: https://github.com/rdkit/rdkit/issues/2996 <https://github.com/rdkit/rdkit/issues/2996> The SMILES you posted looks valid to me and doesn’t look that complicated, but the anyway I think somehow the RDKit’s algorithm tripped up and couldn’t finish embedding without some help. Hope someone with more in-depth insight can help here. Anyway, for a walk around, adding H seems to do the trick: > In [39]: mol = AllChem.AddHs(mol_child) > > > In [40]: AllChem.EmbedMolecule(mol) > > Out[40]: 0 # worked > > In [41]: AllChem.ConstrainedEmbed(mol, mol_parent) > > Out[41]: <rdkit.Chem.rdchem.Mol at 0x7fe8000f6f80> # also worked > Sunhwan > On Jul 7, 2020, at 12:36 AM, Pavel Polishchuk <pavel_polishc...@ukr.net> > wrote: > > Hi all, > > I have an issue with ConstrainedEmbed and I cannot figure out what exactly > causes this. > I have a molecule C[C@@H]1CCCCC1=O with 3D coordinates in 1.mol file > (attached). And I want to generate coordinates for another structure with > this core - > C[C@@H]1CC[C@H](O)CC1=O. > > This is usual way which causes issue with embedding and the corresponding > error. > > mol_parent = Chem.MolFromMolFile('1.mol') > mol_child = Chem.MolFromSmiles('C[C@@H]1CC[C@H](O)CC1=O') > try: > mol = AllChem.ConstrainedEmbed(mol_child, mol_parent) > except ValueError as e: > print(e) > > If I add explicit hydrogens the issue disappears. > > mol_parent = Chem.MolFromMolFile('1.mol') > mol_child = Chem.MolFromSmiles('C[C@@H]1CC[C@H](O)CC1=O') > mol = AllChem.ConstrainedEmbed(Chem.AddHs(mol_child), mol_parent) > > If I do not use pre-defined coordinates - everything works well. > > mol_parent = Chem.MolFromSmiles('C[C@@H]1CCCCC1=O') > AllChem.EmbedMolecule(mol_parent) > mol_child = Chem.MolFromSmiles('C[C@@H]1CC[C@H](O)CC1=O') > mol = AllChem.ConstrainedEmbed(mol_child, mol_parent) > > Does ugly coordinates in 1.mol file cause the embedding issue? Or the issue > is caused by some implicit properties of a molecule? How to solve this > properly? > > Kind regards, > Pavel. > <1.mol>_______________________________________________ > Rdkit-discuss mailing list > Rdkit-discuss@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/rdkit-discuss
_______________________________________________ Rdkit-discuss mailing list Rdkit-discuss@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/rdkit-discuss