Home
A typed Rust chemistry core for browser, Python, Node, and native applications. Supported browser workflows run entirely in WebAssembly, without a chematic backend.
Current release: v1.1.4 · release notes
Why chematic
- Local-first: parsing, descriptors, fingerprints, similarity search, and 2D depiction can run in the browser. The Explorer and Playground are static sites and do not upload molecule data to a chematic service.
- One core: Rust, Python, Node, and WebAssembly use the same Rust implementation instead of separate ports.
- Typed boundaries: unsupported chemistry, malformed input, cancellation, and resource limits are explicit outcomes.
- Reproducible claims: compatibility and performance results identify the version, corpus, operation, options, and failure policy.
Quick start
Installation: pip install chematic, cargo add chematic, or
npm install @kent-tokyo/chematic.
Choose an entry point
| You are building | Start here |
|---|---|
| A local browser tool | Browser integration or the Explorer |
| A Python notebook or report | Python notebook guide |
| A Rust service or CLI | Rust server guide |
| An MCP-enabled agent | AI-assisted analysis |
| A reproducible research workflow | Researcher guide |
| A migration from RDKit | RDKit migration guide |
Current evidence boundary
v1.1.4 adds bounded cation-resonance and screening-enrichment APIs, checked
CIF and protein projections, RDKit-compatible molecule/property/conformer and
fingerprint surfaces, dense NumPy fingerprints, and format correctness fixes.
The latest broad
published-package performance packet remains v1.0.42 until v1.1.x artifacts
are measured. A current-source
macOS arm64 packet at 44338e16 matches RDKit 2026.09.1 on 10,000/10,000 TPSA,
Labute ASA, ring-count and chiral-Morgan rows; it is not a published-package
rerun. The 83-row reaction gate remains 80 exact graph/origin/map rows and
three inputs invalid in both engines.
Each result applies only to its named artifact, corpus, options, and failure policy. Release availability is not accuracy evidence, source results are not package results, and typed refusals are not matches.
See validation for denominators, benchmarks for timed boundaries, and compatibility scope for unsupported chemistry. Historical results remain in the record index.
Stable and bounded areas
Stable selected paths include SMILES/SMARTS, descriptors, fingerprints, similarity and substructure search, common MOL/SDF I/O, and the documented Rust/Python/Node/WASM bindings.
3D, pKa/ADMET screening, IUPAC naming, Markush/polymer expansion, rich CDXML
editing, and the RDKit-style API are experimental or intentionally bounded.
canonical_smiles() is not always a safe identity key; use the fail-closed
canonical_smiles_stable_key() where the documented domain is sufficient.
RDKit remains the better choice for maximum ecosystem coverage, broader 3D workflows, or APIs that chematic marks unsupported.
Rust line coverage is measured separately from chemistry validation. The processed Linux Codecov lane is currently 96.93%; it shows which code executed, not whether every chemical result is correct.