renkin 0.18.0 → 0.20.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -314,6 +314,20 @@ underneath (deduplicated when the same reference backs more than one part of
314
314
  an example). See [Reaction Evidence guide](docs/guides/reaction-evidence.md#substrate-specific-examples-schema_version-2)
315
315
  for full matching/validation semantics.
316
316
 
317
+ **Importing evidence from ORD.** `renkin evidence match` (exact-set batch
318
+ template matching, no fuzzy/similarity matching) and
319
+ [`scripts/ord_evidence_audit.py`](scripts/README_ord_evidence.md) (offline,
320
+ network-free) turn a locally-downloaded
321
+ [Open Reaction Database](https://github.com/open-reaction-database/ord-data)
322
+ corpus into a `schema_version: 2` sidecar — every accepted record is
323
+ independently re-validated by RENKIN's own loader, and anything not uniquely
324
+ matched, unambiguous, and provenanced is excluded and counted in an audit
325
+ report rather than guessed at. RENKIN itself never fetches or searches the
326
+ literature; reported yields are citations, not predictions. ORD's reaction
327
+ data is CC-BY-SA-4.0, a different license from RENKIN's own MIT code — see
328
+ [Reaction Evidence guide](docs/guides/reaction-evidence.md#importing-from-ord-open-reaction-database)
329
+ for the full acceptance criteria and licensing split.
330
+
317
331
  ---
318
332
 
319
333
  ## Key Features
@@ -331,6 +345,7 @@ for full matching/validation semantics.
331
345
  | **Constraint DSL** | `--constraints constraints.json` — JSON-driven synthesis planning: element filters, step limits, confidence thresholds, preferred reaction families; enables LLM → RENKIN pipeline |
332
346
  | **Output formats** | `--format json` · `tree` · `mermaid` · `explain` (human-readable per-route analysis) · `compare` (side-by-side table) · `compare-json` · `pareto` |
333
347
  | **Failure diagnostics** | Zero-route JSON output includes `diagnostics` block with `likely_causes` and `suggestions` |
348
+ | **Standalone forward prediction** | `renkin-forward predict --reactants <SMILES>...` enumerates and ranks forward reaction product candidates from reversed SMIRKS templates, independent of route search — see the [Forward Prediction guide](docs/guides/forward-prediction.md) |
334
349
  | **Forward validation** | `renkin-forward validate` verifies each step by applying templates forward; accepts `--route-json` or stdin |
335
350
  | **Plausibility report** | `renkin-bench --plausibility` — forward-validates best routes and reports composite plausibility score |
336
351
  | **PaRoutes benchmark** | `renkin-bench --input-format paroutes` for multi-step ground-truth evaluation with `depth_delta` and `route_diversity` |
@@ -363,6 +378,9 @@ for full matching/validation semantics.
363
378
  # Route cost scoring with commercial prices
364
379
  renkin -t "Cc1ccc(-c2ccccc2)cc1" --bb-prices data/prices.csv --format json
365
380
 
381
+ # Standalone forward prediction — no route search involved
382
+ renkin-forward predict --reactants "Oc1ccccc1C(=O)O" "CCO" --report --max-results 5
383
+
366
384
  # Forward validation — pipe find_routes output directly
367
385
  renkin -t "CC(=O)Oc1ccccc1C(=O)O" --format json | renkin-forward validate
368
386
 
@@ -564,6 +582,8 @@ renkin/ ← Cargo workspace root
564
582
  │ ├── score.rs # SA Score heuristic + step cost
565
583
  │ ├── search.rs # A* / AND-OR tree engine + beam pruning
566
584
  │ ├── scorer.rs # Phase B: tract-onnx NN template scorer
585
+ │ ├── candidate.rs # one-step candidate proposal (offline reranking foundation, not wired into search)
586
+ │ ├── pool_export.rs # candidate-pool JSONL + reproducibility-manifest export
567
587
  │ ├── python.rs # PyO3 bindings (--features python)
568
588
  │ └── wasm.rs # wasm-bindgen bindings (cfg = wasm32)
569
589
  ├── crates/ ← sibling crates
@@ -576,7 +596,9 @@ renkin/ ← Cargo workspace root
576
596
  │ └── bench_chunks/ # USPTO-50k per-chunk results
577
597
  ├── scripts/
578
598
  │ ├── extract_templates.py # rdchiral template extraction pipeline
579
- └── run_benchmark_chunks.sh # resumable chunked benchmark runner
599
+ ├── run_benchmark_chunks.sh # resumable chunked benchmark runner
600
+ │ ├── train_reranker.py # candidate reranker training/evaluation (dev tool, offline only — see docs/guides/reranker-candidate-pools.md)
601
+ │ └── tests/ # unittest suite for train_reranker.py
580
602
  ├── docs/ # MkDocs source → kent-tokyo.github.io/renkin/
581
603
  └── mkdocs.yml
582
604
  ```
@@ -587,8 +609,12 @@ renkin/ ← Cargo workspace root
587
609
 
588
610
  ### Recently shipped
589
611
 
612
+ - [x] `apply_retro`/`run_reactants` performance regression resolved — `chematic` moved from a narrow git-pinned fix to the published `0.8.0` release (upstream automorphism-orbit-pruned canonicalization, [chematic#193](https://github.com/kent-tokyo/chematic/pull/193)); on a fixed 30-target gate, measured in one session against current master: total elapsed **34.7%** faster, p95 **33.8%** faster, and the single worst-case target **42.2%** faster (confirmed via repeated isolated measurement, not a one-off run). Zero correctness change (`apply_retro` call counts identical across versions)
613
+ - [x] `renkin-forward` CLI hardening — versioned `ForwardPredictionReport`, deterministic candidate IDs/merge/provenance, reactant-order-independent matching (up to 3 reactants), strict CLI/route-JSON validation
614
+ - [x] RETROSPECT-inspired offline candidate-reranking foundation — candidate proposal/selection separation, feature schema v1, manifest v2, leakage-safe train/val/test splitting, 7 deterministic baseline arms + trained-ranker arm, paired bootstrap + offline gate tooling ([#59](https://github.com/kent-tokyo/renkin/pull/59); **foundation only — no trained model or accuracy result yet, not wired into route search**)
590
615
  - [x] Stable `template_id` (`rule:<name>` / `smirks-sha256:<hex>`) + `--template-metadata` evidence sidecar + `renkin template ids` ([#41](https://github.com/kent-tokyo/renkin/issues/41) phase 1)
591
616
  - [x] Substrate-specific `examples` (`schema_version: 2`) — per-step exact-substrate vs. same-template-different-substrate resolution, surfaced in `--format explain` and as `match_kind` in JSON ([#41](https://github.com/kent-tokyo/renkin/issues/41) phase 2)
617
+ - [x] Deterministic ORD (Open Reaction Database) evidence import — offline `renkin evidence match` exact-set batch template matcher + `scripts/ord_evidence_audit.py` audit/converter into `schema_version: 2` sidecars; no network access, no fuzzy matching, ambiguous/unprovenanced records excluded and counted in an audit report rather than guessed at ([#41](https://github.com/kent-tokyo/renkin/issues/41) phase 3A)
592
618
  - [x] `renkin-bench cascade` — multi-stage search (fast defaults → hard cases re-run deeper); only unsolved targets propagate to later stages. **78.0% → 95.9%** on USPTO-50k
593
619
  - [x] `renkin-bench --failure-taxonomy` — classify unsolved targets by cause (beam limit / depth limit / template gap / stock near-miss)
594
620
  - [x] Graph-based ester cleavage — BFS-leakage-free `R-C(=O)-O-R' → RCOOH + R'OH`
@@ -650,18 +676,10 @@ renkin/ ← Cargo workspace root
650
676
 
651
677
  ## Citation
652
678
 
653
- If you use RENKIN in academic work, please cite:
654
-
655
- ```bibtex
656
- @software{renkin2026,
657
- author = {kent-tokyo},
658
- title = {{RENKIN}: Retrosynthesis Engine for Knowledge-Informed Navigation},
659
- year = {2026},
660
- url = {https://github.com/kent-tokyo/renkin/releases/tag/v0.18.0},
661
- version = {0.18.0},
662
- license = {MIT}
663
- }
664
- ```
679
+ If you use RENKIN in academic work, please cite it — see [`CITATION.cff`](CITATION.cff)
680
+ for the canonical, version-tracked citation record. GitHub's "Cite this
681
+ repository" button (top of the repo page) reads it directly and can export
682
+ APA or BibTeX on demand.
665
683
 
666
684
  ---
667
685
 
package/package.json CHANGED
@@ -5,7 +5,7 @@
5
5
  "kent-tokyo <kent-tokyo@users.noreply.github.com>"
6
6
  ],
7
7
  "description": "Ultra-fast retrosynthesis engine for computer-aided synthesis planning (CASP) — pure Rust, WASM-ready, Python bindings via PyO3",
8
- "version": "0.18.0",
8
+ "version": "0.20.0",
9
9
  "license": "MIT",
10
10
  "repository": {
11
11
  "type": "git",
package/renkin_bg.wasm CHANGED
Binary file