029

Awesome Drug Discovery GitHub 列表:开源 AI 制药资源总览

Awesome 列表是快速了解开源资源全貌的入口。这篇讲清怎么用、以及如何判断资源的可用性。

GitHub 上的 Awesome Drug Discovery 类列表汇总了 AI 制药的开源资源:工具、数据集、模型、教程、论文。它的价值是「快速了解有什么」,但列表本身不做质量判断——筛选是使用者的工作。

这类列表通常包含什么

类别 内容
化学信息学工具 RDKit、OpenBabel、Datamol(见 055《化学信息学工具栈》
机器学习框架 DeepChem、Chemprop、PyG(见 004《DeepChem 教程体系入门》131《Chemprop / D-MPNN 论文精读》
结构工具 对接、MD、结构预测
数据集与数据库 ChEMBL、PDB、ZINC 等
预训练模型 各类分子与蛋白模型
教程与课程 004《DeepChem 教程体系入门》012《TeachOpenCADD 教程》
论文列表 按主题整理
可视化工具 PyMOL、mols2grid 等

判断一个开源资源是否可用

# 【看仓库的这些信号】
#
# 1) 【最近提交时间】
#    半年以上无更新 → 可能已停止维护
#    → 与新版依赖可能不兼容
#
# 2) 【issue 的状态】
#    □ 未关闭的 issue 有多少?
#    □ 作者响应吗?
#    □ 【有人报告「跑不通」吗?】
#    → 【issue 区常常比 README 更能说明真实情况】
#
# 3) 【有没有测试与 CI】
#    有自动化测试 → 质量更有保障
#
# 4) 【文档完整度】
#    □ 安装说明清楚吗?
#    □ 有可运行的示例吗?
#    □ API 文档完整吗?
#
# 5) 【依赖的复杂度】
#    依赖越多越容易出问题
#    → 有 conda 环境文件或容器镜像 → 加分
#
# 6) 【许可】
#    MIT / Apache 2.0 → 商用友好
#    GPL → 有传染性,企业使用需谨慎
#    自定义许可 → 【必须仔细读】
#    【无许可 = 默认保留所有权利,不能用】
#
# 7) 【star 数的解读】
#    高 star 说明知名度高
#    但【不代表质量】—— 有些是因为论文火
#    → 结合最近更新与 issue 一起看
#
# 8) 【是否有实际使用的案例】
#    有人在生产中用过吗?
#    → 论文引用不等于实际使用

常用工具的可靠性梯队

梯队 特征 例子
基础设施级 多年维护、社区大、稳定 RDKit、OpenMM、PyTorch
成熟工具 持续维护、文档完整 Chemprop、Vina、MDAnalysis、Meeko
活跃项目 近期更新、社区形成中 Boltz、GNINA、OpenFE
论文配套代码 可能只为复现论文而写 多数新方法的仓库
已停止维护 长期无更新

「论文配套代码」这一类要特别注意:它们通常只保证能复现论文中的实验,而非作为通用工具设计。用于生产前需要仔细评估甚至重写。

从列表到实际可用的流程

# 【第 1 步】:明确自己的需求
#   不要「看看有什么好东西」,
#   而是「我要解决 X 问题,有什么工具」
#
# 【第 2 步】:找 2~3 个候选
#   不要只看第一个
#
# 【第 3 步】:快速评估(每个 30 分钟)
#   □ 看 README 与文档
#   □ 看最近更新与 issue
#   □ 看许可
#   □ 【尝试安装并跑通示例】
#     → 装不上或示例跑不通 → 直接淘汰
#
# 【第 4 步】:在自己的数据上试
#   □ 结果合理吗?
#   □ 速度可接受吗?
#   □ 输出格式好处理吗?
#
# 【第 5 步】:评估长期成本
#   □ 依赖冲突的风险
#   □ 版本升级的影响
#   □ 出问题时的排查难度
#   □ 【团队的学习成本】
#
# 【第 6 步】:固定版本并记录
#   requirements.txt 或 environment.yml
#   → 【锁定具体版本号,不用 latest】
#
# 【一个常见的错误】:
#   看到一个新工具很酷就引入,
#   半年后发现它停止维护、
#   而项目已经深度依赖它
#   → 【引入前先问:如果它明天停止维护,
#     我的迁移成本有多大?】

一个务实的最小工具栈

# 【多数 AI 制药项目实际需要的核心工具】
#
# 化学信息学:
#   RDKit                分子处理(见 013)
#   Datamol(可选)      便利封装与并行
#
# 机器学习:
#   scikit-learn         传统方法
#   LightGBM / XGBoost   【梯度提升——最实用的基线】
#   PyTorch              深度学习
#   Chemprop(可选)     分子图模型
#
# 结构:
#   AutoDock Vina / GNINA  对接(见 017、016)
#   PDBFixer + Meeko       结构准备(见 105、106)
#   OpenMM                 MD(见 015)
#   PLIP / ProLIF          相互作用分析(见 108、109)
#   PyMOL                  可视化(见 110)
#
# 数据:
#   pandas、numpy
#   ChEMBL client(见 226)
#
# 工程:
#   conda / mamba          环境管理
#   MLflow(可选)         实验跟踪
#
# 【这个栈能覆盖 80% 以上的常见需求】
# → 【不要一开始就引入太多工具】
#   每个工具都是长期的维护负担

贡献与维护的角度

  • 如果你的团队开源了工具:把它加到相关的 Awesome 列表能提高可见度;
  • 好的开源项目的特征:清晰的 README、可运行的示例、明确的许可、及时的 issue 响应、语义化的版本管理;
  • 对社区的贡献不一定是新方法修文档、补测试、报告可复现性问题,价值同样很高
  • 可复现性报告尤其有价值:「我按照 README 跑不通,因为 X」这类 issue 帮助所有后来者。

关键要点

  • issue 区比 README 更能说明真实情况——尤其是「跑不通」的报告;
  • 「论文配套代码」只保证复现论文,用于生产前需仔细评估甚至重写;
  • 引入前先问:如果它明天停止维护,我的迁移成本有多大
  • 多数项目用一个十来个工具的最小栈就能覆盖 80% 需求——不要过早堆工具。

延伸资源