Skip to content

Fixed stereochemistry of mitsunobu and added corresponding tests - #3

Merged
FabianKruger merged 1 commit into
mainfrom
fix-mitsunobu-stereochemistry
Aug 4, 2026
Merged

Fixed stereochemistry of mitsunobu and added corresponding tests#3
FabianKruger merged 1 commit into
mainfrom
fix-mitsunobu-stereochemistry

Conversation

@FabianKruger

Copy link
Copy Markdown
Collaborator

Mitsunobu proceeds by backside attack, so the carbinol carbon inverts. The templates
left that atom unmarked, and RDKit's default is to carry the reactant's configuration
into the product so every stereodefined Mitsunobu product was the wrong enantiomer.

results = enumerator.enumerate_pair("Oc1ccccc1", "C[C@H](O)CC")
for result in results:
    print(f"{result.reaction_name}: {result.products}")
# before: mitsunobu: ['CC[C@H](C)Oc1ccccc1']    retention, wrong
# after:  mitsunobu: ['CC[C@@H](C)Oc1ccccc1']   inversion, correct

All 60 mitsunobu templates now mark atom map 4 as [#6@:4] on the reactant side and
[#6@@:4] on the product side. RDKit reads differing tags as invert relative to the
input, so one template still covers both input enantiomers and an undefined centre
stays undefined.

These are the only chirality tags in the 9,594 templates, so no other reaction is
affected, confirmed by re-running the full case-study enumeration: mitsunobu
stereochemistry changes, everything else is byte-identical, no products gained or lost.
Tests cover both enantiomers and the undefined case.

@FabianKruger
FabianKruger merged commit 9ec90c3 into main Aug 4, 2026
1 check passed
@FabianKruger
FabianKruger deleted the fix-mitsunobu-stereochemistry branch August 4, 2026 11:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant