Skip to content

Wittig series and DYKAT free-3 route computed from the Gaussian jobs - #16

Merged
bobbypaton merged 2 commits into
masterfrom
claude/serene-wright-bcwkr5
Sep 28, 2026
Merged

bobbypaton merged 2 commits into
masterfrom
claude/serene-wright-bcwkr5

Conversation

@bobbypaton

@bobbypaton bobbypaton commented Sep 28, 2026 •

Copy link
Copy Markdown
Member

Summary

Two commits on top of #15. Together they finish the two Phase 10 benchmark cases (series and channels) from our own frequency jobs.

1. Wittig: 6-TS job and the two steps in series (8a6bcf6)

  • ts_6.log: run from the corrected input.
    • It reproduces the SI energy to 5 × 10⁻⁵ hartree and the ZPE to 2 × 10⁻⁵, with one imaginary mode (111i).
    • Kinisot reproduces the 6-TS column of SI Table S4 within 5 × 10⁻⁴ at all 12 positions, as it already did for 4-TS.
  • series.json: 4-TS and 6-TS in series, weighted by the paper's trajectories (C_f = 128/76).
    • KIEs are relative to the experiment's standards: a meta carbon for the carbonyl carbon, the ketone methyl carbon for the ylide carbons.
    • The absolute KIEs reproduce Table 1: 1.0325 and 1.0118, against 1.033 and 1.012.
    • The relative KIEs match all three measurements (mean absolute deviation 0.0004).
  • series_free_energies.json: the steps weighted by their free energies (25.9 and 26.0 kcal/mol).
    • C_f is 0.822 with Bell tunnelling, 0.862 without.
    • This is the case wittig_anisaldehyde_statistical, the weighting the paper rejects (alternative_to, left out of the overall mean).
    • It misses both carbons that change bonding by 0.005.
Position Trajectories Free energies Measured
carbonyl carbon of 1 1.0326 1.0277 1.033, 1.032
ylide CH carbon 1.0111 1.0059 1.011, 1.011
ylide ketone carbonyl carbon 0.9979 0.9975 0.997

2. DYKAT computed from free 3 (f39a986)

  • allyl_chloride_3_5d.log: free 3 with spherical d functions, like the Rh jobs.
  • channels_free3.json: computes the two channels from free 3 instead of from the Rh-bound reactant complexes.
    • These KIEs include the equilibrium isotope effect of binding to Rh: 1.008–1.012 at the alkene carbons, near 1 elsewhere.
    • That puts C2 at 1.0060, against the measured 0.9952 ± 0.0016.
    • The mean absolute deviation is 0.0061, against 0.0030 for the paper's reactant-complex model, so the data support the paper's model.
    • This is the case dykat_allyl_arylation_free3 (alternative_to, left out of the overall mean).
  • d functions: free 3 with Cartesian d functions gives the same KIEs within 1 × 10⁻⁴ (tested).

Benchmarks

  • 17 cases, 42 measured positions.
  • The overall mean absolute deviation goes from 0.0055 to 0.0051; the two alternatives are excluded.
  • REPORT.md, benchmarks/README.md, the case READMEs, CHANGELOG and IMPLEMENTATION_PLAN are updated.

Testing

  • pytest: 239 passed, 1 skipped (the skip is an optional dependency). New tests:
    • tests/test_wittig.py checks both Table S4 columns, both series against Table 1 and the series formula, and the runner rows.
    • tests/test_dykat.py checks the free-3 route, the 5D/6D equivalence and the alternative case.
  • ruff check . and ruff format --check . are clean.
  • benchmarks/run.py was re-run.
  • kinisot --job runs all four job files from the command line.

Summary by CodeRabbit

  • New Features

    • Added alternative benchmark results for free-substrate DYKAT calculations and free-energy-weighted Wittig predictions.
    • Completed the Wittig benchmark results for both transition structures, including trajectory-weighted predictions.
  • Documentation

    • Updated benchmark reports with comparisons against experimental and literature values. Free-substrate DYKAT results include the Rh-binding isotope effect and are listed separately from the overall average.
    • Updated the overall mean absolute deviation to 0.0051 across 42 positions.

- ts_6.log (Gaussian 16, run by the user from the corrected input)
  reproduces the SI energy to 5e-5 hartree and the ZPE, with one imaginary
  mode (111i). Kinisot reproduces the 6-TS column of SI Table S4 within
  5e-4 at all twelve positions, as it did for 4-TS.
- series.json puts 4-TS and 6-TS in series with the paper's trajectory
  commitment (C_f = 128/76), relative to the experiment's standards (a
  meta carbon; the ketone methyl carbon). The absolute KIEs reproduce
  Table 1 (1.0325, 1.0118 against 1.033, 1.012), and the relative ones
  match all three measurements (mean absolute deviation 0.0004).
- series_free_energies.json weights the steps by their free energies
  (25.9 and 26.0 kcal/mol; C_f 0.822 with tunnelling, 0.862 without).
  It is the case wittig_anisaldehyde_statistical, the weighting the paper
  rejects (alternative_to): it misses both carbons that change bonding by
  0.005. The overall mean absolute deviation moves to 0.0051 (42).
