Skip to main content

Crate chematic_smiles

Crate chematic_smiles 

Source
Expand description

chematic-smiles — OpenSMILES parser, writer, and canonical SMILES generator.

§Quick start

use chematic_smiles::{parse, write, canonical_smiles};

let mol = parse("c1ccccc1").unwrap(); // benzene
assert_eq!(mol.atom_count(), 6);
assert_eq!(mol.bond_count(), 6);

// Non-canonical write (DFS order).
let smiles = write(&mol);
let mol2 = parse(&smiles).unwrap();
assert_eq!(mol.atom_count(), mol2.atom_count());

// Canonical SMILES (stable, unique).
let c1 = canonical_smiles(&mol);
let c2 = canonical_smiles(&parse("C1=CC=CC=C1").unwrap()); // Kekule benzene
// c1 and c2 differ because aromaticity differs, but both are stable.
assert_eq!(c1, canonical_smiles(&parse(&c1).unwrap()));

§Design

  • Pure Rust: no C/C++ FFI, no unsafe.
  • Single-pass recursive-descent parser; no separate lexer phase.
  • WASM-compatible (no filesystem I/O, no threads).

Re-exports§

pub use canonical::canonical_smiles;
pub use error::SmilesError;
pub use parser::parse;
pub use writer::write;

Modules§

canonical
Canonical SMILES generation via the Morgan (extended connectivity) algorithm.
error
Error types for SMILES parsing and writing.
parser
OpenSMILES recursive-descent parser.
writer
SMILES writer: serialize a Molecule to an OpenSMILES string via DFS traversal.