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;