- tests/test_wittig.py checks both Table S4 columns, both series against
  Table 1 and the series formula, and the runner rows.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01K49r16vaYeUsGCHD26vmM2
…t show

- allyl_chloride_3_5d.log (Gaussian 16, run by the user): free 3 with
  spherical d functions, like the Rh jobs (120 basis functions; 6 mEh
  above the Cartesian job, no imaginary mode).
- channels_free3.json computes the two channels from free 3 instead of the
  Rh-bound reactant complexes. The equilibrium isotope effect of binding
  (1.008-1.012 at the alkene carbons, near 1 elsewhere) puts C2 at 1.0060
  against the measured 0.9952 +/- 0.0016; the mean absolute deviation is
  0.0061 against 0.0030 from the complex, so the data support the paper's
  model. It is the case dykat_allyl_arylation_free3 (alternative_to, left
  out of the overall mean).
- The d-function convention does not matter here: free 3 with Cartesian
  d functions gives the same KIEs within 1e-4 (tested).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01K49r16vaYeUsGCHD26vmM2
@coderabbitai

coderabbitai Bot commented Sep 28, 2026 •

Copy link
Copy Markdown

Review in Change Stack →

Navigate logical layers of code changes, visualize relationships, and explore their blast radius.

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Essentials

Run ID: 420ce77e-19ae-420b-8441-757dabf35273

📥 Commits

Reviewing files that changed from the base of the PR and between 314e74e and f39a986.

⛔ Files ignored due to path filters (2)
  • benchmarks/dykat_allyl_arylation/allyl_chloride_3_5d.log is excluded by !**/*.log
  • benchmarks/wittig_anisaldehyde/ts_6.log is excluded by !**/*.log
📒 Files selected for processing (15)
  • CHANGELOG.md
  • IMPLEMENTATION_PLAN.md
  • benchmarks/README.md
  • benchmarks/REPORT.md
  • benchmarks/dykat_allyl_arylation/README.md
  • benchmarks/dykat_allyl_arylation/case.json
  • benchmarks/dykat_allyl_arylation/channels_free3.json
  • benchmarks/dykat_allyl_arylation_free3/case.json
  • benchmarks/wittig_anisaldehyde/README.md
  • benchmarks/wittig_anisaldehyde/case.json
  • benchmarks/wittig_anisaldehyde/series.json
  • benchmarks/wittig_anisaldehyde/series_free_energies.json
  • benchmarks/wittig_anisaldehyde_statistical/case.json
  • tests/test_dykat.py
  • tests/test_wittig.py

Included review availability: This review used your included allowance. 1 included review remains after this review. Your included PR review attempts over the past 7 days set your current allowance at 2 reviews per hour.


📝 Walkthrough

Walkthrough

The benchmark suite adds completed Wittig series results for two weighting methods and DYKAT results calculated from free substrate 3. Benchmark configurations, reports, documentation, and tests record the predictions, comparisons, and overall-mean exclusions.

Changes

Benchmark calculation updates

Layer / File(s) Summary
DYKAT calculation from free 3
benchmarks/dykat_allyl_arylation/*, benchmarks/dykat_allyl_arylation_free3/case.json, benchmarks/REPORT.md, benchmarks/README.md, CHANGELOG.md, IMPLEMENTATION_PLAN.md, tests/test_dykat.py
Adds free-3 channel and benchmark configurations. The reported mean absolute deviation is 0.0061, and the C2 prediction differs from measurement by 0.011. Tests check the KIE results, d-function comparison, and exclusion from the overall mean.
Wittig series calculations
benchmarks/wittig_anisaldehyde/*, benchmarks/wittig_anisaldehyde_statistical/case.json, benchmarks/REPORT.md, benchmarks/README.md, CHANGELOG.md, tests/test_wittig.py
Adds trajectory-weighted and free-energy-weighted series configurations and results. The trajectory-weighted result has a mean absolute deviation of 0.0004; the free-energy-weighted alternative has a mean absolute deviation of 0.0035 and is excluded from the overall mean. Tests cover both transition structures and series weightings.

Priority: ⬇️ Low

Estimated code review effort: 2 (Simple) | ~12 minutes

Change: Feature

Suggested reviewers: claude

Merge Risk: ⚪ Minimal · up to f39a9

No actionable issue is established in the new benchmark cases. The PR is mergeable after normal checks.

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 7 functions across 2 files. (13 skipped: 1… Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly identifies both primary changes: the computed Wittig series and the DYKAT free-3 route from Gaussian jobs.
Full details: Docstring Coverage

Explanation

Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 7 functions across 2 files. (13 skipped: 13 unsupported.)

  • Fix all pre-merge checks with AI
✨ Finishing Touches 💡 1
📝 Generate docstrings 💡
  • Commit to this branch
  • Create a new PR
🧪 Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR

Comment @coderabbitai help to get the list of available commands.

@bobbypaton
bobbypaton merged commit 4a977d1 into master Sep 28, 2026
17 checks passed
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.

2 participants