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

Reply via email to