最近要做蛋白活性口袋预测,在算法和程序选择上犯了难,最后找到一篇很好的 Paper,里面基本上解答了我的疑惑,并且给出了很好的预测方法:Comparative evaluation of methods for the prediction of protein–ligand binding sites | Journal of Cheminformatics | Full Text

选择基础几何预测器 (Base Geometric Prediction)

论文中显示,高性能的组合方法(如 DeepPocketRESC 和 fpocketPRANK)都选择 fpocket 的输出作为起点,几何方法在识别空腔方面快速且可靠,运行基础工具,生成一组未经过滤和重新排名的原始候选口袋,每个口袋都会有一个原始分数

处理冗余与筛选(Refining & Filtering)

需要按照以下步骤:

  1. 定义重叠:设定一个阈值(例如:口袋中心点距离 ≤5 A˚,或残基重叠 Jaccard 指数 ≥0.75,这是论文中使用的标准)
  2. 去冗余: 遍历所有预测口袋,识别出所有重叠的口袋群组
  3. 保留最优: 在每个重叠的群组中,只保留原始分数最高的那一个口袋,丢弃其余冗余的口袋
  4. 操作目标: 得到一组精简、不重叠的候选口袋集合

重打分 (Re-scoring with P 2 Rank/PRANK)

使用 P 2 Rank 导出前面自定义的外部口袋,然后再对其进行重新打分,

最终排名与选择(Final Ranking)

根据 P 2 Rank 输出的新分数对口袋进行排序,分数最高的即为最佳预测结果

需要考虑到召回率

论文中使用的 “Top-N” 评估,其具体含义是:“我们只考虑每个蛋白质的前 N 个预测结果”

  • N: 代表一个蛋白质实际拥有的经过 LIGYSIS 数据库验证的结合位点数量
  • +2: 是一个额外的缓冲。研究人员在评估时,将预测数量的上限设为 N (实际结合位点数) 加上 2 个额外的预测

    • 例子: 如果一个蛋白质有 N=1 个已知的结合位点,评估时会检查该方法的 Top 3 预测(1+2)是否命中了这个位点
    • 如果一个蛋白质有 N=3 个已知的结合位点,评估时会检查该方法的 Top 5 预测(3+2)是否命中了这 3 个位点

在实际处理蛋白中

  • Top 1: 永远是最应该关注的口袋(最具信心的预测)
  • Top 3(或 Top 5): 检查得分排在前 3 个(或 5 个)的口袋,以确保没有遗漏任何潜在的结合位点

Pipeline 设计

然后我就按照这个论文写了一个完整的蛋白口袋检测和评估 Pipeline,集成了 fpocket 几何预测和 P 2 Rank 机器学习重打分

其中 P 2 Rank 使用的就是 Random Forest 算法

最终要选择的哪几个口袋其实是个大问题,论文中提出使用的 “Top-N” 评估,但是这个“N”要从数据库查出来,但是这个比较依赖于人工标注,大多数时候的蛋白是没有的,而且蛋白的 fasta 是从 NCBI 中拉出来的,你得查这个数据库还需要 mapping 到 UniPort 中,虽然说也有脚本可以做,但是很麻烦

然后我先自己偷偷跑了一个蛋白来测试一下这个 Pipeline,可以看到整个变化其实是非常大的,有些蛋白可能在几何学预测中得分非常高,但是在基于机器学习的算法中优势就没有这么高了

如果我们按照 N=1 的这种情况的话,那我们要取的 Pocket 就是 Pocket. 19、Pocket. 42、Pocket. 13,从图中不难看出,19 的最终得分要远远高于其他的两个

不过这个断崖确实值得思考,在 P 2 Rank 重打分之后,加入一个自动分析模块,对于每一个蛋白,执行以下操作:

  1. 获取分数列表: 得到该蛋白所有口袋按 P 2 Rank 分数降序排列的列表 scores = [s1, s2, s3, ..., sn]
  2. 计算分数差(Deltas): 计算相邻分数之间的差值 deltas = [s1-s2, s2-s3, s3-s4, ...]
  3. 寻找最大差值(Find the Cliff):deltas 数组中找到最大值,以及它对应的位置,这个最大差值就是“断崖”的陡峭程度

    • max_delta = max(deltas)
    • cliff_index = index of max_delta
  4. 定义“断崖之上”的口袋集: “断崖”之前的所有口袋(包括“断崖”边缘的那个),就是高置信度候选集。这个集合的大小是 cliff_index + 1

因为这个蛋白刚好有论文指出了他的活性口袋位点,然后我看了下刚好确实就是这个,其中蓝色的是活性口袋位置的残基,红色的是预测的口袋中心

最后跑了要筛选的 800 多个蛋白,做了并行优化,最后速度还是非常快的

我在做生物信息学和蛋白相关的东西的时候,碰到最多的问题其实是不知道要如何去验证,就比如说这个算法,我尝试了一种新的方法,几何+机器学习,你看传统的几何和机器学习的结果区别其实很大,说实话我心里有点慌

最后修改:2025 年 09 月 27 日
如果觉得我的文章对你有用,请随意赞赏