# 分子逆合成

分子逆合成模块 · 神农量子云平台 适用页面:左侧菜单 合成路径 → 分子逆合成 本教程配图均为真实任务操作截图


# 一、模块简介

分子逆合成规划(AiZynth / AiZynthFinder)是一款基于人工智能的分子逆合成分析工具。它利用强大的机器学习模型,从海量已知化学反应中学习,能为给定的目标分子自动、快速地规划出多条可行的合成路线,并检测分子的可合成性。

核心算法:蒙特卡洛树搜索(MCTS)+ 神经网络策略。MCTS 通过随机抽样探索解空间,平衡探索与利用;神经网络从庞大的反应模板库中筛选可能的反应,智能预测反应途径,并过滤掉不切实际的选项。

参考文献见页面内链接:AiZynthFinder: a fast, robust and flexible open-source software for retrosynthetic planning

适用场景:

  • 药物化学 / 有机合成项目开题前的分子可合成性评估
  • 构效关系(SAR)批次候选分子的合成可行性批量初筛
  • 获得带评分、带原料来源的完整合成路线树

# 二、使用步骤

# 步骤 1:准备参考分子

在"准备筛选数据"区域填写任务信息与分子:

准备参考分子

  • 任务名称(可选):自定义任务名,方便在历史中识别(如"测试任务_10");
  • 输入参考 SMILES,三种方式任选:
    • 输入数据(默认):在"化合物分子式"文本框直接粘贴,每行一个 SMILES;
    • 上传文件:上传 CSV / SMI 文本文件;
    • 数据中心:从平台数据中心选择已保存的分子集合;
  • 粘贴后右上角显示"当前行数:N / 2000",据此确认条数;
  • 单次输入 ≤ 2000 条(超出自动截断为前 2000 行);
  • SMILES 支持手性(@/@@)、顺反(/ \)等标准语法;建议提交前用 RDKit 等工具自检合法性。

示例输入(复制到文本框即可):

C[N@@H+](CC(=O)NC(N)=O)[C@H]1CCCN(c2ccccc2)C1

# 步骤 2:配置路线过滤(可选)

打开"路线过滤"开关后,系统按以下指标逐条判定每条合成路线(全部指标同时达标 = 合格路线;分子存在 ≥1 条合格路线即"可用"),并自动输出可用/不可用分子清单:

路线过滤参数

参数 默认 说明
路线分数下限 0.7 0~1(含端点)。每条合成路线的质量分数 ≥ 此值才算合格
合成步数上限 6 1~20。路线全部反应步数 ≤ 此值才算合格
原料可购比例 0 0~1(含端点)。可购起始原料占比 ≥ 此值才算合格;0 = 不按该指标过滤(默认),1 = 所有原料必须可购
保留路线图片数 2 0~10。对合格路线按得分取前 N 条渲染路线图(0 = 不出图)

点击"预览将生成的 config.cfg"可查看将要下发的配置内容。

💡 阈值权衡建议:

  • 0.7 / 6(默认):对路线质量要求较高,适合直接对接自动实验排队;
  • 0.65 / 8:召回优先,适合早期探索性初筛,实测能明显救回"卡在边界"的分子;
  • 结果支持零成本重筛:修改阈值后本地重跑即可,无需重新付费计算(见 3.3 节)。

# 步骤 3:选择支付渠道并提交

支付与提交

  1. 选择支付渠道:现金余额 或 主账户限额(充值卡余额已分配至子账号的账号不适用);
  2. 点击 提交计算。页面参考:预计费用 0.55 元/100 分子。

⚠️ 实际计费口径:任务费用 = 占用机时(核·小时)× 0.10 元/核时。此项为估算:8 分子 / 7:24 / 64 核 ≈ 0.79 元;30 分子 / 6:36 ≈ 0.70 元。小规模任务的固定机时开销占大头,批量(数百分子以上)单位成本更划算。

# 步骤 4:在运行历史中跟踪任务

