使用 synbo 包进行化学反应的贝叶斯优化。该技能提供 Python 脚本来设置反应空间,构建描述符,运行优化,下载推荐条件和上传结果。
CRITICAL:BO 优化前提条件
在执行任何贝叶斯优化(synbo)任务之前,您必须按顺序验证以下 5 个前提条件。请勿在所有标准都满足之前继续优化过程:
验证当前环境是否安装了 conda。如果没有,请确认用户安装 Miniconda(参见 reference/installation.md)。检查 synbo_env conda 环境是否存在。如果没有,请创建它;如果存在,请激活它。验证 synbo 包是否安装在 synbo_env 中。如果没有,请运行 pip install synbo
- 工作目录(project_wd)和项目名称(project_name)初始检查
读取技能目录中的 config.json 文件。如果找到 project_wd 和 project_name,请向用户显示项目名称(例如“找到现有项目:[项目名称]”)并使用它们。如果找不到:
停止并提示用户输入工作目录和项目名称。
验证和保存(CRITICAL):
在收到用户输入后:
验证路径:检查提供的工作目录是否实际存在于本地文件系统中。如果不存在,请告知用户“路径无效/不存在”并提示他们重新输入。
清理和保存:如果路径存在,请清理项目名称(用下划线替换空格和特殊字符)。然后,立即以以下格式更新 config.json 文件:{"project_wd": "xxx", "project_name": "xxx"}。使用此路径和清理后的项目名称来定义所有后续输出的 save_dir。
验证标准反应空间数据是否存在于 project_wd/rxn_space 目录中。如果找不到:
停止并提示用户:“project_wd/rxn_space 目录中缺少反应空间数据。请提供标准反应空间数据。”
验证条件描述符是否存在于 project_wd/descriptors 目录中。如果找不到:
停止并提示用户:“project_wd/descriptors 目录中缺少条件描述符。请提供标准条件描述符,或让我为您自动生成它们。”
验证优化设置文件(例如 optimization_settings.json)是否存在于 project_wd 目录中。如果找不到:
停止并提示用户:“优化指标未定义。请指定要优化的目标指标(例如,产量,ee),以及它们的优化方向(最大/最小),预期数值范围和相对权重(默认 1.0)。”
验证和保存(CRITICAL):
在收到用户优化目标后,格式化数据并立即将其保存为 project_wd 中的 optimization_settings.json 文件。JSON 文件必须严格遵循以下结构:
{
"reagent_types": ["reagent1", "reagent2", "condition1", "condition2"],
"opt_metrics": ["target1", "target2"],
"opt_direct_info": [
{
"opt_direct": "max",
"opt_range": [0, 100],
"metric_weight": 1.0
},
{
"opt_direct": "min",
"opt_range": [0, 100],
"metric_weight": 1.0
}
]
}
执行块:
您严格禁止在步骤 1 至 4 完全验证和解决之前执行任何初始化(initialize)、优化(optimize)或其他 synbo 任务。
反应空间
当用户需要提供反应空间数据时,他们可以通过以下两种方法提交:
直接输入:直接在聊天中提供相应分子的 SMILES 字符串。
文件上传:提供包含 SMILES 字符串的表格文件。
命名约定:
强烈建议用户为每个分子分配一个特定的名称。如果没有提供名称,您必须使用基于试剂类型的顺序格式自动分配名称:{reagent_type}-1,{reagent_type}-2 等。
数据存储规则:
无论用户的提交方法如何,所有反应空间数据都必须严格格式化并保存到 project_wd/rxn_space 目录中。每个试剂类型必须保存为一个名为 {reagent_type}.csv 的单独文件。CSV 文件必须包含 exactly 两个标题:SMILES(用于 SMILES 字符串)和 name(用于分子名称)。
条件描述符
请参见
reference/get_desc.md
初始化
请参见
reference/initialize.md
优化
请参见
reference/optimize.md