Dear Greg,

In [10] and Out[10] of your answer below (thanks!) incited me to believe that the geometry of double bonds outside of the reactive center in the reaction product is not lost for ever, contrarily to what my example showed. So, I went back to my example and printed the SMILES representations of the reagent and of the product.
The double bond are there and in good shape:
C/C=C(\C=C(C)\C=C(C)\C=C/C=C(/C)C(=O)[C@]12O[C@H]1[C@@](O)(CCO)N=C2O)C(=O)OC for the reagent C/C=C(\C=C(C)\C=C(C)\C=C/C=C(/C)C(=O)[C@]12O[C@H]1[C@@](O)(CCO)NC2=O)C(=O)OC for the product. So, what I conclude is that MolToInchi does not consider the double bond geometry in the reaction product
but that MolToSmiles does it.
The creation of new Mol objects from these two SMILES and the subsequent
generation of InChI strings produces identical results
as expected, because the reagent and the product are tautomers.

By the way, does the last RDKit release correct the problem you mentioned about MolFromSmiles
in you email dated February 14, 2019?

Best regards,

Jean-Marc



Le 03/04/2019 à 18:16, Greg Landrum a écrit :
Hi Jean-Marc,

Unfortunately not. The RDKit currently ignores stereo information from "mapped bonds" (bonds for which both atoms are mapped) from the reactants. If you include stereo info in the reaction itself, that will be copied over in to the products, but that is not what you're looking for. Here's an example:

    In [4]: r1 =
    AllChem.ReactionFromSmarts('[C:1][C:2]=[C:3][F:4]>>[C:1][C:2]=[C:3][Cl:4]')


    In [5]:
    Chem.MolToSmiles(r1.RunReactants((Chem.MolFromSmiles('CC=CF'),))[0][0])

    Out[5]: 'CC=CCl'

    In [6]:
    Chem.MolToSmiles(r1.RunReactants((Chem.MolFromSmiles('C/C=C/F'),))[0][0])

    Out[6]: 'CC=CCl'

    In [7]: r2 =
    
AllChem.ReactionFromSmarts('[C:1]/[C:2]=[C:3]/[F:4]>>[C:1]/[C:2]=[C:3]/[Cl:4]')


    In [8]:
    Chem.MolToSmiles(r2.RunReactants((Chem.MolFromSmiles('C/C=C/F'),))[0][0])

    Out[8]: 'C/C=C/Cl'

    In [9]:
    Chem.MolToSmiles(r2.RunReactants((Chem.MolFromSmiles('CC=CF'),))[0][0])

    Out[9]: 'C/C=C/Cl'

    In [10]:
    
Chem.MolToSmiles(r1.RunReactants((Chem.MolFromSmiles('C/C=C/CC=CF'),))[0][0])

    Out[10]: 'C/C=C/CC=CCl'


It's more tolerant of atomic stereochemistry:

    In [11]: r3 =
    AllChem.ReactionFromSmarts('[C:1][C:2][F:3]>>[C:1][C:2][O:3]')

    In [12]:
    
Chem.MolToSmiles(r3.RunReactants((Chem.MolFromSmiles('N[C@H](Cl)CF'),))[0][0])

    Out[12]: 'N[C@H](Cl)CO'

    In [13]:
    
Chem.MolToSmiles(r3.RunReactants((Chem.MolFromSmiles('C[C@H](F)Cl'),))[0][0])

    Out[13]: 'C[C@H](O)Cl'


Figuring out a good solution for the double bond handling would be a nice challenge for the next release.

Best,
-greg



On Wed, Apr 3, 2019 at 5:54 PM Jean-Marc Nuzillard <jm.nuzill...@univ-reims.fr <mailto:jm.nuzill...@univ-reims.fr>> wrote:

    Dear all,

    I have a molecule that comes from an InChI string, that is decoded
    as an iminol I would like to transform in its amide tautomer.
    The same molecule contains also a series of doubles bonds.

    The following code:

    inchi1 =
    
"InChI=1S/C23H29NO7/c1-6-17(19(27)30-5)13-15(3)12-14(2)8-7-9-16(4)18(26)23-20(31-23)22(29,10-11-25)24-21(23)28/h6-9,12-13,20,25,29H,10-11H2,1-5H3,(H,24,28)/b8-7-,14-12+,15-13+,16-9-,17-6+/t20-,22-,23-/m0/s1"
    m1 = Chem.MolFromInchi(inchi1)
    rxn =
    AllChem.ReactionFromSmarts('[C:1]([OH:2])=[N:3]>>[C:1](=[OH0:2])[NH:3]')
    ps = rxn.RunReactants((m1,))
    m2 = ps[0][0]
    inchi2 = Chem.MolToInchi(m2)
    print(inchi1)
    print(inchi2)
    print(inchi1 == inchi2)

    prints:
    [17:26:42] WARNING: Omitted undefined stereo
    
InChI=1S/C23H29NO7/c1-6-17(19(27)30-5)13-15(3)12-14(2)8-7-9-16(4)18(26)23-20(31-23)22(29,10-11-25)24-21(23)28/h6-9,12-13,20,25,29H,10-11H2,1-5H3,(H,24,28)/b8-7-,14-12+,15-13+,16-9-,17-6+/t20-,22-,23-/m0/s1
    
InChI=1S/C23H29NO7/c1-6-17(19(27)30-5)13-15(3)12-14(2)8-7-9-16(4)18(26)23-20(31-23)22(29,10-11-25)24-21(23)28/h6-9,12-13,20,25,29H,10-11H2,1-5H3,(H,24,28)/t20-,22-,23-/m0/s1
    False

    in which the /b layer has disappeared, leaving the double bond
    geometry undefined.

    Is there a way to preserve or to recover the lost information?

    Jean-Marc
--
    Dr. Jean-Marc Nuzillard
    Institute of Molecular Chemistry, CNRS UMR 7312
    Faculté des Sciences Exactes et Naturelles, Bâtiment 18
    BP 1039
    51687 REIMS Cedex 2
    France

    Tel : 33 3 26 91 82 10
    Fax : 33 3 26 91 31 66
    http://www.univ-reims.fr/icmr
    http://eos.univ-reims.fr/LSD/CSNteam.html

    http://www.univ-reims.fr/LSD/
    http://www.univ-reims.fr/LSD/JmnSoft/

    _______________________________________________
    Rdkit-discuss mailing list
    Rdkit-discuss@lists.sourceforge.net
    <mailto:Rdkit-discuss@lists.sourceforge.net>
    https://lists.sourceforge.net/lists/listinfo/rdkit-discuss



--
Jean-Marc Nuzillard
Directeur de Recherches au CNRS

Institut de Chimie Moléculaire de Reims
CNRS UMR 7312
Moulin de la Housse
CPCBAI, Bâtiment 18
BP 1039
51687 REIMS Cedex 2
France

Tel : 03 26 91 82 10
Fax : 03 26 91 31 66
http://www.univ-reims.fr/icmr
http://eos.univ-reims.fr/LSD/CSNteam.html

http://www.univ-reims.fr/LSD/
http://www.univ-reims.fr/LSD/JmnSoft/

_______________________________________________
Rdkit-discuss mailing list
Rdkit-discuss@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/rdkit-discuss

Reply via email to