Skip to main content

Crate omgkit_chem

Crate omgkit_chem 

Source
Expand description

§omgkit-chem

omgkit 的 L2 层:化学语义 —— 净化管线、芳香性、价键与隐式氢。

§净化管线的 12 个步骤

步骤之间有依赖,不可乱序。“实现在“一列为空的是尚未实现的:

#步骤实现在
1修正硝基 / 叠氮 / 磷酰 / 高卤酸的非标准画法cleanup
2有机金属键改配位键organometallics
3价键计算 + 隐式氢推断valence
4环感知rings
5芳香环 → 交替单双键kekulize
6自由基电子数radicals
7芳香性感知aromaticity
8共轭标记conjugation
9杂化标记conjugation
10阻转异构未实现
11剔除几何上不成立的立体标记cleanup_chirality
12显式/隐式氢调整adjust_hs

§净化之外:两个它结果的模块

本 crate 里还有三个模块不是净化的步骤:gasteigerdescriptors 是净化输出的消费者,explicit_hs 是一次独立的图编辑(与 remove_hs 一对)。 前两个放在这里 是因为它们要读第 3、4、7、8、9 步填的东西(隐式氢、环、芳香、共轭、杂化), 拆出去就成了一个只依赖 omgkit-chem 的空壳 crate。

模块是什么
gasteigerGasteiger–Marsili 部分电荷(PEOE 迭代)
descriptors图神经网络特征化要读的原子/键描述符(12 + 7 个字段),汇到一处交付
explicit_hs把隐式氢补成真原子。改原子数,所以不在那 12 步里 —— 与 remove_hs 是一对

它们不会pipeline::sanitize 调用 —— 净化不该顺手算一批 没人要的数。反过来,它们要求分子已经净化过:没净化不报错,只会让每一项都 是解析时的占位值。

descriptors 还有一处前置在本 crate 之外:双键顺反由 omgkit_io::stereo::perceive_bond_stereo 填,而 omgkit-io 是本 crate 的 同级,调不到。详见该模块的文档。

§removeHs 不属于净化

删除显式 [H] 原子会改变原子数,是一个独立的编辑操作,不在这 12 步里。 实现在 remove_hs,由调用方按需显式调用。

§净化基本不改动连通性

只有第 2 步会把某些键改成配位键并交换端点;除此之外净化只改属性, 不增删原子和键。这是“在解析结果的图上直接做环感知“成立的前提。

Re-exports§

pub use adjust_hs::adjust_hs;
pub use aromaticity::set_aromaticity;
pub use cleanup::clean_up;
pub use cleanup_chirality::cleanup_chirality;
pub use conjugation::mark_conjugated_atoms;
pub use conjugation::set_conjugation;
pub use conjugation::set_hybridization;
pub use descriptors::atom_descriptors;
pub use descriptors::bond_descriptors;
pub use descriptors::AtomDescriptors;
pub use descriptors::BondDescriptors;
pub use explicit_hs::add_explicit_hs;
pub use gasteiger::gasteiger_charges;
pub use kekulize::kekulize;
pub use kekulize::KekulizeError;
pub use organometallics::cleanup_organometallics;
pub use organometallics::is_metal;
pub use pipeline::sanitize;
pub use pipeline::SanitizeError;
pub use radicals::assign_radicals;
pub use remove_hs::is_removable;
pub use remove_hs::remove_hs;
pub use rings::fused_ring_systems;
pub use rings::perceive_rings;
pub use rings::RingPerception;
pub use sssr::ring_set;
pub use sssr::Ring;
pub use valence::update_property_cache;
pub use valence::ValenceResult;

Modules§

adjust_hs
净化第 12 步:氢的隐式/显式表示调整。
aromaticity
芳香性感知(净化第 7 步)。
cleanup
非标准画法修正(净化第 1 步)。
cleanup_chirality
净化第 11 步:剔除几何上不成立的立体标记。
conjugation
共轭标记与杂化状态(净化第 8、9 步)。
descriptors
图神经网络特征化要读的那一组原子/键描述符。
explicit_hs
把隐式氢补成真正的原子。三维构象要用。
gasteiger
Gasteiger–Marsili 部分电荷(PEOE,逐轨道电负性均衡)。
kekulize
Kekulize —— 把芳香键还原为交替的单双键(净化第 5 步)。
organometallics
净化第 2 步:把超价的“非金属—金属“单键改成配位键。
pipeline
净化管线的唯一入口。
radicals
自由基电子数(净化第 6 步)。
remove_hs
把图里的显式氢原子并成邻居上的氢计数。
rings
环感知:判定原子/键是否在环中,以及过每个原子的最短环有多大(净化第 4 步)。
sssr
环集感知 —— 给出分子的一组具体的环,供芳香性感知使用。
valence
净化第 3 步:把隐式氢算出来写回分子

Structs§

ValenceError
价键校验失败。

Enums§

ValenceErrorKind
价键校验失败的类别。

Functions§

valence_shift
形式电荷从 from 变到 to 时,这个元素能用的价变了多少。