Skip to main content

Crate omgkit_match

Crate omgkit_match 

Source
Expand description

§omgkit-match

omgkit 的 L5 层:子结构匹配。

给一个 SMARTS 查询和一个净化过的分子,找出所有能把查询原子映射到分子原子、 且保持连接关系与全部查询条件的映射。

use omgkit_match::{substructure_matches, MolProps};

let mut mol = omgkit_io::smiles::parse("c1ccccc1O").unwrap();
// ... 净化 ...
let props = MolProps::compute(&mol);
let query = omgkit_io::smarts::parse("c[OH]").unwrap();
let hits = substructure_matches(&query, &mol, &props, Default::default());

§为什么必须自己写

通用图同构库解不了这里的问题:查询原子的条件是一棵表达式树,不是一个 可比较的标签。而且化学特化(按元素稀有度给查询原子排序、按预先算好的 原子性质一次性筛出候选)恰恰是这里最大的性能来源 —— 通用库拿不到这些信息。

Re-exports§

pub use byproduct::reconstruct as reconstruct_byproducts;
pub use byproduct::Byproducts;
pub use matcher::substructure_matches;
pub use matcher::substructure_matches_counted;
pub use matcher::MatchOptions;
pub use matcher::SearchStats;
pub use props::MolProps;
pub use react::run_on_substrate;
pub use react::run_reactants;
pub use react::Outcome;
pub use react::ProductSet;

Modules§

byproduct
把反应丢弃的片段收口成分子。
matcher
子结构匹配的回溯搜索。
props
把一个净化过的分子预计算成逐原子逐键的查询性质
react
按反应模板生成产物。