biosolveit::cli
组件 03 · 口袋生长 Growing · v1.6

FastGrow — 结构基础片段生长

FastGrow 用基于形状的描述符(圆柱形 RVM 描述符)和高效算法,从口袋中的一个核心分子(core,片段或配体)沿指定方向(exit vector)极速生长。它把口袋的形状描述符当查询,匹配预计算好的片段数据库,按立体契合度打分排序,把命中片段附着到核心上,再过滤冲突与活性基团。可在数秒内筛完数千个片段。

可执行文件
fastgrow
片段库
.fastgrowdb
核心配体
需含 linker 原子
默认输出数
100(最多 100000)

01 它能做什么

  • 从口袋中结合的片段或配体出发做结构基础的方向性生长。
  • 秒级筛选预计算的大型片段/构建块数据库。
  • 单次运行最多输出 100,000 个生长结果。
  • 可控制冲突、姿势优化、活性基团移除,易于嵌入自动化流程。

工作原理

FastGrow 方法基于圆柱形形状描述符(ray volume matrices,RVM 描述符),沿生长方向描述口袋的空闲与被占据空间(Figure 1A);片段/构建块对应的形状描述符则预存于 FastGrow 数据库中(Figure 1B)。这些描述符为极快的形状匹配做了优化——惊人的速度来自用位移(bit-shifts)来模拟旋转。筛选时以口袋描述符为查询,与库中预计算的片段描述符匹配,按立体契合度打分排序;顶端片段被附着到核心上,姿势再经精修、并过滤掉残留冲突与附着时可能形成的活性基团,通过后过滤的化合物才报告给用户。在多个 self-growing 与 cross-growing 场景中,该形状描述符表现优异,在最多 84% 的案例中以小于 2 Å 的偏差重现了晶体结构构象。

FastGrow 圆柱形描述符示意
Figure 1:(A) 沿 exit vector(青色箭头)方向的口袋圆柱形描述符(采样射线);(B) 数据库中某片段单个构象的描述符,附着点以青色棒表示
原理上的限制
片段/构建块的形状描述符是在一个构象集合上预计算的。自建数据库时,若片段非常柔性(可旋转键很多),可能需要增大生成的构象集合规模。此外,圆柱形描述符半径固定 10 Å、长度固定 10 Å(从附着点起),这限制了可入库片段的大小;由于口袋描述符是沿 exit vector 方向计算的,FastGrow 在口袋沿 exit vector 延伸时效果最好;若口袋朝与 exit vector 正交的方向"拐弯",把片段放进去会比较困难。

02 前提与授权

需要 FastGrow 程序包、命令行环境与有效许可证。SeeSAR 许可证可用于 FastGrow,但不能用于 FastGrowDBCreator——后者需要单独的许可证。许可证放置方式同其他工具。

检查 license
./fastgrow --license-info

03 Jump Start:一次片段生长

最少需要:一个片段数据库文件(.fastgrowdb,可从官网下载或用 FastGrowDBCreator 自建),加上位点+核心定义(两种方式)。

方式 A — 蛋白 + 核心配体

fastgrow — 蛋白 + 核心
./fastgrow -d FragmentLibrary.fastgrowdb -p MyProtein.pdb \
         -c MyCoreLigand.sdf -o MyGrowingOutput.sdf

方式 B — FastGrow 定义文件

从 SeeSAR 的 Inspirator Mode 导出 .fastgrow 文件,内含蛋白、结合位点、核心与 linker。

fastgrow — 定义文件
./fastgrow -d FragmentLibrary.fastgrowdb -f MyDefinitionFile.fastgrow \
         -o MyGrowingOutput.sdf

默认输出最多 100 个结果,每个结果带打分字段 FASTGROW_OPTIMIZED_SCOREFASTGROW_SCORE(取决于是否做了优化)。

04 程序选项

-d / --database

FastGrow 数据库(.fastgrowdb),含预处理好的片段/构建块。官网提供最多约 12 万化合物的现成库,也可自建。

-p / --protein

