SMILES 写出器:封装一次确定性 DFS 写出所需的全部可变状态。
SmilesWriter
00 Remarks
直接使用者应优先调用 SmilesIO.Write();本类暴露出来是为了 需要复用写出状态或做自定义写法的场景。写出顺序由 Molecule.MorganRanks() 决定,因此结果确定、可重现。
01 Syntax
SMRUCC.genomics.Analysis.RetroPath.Chem.SmilesWriter
02 Methods
03 Fields
| Name | Overloads | Summary |
|---|---|---|
| _m | 1 | 待写出的分子。 |
| _ranks | 1 | 各原子的 Morgan 秩标签,用于确定 DFS 的邻居遍历顺序。 |
| _sb | 1 | 输出缓冲区。 |
| _compSet | 1 | 当前正在处理的连通分量的原子集合。 |
| _emitted | 1 | 当前分量中已经发射过的原子,避免同一原子被写出两次。 |
| _ringDigits | 1 | 原子 → 该原子上待输出的环闭合号列表 [(digit, order)];回边两端登记同一 digit |
| _ringEdgeKeys | 1 | DFS 回边端点对 (min, max):写出时不得作为树边遍历,仅由环号表达 |
04 Members
#ctor(Molecule)
以给定分子初始化写出器(会预先计算 Morgan 秩)。
Parameters
| Name | Type | Description |
|---|---|---|
m | Molecule | 待写出的分子。 |
Write
执行写出:逐连通分量做确定性 DFS,分量之间以 . 分隔。
Returns
规范 SMILES 字符串。
_m
待写出的分子。
_ranks
各原子的 Morgan 秩标签,用于确定 DFS 的邻居遍历顺序。
_sb
输出缓冲区。
_compSet
当前正在处理的连通分量的原子集合。
_emitted
当前分量中已经发射过的原子,避免同一原子被写出两次。
_ringDigits
原子 → 该原子上待输出的环闭合号列表 [(digit, order)];回边两端登记同一 digit
_ringEdgeKeys
DFS 回边端点对 (min, max):写出时不得作为树边遍历,仅由环号表达