提交后页面下方"运行历史"实时更新:

运行历史

列 含义
任务 ID 唯一编号
任务名称 / 功能模块 自定义名 / 分子逆合成
运行时间 / 任务核时(小时) 已运行时长 / 已占用 CPU 核·小时
任务费用 实时累计
当前状态 提交中 → 已提交 → 计算中 → 已完成 / 已失败
操作 下载 / 查看 / 详情(视状态显示)
  • 典型耗时约 5~9 分钟(与分子复杂度相关);
  • 计算中可"取消任务";已失败可点"失败原因"查看报错。

# 三、在任务历史中查看结果:合成路线与路线分数(重点)

任务完成后无需下载,直接在线查看每个分子的合成路线与路线分数:

# 3.1 结果总览列表

在运行历史中点击已完成行的"查看",进入结果总览:

结果总览:分子结构、路径数与路线最佳分数

每一行展示一个目标分子:

  • 分子式:输入的目标 SMILES;
  • 分子结构图:目标的 2D 结构图;
  • 路径数:搜索并发布的合成路线条数(如 10、9、5);
  • 路线最佳分数:该分子所有路线中最佳路线的质量分数(如 0.677 / 0.766 / 0.839,越大越好);
  • 查看路径:链接,打开该分子的合成路线树状图。

# 3.2 合成路线树状图

点击某行 "查看路径" 即可看树状图:

合成路线树状图

  • 顶部下拉框"路线 2 (得分:0.738)"可切换不同的合成路线,旁边橙色 Score: 0.738 徽章实时显示当前路线的分数;
  • 绿色节点(左端 1 号)表示目标产物(根节点);红色节点 为可购起始原料/终止节点;绿色中间节点 为合成过程中的中间体(编号 1、2、3…);
  • 弧线表示反应方向:从原料向产物逐步构建;
  • 工具栏支持 放大 / 缩小 / 重置 / 深色 切换。

# 3.3 查看节点分子结构

左键单击任意"圆形节点",弹出该中间体的结构窗口:

点击节点查看分子结构

  • 弹窗标题"节点 4 结构",右上角可"复制 SMILES",方便直接取用中间体信息;
  • 按页面顶部提示:"点击节点查看分子结构,在节点上鼠标悬停查看分子 SMILES";
  • 通过切换不同分数的路线,可比较多条可行合成方案,挑选成本/步数满意的路线。

🔎 在线查看与本地文件的内容一致:下载 result.tar 后,双击 ViewSynthPath.html 并导入 SynthRoutes/sr_mol_X.json,同样能打开交互树图(详见 3.5 节)。


# 四、下载与结果解读

# 4.1 结果包结构

点击运行历史中的"下载",解压 result.tar 得到 output/:

output/
├── report/                        ← 分析报告(先看这两份)
│   ├── Report.md                  ← Markdown 版,便于复制引用
│   └── Report.html                ← 自包含网页版,双击即可浏览
├── filter_detail/                 ← 机器可读判定明细
│   ├── filter_summary.json        ← 生效阈值 + 分子/路线统计
│   └── filter_result.json         ← 每分子每路线的分数/步数/可购比例与判定
├── smi/
│   ├── available_molecules.smi    ← 可用分子 SMILES(每行一条)
│   └── unavailable_molecules.smi  ← 不可用分子 SMILES(每行一条)
├── available_molecules.csv        ← 可用分子清单(index、SMILES、合格路线数、最佳分数、步数、可购比例)
├── unavailable_molecules.csv      ← 不可用分子清单(index、SMILES、总路线数、失败原因)
├── synth_routes_summary.csv/.json ← 各分子搜索统计(路线数、最高分、耗时、原料清单)
├── SynthRoutes/
│   ├── sr_mol_X.json              ← 分子 X 的合成路线数据(在线"查看"读取的数据源)
│   └── sr_mol_X/route_00N.png     ← 合成路线图(按得分取前 N 条)
├── ViewSynthPath.html             ← 合成路线树状图交互查看器(本地版)
└── README.txt                     ← 结果文件详细说明 + 本地重筛指引
  • 未开启路线过滤时无 report/ filter_detail/ smi/ 与可用性清单,仅有搜索统计与路线数据;
  • 大批量任务(>10 分子):分析报告自动进入统计模式——正文只含分布直方图(可用率/分数段/步数/可购比例)、搜索开销、重点分子精选与"最值得挽救"候选;完整清单在 Report.html 中折叠(点击 <details> 标题展开)或在 MD 中引用 CSV,避免数千行刷屏。

