Skip to content

Rust API

Core Types

ChemEnv

The chemical environment holding the building block database.

use renkin::chem_env::ChemEnv;

// Load from SMILES file
let env = ChemEnv::load("data/building_blocks.smi")?;

// Load from in-memory list
let env = ChemEnv::in_memory(&["CC(=O)O", "c1ccccc1", "Brc1ccccc1"]);

// Check if a molecule is in the stock
let mol = mol_from_smiles("CC(=O)O")?;
assert!(env.is_building_block(&mol));

SearchConfig

Configuration for the retrosynthesis search.

use renkin::search::SearchConfig;

let config = SearchConfig {
    max_depth: 5,      // maximum retrosynthetic depth
    max_routes: 3,     // maximum number of routes to return
    beam_width: 50,    // A* beam width (0 = unlimited)
};

find_routes

Main search function.

use renkin::search::{SearchConfig, find_routes};
use renkin::chem_env::ChemEnv;

let env = ChemEnv::load("data/building_blocks.smi")?;
let config = SearchConfig { max_depth: 5, ..Default::default() };

let routes = find_routes("CC(=O)Oc1ccccc1C(=O)O", &env, &config)?;
println!("Found {} routes", routes.len());

Reaction Rules

use renkin::chem_env::{default_rules, RetroRule};

// Get the default rule set (31 handcrafted rules)
let rules = default_rules();

// Each rule has a name and SMIRKS pattern
for rule in &rules {
    println!("{}: {}", rule.name, rule.smirks);
}

// Apply a single rule to a molecule
use renkin::chem_env::{apply_retro, mol_from_smiles};
let mol = mol_from_smiles("CC(=O)Oc1ccccc1C(=O)O")?;
let rule = RetroRule { name: "ester_cleavage", smirks: "[C:1](=[O:2])[O:3]>>[C:1](=[O:2])O.[O:3]" };
let precursor_sets = apply_retro(&mol, &rule);

Molecule Utilities

use renkin::chem_env::{mol_from_smiles, to_canonical};

// Parse SMILES
let mol = mol_from_smiles("CC(=O)O")?;

// Get canonical SMILES
let canon = to_canonical(&mol);
println!("{}", canon);  // "CC(=O)O"

Feature Flags

Feature Description
python Enable PyO3 Python bindings (for maturin build)
(default: wasm32) WASM bindings via wasm-bindgen

Error Types

RENKIN uses anyhow::Error for all fallible operations. Common errors: - SMILES parse failures from chematic - Building block file I/O errors