设想你走进一家高级定制甜品店。主厨唐师傅从不凭空发明甜点,而是先听你说三件事:第一,今晚主菜是烤鸭,甜点最好带果香解腻——这是“靶点结合”,要和目标环境完美搭配;第二,你很喜欢他家的经典提拉米苏,希望新甜点保留那层咖啡香气——这是“结构相似性”,参考已有的有效配方;第三,你最近控糖又是过敏体质,要求低糖无坚果——这是“ADMET 引导”,安全、好吸收、不闯祸。唐师傅把三张需求单写进订单,在厨房里精心调配、反复试味,最终端出的甜点,既好吃又健康,还带着经典款的灵魂。 这就是条件生成在药物分子设计中的工作方式:AI 模型是唐师傅,靶点结合、结构相似性、ADMET 就是顾客的三张需求单。本文带你进后厨参观——订单如何编码、配方如何统筹、品鉴师如何把关,让你从原理到实践,完整看懂 AI 制药里的这间“定制甜品店”。
掌握条件生成的核心理念与实操方法,你将拥有 AI 制药分子设计岗位上最核心的生产力:让生成模型不仅“会生成”,更“生成得对”。
可视化演示
展示条件生成模型在靶点结合、结构相似性与ADMET属性引导下生成候选分子的完整流程,多目标帕累托优化与样本筛选策略。切换模式查看不同维度,拖动滑块调节约束强度。
本节配有交互动效(进入视口后自动加载,约 3KB)。
条件分子生成流程 条件编码将靶点结合与ADMET约束嵌入隐空间 解码器在条件引导下生成满足约束的分子结构 p(mol|c) = decode(encode(c) + z) 条件生成实现多属性定向分子设计
条件生成概述
传统甜品店的抽屉里躺着流水线生产的奶油泡芙,味道千篇一律,谁来买都是同一款——这就是无条件生成:模型只学习数据的整体分布,从里面随机抽取样本。而唐师傅的定制甜点,每一份都根据订单单调整奶油比例、水果搭配甚至糖度——这就是条件生成:在生成时额外输入约束信息,让产出的分子“按需定制”。在药物设计里,我们从来不想要“随机的分子”,而想要“刚刚好能治这个病”的分子。
分子生成模型的底子,通常是变分自编码器、生成对抗网络或扩散模型,它们先把分子表示为字符串或分子图,再学习如何从噪声或潜变量中重建出合理结构。条件生成在这些框架上增加了一条输入通道——条件向量 C,把靶点、相似性锚点、ADMET 属性等信息“灌进”模型,引导解码器在正确的化学空间中探索。
唐师傅拿到订单本的那一刻,就知道今天的重心是果香还是低糖。条件生成也是一样——条件越清晰,模型越不容易跑偏。
- 分子 M模型要生成的候选分子,如同甜品店的半成品:一块蛋糕胚、一团奶油。
- 条件 C靶点结合、结构相似性、ADMET 属性等约束的集合,对应顾客的三张需求单。
- 条件概率 P(M|C)在条件 C 下生成分子 M 的概率,条件越明确,概率分布越集中,生成就越“有的放矢”。
靶点结合条件
唐师傅做甜点前,先看今晚的主菜:烤鸭油腻,配山楂陈皮解腻;海鲜清爽,配柠檬奶冻提鲜。药物的“主菜”就是靶点蛋白,而靶点上的结合口袋,就是这顿“化学宴”的味型基调。口袋的深浅、疏水与带电区域的分布,决定了什么样的分子才坐得进去、抓得牢。
这种“分子与口袋互补”的关系,对应结构生物学里最经典的锁钥模型:靶点口袋是锁芯,候选分子是钥匙,只有形状和电荷分布都对得上,才能插进去转动。条件生成要做的,就是把锁芯的“齿形”编码成条件向量,让生成的分子天生就是那把钥匙。
条件生成中,对接打分函数常以 ΔG 作为代理指标,把“主菜味型”写进订单,引导生成器往结合更牢的方向探索。
- 焓变 ΔH分子与口袋之间的氢键、疏水作用产生的净能量变化,像食材与酱汁之间的“化学默契”,负值越大越亲密。
- 熵项 TΔS结合后体系自由度下降导致的熵损失,温度越高、分子越刚性,这项代价越大。
- 结合自由能 ΔG两者相减得到最终结合倾向,ΔG < 0 表示结合能自发发生,越负越好。
结构相似性
顾客说“来一份像提拉米苏的”,指的可不是要一份一模一样的复刻,而是保留马斯卡彭的绵密和咖啡的香气。药物设计同理:新分子如果和已知活性分子完全不沾边,活性就没了根据;但如果一模一样,那就不是“新药”而是“仿制品”。结构相似性条件,就是在化学空间里画一条温柔的绳子——你可以在附近探索,但不能跑丢。
这条绳子具体怎么系?先用 SMILES 或 SELFIES 字符串、摩根指纹等方式把分子表示成向量或集合,再用相似性度量计算两个分子的接近程度。最常用的是 Tanimoto 系数:把两个分子各自拆成所有圆形子结构,统计共有的子结构占全部子结构的比例。生成时把锚点分子的指纹作为条件输入,并在损失函数中加一个相似性正则项,防止模型进入“化学外太空”。
提拉米苏的灵魂是咖啡与马斯卡彭,但果酱、装饰、造型都能换。结构相似性要的就是这种“灵魂保留、形态翻新”。
- 指纹集 A、B每个分子被拆成一组圆形子结构标记,集合同样表达分子“身份”。
- 交集 |A∩B|两分子共有的子结构数量,好比两个甜点共用的核心配方素材。
- 并集 |A∪B|两分子全部子结构的总和,覆盖了两份配方所有素材的总量。
- 比值 T交集占并集的比例,越接近 1 越像。实际项目中常把 T 约束在一个区间,比如 0.4–0.7,既保住活性又留出创新空间。
ADMET 引导
就算甜点口味惊艳、造型复古,如果含过敏原、热量爆表,顾客照样会退单。药物也一样:一个候选分子就算和靶点结合得再紧,如果吸收差、代谢快、带毒性,就永远进不了临床。ADMET 就是药物的“健康资质”——吸收、分布、代谢、排泄与毒性这五个维度的总称,是药物能否从试管走向人体的生死线。
传统上 ADMET 靠动物实验和体外实验测定,又慢又贵。AI 时代的做法,是训练 ADMET 预测模型作为“健康检测仪”,把预测结果作为条件向量或奖励信号注入生成过程:生成时就在源头过滤掉“不健康”的分子。其中最经典的粗筛闸门,是 Lipinski 五规则——用分子量、脂水分配系数、氢键供体与受体这四个指标快速判断口服类药性。
唐师傅的食材表上永远标着“低糖、无坚果”,四行规则就是他的食材红线。生成模型的红线,就是 ADMET 条件。
- logP(脂水分配系数)衡量分子在油水两相中的分配,≤5 保证它不至于太油而溶不进体液。
- MW(分子量)≤500 是长期经验得出的口服吸收门槛。
- HBD(氢键供体)≤5 限制分子在外围与溶剂分子过度纠缠。
- HBA(氢键受体)≤10 与供体数量共同决定分子穿过生物膜的能力。
条件编码技术
顾客说“果香解腻”是口语,唐师傅要把它翻译成可执行的处方:山楂泥 30 克、陈皮 5 克、糖减半。AI 模型也一样,靶点名、锚点分子、性质目标这些“口语化需求”,必须翻译成数值向量,模型才读得懂。这个翻译过程,就是条件编码。
条件变分自编码器(CVAE)是条件编码的标准框架。普通 VAE 把分子压成潜变量再重建;CVAE 则把条件向量和分子拼接在一起,编码器学到的是“在这个条件下分子的潜变量”,解码器也拿着条件来重建分子。更高级的做法是解耦表征学习:让条件向量的不同维度各管一摊,比如前几维管结合、中间几维管相似性、最后几维管 ADMET,避免需求互相纠缠。
技术卡写清楚,唐师傅一进厨房就知道先打奶油还是先熬果酱。条件编码技术,决定了模型对需求的理解精度。
- 重建项把条件 c 和潜变量 z 送进解码器,看还原出的分子 x 像不像原样,这是“照方做菜”的还原度。
- KL 散度项约束潜变量 z 的分布不偏离条件先验 p(z|c),像要求所有配方的筋道程度都符合“订单指定风格”。
- 总损失两项相加。β 是平衡旋钮,β 太小则条件形同虚设,β 太大则生成千篇一律。
多目标平衡
口味要配主菜、外形要像提拉米苏、食材要健康,三位“老板”同时验收,只顾一个必然翻车。做甜点是统筹学,做药物分子更是。强结合常常伴随高脂溶性,而高 logP 又违反 ADMET 规则;过度追求相似性又会牺牲新颖性——三个目标天然冲突。
最简单的统筹办法是加权求和:把三个目标的损失乘上权重再加起来,模型去最小化这个总损失。权重就是优先级——抗肿瘤项目把结合权重调大,中枢神经药物把血脑屏障通透相关的 ADMET 权重调大。但线性加权有局限:它只能表达“凸”形状的帕累托前沿,对凹前沿会漏掉中间最优解。更精细的方法是做帕累托优化,直接寻找“任何一个目标都不弱于别人”的解集合。
唐师傅心里有本账:主菜、经典款、顾客体质,三笔账一起算。多目标平衡要的,就是这种“谁都不得罪”的综合最优。
- 单项损失L_bind、L_sim、L_admet 分别度量分子在三个目标上的表现,损失越大越不达标。
- 权重 λ三个正数,和为 1,体现项目优先级,像唐师傅在订单上打的星号数量。
- 加权和把三个损失线形组合后求最小,得到一个综合代价最小的分子,但不保证单项目标最优。
样本筛选方法
唐师傅每天试验 100 份甜点,总不能全端给顾客。品鉴师先试吃、摆盘、评比,再淘汰雷同款,最后只留下 3 份放进当日菜单。生成模型动辄输出上万个候选分子,同样需要一个筛选漏斗:打分排序、多样性挑选、人工复核,层层收紧。
虚拟筛选是这条流水线的核心。先用分子对接软件给候选分子和靶点算结合打分,再用 ADMET 模型算安全分数,最后按加权总分排序。但只看分数还不够——如果前 50 名分子都长得差不多,等于只探索了一个化学角落。于是还要做多样性挑选:用聚类或最大多样性子集算法,把结构类似的分子聚成一簇,每簇只留代表,保证进入实验的候选覆盖足够广的化学空间。
品鉴师的三张打分表,最后合成顾客眼前的一页菜单。样本筛选,就是决定谁能上菜单的最后关口。
- 对接分数 S_dock模拟分子与靶点的结合强弱,数值越低代表结合越牢。
- 相似性分数 S_sim与已知活性分子的接近程度,保住药效团的“安全底牌”。
- ADMET 分数 S_admet综合吸收、代谢、毒性等预测,数值越高代表越“健康”。
- 综合评分 S三个分数加权求和,排序后取 Top N,再用多样性套索进一步挑出代表。
应用与挑战
唐师傅的私房菜馆要开成连锁,得解决三件事:配方标准化——每个分店都能复现同一口味;品控一致性——不会因为换了师傅就走味;供应效率——翻台率要撑得起成本。AI 制药把条件生成搬进真实流水线,同样要面对三座大山。
实际工作流是一个“生成—筛选—验证”闭环:从已知抑制剂出发,用靶点结合和结构相似性双条件生成新骨架,ADMET 约束把关安全性,再经合成与活性实验验证,把结果反馈回来迭代模型。挑战也清晰:第一,靶点—分子配对数据稀缺,冷启动很难;第二,生成模型是黑盒,化学家不敢轻信,需要可解释的条件归因;第三,模拟打分与真实实验误差不小,需要用主动学习不断纠偏。条件生成不是终点,而是整个发现流程的起点。
私房菜馆能开成连锁,靠的不是一道招牌甜点,而是把“订单—调配—品鉴—复核”整条流程变成可复制的工程体系。条件生成在 AI 制药中真正的价值,也在这套体系。
- P(结合)分子与靶点结合并产生预期功能调节的概率,对应甜点口味与主菜搭配。
- P(可达)分子存在可行合成路线的概率,对应“这个配方厨房里真能做得出来”。
- P(安全)通过 ADMET 与毒理关卡的概率,对应食材真正健康无过敏原。
- 乘积结构三者相乘,任一环节失败整体归零,凸显漏斗筛选的必要性。
AI 应用场景
先导化合物快速优化
阶段:Hit-to-Lead,先导化合物发现与优化
解决的问题:传统先导优化靠化学家经验试错,一个靶点改一轮分子往往要数月。AI 条件生成以已知活性分子为相似性锚点,把靶点结合打分与 ADMET 预测同时作为条件,批量产出数百个候选,把试错周期压缩到几周。
具体案例:某 AI 制药公司对抗纤维化靶点,用条件变分自编码器加多目标打分,两周生成 3200 个候选分子。虚拟筛选后取 12 个进湿实验,其中 3 个活性达到同类已知药物十倍以上,且 hERG 毒性预测全部通过。
难成药靶点的全新骨架发现
阶段:Hit 发现(命中物发现)
解决的问题:传统高通量筛选对“无口袋”难成药靶点命中率极低,而条件生成可以不依赖既有化学空间,直接从靶点表位特征和功能要求出发探索全新骨架。
具体案例:某结构生物团队针对 BRD4 蛋白这类结合界面平坦的靶点,把蛋白表面关键残基编码为条件,用条件生成模型设计了一类新型小分子,绕过传统口袋结合思路,筛出三个全新骨架 hit,后续细胞实验验证了活性。
Python 演示
import random # 片段库:模拟分子生成器可选的"食材"FRAGMENTS = { 'OH': {'mw': 17, 'logp': -0.5, 'hbd': 1, 'hba': 1}, 'CH3': {'mw': 15, 'logp': 0.5, 'hbd': 0, 'hba': 0}, 'NH2': {'mw': 16, 'logp': -0.8, 'hbd': 1, 'hba': 1}, 'F': {'mw': 19, 'logp': 0.4, 'hbd': 0, 'hba': 0}, 'COOH': {'mw': 45, 'logp': -0.3, 'hbd': 1, 'hba': 2}, 'CF3': {'mw': 69, 'logp': 1.2, 'hbd': 0, 'hba': 0},} TARGET_FP = {'O', 'N', 'F'} # 模拟靶点偏好的药效团TEMPLATE_FP = {'C', 'O', 'N'} # 已知活性分子的骨架指纹 def tanimoto(fp_a, fp_b): inter = len(fp_a & fp_b) union = len(fp_a | fp_b) return inter / union if union else 0.0 def lipinski_ok(mw, logp, hbd, hba): return mw <= 500 and logp <= 5 and hbd <= 5 and hba <= 10 def generate_candidates(n=60, seed=42): random.seed(seed) mols = [] for _ in range(n): frags = random.sample(list(FRAGMENTS), k=random.randint(1, 3)) mw = 16 + sum(FRAGMENTS[f]['mw'] for f in frags) logp = 0.0 + sum(FRAGMENTS[f]['logp'] for f in frags) hbd = sum(FRAGMENTS[f]['hbd'] for f in frags) hba = sum(FRAGMENTS[f]['hba'] for f in frags) fp = {'C'} | set(frags) mols.append({'id': len(mols), 'frags': frags, 'fp': fp, 'mw': mw, 'logp': logp, 'hbd': hbd, 'hba': hba}) return mols def score(mol, w_bind=0.4, w_sim=0.3, w_admet=0.3): bind = tanimoto(mol['fp'], TARGET_FP) sim = tanimoto(mol['fp'], TEMPLATE_FP) admet = 1.0 if lipinski_ok(mol['mw'], mol['logp'], mol['hbd'], mol['hba']) else 0.2 return w_bind * bind + w_sim * sim + w_admet * admet def main(): mols = generate_candidates() ranked = sorted(mols, key=score, reverse=True) print('=== 条件生成 + 多目标筛选 Top 5 ===') for m in ranked[:5]: print('#%d 片段=%s MW=%.0f logP=%.1f 得分=%.3f' % ( m['id'], '+'.join(m['frags']), m['mw'], m['logp'], score(m))) passed = sum(1 for m in mols if lipinski_ok(m['mw'], m['logp'], m['hbd'], m['hba'])) print('通过 Lipinski 五规则: %d / %d' % (passed, len(mols))) print('样本多样性抽查:', len(set(tuple(m['fp']) for m in mols)), '种不同指纹') if __name__ == '__main__': main()
def tanimoto(fp_a, fp_b):实现结构相似性打分:交集比并集,数值越高分子越接近。def lipinski_ok(mw, logp, hbd, hba):ADMET 粗筛闸门,四个不等式一起判断“食材是否健康”。frags = random.sample(list(FRAGMENTS), k=random.randint(1, 3))模拟生成器从“食材库”随机挑选片段搭分子。fp = {'C'} | set(frags)组装分子指纹集,作为后续条件匹配的“身份指纹”。def score(mol, w_bind=0.4, w_sim=0.3, w_admet=0.3):多目标加权评分函数,三个权重体现项目优先级。ranked = sorted(mols, key=score, reverse=True)打分排序,漏斗筛选的第一步。
常见误区
误区听说生成模型会自动产生分子,以为 AI 是凭空创造、不需要任何输入也能设计药物。只要模型够大,扔进去就能出来好药。
正解条件生成的核心恰恰是“不给条件就做不好”——就像唐师傅没有订单单只会做流水线泡芙。靶点结合、结构相似性、ADMET 就是客户的三个要求,缺一个生成的分子大概率是无效噪音。模型学的是条件分布 P(M|C),C 的质量直接决定 M 的价值。
为何常见:早期无条件 VAE 演示的随机采样画面太有迷惑性,初学者看到模型能“画”出分子,就忽略了它背后其实是大量数据分布的学习。
误区认为只要把 ADMET 预测分数刷到最高,或者把结合亲和力做到最强,这个分子就是好药,其他都不用管。
正解ADMET 好只是“食材健康”,结合强只是“口味搭主菜”,两者都只是必要条件而非充分条件。真实项目里必须做多目标平衡,否则会生成“结合极强但完全有毒”或“极其安全但毫无活性”的废品。
为何常见:单目标优化的代码最简单、指标最容易汇报,初学者容易陷入“刷单榜”的思维,忽视药物发现本质上是多约束决策。
误区既然要保留经典分子的活性,那当然和已知活性分子越像越好,最好 Tanimoto 接近 1。
正解相似性太高就退化成“复制粘贴”,失去新药专利性和新颖性;真实做法是把相似度约束在合理区间(比如 Tanimoto 0.4–0.7),就像保留提拉米苏的灵魂但换掉外层装饰。它是探索的锚点,不是粘贴的模板。
为何常见:Tanimoto 的直觉是“越像越相似”,初学者顺水推舟认为越像越好,忽略了药物化学中“保持药效团同时扩展化学空间”的双重要求。
误区调好一次多目标权重(比如 0.4/0.3/0.3),这个配置就能用在所有靶点、所有疾病项目上。
正解不同场景对三个目标的偏好差异很大:中枢神经药物要求血脑屏障通透,ADMET 权重必须抬高;抗肿瘤项目追求靶点选择性,结合权重优先。权重本身是和业务场景绑定的超参数,需要按项目反复调。
为何常见:加权求和的形式看起来“公平通用”,初学者把它当成固定公式,忽略了权重背后的业务语义。
误区模型生成了 10000 个看起来化学式合理的分子,以为这些全是有效候选,可以全部送去做实验。
正解生成结果是“初筛菜单”而不是“成品菜”。必须经过虚拟筛选打分、聚类多样性挑选、合成可行性评估、化学家人工复核,最终只有极少数分子能进湿实验。模型没有做过实验,它画的分子可能根本合成不出来。
为何常见:生成模型输出的 SMILES 字符串“看起来很有道理”,加上可视化渲染漂亮,让初学者天然产生信任,忽略了模拟与现实的差距。
面试题
Q1. 条件生成与传统无条件生成的主要区别是什么?
- A.生成时输入靶点与性质约束← 正确答案
- B.生成过程不需要训练数据
- C.完全随机生成不学分布
- D.生成的分子更小更简单
答案:A。条件生成的核心就是在生成时额外输入约束信息 C,把无条件分布 P(M) 变成条件分布 P(M|C),就像唐师傅拿到订单单再开工。无条件生成同样需要训练数据、也学习数据分布,只是没有额外约束引导。
Q2. “锁钥模型”在靶点结合条件中指的是什么?
- A.药物分子把靶点蛋白锁死
- B.药物与靶点序列完全对齐
- C.配体与口袋形状互补匹配← 正确答案
- D.分子越长越容易嵌入靶点
答案:C。锁钥模型的核心是“形状互补”——靶点口袋是锁芯,配体是钥匙,只有几何与化学性质匹配才能结合。A 混淆了“结合”与“锁死”两个概念,B 错在把氨基酸序列对齐当成结合方式,D 没有依据。
Q3. 两个分子的摩根指纹交集大小为 3、并集大小为 10,Tanimoto 相似度是多少?
- A.等于 0.3← 正确答案
- B.等于 0.7
- C.等于 13
- D.等于 3.3
答案:A。Tanimoto = |A∩B| / |A∪B| = 3 / 10 = 0.3。B 是 1 减 0.3 的混淆,C 是把交集并集相加,D 是直接相除的误算。相似度度量的是共同子结构占全体子结构的比例。
Q4. 根据 Lipinski 五规则,关于 logP 的限制要求是?
- A.logP 必须大于 5
- B.logP 不得超过 5← 正确答案
- C.logP 必须等于 5
- D.logP 与分子量无关
答案:B。Lipinski 五规则规定 logP ≤ 5,防止分子脂溶性过高导致水溶性差、难以口服吸收。A 方向完全反了,C 把上限当成了精确值,D 忽略了规则体系内部各指标的协同关系。
Q5. 条件变分自编码器(CVAE)与普通 VAE 的核心区别是什么?
- A.CVAE 在编解码时引入条件变量← 正确答案
- B.CVAE 使用更大的神经网络
- C.CVAE 不需要编码器只需解码
- D.CVAE 只在解码时加入噪声
答案:A。CVAE 的关键是在编码和解码两个阶段都引入条件变量 c,编码器学到 q(z|x,c),解码器用 p(x|z,c) 重建。B 是无关特征,C 错误——CVAE 依然需要编码器,D 混淆了条件注入与噪声注入。
Q6. 关于帕累托前沿,以下说法正确的是?
- A.前沿点在某个目标上不弱于其他解← 正确答案
- B.前沿点所有目标都是全局最优解
- C.加权求和能找到全部帕累托点
- D.帕累托优化不需处理目标冲突
答案:A。帕累托前沿上的点互不支配——每个点至少在某个目标上不弱于其他点,但不可能是所有目标同时最优,否则其它点就不存在了。C 错误,线性加权只能表达凸前沿;D 错误,帕累托优化正是为处理目标冲突而生的。
Q7. 多目标加权求和 L=λ₁L₁+λ₂L₂+λ₃L₃ 的主要局限是什么?
- A.线性组合无法表达凹形状前沿← 正确答案
- B.权重数值越大模型训练越慢
- C.所有权重必须同时为零才可行
- D.权重参数无法参与梯度下降
答案:A。加权求和只能得到凸帕累托前沿上的解,对凹形状的前沿会漏掉中间区域的最优解,就像只沿三条直线找中点、找不到曲线上的甜点。B 没有依据,C 荒谬,D 错误——权重完全可以参与梯度优化。
Q8. 虚拟筛选中常用的打分信息来源包括哪些?
- A.分子对接的亲和力打分← 正确答案
- B.相似性度量的结构打分← 正确答案
- C.ADMET 模型的性质预测← 正确答案
- D.化学家依据直觉的经验分
答案:ABC。虚拟筛选是自动化漏斗,信息来源通常是可计算的指标:对接打分评估结合强弱,相似性打分评估与已知活性分子的接近度,ADMET 模型评估安全与药代。化学家直觉属于人工复核环节,不算是自动化的打分信息来源。
Q9. 为兼顾新药生成与 ADMET 约束,正确的做法有哪些?
- A.将 ADMET 预测作为条件向量输入← 正确答案
- B.生成后只依据对接亲和力排序
- C.在总损失函数中加 ADMET 项← 正确答案
- D.完全放弃结构相似性约束项
答案:AC。把 ADMET 预测作为条件输入,或在损失函数中加入 ADMET 正则项,都是把健康约束“前置”到生成过程的有效手段。只按亲和力排序会忽视安全属性,完全放弃相似性约束则会让生成方向失去锚点、漫无边际。
Q10. 条件生成中“结构相似性”条件的作用是什么?
- A.保留已知活性分子药效团← 正确答案
- B.保证分子合成路线完全相同
- C.约束生成方向避免无边际← 正确答案
- D.完全替代 ADMET 毒理实验
答案:AC。结构相似性条件的双重作用:一是保留已知活性分子的药效团,传承“经典款灵魂”;二是在化学空间里约束方向,避免模型乱跑。它并不要求合成路线相同,更不能替代 ADMET 实验——那是另一个维度的约束。