蛋白文件,须配合 -c。用定义文件(-f)时此项作废。

-c / --core

核心分子(要从它生长)。须含 3D 坐标、位于口袋内,且至少有一个 linker 原子,该键定义 exit vector(生长方向)。

-f / --fastgrow-definition

从 SeeSAR Inspirator Mode 导出的 .fastgrow 文件,含核心、exit vector、位点定义,可选药效团约束。与 -p 互斥。

-o / --output

结果文件(.sdf)。

-n / --nof-solutions =100

最大结果数,允许 1–100,000。

-l / --linker

当核心含多个 linker 时,指定要从哪个生长。格式为 R 加原子 ID,如 -l R1

过滤/优化开关

选项说明
--no-optimization关闭生长后的姿势优化(默认开启)。关闭后打分字段为 FASTGROW_SCORE
--no-clash-filter关闭移除严重冲突姿势的过滤(默认开启)。
--no-smarts-filter关闭移除活性/不需要基团的 SMARTS 过滤(规则硬编码,仅含过氧基等高活性物种)。

05 准备 core 与 .fastgrowdb

准备 FastGrow 定义文件(推荐)

在命令行运行 FastGrow,推荐的方式是提供一个在 SeeSAR 里准备好的 .fastgrow 定义文件。在 SeeSAR 中下载一个共晶结构(如 PDB 4M3G)、提取配体后转入 Inspirator Mode,三步即可:① 在 2D 或 3D 窗口点击合适的键来定义 exit vector(要被替换的那部分会变灰;再次点击该键可反转生长方向);②(可选)用 ph4 按钮定义药效团约束,FastGrow 会据此过滤出符合约束的生长姿势;③ 导出定义文件,用命令行的 -f 指定即可。

SeeSAR Inspirator Mode 准备 FastGrow 定义文件的三步
Figure 2:在 SeeSAR Inspirator Mode 生成 FastGrow 定义文件。① 点击键定义 exit vector;②(可选)定义药效团;③ 导出定义文件

准备核心配体(手动方式)

另一种方式是提供蛋白 + 一个含 linker 原子的独立核心配体文件(若已导出 .fastgrow 则无需此步)。以 4M3G 为例:在 SeeSAR 中提取配体 → 进 Molecule Editor Mode → 选中要删的原子、点垃圾桶图标删掉要被替换的部分 → 在剩余核心上选一个原子(本例为残留 SH 的硫原子),在 "Change element" 标签里选 [R] 把它改成 linker → 存到 Molecules Table 再导出为 SD 文件。然后命令行用 -c 指定它,并用 -p 指定对应蛋白(本例 4M3G.pdb)。可在单个核心里定义多个 linker 朝不同方向生长,但单次运行只能用一个 exit vector,用 -l 选(如 -l R1)。在 SeeSAR 中按住 L 键点击 linker 可查看其原子 ID;也可用文本编辑器打开 SD 文件,手动找标记为 RR# 的 linker 原子 ID。

用 FastGrowDBCreator 自建数据库

要用自己的片段,需用 fastgrow_db_creator 预计算描述符。它需要单独许可证。每个输入片段必须恰好含一个 linker 原子。

fastgrow_db_creator — 建库
./fastgrow_db_creator -i MyFragmentsWithLinker.sdf \
                    -o MyDatabase.fastgrowdb -n 100
选项默认说明
-i / --input片段(.smi .smiles .mol .mol2 .sdf),每个须恰好一个 linker,否则跳过。
-o / --output输出 .fastgrowdb
-n / --nof-conformations10每个片段生成的构象数上限。
-m / --modecreate执行模式:create 新建 / overwrite 覆盖 / append 追加到已有库(便于逐步建大库)。
--no-smarts-filter关闭活性基团过滤。
--error-output为未能入库的片段写出详细错误文件。
配套工具
给没有 linker 的化合物批量加 linker、为建库做准备时,可用 CoLibri 的 ReactionSynthesizer(写一个把官能团转换成带 linker 产物的反应即可)。