Validation & benchmarks
Current release: v1.0.12
Feature maturity and known limitations describe the current release. The comparative benchmark was measured with v1.0.1, not v1.0.12. Version 1.0.3 also adds a separate local MMFF94/3D measurement lane.
chematic is an open-source, Rust-native cheminformatics engine (MIT OR Apache-2.0) covering SMILES/SMARTS parsing, molecular descriptors, fingerprints, and 2D depiction. This page summarizes how its output is checked against RDKit, what is stable versus experimental, and what its benchmark numbers do and do not mean. Full methodology, corpora, and reproduction steps live in the chematic repository — this page is a summary with sources, not a replacement for it.
Choosing between chematic and RDKit
Choose chematic when
- You want lightweight molecular analysis in a browser or local environment.
- You want one core shared across Python, Rust, and the browser.
- You want to build a small chemistry tool without a C++ toolchain.
Choose RDKit when
- You need the broadest ecosystem and long production history.
- You need advanced, well-established 3D, reaction handling, or plugin compatibility.
- You need compatibility with an existing RDKit workflow.
This is not a replacement claim. Choose based on the features and validation history your project needs.
Feature maturity
| Feature | Status | Notes |
|---|---|---|
| SMILES / SMARTS parsing | stable | — |
| Molecular descriptors (physicochemical core) | stable | — |
| Fingerprints (ECFP, MACCS, etc.) | stable | — |
| 3D conformer generation (distance geometry + MMFF94) | experimental | — |
| pKa / ADMET profiling | experimental | Rule-based screening heuristics, not validated for clinical use. |
| IUPAC name generation | partial | Covers 25+ structural classes; returns empty string outside supported scope. |
| InChI (default pure-Rust engine) | approximate | — |
| InChI (optional native-inchi feature) | stable | Bit-exact standard InChI via the vendored IUPAC C reference implementation. |
Comparative benchmark (v1.0.1 measurement)
Measurement scope: The comparative benchmark record was measured with chematic v1.0.1 (commit bfaf1d52f9094702eda011451d6479ff0265d3cf), RDKit 2025.09.3, and a 5,000-molecule diverse corpus. The v1.0.3 release also adds a separate local MMFF94/3D benchmark; neither result should be presented as a universal performance claim.
On a 5,000-molecule diverse corpus, chematic generates ECFP4 fingerprints at 3.0× the speed of RDKit, measured as ECFP4 fingerprint generation, wall-clock time per molecule, chematic vs RDKit. This is the only speed figure this site publishes — it applies specifically to ECFP4 fingerprint generation on that corpus, not to chematic's performance in general.
Full methodology, hardware, and raw results: https://github.com/kent-tokyo/chematic/blob/main/docs/benchmark.md.
v1.0.3 local MMFF94/3D measurement:benchmark record. This is a same-environment Criterion measurement, not an RDKit comparison.
Descriptor agreement with RDKit
Mol.descriptors() returns 194 values in total. That count on its own says nothing about accuracy — the values split into two very different groups:
- Physicochemical core: The physicochemical core (molecular weight, LogP, TPSA, H-bond donor/acceptor counts, aromatic ring count) matches RDKit at 100% agreement on a 4,999-molecule ChEMBL corpus.
- Extended descriptors: An extended descriptor family (Kappa shape indices, BertzCT, BalabanJ, BCUT2D, VSA descriptors, MQN, SA Score) diverges substantially from RDKit at corpus scale and should not be assumed validated just because it is one of the 194 values Mol.descriptors() returns.
Do not treat "194 descriptors" as a validation claim by itself — check which group a given descriptor falls into before relying on it.
CIP stereocenter (R/S) accuracy
On the default engine, CIP assignment agrees with RDKit at 96.30%.
A separate, opt-in accurate engine reaches ~99.6–99.8% agreement — Requires explicitly calling the opt-in accurate CIP engine (cip_assignments_accurate_json); not the default. This higher figure does not apply unless that engine is explicitly invoked.
Known limitations
canonical_smiles() is not a safe dedup or cache key
In a 5,000-molecule ChEMBL sample, about 1 in 18 molecules produce two different — each individually valid — canonical SMILES strings for the same structure. This is cosmetic (no structural corruption), but it means canonical_smiles() output should not be relied on today as a stable identity or cache key.
Source: docs/rdkit-comparison.md