Skip to content

Home

# Cheminformatics that runs locally

A typed Rust chemistry core for browser, Python, Node, and native applications. Supported browser workflows run entirely in WebAssembly, without a chematic backend.

CI PyPI crates.io npm

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

import init, { parse_smiles } from "@kent-tokyo/chematic";
await init();

const mol = parse_smiles("CC(=O)Oc1ccccc1C(=O)O");
console.log(mol.molecular_weight(), mol.tpsa());
mol.free();
import chematic

mol = chematic.from_smiles("CC(=O)Oc1ccccc1C(=O)O")
print(mol.mw, mol.tpsa)
use chematic::{chem, smiles};

let mol = smiles::parse("CC(=O)Oc1ccccc1C(=O)O").expect("valid SMILES");
println!("{:.2} {:.1}", chem::molecular_weight(&mol), chem::tpsa(&mol));

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.

Reference