Reaction evidence metadata
Evidence sidecars attach curated, cited information to a route step. They do not make conditions, yield, or reaction success predictions.
renkin template ids data/templates_extracted_5000.smi --format json
renkin --target "CC(=O)Oc1ccccc1C(=O)O" \
--templates data/templates_extracted_5000.smi \
--template-metadata evidence.json
Hand-crafted rules use rule:<name> identifiers. Extracted templates use
smirks-sha256:<hex>, derived from the trimmed SMIRKS text, so reordering a
template file does not move its evidence to another reaction.
Sidecar shape
Use schema_version: 1 for template-level evidence:
{
"schema_version": 1,
"templates": {
"smirks-sha256:<hex>": {
"references": [{"id": "ref-1", "kind": "doi", "identifier": "10.xxxx/example"}],
"condition_candidates": [{
"catalysts": ["Pd(PPh3)4"], "bases": ["K2CO3"],
"solvents": ["EtOH", "water"], "source": "literature",
"scope": "template", "reference_ids": ["ref-1"]
}],
"reported_yields": [{
"percentage": {"min": 72.0, "max": 81.0}, "basis": "isolated",
"source": "literature", "scope": "template", "reference_ids": ["ref-1"]
}],
"warnings": [{
"code": "possible_protodeboronation", "severity": "medium",
"message": "Reported under prolonged aqueous heating.",
"source": "literature", "scope": "template", "reference_ids": ["ref-1"]
}]
}
}
}
kind is doi, patent, url, or dataset_record; yield basis is
isolated, assay, conversion, or unknown. A sidecar entry that does not
match a loaded template is warned about, not silently applied elsewhere.
schema_version: 2 adds substrate-specific examples. Each example has an
ID, exact target_smiles, non-empty precursor_smiles, and cited
conditions and/or reported_yield. The nested records must use
scope: "substrate_specific"; template-level yields are rejected in v2 so a
single-substrate number cannot be applied to every use of a template.
Validation and interpretation
RENKIN validates a sidecar before search. Unsupported schema versions, bad SMILES, duplicate or dangling references, invalid yield ranges, and malformed records are hard errors. Recheck an asset with:
Resolved output distinguishes exact_substrate evidence from
template_only precedent. An exact match reports what the cited source
achieved; it is still not a prediction for an unobserved experiment.
confidence and success_probability remain separate template-ranking
signals. An empty warning list means no warning was curated, not that no risk
exists.
Importing from ORD (Open Reaction Database)
For a locally downloaded Open Reaction Database corpus, run the offline matcher and audit script:
python scripts/ord_evidence_audit.py \
--ord-data /path/to/ord-data \
--renkin-bin target/release/renkin \
--templates data/templates_extracted_5000.smi \
--output-sidecar artifacts/ord_candidates.json \
--output-report artifacts/ord_audit.json \
--output-manifest artifacts/ord_manifest.json
The script uses renkin evidence match for exact target/precursor matching.
It does not fetch data, fuzzy-match structures, invent warnings, or turn
reported yields into predictions. Ambiguous, unmatched, and out-of-scope
records remain in the audit report instead of entering the sidecar.
The importer code is MIT; ORD data and sidecars derived from it require the applicable ORD attribution/share-alike handling. This repository does not bundle a real ORD corpus. See the ORD evidence script guide for installation and field-level mapping details.