2.6.1 数据为什么是脏的:来源、重复与四类污染
第 2 章前几节默认输入是一张干净的分子图;真实数据几乎从不干净。建模常用的化合物集并非为机器学习而生:它们从专利权利要求、文献数据表、供应商目录与高通量实验记录里拼合而来,各有各的记录习惯。供应商按“能买到什么”登记,目录里多为可溶的盐形式(salt form);专利按“主张什么”书写,倾向游离碱;文献按原文照录,原作者写哪种就抄哪种;高通量筛选记录的则是孔板里实际加入的样品,常以盐、甚至以混合物形式入库。同一化合物因此以不同面目反复入库:钠盐与游离酸并存、不同质子化状态(protonation state)并存、互变异构体以不同画法并存、立体标注时而明确时而缺失。
问题的实质是等价关系:化学意义上的“同一化合物”是一个等价类,而原始记录不满足这个等价关系——等价的记录长得不一样,不等价的记录有时长得一样。化学数据清洗(chemical data curation)与结构标准化(structure standardization)的任务,就是在建模之前把这个等价关系机械地、可复现地施加到数据上。
污染可以归为四类,见表 2.6-1。前三类是“表示层”的病:分子本身没错,只是写法不统一。第四类是“记录层”的病:结构或标签本身错了——结构张冠李戴(化合物名对应到错误的结构)、活性数值的小数点错位(微摩尔写成纳摩尔,差三个数量级)、单位抄错。表示层的病可以规则化处理;记录层的病没有通用解法,只能靠交叉核对与离群审查发现(Fourches et al., 2010)。
| 污染类型 | 典型表现 | 对建模的威胁 | 常规处置 |
|---|---|---|---|
| 盐与混合物 | 钠盐/盐酸盐与游离形式并存;共溶剂;混合物记录 | 同一分子多次入库,计数、指纹与划分全部失真 | 断盐、片段选择 |
| 价态与电荷异常 | 五价碳、错误的形式电荷、金属配位误写为共价 | sanitize 失败或描述符异常 | 有效性检查、金属处理 |
| 互变异构并存 | 酮式/烯醇式、内酰胺/内酰亚胺以不同构型入库 | 同一分子指纹差异巨大,被当作两个分子 | 互变异构规范化 |
| 记录级错误 | 结构对应错误、活性值小数点错位、单位错误 | 结构—活性错配,标签噪声 | 交叉核对、离群审查 |
2.6.2 标准化流水线:五个阶段及其顺序
清洗不是一堆可以随意排列的开关:不少操作不可交换,顺序必须验证后写死。下面给出一条针对小分子药物样化合物的示范顺序——它的合法性来自所依赖的 API 与化学策略,不是普适的必然次序(不同实现确有差异:RDKit 的 Cleanup 先做官能团规范化再再电离,FragmentParent 先清理再选主片段;ChEMBL 的公开流水线先规范化后中和,主片段提取是另一组件)。
- 阶段 1结构有效性检查:sanitize 全流程(2.1.4)能否通过;不通过者隔离待查,不参与自动修补。
- 阶段 2断盐与片段分离:断开金属—配体连接,按规则识别盐与溶剂并保留主体(默认策略是选最大片段,其边界与失败情形见正文)。
- 阶段 3电荷中和与再电离:能写成中性形式的改为中性形式,不能者保留并记录。
- 阶段 4互变异构规范化:按固定规则集把互变族折叠到一个代表构型,并审查立体信息的变化。
- 阶段 5官能团规范化与终检:非标准价写法改为标准形式,重跑 sanitize,生成规范化标识符。
阶段 1:有效性检查
第一道关卡承接 2.1.4 的 sanitize:价态计算、环感知、凯库勒化、芳构化逐项通过,图才有资格称为分子。公共数据集中总有一小部分记录连这一关都过不了——五价碳、六价氮、断键悬空的原子。处置原则是隔离而非硬救:解析失败与超价错误各有日志,人工复核后决定删除或改正。两点分寸要拿捏。其一,sanitize 并非纯“原样检查”:它自带一部分受控的表示修正——五价硝基写法 CN(=O)=O 解析后即被改写为电荷分离的 C[N+](=O)[O-];已知、可审计、写进文档的修正是工具的一部分,与无依据地“修复”错误结构是两回事,后者等于把错误合法化。其二,通过 sanitize 也不证明结构与实验样品对应——它只说明记录通过了该工具的表示与价规则。
阶段 2:断盐与片段分离
盐在 SMILES 里表现为多个不相连的片段(2.2 节的圆点记法),如乙酰水杨酸钠写作酸根阴离子与 [Na+] 两段。断盐(salt stripping)先断开金属与配体之间的离子型连接,再保留主体、丢弃反离子。两个工程细节直接决定这一步会不会悄悄出错:其一,RDKit 的 LargestFragmentChooser 默认按原子总数(含氢)比较片段——测试输入 CC.O=C=O 默认留下的是乙烷而非三重原子的二氧化碳,要按重原子数比较须在配置里显式声明;其二,“最大”有直接失败情形——甲铵与对甲苯磺酸根组成的盐(主体 2 个重原子、反离子 11 个),默认策略保留的恰是磺酸根。生产流水线因此倾向用明确的盐与溶剂识别规则(ChEMBL 维护专门的盐/溶剂规则文件),对认不出主体的多片段记录标记待查,而不是无条件压成一个最大片段。
断盐的化学前提也要说清。“生物活性通常由游离形式(free form)贡献”是建模约定:测定环境下钠盐、盐酸盐迅速解离,但解离给出的是离子对,到达靶点的物种是否为中性游离形式取决于 pH 与质子转移——盐解离本身推不出“活性物种必然中性”。更要分清两件事:为建模提取共同母体,与断言原始实验对象等价。统一规则只保证处理一致,不保证被删除的信息与预测目标无关——若两个必须区分的对象(标签分别为 1 与 100)被标准化成同一输入,任何只看该输入的确定性模型都无法区分它们。稳妥做法是保留“原始样品—标准化结构—母体分组”的多层映射。共晶与复方、前药与代谢物、金属药物三类显式豁免见下方警示框。
“最大片段”默认的适用边界。三类场景会出错。其一,共晶与复方:两个活性成分以固定比例共存,丢弃任何一个都改变了被测对象。其二,前药(prodrug)与活性代谢物:前药本身就是完整分子,“保留最大片段”无碍,但把前药记录与母体记录清洗后合并是错的——它们是不同物种,活性含义不同。其三,金属药物:顺铂的活性恰恰依赖铂中心,金属断开步骤会把 Pt–N 键拆掉,得到一个毫无意义的碎片。遇到这三类数据,流水线必须显式豁免,并写入清洗报告。
阶段 3:电荷中和
反离子丢掉之后,酸根还带着负电。中和步骤按固定规则再质子化:羧酸根改回羧酸,胺盐改回游离胺。有些电荷无法中和——季铵盐的第四个取代基不是质子,去掉就不再是原分子;这类记录保留原电荷并在报告中登记。还要交代一个局限:测定环境有特定 pH,分子在溶液里的优势电离形态未必是中性形式;中和是“表示约定”,不是物理断言。约定无害,只要全数据集用同一条约定。
阶段 4:互变异构规范化
互变异构体(tautomer)。同一分子的两个异构体之间仅差一个原子(通常是氢)的位置与相应电子对的迁移,如酮式与烯醇式、内酰胺与内酰亚胺。互变异构体不同于共振结构:前者是规则上可区分的不同物种,后者只是同一种电子离域的两种画法。至于一对互变体在给定条件下是否实际快速交换、能否分离、平衡组成如何,是实验问题——软件按规则枚举出互变关系,不等于证明该样品会互换。
互变异构对指纹的冲击很大。摩根指纹(2.5 节)以原子邻域为哈希输入,氢的迁移改变受影响原子的氢数、键级、芳香性与相关不变量,环境特征随之改变——实测 2-吡啶酮与 2-羟基吡啶的半径 2 相似度只有约 0.19。但不是“所有特征都变”:两式仍有共享置位,敏感程度随结构、指纹类型与参数而异,不宜从极端例子推广出“近重复检测完全失效”。图 2.6-2 的这对互变体是教科书案例:互变比例随溶剂极性移动,非极性环境偏向羟基式,极性环境偏向酮式(Sitzmann et al., 2010)。互变异构规范化(tautomer canonicalization)的思路是枚举互变族,再按固定规则集选一个代表构型,全族折叠到代表上。但“哪个代表”没有普适答案:优势互变体取决于 pH、溶剂与靶点结合环境,数据库之间也各行其是——Sitzmann 等人对逾亿条记录的分析显示,三分之二以上的独特结构按其规则可能存在互变异构,各库登记的构型并不一致(Sitzmann et al., 2010)。“可能存在互变”是规则口径,不等于该比例的记录是重复或错误。规范化选的是“一致”,不是“正确”;对 pH 敏感的建模任务,有时应保留整族或显式建模电离态。
规范化还有一道必须设的关卡:立体化学。RDKit 的互变枚举默认会删除参与互变的 sp³ 原子上的立体标记(SetRemoveSp3Stereo 默认开启,双键立体也有对应开关)——两种丙氨酸对映体 C[C@H](N)C(=O)O 与 C[C@@H](N)C(=O)O 经默认 Canonicalize 后都变成无立体的 CC(N)C(=O)O。算法枚举了某条互变路径,不等于证明该样品会消旋;把软件为统一代表所作的信息舍弃当成“对映体天然可互换”,会直接冲掉习题 2.6-2 那类区分要求(ChEMBL 的标准化设计就把立体化学可能受影响列为不采用统一互变代表的理由之一)。手性敏感任务应评估 SetRemoveSp3Stereo(False) 等保守选项——关一个开关也不是对所有结构都保证立体无损的万能修复——并在标准化前后审查立体信息变化、保留原始异构结构。同时检查枚举状态:达到最大互变体数、最大变换数或被取消都会记入结果状态,未检查就不宜宣称已完整枚举并统一整族。
阶段 5:官能团规范化
同一官能团常有多种合法却互异的写法:硝基可写成五价的 N(=O)=O,也可写成电荷分离的 [N+](=O)[O-];重氮、亚砜、胍都有类似的双写法。官能团规范化(functional group normalization)用一组模式改写规则把非标准价写法统一为标准形式,机理上是一族受限的“模式匹配—改写”变换:匹配到非标准子结构,替换为标准子结构,原子数与总电荷不变。两个动机:其一,五价氮写法在部分价规则下过不了 sanitize;其二,即使都能通过,两种写法的指纹与描述符也不同,等于人为制造了近重复。改写完必须重跑 sanitize——改写规则也是会出错的代码。
顺序为什么敏感,又为什么没有唯一答案。操作不可交换是事实:中和与互变规范化的先后会改变互变规则集的适用对象(烯醇负离子不在中性官能团的规则覆盖内);对多片段记录做官能团改写,会把规则消耗在反离子上。所以顺序必须验证。但“必须验证”推不出“唯一合法次序”:RDKit 与 ChEMBL 的公开流水线在若干步骤上采用了不同的排列,各有明确用途——先统一表示再识别盐与溶剂,完全可以是一种设计。本节的示范顺序服务于“提取中性母体”这一目标;换目标就换顺序。工程纪律是把所选顺序连同理由写进配置,用测试用例(盐、大反离子、互变体、对映体、永久带电结构)验证它,并随版本管理。图 2.6-1 以一条盐记录与一条游离酸记录走完全程为例。
2.6.3 清洗的传导效应:从指纹到划分与评估
不清洗的代价沿着建模链条向下传导。第一站是指纹比较。同一路径的盐形式与游离形式,摩根指纹(半径 2、2048 位)的 Tanimoto 相似度明显低于 1——本例实测 0.6667。原因可以数出来:盐记录多出的钠原子贡献自己的环境特征,被夺走质子的羧酸氧改变了整片邻域的哈希,共享的骨架位再被稀释一轮。定性地说,“同一分子”在未清洗数据里表现为“中等相似的另一个分子”;但一个例子不能证明所有盐—游离对的相似度量级稳定——这取决于盐与主体的相对大小,它也不该被反过来当成去重阈值。
from rdkit import Chem
from rdkit.Chem import AllChem, DataStructs
salt = Chem.MolFromSmiles("CC(=O)Oc1ccccc1C(=O)[O-].[Na+]") # 记录 A:钠盐
free = Chem.MolFromSmiles("CC(=O)Oc1ccccc1C(=O)O") # 记录 B:游离酸
fp = lambda m: AllChem.GetMorganFingerprintAsBitVect(m, 2)
print(DataStructs.TanimotoSimilarity(fp(salt), fp(free))) # 0.6667:同一分子只算“中等相似”
print(salt.GetNumAtoms(), free.GetNumAtoms()) # 14 对 13:计数混入 Na
第二站是数据划分,两种划分机制的风险不同。逐记录随机划分下,同一分子的多条记录可能分居训练集与测试集,模型答对的与其说是泛化,不如说是认出了熟人(阿司匹林的盐与游离形式 Murcko 骨架同为苯环,正是这类重复的典型)。设某化合物在原始表中有 k 条记录,训练集比例为 q,则至少一条进训练集、至少一条进测试集的概率为
第三站是标签表本身。同一化合物常被多次测定:不同实验室、不同批次、不同年代。但合并的前提先于统计:同一标准化结构不等于同一种测量——汇总单位应是“标准化结构+靶点与物种+同类终点+可比条件”;结合实验、细胞功能实验、毒性实验与理化性质实验不能混进同一个中位数,ChEMBL 对这些类别与靶点映射置信度都有明确区分。条件不同的记录应保留条件作输入、分任务建模,或按预先写定的规则取舍。在通过可比性审查的组内,多条活性取中位数:
清洗的直接后果可以一眼核对:唯一标识符数下降。标准化是确定性映射,原始记录集合经映射后像集的基数不大于原像集——重复被折叠,计数只减不增。
from rdkit import Chem
from rdkit.Chem.MolStandardize import rdMolStandardize
def key(smiles):
m = Chem.MolFromSmiles(smiles)
parent = rdMolStandardize.ChargeParent(m) # 断盐·取主片段·中和(本例适用)
print(Chem.MolToSmiles(parent)) # 打印中间结构,供逐阶段审计
return Chem.MolToInchiKey(parent)
a = key("CC(=O)Oc1ccccc1C(=O)[O-].[Na+]") # 盐记录
b = key("CC(=O)Oc1ccccc1C(=O)O") # 游离酸记录
print(a == b) # True:两记录均为 BSYNRYMUTXBXSQ-UHFFFAOYSA-N,唯一计数由 2 降为 1
函数名的迷惑性值得一记:StandardizeSmiles 只做金属断开、官能团规范化与再电离,不含主片段选择、中和与互变规范化——上面的盐经它处理后仍是 CC(=O)Oc1ccccc1C(=O)[O-].[Na+],InChIKey 与游离酸不同。ChargeParent 在本例恰好覆盖所需(取经中和的主片段),但它同样不是混合物、金属药物与大反离子盐的通用方案。每个阶段打印中间结构、对结果断言(片段数、净电荷、标识符一致),是让清洗可审计的最低要求。
习题 2.6-1
某活性数据集有 100 000 条记录,其中约 2% 是“盐形式重复”——某化合物已有一条游离形式记录,又以钠盐形式再入库一条,即约有 2 000 个化合物各占 2 条记录。随机按 80/20 划分训练/测试集且不去重。(1) 用式 (2.6-1) 估计因盐形式重复而跨集的化合物数期望。(2) 这占 20 000 条测试集记录的多少?由此说明清洗对 3.8 节评估的意义。
参考解答(1) 每个此类化合物 k=2、q=0.8:P = 1 − 0.64 − 0.04 = 0.32——这是单个重复对的跨集概率;2000 个重复对里,跨集化合物数的期望为 2 000 × 0.32 = 640 个,单次划分会在期望附近波动。(2) 每个跨集化合物恰有一条测试记录的“孪生”在训练集,受影响测试记录期望约 640 条,占测试集 3.2%。这 3.2% 的记录上模型可能“认出熟人”,使评估偏乐观——但受影响幅度还取决于特征表示与标签一致性,不能直接换算成“指标虚高 3.2%”。防泄漏也不只有删除一途:保留全部记录、让相关记录整组进入同一集合(分组划分),同样能阻断这类跨集;若选择去重,删除的是“重复入库的表示”,原始测定记录仍应留档。
2.6.4 质量审查的实证警示:Trust, but Verify
“清洗很重要”不是修辞,而是被反复量化过的事实。Fourches、Muratov 与 Tropsha 系统审查了公共数据库中的建模数据集,发现无效结构、重复记录(常以不同盐形式与互变异构形式出现)、价态异常与不一致记录在各数据集中占去了不可忽略的份额;他们对数据逐一清洗、重建 QSAR 模型后对比:清洗前后模型的测试集表现出现实质差异,残留错误仍继续压低模型质量。结论浓缩为一句格言——Trust, but verify:数据库可以省去从头测定的成本,但直接拿来建模必须先审查(Fourches et al., 2010)。该工作随后扩展为化学基因组数据清洗的实用指南(Fourches et al., 2016)。
清洗前后模型性能的实证差异。Fourches 等人 2010 年的研究流程可概括为四步:汇集公共数据集,逐条审查结构(有效性、盐与片段、互变异构、立体标注),删除或改正问题记录,再用清洗前后的数据分别训练模型并留出外部测试集验证。多个数据集上,清洗后的模型给出的预测更稳定、排序更一致;残留的错误记录即使数量不大,也会以离群点身份扭曲回归。同年 Sitzmann 等人对汇集逾亿条结构记录的大型数据库(CSDB)所做的互变异构分析从另一个侧面印证了表示层问题的规模:三分之二以上的独特结构按其规则存在互变异构的可能,各库登记构型并不一致。
这一支文献也重塑了 QSAR 的方法论规范。Tropsha、Gramatica 与 Gombar 的纲领性论文指出:没有严格验证的构效模型无论拟合多好都不可信——内部交叉验证只是下限,外部测试集验证与 y 随机化对照(打乱标签重训,性能应坍缩到随机水平)才是必要条件(Tropsha et al., 2003)。数据清洗确定输入分子及其标签如何处理,验证则检验模型在指定评估条件下的表现。二者共同影响 QSAR 结论的可信度,处理规则和验证协议都应记录。
2.6.5 流程纪律:固定的规则、入库的脚本与被丢弃者的清单
清洗本身也是代码,也会出错,也在演化。三个纪律由此而来。第一,规则固定并记录版本:断盐阈值、互变规则集、官能团改写表、中和策略,全部写死在配置里,随代码版本管理;工具版本同样要记录——RDKit 的规范化行为跨版本偶有调整,同样的原始数据配不同版本的清洗代码,会得到不同的标准化集。5.2 节会看到,缺少这份版本对应关系,复现就从第一天开始崩塌。第二,清洗脚本与原始数据一起入库:只发布清洗后的数据而不发布清洗规则,他人既无法复现也无法审计;只发布规则而不留原始数据,丢弃了多少分子永远说不清。第三,报告被丢弃者:一份合格的清洗报告至少包含输入记录数、各阶段丢弃或修改的记录数与原因分类(解析失败、超价、多片段、金属断开、互变折叠、重复折叠)、输出唯一分子数,以及规则与工具版本。被丢弃的分子不是噪音,而是数据质量的第一手证据。
2.6.6 与 InChI 的关系:跨库对齐的标准层
清洗流水线为建模准备分子;跨数据库对账还需要一个独立于任何建模工具的标识符。InChI 在生成时自带一层标准化(Heller et al., 2015):感知到的互变异构被归入“移动氢”处理,质子数差异计入质子化层。使用 InChIKey 判等,先要分清三个对象:完整盐、去掉反离子后的带电主体、中性的母体结构。完整乙酰水杨酸钠的 InChIKey 第一块是 JZLOKWGVGHYBKD,与游离酸的 BSYNRYMUTXBXSQ 并不相同——InChI 对金属连接的处理不等于替使用者删除反离子;图 2.6-1 那样的归并靠的是先做结构处理(断盐、中和)再生成标识符,不是标识符自带的魔法。去掉钠离子后的酸根与游离酸第一块相同,但完整标识符仍以 -M 与 -N 区分质子化状态。
反过来,第一块相同也不足以认定应合并。InChIKey 共 27 个字符,第一块的 14 个字符不含立体化学与同位素信息——乳酸两个对映体的第一块同为 JVTAAEKCZFNVCJ,完整标识符却在第二块分开;只按第一块合并,会与本节习题“分别测定的对映体不应合并”的要求直接冲突。互变覆盖也有边界:Standard InChI 把 2-吡啶酮与 2-羟基吡啶并入同一标识符,却不合并丙酮与其烯醇式——而这对恰能被 RDKit 的互变规范化映射到同一结构;移动氢处理是一组既定规则,不等于任意规则集下的完整互变归并。
所以 InChIKey 第一块的正确角色是候选匹配与粗分组:第一块相同者进入复核清单,最终是否合并要同时核对盐组分、立体化学、同位素、质子化状态与实验对象的预先定义,并保留原始结构供复核。2.2 节讨论过各家 canonical SMILES 互不相认;InChIKey 把“同一分子”压缩成十四个字符的连接层,库与库之间的对账才有了共同语言——但它是入口,不是判决。对 pH 敏感的对齐任务还有 FixedH 等非标准选项保留特定互变异构。结论与 2.6.2 一致:标准化永远在“一致”与“保真”之间取舍,关键是选定一套规则、写明版本、贯彻到底。下一节转向另一类“不唯一”——化学反应的表示。
习题 2.6-2
判断下列记录对清洗后应否合并为同一化合物,并说明理由。(a) 盐酸苯海拉明与苯海拉明游离碱,同一靶点同批测定。(b) 某前药与其活性代谢物,两者均有独立测定的活性记录。(c) (R)-构型与 (S)-构型的同一分子,分别测定。(d) 同一化合物按酮式与烯醇式登记的两条记录,同批次测定。
参考解答(a) 合并。断盐后两者为同一游离碱,反离子不进入生物活性。(b) 不合并。前药与代谢物是不同物种,活性含义不同(吸收、首过转化都不同),结构清洗无权把不同化合物折叠为一个。(c) 不合并。两者立体构型不同,InChIKey 立体层不同,药理活性可差数量级;合并的前提是连接层与立体层都一致。(d) 合并。互变异构规范化把全族折叠到同一代表构型,同批测定的两条记录指向同一平衡体系。若两记录来自 pH 差异很大的测定体系且活性相差悬殊,应先核查测定方案——那可能是两个实验条件下的不同平衡组成,须谨慎处理而非机械合并。
习题 2.6-3
推证:设标准化流水线是原始记录集合 R 到标识符集合的确定性函数 f(同一条记录永远得到同一标识符)。证明清洗后数据集的唯一标识符数不超过清洗前去除解析失败后的唯一记录数,并给出取等条件。
参考解答记 R′ 为通过解析的记录集合,f: R′ → I 为确定性映射。像集 f(R′) 的基数恒满足 |f(R′)| ≤ |R′|(函数的像不大于定义域;不同记录可映射到同一标识符,反之不能)。唯一标识符数即 |f(R′)|,唯一记录数即 |R′|,故前者不超过后者。取等当且仅当 f 在 R′ 上是单射:任何两条记录都不落入同一标准化等价类——无盐形式重复、无互变异构重复、无官能团双写法重复。但解释这个差值要划清边界:|R′| − |f(R′)| 只说明发生了多少次合并,不说明合并得对——把所有记录映成同一个标识符也满足不等式,且“最小化唯一值”到极致;两条独立测量映射到同一结构不是污染,两个本应区分的手性结构被错误合并也不是清洗成功。清洗报告应按原因分类记录合并事件(盐/互变/写法/真重复),区分原始记录数、有效结构数、标准化前后唯一结构数。两个值得纳入回归测试的工程性质:幂等性(对已标准化结构再跑一遍应不变)与写法无关性(等价 SMILES、不同原子编号应得同一结果)——它们不能保证化学正确,但能抓住流程的不稳定。
关键术语
- 化学数据清洗 (chemical data curation)
- 建模前对结构记录逐条审查、纠错与统一表示的工序,模型可靠性的前置条件。
- 结构标准化 (structure standardization)
- 用固定规则集把同一化合物的多种写法映射到唯一标准形式的确定性过程。
- 断盐 (salt stripping)
- 断开金属—配体离子连接并去除反离子、保留主体的清洗步骤;主体识别依赖明确的盐/溶剂规则。
- 最大片段 (largest fragment)
- “保留最大片段”类主片段策略的默认;“游离形式贡献活性”是建模约定,反离子大于主体时会选错对象。
- 互变异构体 (tautomer)
- 规则上仅差氢的位置与电子对迁移的异构体,不同于共振结构;是否实际快速互换取决于实验条件。
- 互变异构规范化 (tautomer canonicalization)
- 枚举互变族并按固定规则折叠到一个代表构型的操作;选的是一致而非正解。
- 官能团规范化 (functional group normalization)
- 把硝基、重氮等官能团的非标准价写法改写为标准形式的模式变换。
- 近重复 (near-duplicate)
- 原始形式不同、标准化后相同的记录;未清洗时会污染指纹阈值与数据划分。
- 数据泄漏 (data leakage)
- 测试集信息以重复或近重复形式进入训练,使评估指标虚高的现象。
- InChIKey (hashed InChI)
- InChI 的分层哈希标识;第一块(连接层)适合候选匹配与粗分组,最终合并须再核立体、同位素与质子化。
参考文献与延伸阅读
- Fourches D, Muratov E, Tropsha A. 2010. Trust, but verify: on the importance of chemical structure curation in cheminformatics and QSAR modeling research. Journal of Chemical Information and Modeling 50:1189–1204.
- Fourches D, Muratov E, Tropsha A. 2016. Trust, but verify II: a practical guide to chemogenomics data curation. Journal of Chemical Information and Modeling 56:1243–1252.
- Tropsha A, Gramatica P, Gombar VK. 2003. The importance of being earnest: validation is the absolute essential for successful application and interpretation of QSPR models. QSAR & Combinatorial Science 22:69–77.
- Sitzmann M, Ihlenfeldt W-D, Nicklaus MC. 2010. Tautomerism in large databases. Journal of Computer-Aided Molecular Design 24:521–551.
- Heller SR, McNaught A, Pletnev I, et al. 2015. InChI, the IUPAC International Chemical Identifier. Journal of Cheminformatics 7:23.
- Landrum G, et al. 2026. RDKit Documentation: Standardization(MolStandardize)与 Cookbook 相关章节. RDKit 2026.03 系列.