chematic-fp
Fast molecular fingerprints for similarity search and clustering. ECFP4/6, RDKit Morgan, MACCS 166-bit, and topological path fingerprints with Tanimoto/Dice similarity. Pure Rust, WASM-compatible.
Features
- ECFP fingerprints: ECFP4 (default), ECFP6, and configurable radius
- MACCS 166-bit: public pharmacophore-based bit vector
- Topological path: branching-aware path enumeration
- RDKit-compatible Morgan: identical to RDKit's default ECFP (FNV-1a 64-bit hash)
- Similarity metrics: Tanimoto, Dice, complement similarity
- Chirality-aware: optional stereo center consideration (R/S, E/Z)
- WASM-compatible: zero C/C++ dependencies
Quick Start
use parse;
use ecfp4;
use tanimoto;
let mol1 = parse.expect;
let mol2 = parse.expect;
let fp1 = ecfp4;
let fp2 = ecfp4;
let similarity = tanimoto;
println!;
API Overview
Fingerprint Generators
ecfp4(mol: &Molecule) -> Vec<u64>— 4-bond radius ECFP (most common)ecfp(mol: &Molecule, config: &EcfpConfig) -> Vec<u64>— configurable ECFPmaccs_166(mol: &Molecule) -> BitVec— MACCS 166 bit pharmacophore vectortopo_path(mol: &Molecule) -> Vec<u64>— topological path fingerprint
Similarity
tanimoto(fp1: &[u64], fp2: &[u64]) -> f64— Jaccard/Tanimoto coefficientdice(fp1: &[u64], fp2: &[u64]) -> f64— Dice similarity
Configuration
use EcfpConfig;
let config = EcfpConfig ;
let fp = ecfp;
Dependencies
chematic-core— molecular graphchematic-perception— aromaticity
References
- ECFP/Morgan fingerprints: https://pubs.acs.org/doi/10.1021/ci034667o
- MACCS keys: https://pubs.acs.org/doi/10.1021/c60045a
- Tanimoto similarity: https://en.wikipedia.org/wiki/Jaccard_index
See Also
chematic— main umbrella cratechematic-smiles— SMILES parserchematic-smarts— SMARTS substructure matching