Problem solved. Many Thanks,

Jean-Marc

Le 04/04/2019 à 06:54, Greg Landrum a écrit :


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

    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.



Apologies... I didn't read your original email closely enough and answered the wrong question. What's going on in your case is that the stereochemistry information in the products of the reaction hasn't been updated. This doesn't happen automatically (just as the products of reactions are not automatically sanitized).

If you call Chem.AssignStereochemistry() on the products you get the expected result:

In [38]: 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,1     ...: 2-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]
    ...: Chem.AssignStereochemistry(m2,force=True,cleanIt=True)
    ...: inchi2 = Chem.MolToInchi(m2)
    ...: print(inchi1)
    ...: print(inchi2)
    ...: print(inchi1 == inchi2)
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)/b8-7-,14-12+,15-13+,16-9-,17-6+/t20-,22-,23-/m0/s1
True

    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?


Part of it, but not everything. I will file a bug for the problem you reported so that it doesn't get lost. Maybe I can find/fix it before the next patch release.

-greg


    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/



--
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