Hi Grzegorz,

Nice one! This is a bug in the way Reaction SMARTS (or Reaction SMILES for
that matter) is parsed.
At the moment there's not any way to directly work around the problem. You
can add a single bond in the reaction and then manually convert that to a
dative bond in the products. Something like this could work:

In [40]: rxn = AllChem.ReactionFromSmarts('[O:1]>>[O:1]-[H+]')


In [41]: ps = rxn.RunReactants((Chem.MolFromSmiles('CCC[O-]'),))


In [42]: newPs = []


In [43]: for p in ps:
    ...:     p = p[0]
    ...:     match = p.GetSubstructMatch(pattern)
    ...:     if not match:
    ...:         continue
    ...:     newP = Chem.RWMol(p)
    ...:
newP.GetBondBetweenAtoms(match[0],match[1]).SetBondType(Chem.BondType.DATIVE)

    ...:     newPs.append(newP)
    ...:


In [44]: newPs[0].UpdatePropertyCache(strict=False)


In [45]: Chem.MolToSmiles(newPs[0])

Out[45]: '[H+]<-[O-]CCC'


Note that I changed the definition of your reaction: I removed the [H+]
from the reactants since you weren't mapping it into the products.


-greg


On Wed, Feb 12, 2020 at 3:27 PM Grzegorz Skoraczyński <
g.skoraczyn...@mimuw.edu.pl> wrote:

> Hello,
>
> Imagine that we want to simulate an ESI protonation of the molecule. We
> want to add a positively charged proton to a lone pair of the oxygen atom
> of the molecule. I tried to create a reaction SMARTS with extended molecule
> SMARTS definition, but unfortunately, it results in ValueError error, the
> description of which suggests a different problem (parsing problem).
>
> >>> from rdkit.Chem import AllChem
> >>> rxn = AllChem.ReactionFromSmarts('[O:1].[H+]>>[O:1]->[H+]')
> ---------------------------------------------------------------------------
> ValueError                                Traceback (most recent call last)
> <ipython-input-42-06f8a10b5869> in <module>()
> ----> 1 rxn = AllChem.ReactionFromSmarts('[O:1].[H+]>>[O:1]->[H+]')
>
> ValueError: ChemicalReactionParserException: multi-step reactions not
> supported
>
> RDKit version: 2020.03.1dev1.
>
> Could you help me with creating a dative bond in reaction SMARTS?
>
> Best regards
> Grzegorz Skoraczyński
> _______________________________________________
> 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