# 4.2 分析报告(Report.md / Report.html)阅读顺序

  1. 任务概览 —— 分子总数、可用/不可用、路线总数、合格路线数、生效阈值;
  2. 可用分子清单(≤10 分子任务)或 结果统计与分布 + 重点分子(>10 分子任务);
  3. 不可用分子的失败原因与差距提示 —— 例如"最佳路线分数 0.677,距 0.7 还差 0.023",据此判断是放宽阈值还是改分子结构;
  4. 最值得挽救的不可用分子(大任务)—— 按最小差距排序;
  5. 文件说明 + 本地重筛指引。

# 4.3 本地零成本重筛(可选)

# 1. 新建/编辑 config.cfg,例如放宽阈值:
#    filter_enable=true
#    filter_min_route_score=0.65
#    filter_max_steps=8
#    filter_min_stock_ratio=0
#    max_route_images=2
# 2. 重新生成判定与清单(origin_output.json 需从任务目录获取):
python filter_candidates.py -i origin_output.json -o output -c config.cfg
# 3. 重新发布路线与图片(可选):
python trans_output_json.py -i origin_output.json -o output
# 4. 重新生成分析报告:
python gen_report.py -o output -c config.cfg

# 4.4 本地查看合成路线树(与网页版等价)

  1. 双击打开 ViewSynthPath.html;
  2. 点击"上传 JSON 文件",选择 SynthRoutes/sr_mol_序号.json;
  3. 下拉菜单切换不同得分的路线,分数越高路线越优;
  4. 单击树图圆形节点显示对应分子结构。

# 五、常见问题(FAQ)

Q1:SMILES 输入需要注意什么? 每行一条;≤2000 条;非法行会导致该分子被跳过(整体任务不受影响);复杂分子(稠杂环、多手性中心)建议先自检。

Q2:为什么会显示"不可用"? 三类卡点:① 路线分数低于下限;② 步数超上限;③ 原料可购比例不足(默认 0 = 不启用)。报告的"差距提示"给出定量差值,用于决定"放宽阈值"还是"调整分子结构"。

Q3:分数 / 可购比例分别是什么?

  • 路线分数:模型对路线质量/成功可能性的评估,0~1,越高越好;
  • 可购比例:起始原料中可购库存(如 ZINC 商品目录)的占比。

Q4:任务费用如何计算? 机时(核·小时)× 0.10 元;任务在 64 核节点运行。小任务固定开销占大头(约 8 分钟 ≈ 0.8 元)。大批量单位成本更优。

Q5:两次提交同样的分子,结果为何略有不同? 蒙特卡洛树搜索存在随机性;分子级可用性结论稳定,个别分数/路线数量有小幅波动(±2 条路线 / ±0.03 分,正常)。

Q6:在线"查看"和下载后的"查看路径"数据一样吗? 一致。在线查看读取的就是结果包内 synth_routes_summary.json 与 SynthRoutes/sr_mol_X.json。

Q7:一次最多测多少分子? 单任务 ≤ 2000 条(超出自动截断为前 2000 行),更大规模请分批提交;大批量任务建议直接看分析报告的统计模式摘要页。


配套模块版本:dev(2026-10-22):分析报告自动生成 + 输出目录整份(report/ filter_detail/ smi/)+ 大规模统计模式。