I think the problem is that you specify exact, explicit hydrogen count on
the product end of your reaction SMARTS. Instead you can use this
(rxnSMARTS bolded):

rxn=AllChem.ReactionFromSmarts("
*[F][Zr@]([Cl])([Br])[CH2:1][C:2]([C:3])[C!H3:4].[CH2:5]=[CH1:6][C:7]>>[F][Zr@@]([Cl])([Br])[*:5][*@:6]([*:7])[*:1][*:2]([*:3])[*:4]*
")
products = rxn.RunReactants((Chem.MolFromSmiles("CCC[C@@H](C)C[Zr@
@](F)(Cl)Br"),Chem.MolFromSmiles("C=CC")))
display(products[0][0])
print(Chem.MolToSmiles(products[0][0]))

this gives

CCC[C@@H](C)C[C@@H](C)C[Zr@](F)(Cl)Br

which is a parsable valid SMILES.

The rxnSMARTS used above is also altered to give the (I think) intended
stereochemistry behavior: retain whatever configuration is in starting
product 1 and the newly introduce stereocenter (carbon 6) always give a
predefined configuration.

Some clarifying explanations of how reaction SMARTS are handled in RDkit
can be found in the rdkit book here.
https://www.rdkit.org/docs/RDKit_Book.html#chemical-reaction-handling

best wishes
wim


On Tue, May 30, 2023 at 8:04 PM Jarod Younker <jarod_youn...@hotmail.com>
wrote:

> The following REACTIVE SMARTS:
>
> [F][Zr@]([Cl])([Br])[CH2:1][C@H:2]([C:3])[C!H3:4].[CH2:5]=[CH1:6][C:7]
> >>[F][Zr@@]([Cl])([Br])[CH2:5][C@H:6]([C:7])[CH2:1][C@H:2]([C:3])[C!H3:4]
>
> When reacting on the following two SMILES strings:
>
> CCC[C@@H](C)C[Zr@@](F)(Cl)Br and C=CC
>
> Gives the following SMILES product which cannot be sanitized ("explicit
> valence for atom # 10 C, 5, is greater than permitted"):
>
> CC[CH3][C@@H](C)C[C@@H](C)C[Zr@](F)(Cl)Br
>
> I don’t understand why?  Could it be a bug?  If not, what do I have wrong?
> _______________________________________________
> 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