跳转到正文

SELFIES

Mario Krenn, Alston Lo, Robert Pollice and many other contributors

SELFIES 是一种分子字符串表示形式和 Python 库,可用于转换 SMILES、准备 token 编码,并在可配置的语义约束下生成分子图。

条目更新 ·

概览

SELFIES(Self-Referencing Embedded Strings,自引用嵌入字符串)将分子图表示为符号序列。其 Python 库旨在支持分子机器学习,尤其是需要语法和语义上有效的图表示的生成式工作流。该库提供表示和转换函数,而非独立的、经过训练的生成模型;仓库还链接了一个变分自编码器示例。

主要转换工作流通过 selfies.encoder 接收 SMILES 字符串并生成 SELFIES 字符串。selfies.decoder 将 SELFIES 转换回 SMILES。辅助函数可用于统计和拆分符号、从一组 SELFIES 字符串中提取字母表,以及将字符串转换为整数标签或 one-hot 编码并执行反向转换。文档中所述的填充符号 [nop] 会在解码时被跳过,因此可用于填充序列而不会添加分子内容。

语义约束决定符号的解释方式。用户可以更改这些约束,包括选择超价配置。README 演示了同一编码输入在不同约束设置下可解码为不同结构。该库还提供转换归因功能,可在编码和解码过程中将输出 token 与对其产生作用的输入 token 关联起来。

README 展示了使用稳健符号字母表随机生成分子的示例,同时指出此类输出可能需要进一步筛选。因此,表示形式有效不应被等同于化学稳定,或适用于特定应用。其超价示例特别提醒,许多此类分子的稳定性和合理性仍不确定。建议的下游评估应在明确记录约束设置的前提下检查解码后的结构,而不应将转换本身视为科学验证。

主要功能

  • 通过 `selfies.encoder` 和 `selfies.decoder` 在 SMILES 与 SELFIES 之间进行双向转换。
  • 通过 `selfies.set_semantic_constraints` 配置语义约束,其中包括文档所述的超价配置。
  • 使用 `selfies.len_selfies`、`selfies.split_selfies` 和 `selfies.get_alphabet_from_selfies` 进行符号计数、tokenization,以及从数据集构建字母表。
  • 在 SELFIES 字符串与整数标签或 one-hot 编码之间转换,包括使用解码器会忽略的 `[nop]` 符号进行填充。
  • 通过 `selfies.get_semantic_robust_alphabet` 获取稳健符号字母表,用于文档所述的随机生成工作流。
  • 编码和解码归因功能可关联输出 token 与对其产生作用的输入 token;还可通过 `get_attribution` 获取底层图归因。

使用场景

  • 建议的评估:使用从数据集提取的词汇表,将分子数据集整理为填充后的标签或 one-hot 序列,以供生成模型使用。
  • 建议的评估:对有代表性的 SMILES 进行编码,并在记录语义约束的情况下解码,以便在将 SELFIES 集成到化学信息学流程之前评估其表示行为。
  • 建议的评估:使用稳健字母表生成候选字符串并将其解码,然后按具体应用进行筛选,而不要假定有效图结构就一定是有用的分子。
  • 建议的评估:检查转换归因,以了解分支、环和原子符号如何影响解码后的 SMILES。

使用方式

  1. 阅读仓库 README及其链接的代码论文教程,了解转换函数、编码和语义约束。
  2. 按照 README 中针对 selfies 的 pip 安装说明操作。记录安装的版本,并在切换版本前查阅 CHANGELOG。
  3. 初步评估时,选取有代表性的 SMILES 输入,并依次使用 selfies.encoder 和 selfies.decoder。检查解码后的结构,并留意文档所述的 EncoderError 和 DecoderError 异常。
  4. 使用 selfies.get_alphabet_from_selfies 构建词汇表,确定序列长度,并使用 selfies.selfies_to_encoding 创建标签或 one-hot 输入。需要填充时加入 [nop],并保留词汇表映射以供反向转换。
  5. 记录语义约束配置,尤其是在探索超价时。使用归因功能调查转换过程;如果要评估模型集成,再查看变分自编码器示例。针对预期的化学任务,单独评估生成的结构。

相关资源

AIDDISON Explorer 是一个托管式药物发现平台,可根据目标特性要求、设计约束、预测属性和合成可行性生成并排序分子候选物。

分子生成 · 药物发现

ChemCP 是一款 MCP App,可使用 RDKit.js 将 SMILES 字符串转换为交互式二维分子图和计算描述符,并为支持 MCP Apps 的主机提供聊天内查看器。

TypeScriptJavaScript

化学信息学

ChemCrow

智能体

ChemCrow 是一个基于 Python、使用 Langchain 构建的化学智能体软件包,可将语言模型推理与 RDKit、paper-qa、化学数据库和反应规划工具连接起来。

开源Python

化学信息学 · 文献与研究

Chemistry42 是一个小分子发现平台,将生成式设计、逆合成、ADMET 与选择性预测以及基于物理学的优先级排序结合起来,用于命中识别和先导化合物优化。

分子生成 · 药物发现

Chemistry Development Kit (CDK) 是一个 Java 库,可在其他程序中用于化学表示、文件转换、结构搜索、指纹生成、QSAR 描述符计算和分子渲染。

开源

化学信息学

Datamol

开源工具

Datamol 是一个基于 RDKit 构建的 Python 分子处理库,提供结构转换、标准化、指纹、构象生成、可视化以及本地或远程文件 I/O 工具。

开源Python

化学信息学

相关指南

工作流

AI 药物发现工具指南:Agent、MCP 与科研平台

按工作流程阶段选择工具:靶点证据、蛋白质结构、已知结合位点、分子生成、性质分析和筛选。比较研究智能体、MCP 集成、托管 API 与平台,并参考一个拟议的端到端示例和实用评估关卡。

技能

化学 AI Skills 是什么?科研 Agent 的能力模块详解

了解化学 AI Skills 如何作为可复用的流程模块:`SKILL.md` 包含什么内容,宿主如何加载指令,Skills 与 MCP 和智能体有何区别,以及如何选择、组合和评估它们,同时避免将操作指导误认为科学验证。