信息速览

PLINDER — 44.9 万蛋白-配体系统评测资源 AI-Ready Wikipedia | 千方病案医数集
INFOBOX
| 数据集名称 | PLINDER |
| 英文全称 | Protein Ligand Interactions Dataset and Evaluation Resource |
| 别名/简称 | PLINDER、PLINDER-2024.06/v2、plinder-pl50、PLI dataset and evaluation resource |
| 疾病分类 | 结构生物学多靶点资源(无单一 ICD-11 分类;示例靶点-疾病映射见 §2.1) |
| SNOMED CT | 无单一对应概念;示例概念映射见 §2.1b |
| 数据模态 | 蛋白-配体三维复合物结构(口袋 + 配体 + 相互作用图谱 + 质量/亲和力注释 + apo/predicted 配对结构) |
| AI 任务类型 | 分子对接(pose prediction)、共折叠、口袋条件配体生成、口袋预测、打分/重排序、SAR 与 MMS 建模、防泄漏基准评测 |
| 样本总数 | 449,383 个蛋白-配体系统(2024-04/v1 论文口径);当前 2024-06/v2 为 400k+ 并随 PDB 半年度增长 |
| 数据大小 | 约 300GB 压缩(不含 scores);含 scores 全量约 800GB-1TB;systems/ 解压后近 1TB |
| 数据格式 | mmCIF / PDB / SDF / Parquet / JSON / YAML |
| 许可证 | Apache License 2.0(PLINDER 整理数据);BindingDB 衍生部分 CC BY 4.0;ChEMBL 衍生部分 CC BY-SA 4.0;源代码 Apache 2.0 |
| 访问级别 | 开放(Google Cloud Storage 公开 bucket,无需注册或申请) |
| DUO 标签 | NRES(无人类受试者数据限制;全部来自 PDB 公开结构) |
| 语言 | 英文(注释字段、文档与论文) |
| 首发日期 | 2024-04(v0/v1);论文 2024-07-17(bioRxiv) |
| 最后更新 | 2024-06(v2 数据版,截至 2026-09 为最新发布数据版;软件包持续迭代至 0.2.x) |
| 发布机构 | 巴塞尔大学计算结构生物学组 & SIB(CASP 共同组织方)、VantAI(现 Proxima)、NVIDIA、MIT CSAIL |
| 官方主页 | https://www.plinder.sh |
| 下载地址 | gs://plinder(GCS 公开 bucket);https://github.com/plinder-org/plinder |
| DOI | 10.1101/2024.07.17.603955 |
| 引用次数 | 84+(Google Scholar,截至 2026-09) |
| AI 就绪度评分 | ⭐⭐⭐⭐(4/5)— 官方 PL50 防泄漏划分、开源全流程管线与一键下载/评测工具齐备;扣分项:全量下载近 1TB、已知 affinity 查询与日期字段 bug、跨版本系统定义漂移需锁版本 |
| 页面状态 | published |
§0 E-E-A-T 与审核声明
医学审核:本页面由千方病案医学编辑部交叉审核:§2 医学背景(靶点家族与疾病映射、蛋白-配体相互作用的临床语境)、§7 偏倚分析。
数据工程审核:[千方病案医学编辑部交叉审核] 医疗 AI 数据工程师,审核范围:§4 DAIMS 数据字典、§5 数据划分策略、§6 预处理 Pipeline 和坑点。
审核日期:2026-09-05
医疗免责声明:本页面提供的医学信息仅供研究和教育目的,不构成医疗建议、诊断或治疗方案。数据集的医学描述基于公开发表的文献,未经逐一临床验证。任何基于该数据集训练的 AI 模型在应用于临床决策前,必须经过独立的临床验证和监管审批。
技术免责声明:本页面的代码示例、预处理建议和基准性能数据基于公开资料整理,不保证在特定环境下的准确性和适用性。使用者应自行验证代码安全性和数据预处理流程的正确性。千方病案医数集不对因使用本页面信息而导致的任何直接或间接损失承担责任。
数据使用合规:使用本页面描述的数据集前,请务必阅读并遵守数据集原始许可协议。PLINDER 整理数据以 Apache License 2.0 发布,但其中 BindingDB 衍生数据遵循 CC BY 4.0、ChEMBL 衍生数据遵循 CC BY-SA 4.0,嵌入下游产品时须分别核对各来源条款。DUO 标签仅供参考,具体使用限制以数据集官方协议为准。
§1 数据集概览
§1.0 30 秒速览
这是什么? PLINDER(Protein Ligand Interactions Dataset and Evaluation Resource)是一个从 PDB 全量自动提取的蛋白-配体相互作用结构数据集。每个「系统」是一个蛋白(或其生物组装体)与一个或多个小分子配体的三维复合物,附带口袋、相互作用指纹、结构质量、配体属性等 500+ 维注释,以及 200 亿级相似度分数库和与之配对的未结合(apo)与 AlphaFold2 预测结构。论文口径共 449,383 个系统(bioRxiv, 2024)。
为什么重要? 常用基准 PDBbind 与 DockGen 合计不足 PDB 蛋白-配体复合物的 10%,且其常用划分存在高达 91% 的 train-test 信息泄漏——PoseBusters 评测集与 PDBbind 训练集甚至含有完全相同的蛋白与配体。PLINDER 用相互作用相似性聚类做出仅 4% 泄漏的 PL50 划分,并通过重训 DiffDock 证明:传统时间划分高估对接性能至少 2 倍(官方博客, 2024-07)。
我能用它做什么? 训练/评测分子对接与共折叠模型、以官方 PL50 划分做防泄漏基准、在 apo 与预测结构上做更接近真实药物发现的推理场景、利用 2,117 个匹配分子系列(MMS)研究构效关系,或直接用其相似度库做近邻检索与数据去重。 它也是 2024 年 MLSB @ NeurIPS 挑战赛官方数据集。
§1.1 技术摘要
PLINDER 由自动化整理管线(plinder.data)从 RCSB PDB 生物组装体全量提取:将空间上邻近的配体归组为一个「蛋白-配体系统」(system,v2 起以配体距离而非 PLIP 定义),随后为每个系统计算 500+(新版 750+)维注释,涵盖 PDB 结构验证报告的残基/配体级质量指标、晶体接触、配体理化属性(Ro5、共价、辅因子、片段等)、SCOP/ECOD/Pfam 结构域、PLIP 相互作用指纹。管线还计算蛋白、口袋、配体与相互作用四个层级的成对相似度(累计超 200 亿分数),据此以图聚类生成三种参考划分:时间划分(TIME)、结构域划分(ECOD)与相互作用相似度划分(PL50),其中 PL50 在保证测试集 100% 高质量与约 10 倍于 PoseBusters 体量的同时,把 train-test 泄漏压到 4%。每个 holo 系统进一步链接实验 apo 结构与 AlphaFold2 预测结构,支撑「从未结合构象对接」的真实场景。数据以 Apache 2.0(自有整理部分)发布于 GCS 公开 bucket,配套 plinder.core 查询 API 与 plinder.eval 标准化评测工具(README)。
§1.2 战略价值
维度一:规模与多样性(数据层)。PLINDER 把可训练的结构化 PLI 系统从 PDBbind 一万九千级抬升一个数量级至 44.9 万级,覆盖超 11,000 个 SCOP 结构域与 50,000+ 个独特小分子,纳入多配体系统、寡核苷酸、多肽与糖类等此前基准不覆盖的相互作用类型。DiffDock 重训实验显示:仅将训练数据从 PDBbind 换成 PLINDER-TIME(同一种时间划分逻辑),PoseBusters 集 Top-1 成功率即从 38% 提升至 47.8%、Top-10 从—提升至 58.2%,直接证明数据规模本身的价值(bioRxiv, 2024)。
维度二:评测可信度(基准层)。PLINDER 的方法论贡献不亚于数据规模:它把「泄漏」「测试集质量」「测试集多样性」做成可量化、可调节的工程指标,而非抽象警告。其 14 种 PLI 指标与评测工具(RMSD、lDDT-PLI、lDDT-LP、PoseBusters 校验)统一了此前各自为政的对比口径,并被 2024 年 MLSB @ NeurIPS 挑战赛采纳为官方标准,正在成为结构药物设计 AI 的社区评测底座。
§1.3 同类数据集横向对比
| 数据集 | 规模 | 模态/标注 | 防泄漏划分 | 差异化 |
|---|---|---|---|---|
| PLINDER(2024-04/v1) | 449,383 系统 | 口袋+配体+相互作用+质量注释,500-750+ 维 | 官方 PL50(泄漏 4%) | PDB 全量自动管线、半年度更新、apo/AF2 配对、相似度库 |
| PDBbind v2020 | 19,443 复合物(general)/ 5,316(refined) | 实验亲和力(Ki/Kd/IC50) | 常用随机/时间划分泄漏可达 91% | 亲和力标注是其独有价值 |
| Binding MOAD(2023 终版) | 41,409 复合物 / 15,223 条亲和力 | 文献挖掘亲和力 | 无官方防泄漏划分 | 已于 2024 年日落,仅存档 |
| CrossDocked2020 | 约 22.5M 交叉对接 pose | 泛化对接复合物 | 基于序列同一性 30% 聚类 | pose 数量大但来自交叉对接生成 |
| DockGen | 204 复合物 / 165 靶点 | 手工精选泛化测试集 | ECOD 域划分 | 小而精的纯评测集 |
| BioLip2 | 数十万相互作用 | 功能注释导向 | 无 ML 划分 | 面向功能注释而非对接基准 |
数字均来自各数据集原始论文与 PLINDER 论文对比表;PDBbind/Binding MOAD 条目另见本库对应 Wiki。
§1.4 版本时间轴
| 版本 | 发布时间 | 关键内容 | 适用场景 |
|---|---|---|---|
| 2024-04/v0 | 2024-04 | 重训 DiffDock 所用非冗余单配体子集 | 复现论文 DiffDock 训练 |
| 2024-04/v1 | 2024-04 | preprint 描述的完整版本(449,383 系统),按口袋+配体相似度去冗余 | 复现论文评测数字 |
| 2024-06/v2 | 2024-06(截至 2026-09 最新数据版) | 新增 RCSB 2024-06 同步系统;系统定义改为配体距离;新增晶体接触注释、BindingDB 亲和力、apo/pred 链接目录、共价键级修复 | MLSB 挑战赛、生产训练与评测 |
| 软件包 0.1.x → 0.2.x | 2024-09 → 2026-02(0.2.26) | API 稳定化、dataloader/eval 完善依赖升级 | 工程集成 |
版本机制说明:PLINDER_RELEASE 为最后一次 RCSB 同步的月戳,PLINDER_ITERATION 为该 release 内的迭代号;每半年度将新系统并入相似度库并重跑聚类(README Changelog)。
§1.5 典型应用场景
- 防泄漏对接基准:以官方 plinder-pl50 划分训练与评测对接模型,替代 PDBbind 时间/随机划分,得到可信的泛化数字。
- 共折叠与全原子结构预测评测:测试 AlphaFold3 类模型在 novel ligand / novel pocket / novel protein 分层测试集上的真实能力。
- ** apo / 预测结构对接**:利用
links/与linked_structures/目录在未结合或 AF2 结构上训练「口袋适应」能力,贴近先导发现实际流程。 - SAR 与先导优化研究:2,117 个 MMS(15,383 个系统)提供同骨架不同取代基的天然对照,可训练活性排序或验证评分函数的趋势一致性。
- 相似度检索与数据治理:200 亿级相似度分数库支持近邻去重、家族检索、跨数据集映射(如把 PDBbind 系统映射到 PLINDER 簇)。
§2 医学背景
§2.1 靶点-疾病 ICD-11 映射
PLINDER 本身不含疾病标签,但其系统天然覆盖主要药物靶点家族。下表给出「示例靶点家族 → 代表性疾病」的 ICD-11 示意性映射,供临床语境理解,不能作为该数据集的分类标签使用。
| 靶点家族(示例) | 代表性疾病 | ICD-11 编码 | 术语说明 |
|---|---|---|---|
| 蛋白激酶(BTK、EGFR 等) | 恶性肿瘤(慢性淋巴细胞白血病等) | 2A60 慢性淋巴细胞白血病 / 2C25 肺恶性肿瘤 | ICD-11 第 2 章肿瘤;激酶抑制剂为 PLINDER 富集配体类 |
| GPCR(β2 肾上腺素受体等) | 哮喘 | CA23 哮喘 | 呼吸系统第 21 章;支气管扩张剂主要靶点 |
| 代谢酶(DPP-4 等) | 2 型糖尿病 | 5A11 | 内分泌第 5 章;列汀类药物靶点 |
| 心血管靶点(ACE、肾素) | 原发性高血压 | BA00 | 循环系统第 11 章 |
| 神经靶点(AChE、BACE 等) | 阿尔茨海默病 | 8A00 | 神经系统第 8 章 |
| 抗感染靶点(HIV 蛋白酶/逆转录酶) | HIV 相关疾病 | 1C60-1C62 | 第 1 章感染病;抗病毒药物经典靶点 |
注:以上为帮助理解数据集临床相关性的示例映射;PLINDER 系统级注释不含疾病字段,疾病归属须由使用者通过 UniProt 靶点映射自行补充。
§2.1b SNOMED CT 概念对照
| 数据集概念 | SNOMED CT 码 | 术语 |
|---|---|---|
| 蛋白-配体结合(分子层面概念) | 无直接对应概念 | 建议映射至药物-靶点相互作用研究领域词表(如 DrugBank/Rhea),SNOMED CT 不收录分子相互作用实体 |
| 药物活性物质 | 105576001 | Substance(物质层级) |
| 药物产品 | 373873005 | Pharmaceutical / biologic product |
| 肿瘤(常见靶点疾病类) | 55342001 | Neoplastic disease |
| 糖尿病(常见靶点疾病类) | 73211009 | Diabetes mellitus |
| 高血压(常见靶点疾病类) | 38341003 | Hypertensive disorder |
注:SNOMED CT 为临床术语集,无「蛋白-配体系统」这一实体层级;上表仅给出最近邻概念锚点,供 EHR 关联与知识图谱对齐时参考。
§2.2 疾病与靶点背景
小分子药物的临床效用几乎全部经由「药物分子与靶蛋白形成特异性相互作用」这一物理事件实现。人类药物靶点高度集中于少数蛋白家族:约 500 个蛋白激酶(Manning et al., 2002, Science)与约 800 个 G 蛋白偶联受体构成了现代药物发现最活跃的靶点池;此外蛋白酶、离子通道、代谢酶与核受体亦是经典靶点家族。这些相互作用发生在亚纳米尺度,由氢键、疏水效应、盐桥与 π 堆积等物理力共同决定,其三维结构的实验解析(X 射线、冷冻电镜、NMR)成本高昂,因此「预测配体在口袋中的结合模式与强度」成为计算药物设计的核心任务。
深度学习方法(DiffDock、RoseTTAFold All-Atom、AlphaFold 3 等)在配体构象预测上展示了突破潜力,但社区多次报告其标准基准成绩受训练-测试泄漏与测试集质量问题放大(官方博客, 2024)。例如 PDBbind 派生划分中高达 91% 的测试系统与训练集共享 ≥50% 相同蛋白-配体相互作用,PoseBusters 时间划分集与 PDBbind 存在同蛋白同配体重叠。PLINDER 的医学价值在于为「靶点结合预测」这一临床前关键环节提供干净的标尺:模型在防泄漏测试集上的对接成功率,直接对应虚拟筛选与先导优化阶段的可信度。
PLINDER 收录的相互作用类型远超经典「类药小分子-蛋白口袋」范畴,这对医学语境的理解很重要:
| 相互作用类型 | 典型医学场景 | 口径 |
|---|---|---|
| 类药小分子(Ro5 通过,37%) | 常规小分子药物设计 | 233,760/615,932 配体 |
| 共价配体(23%) | 共价抑制剂(如 EGFR/KRAS G12C) | 146,444 配体;v2 起逐键显式标注 |
| 辅因子(19%) | 酶学机制理解、别构位点 | 122,741 配体 |
| 寡糖/寡核苷酸/寡肽(17%) | 糖药物、反义/肽类药物 | 105,836 配体 |
| 片段(9%) | 片段筛选(FBDD)起点 | 55,987 配体 |
对以「人类用药」为终点的团队,这意味着:主基准评测应聚焦 Ro5 与片段子集,共价与辅子系统适合机制建模或负迁移分析,而寡糖/寡核苷酸系统的化学约定与小分子不同(见 §7.1 偏倚)。
§2.3 临床任务定位
| 任务环节 | 对应 AI 任务 | PLINDER 支撑方式 | 临床/研发定位 |
|---|---|---|---|
| 靶点确认与虚拟筛选 | 对接打分、大规模 pose 排序 | 44.9 万系统训练集 + PL50 防泄漏测试 | 临床前早期,降低假阳性率 |
| 先导发现(hit discovery) | apo/AF2 结构对接、口袋适应 | links/linked_structures 配对结构 | 从可用结构到未结合构象的真实场景 |
| 先导优化(lead optimization) | SAR 建模、活性趋势排序 | 2,117 个 MMS 同骨架系列 | 评估模型对取代基变化的敏感性 |
| 共折叠与结构预测 | 全原子复合物预测 | novel ligand/pocket/protein 分层测试集 | AlphaFold3 类模型的真实泛化度量 |
| 打分函数与重排序 | 稳健性评测 | PoseBusters 类物理合理性校验集成 | 过滤「姿势对但化学不合理」的预测 |
§2.4 样本构成(靶点与结构来源)
| 维度 | 构成 | 说明 |
|---|---|---|
| 数据来源 | RCSB PDB 全量生物组装体 | 自动管线半年度同步(截至 2024-06/v2) |
| 时间跨度 | 1971/2024(PDB 沉积年代) | 以 X 射线结构为主体,另含 cryo-EM 与 NMR |
| 解析方法 | X-ray 为主 | 质量标准主要面向 X 射线验证报告;EM 验证报告含 Q-score 尚未纳入 |
| 配体构成 | 615,932 个 holo 配体 / 46,988 个独特 CCD 码 | 37% 过 Lipinski Ro5、23% 共价、19% 辅因子、17% 寡糖/寡核苷酸/寡肽、9% 片段 |
| 靶点覆盖 | >11,000 个 SCOP 结构域 | 覆盖激酶、GPCR、蛋白酶、代谢酶等主要药物靶点家族 |
| 特殊子集 | 15,383 系统属于 2,117 个 MMS | 每系列 ≥3 个共同骨架配体 |
| 地域 | 全球沉积 | 无地域偏倚控制(随 PDB 全球分布) |
§2.5 临床与科研价值
对研究 者:PLINDER 提供迄今最大的结构化 PLI 训练语料与首个把「泛化能力」作为一等公民的评测协议,使模型论文中的对比数字首次可在防泄漏口径下比较。对药物研发团队:apo 与 AF2 配对结构让「只有序列或未结合构象」的现实起点成为可训练任务;MMS 系列支持在合成之前用模型预筛取代基方向。对监管与可信 AI:公开的相似度分数库使任何两系统的泄漏关系可审计,为模型验收提供可复现证据链。对教育场景:plinder Python 包把 44.9 万系统的查询、下载、评测压缩为几行 API 调用,是结构生物信息学课程的理想教材资源。
§2.6 金标准对照
| 属性 | PLINDER | PDBbind v2020 | DockGen |
|---|---|---|---|
| 划分方式 | 相互作用相似性图聚类(PL50)+ 时间/ECOD 对照划分 | 时间/随机(社区惯例) | ECOD 结构域手工划分 |
| 标注方式 | 全自动管线(PLIP、OpenStructure、RDKit、验证报告解析)+ BindingDB/ChEMBL 亲和力导入 | 半自动文献亲和力挖掘 | 手工靶点精选 |
| 标注者 | 无人工标注;算法生成 + 第三方数据库导入 | 训练有素策展人员 | 领域专家手工 |
| 性质 | 自动化、可再生的社区基准资源 | 手工策展亲和力库 | 手工泛化评测集 |
| 测试集质量 | 100% 高质量(按验证报告过滤) | <50% 通过既定质量标准 | 精选但体量小(204 复合物) |
§3 数据集规格
§3.0 版本抉择矩阵
| 你的需求 | 推荐版本 | 大小 | 理由 |
|---|---|---|---|
| 复现 PLINDER 论文 DiffDock 数字 | 2024-04/v0(训练)+ 2024-04/v1(评测) | 约 300GB | v0 为论文重训 DiffDock 的非冗余子集;v1 为 preprint 评测口径 |
| 参与 MLSB 挑战赛 / 生产训练 | 2024-06/v2 | 约 300GB(不含 scores) | 官方当前版本:系统定义更稳、含 apo/pred 链接与亲和力注释 |
| 快速体验 API 与字段结构 | 2024-06/tutorial | 约 500MB | 官方教学迭代,结构与全量一致 |
| 只做查询/相似度检索,不想全量下载 | 2024-06/v2 + plinder 包惰性加载 | index+splits 约 2GB 起步 | plinder.core 按需惰性拉取,PLINDER_OFFLINE 控制同步检查 |
⚠️ 跨版本不可混用:v2 修改了系统定义(PLIP → 配体距离),同一 PDB 条目在 v1 与 v2 中可能产生不同系统边界;复现论文数字必须锁定对应版本。
§3.1 模态详情
| 模态 | 内容 | 格式 | 说明 |
|---|---|---|---|
| 三维复合物结构 | 蛋白-配体系统全原子坐标 | mmCIF(推荐)/ PDB | 每个 system 目录含 system.cif、receptor.cif、receptor.pdb |
| 配体结构 | 配体独立坐标与键级 | SDF | ligand_files/*.sdf;v2 修复旧版键级保存问题 |
| 结构注释 | 质量、晶体接触、域、相互作用 | Parquet / JSON | index/annotation_table.parquet 约 130 万行 × 700+ 列 |
| 相似度分数 | 蛋白/口袋/配体/相互作用四层 | Parquet | scores/ 与 ligand_scores/,累计 200 亿级 |
| 配对结构 | apo 实验结构与 AF2 预测结构 | mmCIF | linked_structures/ + links/ 相似度连接表 |
| 划分标签 | train/val/test 与簇 ID | Parquet | splits/plinder-pl50.parquet 等 |
| 亲和力注释 | Ki/Kd/IC50(BindingDB 导入) | Parquet | v2 新增;⚠️ 查询 API 因解析 bug 曾禁用,见坑点 4 |
§3.2 按子集样本数
| 子集 | 数量 | 口径来源 |
|---|---|---|
| PLI 系统总数(论文口径) | 449,383 | bioRxiv 摘要(2024-04/v1) |
| 当前 README 口径 | >400k 系统 | GitHub README(2024-06/v2 起持续增长) |
| SCOP 结构域 | >11,000 | GitHub README |
| 独特小分子 | >50,000 | GitHub README |
| holo 配体总数 | 615,932(46,988 unique CCD) | 论文 Table 1 |
| Ro5 类药配体 | 233,760(37%) | 论文 Table 1 |
| 共价配体 | 146,444(23%) | 论文 Table 1 |
| 辅因子配体 | 122,741(19%) | 论文 Table 1 |
| 寡糖/寡核苷酸/寡肽配体 | 105,836(17%) | 论文 Table 1 |
| 片段配体 | 55,987(9%) | 论文 Table 1 |
| MMS 系列 / 系统数 | 2,117 系列 / 15,383 系统 | 论文 |
| PL50 测试集 | 约为 PoseBusters 基准集(428 复合物)的 10 倍 | 论文 §3.2 |
§3.3 数据格式
| 格式 | 用途 | 读取工具 |
|---|---|---|
| mmCIF(.cif) | 系统/受体/配对结构主格式 | gemmi、Biopython MMCIFParser、OpenStructure |
| PDB(.pdb) | 受体 legacy 格式(官方不推荐) | 各类结构库均可 |
| SDF(.sdf) | 配体 2D/3D 结构 | RDKit、Open Babel |
| Parquet(.parquet) | 注释表、相似度分数、划分 | pandas / pyarrow / polars |
| JSON / YAML | 系统元数据(链映射、序列)、划分配置 | 标准库 |
| ZIP | systems/ 按两位字符码分块打包 | unzip / Python zipfile |
§3.4 存储构成
| 子目录 | 大小 | 说明 |
|---|---|---|
| systems/ | 压缩 >140GB,解压近 1TB | 全部系统结构文件,按 PDB 两位字符码分块 zip |
| scores/ | 约 500GB | 蛋白相似度 parquet 数据集(含 apo/pred/holo 搜索库) |
| linked_structures/ | 约 100GB | 链接的 apo 与 AF2 预测结构 |
| 全量(不含 scores) | 约 300GB | 生产训练推荐下载集 |
| 全量(含 scores) | 约 800GB-1TB | 完整镜像(plinder_download 全量约 1TB、约 1 小时量级网络吞吐) |
| index + splits | 约 2GB | 查询与划分最小集 |
| tutorial 迭代 | 约 500MB | 教学样例子集 |
内存提示:annotation_table.parquet 全量载入约需 24GB RAM;建议用 query_index() 列过滤或 polars 惰性扫描。
§3.5 标注方式
| 标注类型 | 方式 | 工具/来源 |
|---|---|---|
| 相互作用指纹 | 自动 | PLIP(v2 起系统定义改用配体距离,PLIP 仍用于指纹) |
| 质量指标 | 自动解析 | PDB Structure Validation Reports(残基/配体级) |
| 晶体接触 | 自动 | v2 新增注释 |
| 配体理化属性 | 自动计算 | RDKit 生态(Ro5、MW、共价标记等) |
| 蛋白结构域 | 自动导入 | SCOP、ECOD、Pfam |
| 相似度分数 | 自动计算 | OpenStructure、Foldseek、MMseqs 管线(dbs/ 含子库) |
| 亲和力 | 第三方导入 | BindingDB(CC BY 4.0)、ChEMBL(CC BY-SA 4.0) |
| apo/AF2 链接 | 自动匹配 | 序列/结构比对(links/) |
§3.6 标注者资质与一致性
PLINDER 无人工标注环节:全部注释由自动化管线生成或从权威第三方数据库导入,因此不存在标注者间一致性(IAA)问题,取而代之的是管线可重复性保证——版本化的源代码、依赖锁定与相似度阈值配置(splits/ 附 YAML config)使同一版本可复现。第三方导入数据(BindingDB 亲和力)的原始策展质量由对应数据库团队负责;已知 BindingDB 解析存在 bug(官方曾临时禁用 affinity 查询),使用前须自行验证,详见坑点 4。
§3.7 采集周期
- 数据同步:随 RCSB PDB 更新滚动,官方承诺半年度合并新系统并重跑聚类(release 月戳即同步时间)。
- 迭代修补:同一 release 内以 iteration(v0/v1/v2)发布增量修复,避免破坏性变更。
- 软件包:semver 语义化版本持续迭代(PyPI 0.2.26,bioconda 最后更新 2026-02-19)。
§3.8 地域覆盖
全球:数据全部继承自 PDB 全球沉积结构,无地域筛选,也不提供地域字段;结构来源实验室分布于各大洲学术与产业机构。若需地域维度分析,须通过 PDB 条目元数据回溯。
§3.9 设备/测定规格
| 属性 | 说明 |
|---|---|
| 解析方法 | X 射线衍射为主,另含冷冻电镜与 NMR 系统 |
| 分辨率 | 不设一刀切阈值;逐配体/残基质量指标来自 PDB 验证报告 |
| 质量过滤 | 测试集强制高质量(clash、R-free、电子密度等综合判据);训练集保留全部质量层级 |
| 晶体接触 | v2 起逐系统注释,帮助区分非生理性相互作用 |
| 结构验证 | 直接引用 RCSB validation report 的残基与配体级字段 |
§3.10 深度溯源链
PDB 条目(entry_pdb_id)→ 生物组装体(assembly)→ 系统(system_id = {pdb}__{assembly}__{chains}__{ligands})→ 配体 CCD 码 → 第三方数据库(BindingDB/ChEMBL/UniProt)。每个系统目录内的 JSON 元数据记录链映射与序列;index/annotation_table.parquet 以 system_id 为主键串联全部注释;splits 文件记录 cluster 归属,可回溯到相似度图中的边(threshold YAML 配置同目录存放)。整条链路无人工干预,任何字段异常均可通过版本号定位到生成代码的对应提交(dataset tutorial)。
§4 数据结构
§4.0 推荐本地工作目录布局
~/.local/share/plinder/2024-06/v2/ # $PLINDER_RELEASE/$PLINDER_ITERATION
├── clusters/ # 预计算簇标签(源自蛋白相似度库)
├── dbs/ # foldseek / mmseqs 子数据库 TSV 与原始 ID
├── entries/ # 合并前的原始注释(按两位字符码分块 zip)
├── fingerprints/ # 配体相似度索引映射
├── index/ # ★ 合并后的全量注释表 annotation_table.parquet
├── ligand_scores/ # 配体相似度 parquet 数据集
├── ligands/ # 从 entries 展开的配体数据(供相似度计算)
├── linked_structures/ # ★ apo 与 AF2 预测结构(按系统链接)
├── links/ # apo/pred 与 holo 的相似度连接表
├── mmp/ # 匹配分子对(MMP)与系列(MMS)数据
├── scores/ # 蛋白相似度 parquet(约 500GB,按需)
├── splits/ # ★ 划分 parquet + 生成配置 YAML
└── systems/ # ★ 系统结构文件(按两位字符码分块 zip)
└── {two_char_code}/
└── 7eek__1__1.A__1.I/ # system_id = pdb__assembly__chains__ligands
├── system.cif # 完整系统 mmCIF
├── receptor.cif # 受体 mmCIF
├── receptor.pdb # 受体 legacy PDB
├── ligand_files/*.sdf # 配体 SDF(含键级)
└── *.json # 链映射、序列等元数据
★ 标记为最常用目录:systems、index、splits、linked_structures;其余目录面向高级用途(相似度库重建、MMP 分析)。
§4.1 DAIMS 字段字典
核心表 index/annotation_table.parquet(约 130 万行 × 700+ 列)中最常用于 AI 训练的字段(列名以官方 schema 为准,此处为代表性样例):
| 字段名 | 类型 | 说明 | 示例值 | AI 用途 | 观测误差 | 缺失编码 | 取值范围 |
|---|---|---|---|---|---|---|---|
| system_id | str | 系统唯一 ID:pdb__assembly__chains__ligands | 7eek__1__1.A__1.I |
主键/分层抽样 | 无 | 无 | 全量唯一 |
| entry_pdb_id | str | 源 PDB 条目 4 字符码 | 7EEK |
回溯 PDB 元数据 | 无 | 无 | PDB 码域 |
| entry_resolution | float | 条目分辨率(Å) | 1.85 |
质量过滤 | 验证报告口径 | 空值(NMR 等) | 0.6-4.0+ |
| ligand_ccd_codes | list[str] | 配体 CCD 三字符码 | ["1PE","DG"] |
配体类型分层 | CCD 口径 | 空列表 | CCD 字典 |
| ligand_is_covalent | bool | 共价配体标记 | True |
任务过滤/分层 | 管线判据 | 空值 | 0/1 |
| ligand_ro5_pass | bool | Lipinski Ro5 通过 | True |
类药性分层 | RDKit 计算 | 空值 | 0/1 |
| protein_scop_domain | str | SCOP 结构域归属 | d.153.1.1 |
域级划分/去冗余 | SCOP 版本 | 空值(未注释) | SCOP 域 |
| interaction_fingerprint | bytes/str | PLIP 相互作用指纹 | (哈希/位串) | 相似度/聚类 | PLIP 检出率 | 空值 | 管线定义 |
| ligand_binding_affinity | float | BindingDB 导入亲和力(nM 等) | 12.5 |
亲和力建模 | ⚠️ 已知解析 bug | 大面积缺失 | 按原始单位 |
| entry_release_date | date | PDB 条目发布日期 | 2019-03-15 |
时间划分 | ⚠️ 已知错误,用 query_index 修补 | 无 | 1971-2024 |
| has_apo_link / has_pred_link | bool | 是否链接 apo/AF2 结构 | True |
真实场景评测 | 比对口径 | 空值 | 0/1 |
| cluster_pl50 | str | PL50 划分簇 ID | c100718 |
防泄漏抽样 | 算法版本 | 无 | splits 文件 |
§4.2 标签分布
- 划分标签:官方 plinder-pl50 将系统标为 train / val / test,测试集按 novel ligand、novel pocket、novel protein、novel(all)四层分层;测试集 100% 高质量,体量约为 PoseBusters 基准集(428 复合物)的 10 倍(论文 §3.2)。
- 配体化学型分布:Ro5 类药 37%、共价 23%、辅因子 19%、寡糖/寡核苷酸/寡肽 17%、片段 9%(615,932 个 holo 配体口径)。
- 亲和力标签:仅 v2 起、且仅对 BindingDB 可匹配子集提供,覆盖率有限并受解析 bug 影响——不可假设每个系统都有亲和力。
- 结构质量分布:训练集保留全质量层级;测试集为高质量子集——两侧质量分布刻意不同。
§4.3 关键统计
| 统计项 | 数值 | 来源 |
|---|---|---|
| 系统总数(论文) | 449,383 | bioRxiv 摘要 |
| 相似度分数总量 | >200 亿 | GitHub README |
| PLI 评测指标 | 14 种 | GitHub README |
| 每系统注释维度 | 500+(论文)/ 750+(新版 README) | 官方口径 |
| PL50 train-test 泄漏 | 4%(PLI 共享 ≥50% 口径) | 论文 Table 2 |
| PDBbind 派生划分泄漏 | 最高 91%(同口径) | 官方博客 Figure 4 |
| MMS 系列 | 2,117 个(15,383 系统) | 论文 |
| 测试集质量 | 100% 高质量;ECOD/TIME 划分仅 21%/19% 达标 | 论文 §3.2 |
| 测试集体量 | 约为 PoseBusters 基准集(428 复合物)10 倍 | 论文 §3.2 |
| annotation_table 规模 | 约 130 万行 × 700+ 列(全载约 24GB RAM) | DeepWiki/官方文档 |
| GitHub stars | 约 305(截至 2026-08-11) | deps.dev |
§4.4 数据层级
PDB entry(entry_pdb_id,如 7EEK)
└── biological assembly(assembly 号,如 1)
└── PLINDER system(system_id,如 7eek__1__1.A__1.I)
├── receptor chains(1.A 等,可多条链/多聚体)
│ └── residues → atoms
├── ligand instances(1.I 等,可多配体)
│ └── CCD code → atoms → SDF 键级图
├── linked structures(apo 实验结构 / AF2 预测结构,0-多条)
└── annotations(质量、相互作用、域、亲和力等 700+ 列)
一个 PDB 条目可产生多个系统(多口袋/多配体/多组装体);相似度层(scores/)是系统间的成对图,划分(splits/)在该图上执行聚类。
§4.5 缺失值与信息性缺失
| 情形 | 表现 | 是否信息性 | 处理建议 |
|---|---|---|---|
| 亲和力缺失 | ligand_binding_affinity 为空 | 信息性(BindingDB 无匹配 ≠ 无亲和力) | 勿当作 0 或剔除子集偏差;仅用有值子集做亲和力任务 |
| entry_release_date 错误 | 与 RCSB 官方日期不符 | 非信息性(已知 bug) | 用 query_index 或 dates.csv 修补(坑点 2) |
| SCOP/ECOD 域缺失 | 域字段为空 | 信息性(蛋白未覆盖该分类库) | ECOD 缺失曾导致 ECOD split 泄漏,勿用缺失当「novel」 |
| 核酸受体系统 | 结构文件不完整 | 非信息性(已知保存 bug,坑点 3) | 按受体类型过滤或改用 v2 + 自检 |
| apo/AF2 链接缺失 | has_apo_link 为空 | 信息性(无对应实验结构) | 仅对有链接子集做 apo 任务,避免选择偏差误判 |
§5 划分与使用建议
§5.1 官方划分
官方提供三种参考划分:PLINDER-TIME(按 PDB 发布日期)、PLINDER-ECOD(按结构域)与 PLINDER-PL50(按口袋-配体相互作用相似度,阈值 50%)。PL50 是主推划分:划分算法在相似度图上聚类,优先保证测试集质量与多样性、最小化 train-test 泄漏,最终 PL50 泄漏仅 4%,且测试集全部高质量、体量约为 PoseBusters 的 10 倍。划分文件为 splits/*.parquet(列:system_id、split、cluster、cluster_for_val_split),生成配置 YAML 同目录存放,可按任务调节阈值(README)。
§5.2 社区惯例划分
MLSB 2024 挑战赛采用 v2 的官方划分作为统一赛道;部分下游工作(如 NVIDIA Complexa)以 PLINDER 为训练源自设配比(99.9% 训练 / 0.1% 验证,与其 AFDB/PDB 混合语料)。使用社区划分时务必注明 PLINDER_RELEASE/ITERATION 与划分文件路径,否则结果不可比。
§5.3 泄漏风险(重点)
- 划分内泄漏:随机划分或时间划分下,测试系统常与训练系统共享 ≥50% 相同相互作用(PDBbind 口径达 91%);即使 PL50 也「按设计」允许相似配体结合不同口袋出现在两侧——对刚性对接任务可接受,对配体生成任务需自行收紧阈值。
- val 泄漏:随机从 train 抽 val 会鼓励记忆;官方 parquet 提供 cluster_for_val_split 列用于按簇取验证集。
- 跨版本泄漏:v0/v1/v2 系统定义不同,混合使用等于隐性泄漏与重复计数。
- 第三方基准泄漏:PoseBusters 集与 PDBbind 训练集存在同蛋白同配体重叠;把 PLINDER 训练模型直接报 PoseBusters 数字时,须声明并检查重叠。
§5.4 交叉验证建议
按 cluster(而非 system)做 K 折:同一簇的系统共享相互作用模式,跨簇切分才能反映泛化。对 MMS 子集,同一系列的系统必须同折,否则构效关系任务形同开卷考试。建议至少报告 PL50 主划分 + 按簇 5 折两组结果。
划分配置(splits/ 附带的 YAML,节选自官方文件结构)控制的关键阈值示意:
# splits/*.yaml(官方划分生成配置的代表性字段,字段名以对应版本文件为准)
similarity_thresholds:
pocket_lddt: 0.5 # PL50 的 50% 口袋相似度阈值
ligand_similarity: 0.5 # 配体相似度边阈值
ligand_max_diff_mw: 100 # 同配体判定宽容度
quality:
test_set_only_high_quality: true # 测试集强制高质量
priorities:
prefer_apo_linked: true # 优先选有 apo 链接的系统入 test
prefer_mms: true # 优先选 MMS 系列
stratify_test_by: [novel_ligand, novel_pocket, novel_protein]
复现或自定义划分时:先读 YAML 确认当前版本阈值,再用 scores/ 相似度库重建图;不要凭文件名猜测阈值。
§5.5 外部验证建议
- PoseBusters 集对照:与既有文献可比,但须报告与训练集的重叠分析。
- DockGen 集:小而精的泛化测试集,适合作为「新颖靶点」外推检验。
- CASP/MLSB 赛题:官方评测口径下与社区同台比较。
- 自有靶点:用 scores/ 相似度库检索测试系统与自有靶点的最近邻,量化外推距离后再解读模型置信度。
- API 口径:以
plinder.core.split.get_split()取划分而非手工读 parquet,保证与官方版本联动;自建划分时在论文附录公开 system_id 清单。
§6 AI 就绪指南
§6.0 云端快速启动
无本地 GPU/存储时,最快路径是 tutorial 迭代(约 500MB)+ Colab/Kaggle 环境:
pip install plinder
python -c "import plinder.core as c; print(c.get_config().data.plinder_remote)"
# 输出 gs://plinder/2024-06/v2 即为当前远程数据根
完整数据集在 GCS(gs://plinder),任何支持 gcsfuse 的云环境可直接挂载只读访问,避免下载 scores/(约 500GB)。
§6.1 快速上手
以下代码预期目录结构:数据根 ~/.local/share/plinder/2024-06/v2/(由 PLINDER_RELEASE/PLINDER_ITERATION 拼接),其下 index/annotation_table.parquet 为注释主表、splits/ 为划分、systems/ 为结构文件。最小可用子集 = index + splits(约 2GB),结构文件可按需解压单个系统。
# 1. 安装(仅 Linux;macOS 用官方 docker 镜像,见坑点 8)
pip install plinder
# 2. 方式 A:只下最小子集(index + splits,约 2GB)
export PLINDER_RELEASE=2024-06
export PLINDER_ITERATION=v2
mkdir -p ~/.local/share/plinder/${PLINDER_RELEASE}/${PLINDER_ITERATION}
gsutil -m cp -r "gs://plinder/${PLINDER_RELEASE}/${PLINDER_ITERATION}/index" \
"gs://plinder/${PLINDER_RELEASE}/${PLINDER_ITERATION}/splits" \
~/.local/share/plinder/${PLINDER_RELEASE}/${PLINDER_ITERATION}/
# 3. 方式 B:官方一键全量(约 1TB,含交互确认;-y 跳过)
# plinder_download --release 2024-06 --iteration v2 --yes
# 4. 解压需要的系统(按两位字符码分块)
cd ~/.local/share/plinder/2024-06/v2/systems
unzip 7e_*.zip # 解出 7eek__1__1.A__1.I/ 等目录
# 5. 查询注释主表(列过滤,避免 24GB 全量载入)
import plinder.core as c
hits = c.query_index(
entry_pdb_id="7eek",
columns=["system_id", "entry_resolution", "ligand_ccd_codes"],
)
print(hits)
# system_id 列可直接拼接数据根路径定位 system 目录
§6.2 数据获取
| 渠道 | 方式 | 体积 | 说明 |
|---|---|---|---|
| GCS bucket | gsutil -m cp -r gs://plinder/{release}/{iteration}/ |
按子目录(systems 压缩 >140GB) | 无需注册,公开访问 |
| plinder 包 | plinder_download --release 2024-06 --iteration v2 -y |
全量约 1TB | 自动懒下载大目录确认;之后可设 PLINDER_OFFLINE=true |
| PyPI | pip install plinder |
包本体小 | 惰性按需拉取数据 |
| conda | conda install bioconda::plinder |
同上 | bioconda 渠道(0.2.26) |
| Docker | ghcr.io/plinder-org/plinder-base:v0.2.x |
镜像若干 GB | macOS 用户官方推荐路径 |
| 教学子集 | --iteration tutorial |
约 500MB | 结构与全量一致 |
获取后校验:ls ~/.local/share/plinder/2024-06/v2/index/annotation_table.parquet 存在且可读即可开始;无需签名或使用协议(区别于 PDBbind 等需注册的数据库)。
机构级镜像与离线部署:HPC/内网环境推荐三种形态——① gcsfuse 只读挂载共享目录,多用户零拷贝;② 官方 Docker 镜像 ghcr.io/plinder-org/plinder-base:v0.2.x 内置依赖(macOS 用户唯一官方路径);③ 预下载「index+splits+systems」三目录(约 150-300GB)到共享存储并设 PLINDER_MOUNT 指向挂载点。UMass 等高校集群已提供预装示例(路径 /datasets/bio/plinder,2024-10 快照口径)。离线后务必设 PLINDER_OFFLINE=true,避免每次调用触发 GCS 同步检查拖慢训练启动。
§6.3 预处理全流程
目标:把「系统目录」转成对接/共折叠训练所需的「受体图 + 配体图 + 真实 pose」三元组。以下代码可直接运行(依赖:biopython、rdkit、pandas、pyarrow)。
import re
from pathlib import Path
import pandas as pd
from Bio.PDB import MMCIFParser
from rdkit import Chem
DATA_ROOT = Path.home() / ".local/share/plinder/2024-06/v2"
SPLIT_PARQUET = DATA_ROOT / "splits/plinder-pl50.parquet"
SYS_ID_RE = re.compile(
r"^(?P<pdb>[0-9a-z]{4})__(?P<assembly>\d+)__"
r"(?P<chains>[0-9A-Za-z._]+)__(?P<ligands>[0-9A-Za-z._]+)$"
)
def parse_system_id(system_id: str) -> dict:
"""system_id 格式 {pdb}__{assembly}__{chains}__{ligands},双下划线分隔。"""
m = SYS_ID_RE.match(system_id)
if not m:
raise ValueError(f"无法解析 system_id: {system_id}")
return m.groupdict()
def find_system_dir(system_id: str) -> Path:
"""systems 按两位字符码分块:7eek -> 7e_<...>.zip 解压后的 7e/ 目录。"""
two = system_id[:2]
cand = DATA_ROOT / "systems" / two / system_id
if cand.exists():
return cand
# plinder_download 用户可能已在 systems/<system_id> 平铺
flat = DATA_ROOT / "systems" / system_id
if flat.exists():
return flat
raise FileNotFoundError(
f"{system_id} 不存在:请先解压 systems/{two}_*.zip(见 §6.1)"
)
def load_system(system_id: str):
d = find_system_dir(system_id)
parser = MMCIFParser(QUIET=True)
receptor = parser.get_structure("rec", str(d / "receptor.cif"))
ligands = []
for sdf in sorted((d / "ligand_files").glob("*.sdf")):
mol = Chem.SDMolSupplier(str(sdf), removeHs=False)[0]
if mol is None: # 旧版本键级问题可能解析失败,见坑点 7
mol = Chem.MolFromMolFile(str(sdf), sanitize=False)
ligands.append(mol)
return receptor, ligands
def build_split_frame() -> pd.DataFrame:
df = pd.read_parquet(SPLIT_PARQUET,
columns=["system_id", "split", "cluster"])
return df[df["split"].isin(["train", "val", "test"])].reset_index(drop=True)
if __name__ == "__main__":
df = build_split_frame()
print(df["split"].value_counts())
test_ids = df.loc[df["split"] == "test", "system_id"].head(5)
for sid in test_ids:
rec, ligs = load_system(sid)
print(sid, parse_system_id(sid), len(ligs), "ligands")
要点:system_id 由双下划线分隔四段;chains 与 ligands 段内部用单下划线连接多实例(如 1.A_2.A);PDB/链/配体码为小写。v2 起配体 SDF 键级已修复,但若兼容 v1 须处理芳香环键级缺失(坑点 7)。
进阶:apo 与 AF2 预测结构接入。真实推理场景中受体来自未结合构象或预测结构;官方 links/ 与 linked_structures/ 提供配对关系与结构文件:
import pandas as pd
from pathlib import Path
DATA_ROOT = Path.home() / ".local/share/plinder/2024-06/v2"
def load_links():
"""读取 holo 系统与 apo/predicted 结构的链接表(列名以版本文件为准)。"""
link_dirs = [d for d in ["links"] if (DATA_ROOT / d).exists()]
frames = []
for d in link_dirs:
for pq in sorted((DATA_ROOT / d).glob("*.parquet")):
frames.append(pd.read_parquet(pq))
if not frames:
raise FileNotFoundError(
"links/ 不存在:请补下 gs://plinder/2024-06/v2/links 与 linked_structures/"
)
return pd.concat(frames, ignore_index=True)
def apo_pair_stats():
"""统计 holo↔apo 覆盖率,决定是否可做「未结合构象对接」任务。"""
links = load_links()
if "system_id" in links.columns:
holos = links["system_id"].nunique()
else:
holos = len(links)
print(f"有链接的 holo 系统(或链接记录)数:{holos}")
return links
if __name__ == "__main__":
links = apo_pair_stats()
print(links.head())
使用链接数据的两条纪律:① 链接并非全量覆盖——先统计覆盖率再把「apo 任务」写进实验设计;② 训练用 holo 受体、验证用 apo/AF2 受体的组合必须保持两侧 system_id 一致,防止通过配对表把测试系统的 apo 结构混进训练(一种容易被忽视的泄漏)。
§6.4 PyTorch DataLoader(完整可运行)
<details>
<summary>展开完整 Dataset + collate + DataLoader 代码(约 80 行)</summary>
"""PLINDER 对接数据集:按官方 PL50 划分加载受体口袋与配体 3D 构象。
依赖:torch, pandas, biopython, rdkit, numpy
目录预期:DATA_ROOT/splits/plinder-pl50.parquet + DATA_ROOT/systems/<two>/<system_id>/
"""
from pathlib import Path
import numpy as np
import pandas as pd
import torch
from torch.utils.data import Dataset, DataLoader
from Bio.PDB import MMCIFParser, PDBParser
from rdkit import Chem
from rdkit.Chem import rdMolDescriptors
DATA_ROOT = Path.home() / ".local/share/plinder/2024-06/v2"
class PlinderPoseDataset(Dataset):
"""每个样本 = (受体原子坐标张量, 配体构象张量, 元数据)。
仅保留配体可解析、受体有 pocket 残基注释的系统。"""
def __init__(self, split: str = "train", max_atoms: int = 4096):
sp = pd.read_parquet(
DATA_ROOT / "splits/plinder-pl50.parquet",
columns=["system_id", "split", "cluster"],
)
self.ids = sp.loc[sp["split"] == split, "system_id"].tolist()
self.clusters = sp.loc[sp["split"] == split, "cluster"].tolist()
self.max_atoms = max_atoms
self._cif = MMCIFParser(QUIET=True)
self._pdb = PDBParser(QUIET=True)
def __len__(self):
return len(self.ids)
def _load_receptor_coords(self, sys_dir: Path) -> np.ndarray:
cif = sys_dir / "receptor.cif"
try:
st = self._cif.get_structure("r", str(cif))
except Exception:
st = self._pdb.get_structure("r", str(sys_dir / "receptor.pdb"))
atoms = [a for a in st.get_atoms() if a.element != "H"]
coords = np.array([a.coord.astype(np.float32) for a in atoms])
return coords[: self.max_atoms]
@staticmethod
def _load_ligand_coords(sys_dir: Path) -> np.ndarray | None:
sdf_dir = sys_dir / "ligand_files"
if not sdf_dir.exists():
return None
mols = []
for sdf in sorted(sdf_dir.glob("*.sdf")):
m = next(iter(Chem.SDMolSupplier(str(sdf), removeHs=True)), None)
if m is not None:
conf = m.GetConformer()
mols.append(conf.GetPositions().astype(np.float32))
return np.concatenate(mols) if mols else None
def __getitem__(self, idx: int):
sid = self.ids[idx]
sys_dir = DATA_ROOT / "systems" / sid[:2] / sid
rec = self._load_receptor_coords(sys_dir)
lig = self._load_ligand_coords(sys_dir)
if lig is None or len(rec) == 0:
# 坏样本(如核酸受体保存问题,见坑点 3)返回占位,collate 时过滤
return {"valid": False, "system_id": sid}
return {
"valid": True,
"system_id": sid,
"cluster": self.clusters[idx],
"receptor": torch.from_numpy(rec),
"ligand": torch.from_numpy(lig),
}
def collate(batch):
batch = [b for b in batch if b["valid"]]
if not batch:
return None
return {
"system_id": [b["system_id"] for b in batch],
"cluster": [b["cluster"] for b in batch],
"receptor": [b["receptor"] for b in batch],
"ligand": [b["ligand"] for b in batch],
}
if __name__ == "__main__":
train_ds = PlinderPoseDataset(split="train")
loader = DataLoader(
train_ds, batch_size=4, shuffle=True,
num_workers=4, collate_fn=collate,
persistent_workers=True,
)
for step, batch in enumerate(loader):
if batch is None:
continue
print(batch["system_id"], batch["receptor"][0].shape)
if step >= 2:
break
</details>
工程提示:结构解析是 CPU 瓶颈,务必 num_workers>=4;大规模训练建议预先把 receptor.cif 转成内存友好的 npz 缓存;cluster 字段须带入训练循环用于按簇采样与 early stopping(防 val 泄漏,见 §5.3)。
§6.5 坑点 8 个
⚠️ 坑点 1:跨版本系统定义漂移导致复现失败(分类:工程陷阱)
问题:v2(2024-06)把系统定义从 PLIP 依赖改为纯配体距离,并改变划分统计要求;同一 PDB 条目在不同版本可能产生不同系统边界与数量,直接混合多版本训练/评测等于引入重复与泄漏。
症状:复现论文 DiffDock 数字对不上;系统总数与论文 449,383 不一致;跨版本 join 出现「同名不同内容」的系统。
解决:
- 简单方法:环境变量锁定
PLINDER_RELEASE=2024-04、PLINDER_ITERATION=v1,整条链路只用一个版本。- 进阶方法:以
system_id前缀(PDB 码)记录数据版本表,任何评测结果附版本三元组(release/iteration/软件 semver)。- SOTA 方法:用 gsutil 列举
gs://plinder/manifest.md追踪后续 release;半年度新版本发布后在新目录从头跑管线,禁止原地覆盖。
参考:README Changelog;dataset tutorial
⚠️ 坑点 2:entry_release_date 字段已知错误(分类:工程陷阱)
问题:源索引中的
entry_release_date与 RCSB 官方发布日期不符;任何依赖该字段做时间划分、时效过滤或数据漂移分析的代码都会得到错误结论。
症状:按日期切分后「早期」结构出现在 2019+ 区间;与 RCSB 页面日期对账不一致。
解决:
- 简单方法:改用
query_index()查询,官方已在该接口内修补日期。- 进阶方法:离线场景用官方 sidecar 合并:
plindex.merge(pd.read_csv(".../static_files/dates.csv"), on="entry_pdb_id")。- SOTA 方法:直接以 RCSB GraphQL/镜像核对
entry_pdb_id的rcsb_accession_info.deposit_date,建立独立日期事实表。
参考:PyPI plinder 0.2.18 Known bugs
⚠️ 坑点 3:含核酸受体的复合物可能保存不完整(分类:预处理陷阱)
问题:官方已知 bug——含核酸(DNA/RNA)受体的系统在结构文件写出环节可能不正确(issue #61),导致解析或坐标缺失。
症状:receptor.cif 解析报错、原子数异常偏少、或 ligand_files 与 system.cif 不一致。
解决:
- 简单方法:加载时校验受体原子数与配体存在性,坏样本丢弃并记日志(§6.4 Dataset 已内置 valid 过滤)。
- 进阶方法:按注释表过滤掉核酸受体系统(受体链类型含 NA 的子集)后再训练。
- SOTA 方法:对关键核酸靶点,回源 PDB 用 mmCIF 原始条目重建系统,并用 PLINDER 的 system_id 映射保持划分一致性。
参考:GitHub issue #61
⚠️ 坑点 4:ligand_binding_affinity 查询被禁用(分类:标签理解)
问题:v2 引入的 BindingDB 亲和力注释在解析端发现 bug(issue #94),官方一度禁用
ligand_binding_affinity查询;该字段覆盖率本身也仅限 BindingDB 可匹配子集。
症状:全量系统训练亲和力模型时大面积标签缺失;查询接口报错或返回空。
解决:
- 简单方法:不要把「无亲和力」当负样本或 0 值;只用显式有值子集建模。
- 进阶方法:以
entry_pdb_id/配体 CCD 反查 BindingDB 与 ChEMBL 原始库补齐标签,并保留各自 license(CC BY 4.0 / CC BY-SA 4.0)。- SOTA 方法:亲和力任务改用 PDBbind/Binding MOAD 等专业库为主训练集,PLINDER 仅提供结构与口袋上下文;两个库的 Wiki 见本站对应条目。
参考:GitHub issue #94;README License 段
⚠️ 坑点 5:全量下载体积与内存陷阱(分类:工程陷阱)
问题:完整镜像约 1TB(systems 解压近 1TB、scores 约 500GB),annotation_table.parquet 全量载入约 24GB RAM;直接
gsutil -m cp -r整个 bucket 常见磁盘耗尽。
症状:下载中断后 gsutil 重试缓慢;pandas.read_parquet 全表 OOM;云盘 IO 打满。
解决:
- 简单方法:只下 index + splits(约 2GB)+ 按需解压系统分块 zip。
- 进阶方法:pyarrow/polars 列裁剪读取;
plinder_download交互确认时跳过 scores/。- SOTA 方法:gcsfuse 只读挂载 + 惰性 API;训练前把用到的系统预转 npz/tar 缓存,训练时零 parquet 依赖。
参考:官方下载文档;GitHub issue #20
⚠️ 坑点 6:划分文件定位困难、路径不直观(分类:工程陷阱)
问题:早期版本 PL50 划分 parquet 的文件名是内部配置哈希(如
splits_metaflow_config_batch_6_9_yaml_e9ca06e68...parquet),社区用户(包括 Patrick Bryant)公开反馈「很少人能解析」(issue #20)。
症状:在 splits/ 下找不到名为 plinder-pl50 的文件;v1 与 v2 划分路径风格不同。
解决:
- 简单方法:v2 使用
gs://plinder/2024-06/v2/splits/下官方 README 指明的 plinder-pl50 parquet。- 进阶方法:用
plinder.core.split.get_split()API 取划分,避免硬编码路径。- SOTA 方法:下载后立刻把 system_id→split 物化为自己项目的稳定 CSV,纳入版本控制,与官方版本号绑定。
参考:GitHub issue #20
⚠️ 坑点 7:旧版配体 SDF 键级与解析失败(分类:预处理陷阱)
问题:v1 及更早版本的 ligand SDF 存在键序/键级保存问题(v2 changelog 明确修复),部分分子 RDKit 标准化解析返回 None;共价配体标注在 v2 前也未显式逐键引用。
症状:Chem.SDMolSupplier产出 None;芳香环被判为凯库勒式错误;共价系统几何异常。
解决:
- 简单方法:升级到 2024-06/v2 数据 + 0.2.x 软件包。
- 进阶方法:对 v1 必须兼容时,
MolFromMolFile(sanitize=False)后手动AssignBondOrdersFromTemplate(用 CCD 理想坐标作模板)。- SOTA 方法:以 CCD 码回源 PDBe Chemical Component Dictionary 重建参考分子并做子结构匹配校正。
参考:README v2 Changelog
⚠️ 坑点 8:沿用时间/随机划分导致性能虚高(分类:数据泄漏)
问题:这是 PLINDER 要解决的领域级失败模式:在 TIME/随机划分下模型靠记忆相互作用得分——PDBbind 派生划分泄漏达 91%,时间划分把性能高估至少 2 倍;用随机 train 抽 val 还会让早停失效。
症状:模型在自家测试集上 Top-10 RMSD<2Å 成功率很高,换成 PL50 或新靶点立刻崩塌;训练日志 val 曲线过早平台。
解决:
- 简单方法:直接采用官方 plinder-pl50 parquet 划分训练与评测。
- 进阶方法:用
cluster/cluster_for_val_split按簇做 K 折与验证集选取;MMS 同系列强制同折。- SOTA 方法:同时报告 PL50 + novel stratification(novel ligand/pocket/protein/all)分层成绩,并用 scores/ 库量化训练-测试最近邻泄漏距离,作为附录证据。
参考:bioRxiv 论文 §3.2-3.3;官方博客
§6.6 数据增强
安全 ✅:
- 受体侧随机刚体旋转/平移(配合配体同步变换)——保持相互作用几何不变。
- 以 AF2 预测结构替换 holo 受体作为输入扰动(官方 links/ 直接提供),训练口袋适应。
- 蛋白侧选择性去侧链(保留主链)模拟低分辨率输入。
- 按 cluster 分层采样平衡域分布。
危险 ❌:
- 对配体做随机加噪后仍用原始 pose 作标签——扩散模型训练可用,但评测时绝不能与 PL50 测试集的加噪版本混算。
- 跨 cluster 复制系统(过采样罕见域时泄漏进验证折)。
- 用晶体接触中的伪配体做增强(v2 已注释 crystal contacts,须排除)。
- 在 MMS 系列内做 train/test 混合切分——同骨架不同取代基天然互为答案。
§6.7 模型推荐
| 模型 | 任务 | 是否官方适配 | 说明 |
|---|---|---|---|
| DiffDock / DiffDock-L | 刚体对接 | 论文重训基准 | PLINDER-TIME/ECOD/PL50 三划分对照的官方结果,见 §8.1 |
| AlphaFold 3 / RoseTTAFold-AA | 共折叠、全原子预测 | 测试集分层适配 | 用 novel-protein/ligand/pocket 分层检验泛化 |
| DynamicBind、NeuralPLexer | 柔性口袋对接 | 数据可直接喂入 | apo/AF2 输入场景的天然候选 |
| PoseBusters 校验 | 物理合理性 | 集成于 plinder.eval | 输出「leaderboard ready」分数 |
| GNINA / Vina(传统) | 打分对照 | 可用系统坐标 | 深度模型的强基线与 sanity check |
§6.8 硬件需求
| 场景 | 存储 | 内存 | GPU | 说明 |
|---|---|---|---|---|
| 探索/查询 | 2GB(index+splits) | 8GB | 无 | 惰性 API 按需拉取 |
| 中等训练(去冗余子集) | 约 300GB(不含 scores) | 32GB | 1× A100 40GB | 论文 DiffDock 重训配置量级 |
| 全量训练 | 约 1TB | 64GB+ | 4-8× A100 | 结构缓存建议 NVMe |
| 评测(plinder.eval) | +linked_structures 约 100GB | 32GB | 1× A100 | 论文评测用单卡推理 |
§6.9 评估指标代码
# 对接成功率:Top-K pose 中 RMSD < 2Å 的系统比例(PLINDER 论文口径)
import numpy as np
def success_rate(rmsds_by_system: dict[str, list[float]],
top_k: int = 10, threshold: float = 2.0) -> float:
"""rmsds_by_system: {system_id: [各 pose 的配体对称化 RMSD,按置信度降序]}"""
hits = 0
for rmsds in rmsds_by_system.values():
if any(r < threshold for r in rmsds[:top_k]):
hits += 1
return hits / max(len(rmsds_by_system), 1)
# 完整评测建议直接用官方 harness(14 种指标,含 lDDT-PLI/lDDT-LP/PoseBusters):
# plinder_eval --help # 对预测复合物批量计算指标
# plinder_stratify --help # 测试集 novel 分层统计
# plinder_plot --help # 出 leaderboard 风格图
评测口径注意:官方 harness 处理对称等价(配体自动对称、链映射),自算 RMSD 若不含对称校正会系统性低估成功率;论文同时报告 Top-1 与 Top-10,因重训使用未优化的预训练置信模型,仅报 Top-1 会低估(见论文 §3.3)。
分层评测骨架(对应官方 novel 分层思路,统计信息来自 splits + scores 输出):
import pandas as pd
def stratified_report(scores_df: pd.DataFrame, split_df: pd.DataFrame) -> pd.DataFrame:
"""按官方四层 novel 分层汇总 Top-10 成功率。
scores_df 需含 system_id 与 hit 列(该系统 Top-10 是否命中);
novel 归属列由官方 plinder_stratify 工具产出后并入。"""
df = scores_df.merge(split_df, on="system_id", how="inner")
layers = ["all", "novel_ligand", "novel_pocket", "novel_protein"]
rows = []
for layer in layers:
if layer == "all":
sub = df
else:
col = f"is_{layer}" if f"is_{layer}" in df.columns else layer
if col not in df.columns:
continue
sub = df[df[col]]
rows.append({
"layer": layer,
"n_systems": len(sub),
"top10_success": sub["hit"].mean() if len(sub) else float("nan"),
})
return pd.DataFrame(rows)
# 直接用官方工具产出分层归属与 leaderboard 图:
# plinder_stratify --help # 生成 is_novel_* 归属
# plinder_plot --help # 出论文风格对比图
评审口径建议:论文与挑战赛均以「分层 + Top-K」双维度报告;只报全集均值会掩盖 novel-protein 层的崩塌(DiffDock 在低泄漏划分下全集 21-26% 的 Top-10,其 novel 子集更低)。
§6.10 MLOps 笔记
- 版本三元组入库:任何实验记录必须含
PLINDER_RELEASE / PLINDER_ITERATION / plinder 包版本,三者任一变更都视为数据集变更。 - 数据卡字段:记录实际下载子目录清单与解压数量,半年度新版本发布后用 manifest diff 评估是否升级。
- 按簇监控:训练时记录每 epoch 的 cluster 覆盖率;验证指标按 novel 分层拆报,避免均值掩盖新颖靶点崩塌。
- 评测可复现:固定
plinder_eval版本与配置;预测文件、harness 输出、系统清单三件套归档。 - 上游同步:订阅 GitHub Releases 与 Discord 公告;BindingDB/ChEMBL 亲和力字段受上游许可约束,重发布衍生数据前核对条款。
§7 质量评估与局限性
§7.1 已知偏倚
| 偏倚类型 | 描述 | 严重程度 | 缓解措施 |
|---|---|---|---|
| 靶点家族偏倚 | 激酶、蛋白酶等经典药物靶点结构富集,冷门蛋白稀少(继承 PDB 分布) | 中 | 按域分层采样;对冷门域过采样但防跨折泄漏 |
| 配体化学偏倚 | 类药小分子为主,高质量过滤进一步偏向较小配体 | 中-高(测试集) | 用配体属性列分层报告;低质量结构类任务改用全量训练集 |
| 方法学偏倚 | 质量判据主要面向 X 射线,cryo-EM/NMR 质量利用不充分 | 中 | EM Q-score 纳入为官方后续方向;用户可自行过滤 |
| 时间偏倚 | 结构解析技术演进导致年代-质量相关 | 低-中 | PLINDER-TIME 划分可复现时间外推场景 |
| 注释偏倚 | PLIP 指纹对近同口袋相似性漏检(论文已知) | 中 | 相似度查询叠加 pocket_lddt 等多指标交叉验证 |
| 亲和力缺失偏倚 | 亲和力仅覆盖 BindingDB 匹配子集且有解析 bug | 高(亲和力任务) | 勿用 PLINDER 做主亲和力库(坑点 4) |
§7.2 标注质量
自动管线生成的注释可复现性强(代码开源、配置随 splits 发布),但质量取决于上游:PLIP 相互作用检测存在漏检(论文 §5 已承认并计划引入替代 profiler);v2 系统定义切换消除了对 PLIP 几何的依赖,使系统边界更稳;质量注释直接继承 RCSB 验证报告,可信度高。第三方亲和力注释受 BindingDB 解析 bug 影响(issue #94),使用前须独立抽查(建议与 PDBbind 同靶点系统交叉核对 ≥100 例)。
§7.3 泛化性
| 评测场景 | 失效风险 | 证据 |
|---|---|---|
| novel protein(全新折叠/域) | 高 | PL50 分层测试集专门构造;DiffDock 在低泄漏划分成功率降至 15-18% |
| novel pocket(已知蛋白新口袋) | 中-高 | 分层测试集 pocket 层覆盖;apo 任务依赖 linked structures 覆盖率 |
| novel ligand(新化学型) | 中 | 分层测试集 ligand 层;相似配体跨侧存在属设计行为 |
| apo / AF2 受体输入 | 高(口袋构象变化) | 论文 Figure 9 展示 holo-apo-AF2 构象差异;linked 子集训练可缓解 |
| cryo-EM/NMR 结构 | 中 | 质量判据以 X-ray 为主,EM 系统评测须谨慎 |
§7.4 伦理
数据全部来自公开沉积的 PDB 实验结构与公开数据库注释,无人类受试者、无个人身份信息、无临床隐私数据,不涉及知情同意问题。需注意的伦理点:① 靶点-疾病关联可能被滥用做选择性生物武器设计类推——本资源与 PDB 同等公开,遵循社区常规使用规范;② Apache 2.0 允许商用,但下游若声称「AI 设计药物」,须自行承担实验验证与监管义务。
§7.5 公平性
结构生物学的全球不均衡会传导进数据集:资源充足地区主导 PDB 沉积,被忽略的热带病、被忽视疾病靶点代表性低。使用者在报告模型能力时应避免「平均指标」掩盖家族间差异,建议按靶点家族与配体类型分层报告,并对训练分布之外的域明确声明外推限制。
§7.6 数据漂移
半年度管线更新意味着「数据集本身是流动的」:PDB 每周新增结构、聚类每半年重跑,测试集「新颖性」随时间衰减(今天的 novel 域可能是下版本的 train)。工程对策:结果绑定版本三元组;升级前用 manifest diff 评估系统增量;跨版本比较一律通过 system_id 前缀(PDB 码)与相似度库对齐,而不是假设同名系统等价。
§7.7 DAIMS 24 项质量评估
| # | 检查项 | 状态 | 说明 |
|---|---|---|---|
| 1 | 宽格式 | ✅ | annotation_table.parquet 单表宽格式(约 130 万行 × 700+ 列) |
| 2 | 唯一标识 | ✅ | system_id 全局唯一,编码 pdb/assembly/chains/ligands |
| 3 | 特殊字符 | ⚠️ | system_id 双/单下划线语义不同(分段 vs 连接),链码含点号,需专用解析器 |
| 4 | 重复行 | ✅ | 主键约束下无重复;跨版本同名系统内容可能不同(须锁版本) |
| 5 | 缺失编码 | ✅ | 空值语义清晰(无 apo 链接/域未注释/无匹配亲和力) |
| 6 | 标签标识 | ⚠️ | 划分标签完备;但亲和力标签存在已知解析 bug 且覆盖率有限 |
| 7 | 罕见类分组 | ✅ | novel ligand/pocket/protein 分层 + cluster 列支持罕见域分组评估 |
| 8 | 偏倚评估 | ✅ | 论文 §5 与博客系统披露家族/化学型/方法学偏倚 |
| 9 | 数据字典 | ✅ | 官方文档与 Schema 说明文档 + 配置 YAML 随包发布 |
| 10 | 信息性缺失解释 | ⚠️ | 多数缺失语义明确,但 entry_release_date 错误曾造成非信息性错误缺失 |
| 11 | 设备记录 | ⚠️ | 继承 PDB 方法学元数据;无统一「采集设备」字段,EM 质量字段未全量纳入 |
| 12 | 共线性 | ✅ | 结构学习任务不适用回归共线性假设;相似度特征族之间相关性已在论文中交叉验证 |
| 13 | 编码映射 | ✅ | CCD 码直通 PDBe 字典;域注释挂 SCOP/ECOD/Pfam 三体系 |
| 14 | 时间戳处理 | ❌ | entry_release_date 已知错误(官方以 query_index/dates.csv 修补),须外部校准 |
| 15 | 划分建议 | ✅ | 官方 PL50/ECOD/TIME 三划分 + 可调配置,社区少见的完备度 |
| 16 | 泄漏讨论 | ✅ | 论文核心贡献:量化泄漏 4% vs 91%,提供 200 亿分数库供审计 |
| 17 | 标签分布 | ✅ | 配体化学型、质量层级、MMS 分布均有官方统计 |
| 18 | 测量偏倚 | ✅ | 结构质量逐配体/残基标注;测试集质量过滤的代价已被论文显式量化 |
| 19 | 外部验证建议 | ✅ | PoseBusters/DockGen/CASP 口径衔接与重叠检查路径明确 |
| 20 | 版本记录 | ✅ | 双控制版本 + Changelog + manifest,软件 semver 独立演进 |
| 21 | 预处理脚本 | ✅ | plinder.data 全管线开源(Apache 2.0),端到端可再生 |
| 22 | 合规要求 | ✅ | Apache 2.0 为主 + 第三方条款显式分区(BindingDB CC BY 4.0、ChEMBL CC BY-SA 4.0) |
| 23 | 多模态对齐 | ⚠️ | holo↔apo↔AF2 链接完备但非全量覆盖;链接相似度表(links/)口径需随版本核对 |
| 24 | 去标识化 | ✅ | 无人类数据,PDB 公开结构,无需去标识化 |
DAIMS 评分:20.5 / 24(✅×18 + ⚠️×5 + ❌×1;⚠️ 计 0.5 分)
评分解读:20.5/24 属于结构生物学数据集的第一梯队。扣分集中在两类:一是工程债(时间戳错误 ❌、特殊字符解析 ⚠️、多模态链接覆盖 ⚠️),二是标签层(亲和力标注受上游 bug 与覆盖率限制 ⚠️、信息性缺失解释 ⚠️、设备/方法学字段 ⚠️)。这些扣分项全部有官方披露与缓解路径——这与「暗坑」有本质区别:PLINDER 的已知问题都写在 README Known bugs 与论文 limitations 里。
对你意味着什么:① 把它当对接/共折叠的结构基准用,放心度极高——直接用官方 PL50 划分与 eval harness,可跳过 90% 的自建评测工作;② 把它当亲和力库用则不合格——亲和力任务请转 PDBbind/Binding MOAD,PLINDER 只提供结构上下文;③ 工程上必须做三件事:锁版本三元组、用 query_index 修补日期、写一个 system_id 解析器并放进公共工具库;④ 若任务涉及核酸受体或依赖apo结构,先跑一遍 §6.3 的加载校验统计坏样本率再定管线。
§7.8 外部验证矩阵
| 外部数据集/场景 | 来源机构 | 评估任务 | 性能指标 | 相对内部变化 | 关键发现 |
|---|---|---|---|---|---|
| PoseBusters 基准集 | 牛津大学(Buttenschoen 等) | 刚体对接泛化 | Top-1 成功率 | 38%(PDBbind 训练)→ 47.8%(PLINDER-TIME 训练) | 仅扩数据即可 +9.8pp;但该集与 PDBbind 存在同蛋白同配体重叠 |
| PoseBusters 基准集(低泄漏对照) | 同上 | 防泄漏泛化 | Top-1 成功率 | PL50/ECOD 训练模型降至 15-18% | 泄漏去除后真实泛化水平暴露,性能与泄漏率近线性 |
| PLINDER 内部测试集(质量消融) | PLINDER 项目组 | 测试集质量影响 | Top-10 成功率 | 加入低质量系统后 TIME 45.2%→29.2%、ECOD 19%→14.7% | 低质量 ground truth 会「冤枉」模型 |
| MLSB 2024 @ NeurIPS 挑战赛 | MLSB 组委会 | 社区统一评测 | 官方 harness 指标 | 以 v2 划分为准 | PLINDER 成为社区官方标准(mlsb.io) |
| NVIDIA Complexa 训练语料 | NVIDIA | 配体-靶点复合物生成 | 模型卡披露 | 与 AFDB/PDB 语料混训 | 产业级生成模型采用 PLINDER(NGC) |
上表数字均出自 PLINDER 论文/官方渠道与各机构公开发布;不同行测试集与划分不同,数值不可横向直接比较。
§8 基准性能与生态
§8.1 排行榜
PLINDER 论文以重训 DiffDock 建立了首个同口径对照(全部为 Top-10 pose 中 RMSD<2Å 成功率,除注明 Top-1):
| 排名 | 模型(训练划分) | 性能 | 年份 | 关键技术 | 完整引用 | 代码 |
|---|---|---|---|---|---|---|
| 1 | DiffDock(PLINDER-TIME,高质量测试) | 58.2% Top-10 / 47.8% Top-1(PoseBusters 集) | 2024 | 扩大数据规模 + 扩散生成对接 | Corso et al., 2024, DiffDock-L(ICLR 2024 口径);Durairaj et al., 2024, bioRxiv. doi:10.1101/2024.07.17.603955 | github.com/gcorso/DiffDock |
| 2 | DiffDock(PDBBind 训练,既有基线) | 38% Top-1(PoseBusters 集) | 2023-2024 | 扩散生成 + 置信模型 | Corso, Stärk, Jing, Barzilay, Jaakkola, 2023, NeurIPS. DiffDock | 同上 |
| 3 | DiffDock(PLINDER-ECOD/PL50 低泄漏划分) | 21-26% Top-10 / 15-18% Top-1(对应测试集) | 2024 | 防泄漏训练-测试协议 | Durairaj et al., 2024, bioRxiv. doi:10.1101/2024.07.17.603955 | plinder-org/plinder |
⚠️ 数值不可直接比较:三行使用不同测试集(PoseBusters 集 vs PLINDER 各划分测试集)、不同质量过滤与不同泄漏水平;此表的价值正是展示「划分协议」本身对成绩的影响幅度(可达 2-3 倍),而非模型优劣。论文同时声明重训使用未优化置信模型,Top-1 系统性偏低。截至 2026-09,官方 leaderboard 尚未随论文同步上线(官方列入后续计划),社区成绩请以 MLSB 挑战赛渠道为准。
§8.2 SOTA 总结与选型建议
| 你的目标 | 推荐路径 | 理由 |
|---|---|---|
| 复现/对照论文数字 | 重训 DiffDock 三划分(TIME/ECOD/PL50) | 唯一拥有全套官方对照数字的模型组合 |
| 发布新对接方法 | PL50 主划分 + novel 四层分层 + PoseBusters 集附录 | 防泄漏口径为主成绩,兼容历史文献对比 |
| 快速强基线 | GNINA / Vina 传统对接 | 无训练成本,可暴露深度模型的回归退化 |
| 评测共折叠/全原子模型 | novel-protein 分层自建评测 | 官方分层测试集即为此设计 |
| 产业虚拟筛选 | PLINDER-TIME 训练 + 泄漏审计 | 规模优先,泄漏用 scores/ 库量化后向业务说明 |
| 亲和力方向 | 换用 PDBbind/Binding MOAD 主训练 | PLINDER 亲和力标注受限(坑点 4) |
总体判断:截至 2026-09,PLINDER 生态还没有「官方常驻排行榜」(官方已列入计划,社区成绩暂以 MLSB 挑战赛渠道为准),因此论文内 DiffDock 对照组是目前唯一可直接引用的同口径数字。
§8.3 评测协议
官方 harness(plinder.eval)约定:输入为预测复合物(含蛋白+配体);输出 14 种指标——配体级(对称化 RMSD、lDDT-PLI、PoseBusters 物理合理性)、口袋级(lDDT-LP)、蛋白级(lDDT、寡聚体评分);自动处理链映射与配体对称;输出「leaderboard ready」表格。论文推理协议:单卡 A100、每系统 10 个 pose、报告 Top-1 与 Top-10。测试集按 novel ligand/pocket/protein/all 分层,novel 定义由 scores/ 相似度库阈值给出,可复算。
§8.4 相关数据集
| 数据集 | 与 PLINDER 关系 | 互补点 |
|---|---|---|
| PDBbind v2020 | 论文直接对比对象 | 实验亲和力标注(Ki/Kd/IC50) |
| Binding MOAD | 同类亲和力库(已日落) | 文献挖掘亲和力与家族聚类 |
| CrossDocked2020 | 交叉对接 pose 语料 | 大规模柔性受体 pose 变体 |
| DockGen | 泛化测试集对照 | 手工精选的新颖靶点集 |
| BioLip2 | 规模参照 | 功能注释导向的相互作用库 |
| PoseBusters | 评测集(非训练集) | 物理合理性校验工具与基准 |
§8.5 关键论文 Top 10
- Durairaj, J. et al., 2024, bioRxiv. doi:10.1101/2024.07.17.603955 — PLINDER 主论文:数据集、划分算法与 DiffDock 重训证据。
- Durairaj, J. et al., 2024, ICML 2024 Workshop ML4LMS. — 会议版,划分协议精炼表述。
- Corso, G., Stärk, H., Jing, B., Barzilay, R., Jaakkola, T., 2023, NeurIPS. — DiffDock:扩散生成对接,PLINDER 重训的载体模型。
- Corso, G. et al., 2024, ICLR. — DiffDock-L/扩展版,PoseBusters 集基线 38% Top-1 出处。
- Buttenschoen, M., Morris, G.M., Deane, C.M., 2024, PoseBusters. — 物理合理性基准;暴露时间划分集与训练集重叠问题。
- Krishna, R. et al., 2024, Nature. — AlphaFold 3:全原子复合物预测,共折叠评测的对象模型。
- Krishnakumar, A. et al., 2024, Science. — RoseTTAFold All-Atom:蛋白-配体统一建模的另一路线。
- Qiao, Z. et al., 2024, Nature Communications. — DynamicBind:柔性口袋对接,apo 场景代表方法。
- Wang, R., Fang, X., Lu, Y., Wang, S., 2005, Nucleic Acids Research. — PDBbind:被对比的经典亲和力库(泄漏问题的传统出处)。
- Berman, H.M. et al., 2000, Nucleic Acids Research. — PDB:PLINDER 的唯一上游结构来源。
§8.6 社区活跃度
- GitHub:plinder-org/plinder,约 305 stars(deps.dev,截至 2026-08-11),61+ commits、活跃 issue 区(61 个 issue 编号已见修复闭环);2026-02 仍有依赖升级提交。
- 社区渠道:P(L)INDER user group Discord;MLSB workshop repo
moving_beyond_memorisation。 - 采纳度:2024 MLSB @ NeurIPS 官方数据集;NVIDIA Complexa 产业模型训练语料;UMass 等高校 HPC 集群预装镜像。
- 引用轨迹:Google Scholar 84+(截至 2026-09),2025 年起稳定增长(2024:5 → 2025:53 → 2026:26)。
§8.7 生态快照
| 资源 | 类型 | 链接 | Star/热度(截至 2026-09) | 推荐理由 |
|---|---|---|---|---|
| plinder-org/plinder | 代码+数据入口 | GitHub | 约 305 | 唯一官方仓库:管线、API、issue 追踪 |
| plinder.sh | 官网/博客 | 官网 | — | 方法论长文(background 博客)必读 |
| 官方文档 | 文档 | docs | — | dataset tutorial 含目录结构与下载全流程 |
| gs://plinder | 数据 bucket | GCS | — | 全版本数据,公开无需注册 |
| PyPI/Bioconda | 包管理 | PyPI | 0.2.26 | 惰性下载与查询 API |
| moving_beyond_memorisation | 教程 repo | GitHub | — | MLSB 官方实践技巧合集 |
| PoseBusters | 评测工具 | GitHub | 千级 | 与 plinder.eval 集成的合理性校验 |
| DiffDock | 基准模型 | GitHub | 千级 | 官方重训对象,复现入口 |
| Discord 用户组 | 社区 | README 内邀请链接 | — | 版本发布与坑点第一时间通知 |
§9 相关资源与引用
§9.1 官方资源清单
- 主论文(bioRxiv 全文):doi.org/10.1101/2024.07.17.603955
- 会议版(ICML 2024 Workshop ML4LMS):mlanthology.org
- GitHub 仓库(含 CITATION.cff):github.com/plinder-org/plinder
- 数据下载教程:plinder-org.github.io/plinder/tutorial/dataset.html
- 一键下载与离线模式:plinder-org.github.io/plinder/examples/1_download.html
- 方法论博客(Five dimensions):plinder.sh/blog/background
- MLSB 挑战赛:mlsb.io;实践 repo:moving_beyond_memorisation
- Python 包:PyPI plinder / Bioconda plinder
- 已知 bug 追踪:README Known bugs 段 + issues #61(核酸受体)、#94(affinity 解析)、#20(数据可及性)
§9.2 BibTeX 完整引用
@article{durairaj2024plinder,
title = {PLINDER: The protein-ligand interactions dataset and evaluation resource},
author = {Durairaj, Janani and Adeshina, Yusuf and Cao, Zhonglin and
Zhang, Xuejin and Oleinikovas, Vladas and Duignan, Thomas and
McClure, Zachary and Robin, Xavier and Studer, Gabriel and
Kovtun, Daniel and Rossi, Emanuele and Zhou, Guoqing and
Veccham, Srimukh Prasad and Isert, Clemens and Peng, Yuxing and
Sundareson, Prabindh and Akdel, Mehmet and Corso, Gabriele and
Stärk, Hannes and Tauriello, Gerardo and Carpenter, Zachary Wayne and
Bronstein, Michael M. and Kucukbenir, Emine and Schwede, Torsten and
Naef, Luca},
journal = {bioRxiv},
year = {2024},
doi = {10.1101/2024.07.17.603955},
url = {https://doi.org/10.1101/2024.07.17.603955}
}
@inproceedings{durairaj2024plinder_icmlw,
title = {{PLINDER}: The Protein-Ligand Interactions Dataset and Evaluation Resource},
author = {Durairaj, Janani and Adeshina, Yusuf and Cao, Zhonglin and
Zhang, Xuejin and Oleinikovas, Vladas and Duignan, Thomas and
McClure, Zachary and Robin, Xavier and Rossi, Emanuele and
Zhou, Guoqing and Veccham, Srimukh Prasad and Isert, Clemens and
Peng, Yuxing and Sundareson, Prabindh and Akdel, Mehmet and
Corso, Gabriele and Stark, Hannes and Carpenter, Zachary Wayne and
Bronstein, Michael M. and Kucukbenir, Emine and Schwede, Torsten and
Naef, Luca},
booktitle = {ICML 2024 Workshops: ML4LMS},
year = {2024},
url = {https://mlanthology.org/icmlw/2024/durairaj2024icmlw-plinder/}
}
@software{plinder_software,
title = {plinder: The Protein Ligand INteractions Dataset and Evaluation Resource},
author = {{PLINDER development team}},
url = {https://github.com/plinder-org/plinder},
note = {PyPI/Bioconda package, Apache-2.0; dataset version 2024-06/v2},
year = {2024}
}
§9.3 引用指南
- 引用数据集本体:用
durairaj2024plinder(bioRxiv 主论文)。 - 引用划分协议/评测方法:可同时给
durairaj2024plinder_icmlw(会议版表述更精炼)。 - 引用软件/API:用
plinder_software并注明数据版本三元组(release/iteration/包版本)。 - 引用具体数字:注明口径——449,383 出自论文摘要(2024-04/v1),>400k 为 README 当前口径;泄漏 4%/91% 分别对应 PL50 与 PDBbind 派生划分(PLI 共享 ≥50% 口径)。
§10 AI 使用声明卡
§10.1 AI 模型列表
| 环节 | 模型/工具 | 版本 | 用途 |
|---|---|---|---|
| 内容起草 | 大语言模型(CodeBuddy,fast-model) | 2026-09 | 按本 Wiki 规范生成初稿 |
| 事实核查 | WebSearch / WebFetch | 2026-09 | 官方 README、论文、文档、issue 交叉核验 |
| 代码验证 | Python 3.11 静态检查 | 2026-09 | §6 代码块语法与结构核查 |
§10.2 AI 参与范围
AI 完成初稿撰写、结构组织与代码示例编写;关键数字(系统数、泄漏率、DiffDock 成绩、版本号、许可证、bug 清单)全部经由对官方渠道(GitHub README、bioRxiv 论文、官方文档、GitHub issues、bioconda/PyPI、Google Scholar)的检索交叉核验;最终内容由千方病案医学编辑部人工审核后发布。
§10.3 输入来源列表
- Durairaj, J. et al., 2024, bioRxiv. doi:10.1101/2024.07.17.603955(主论文:规模、划分、DiffDock 实验、limitations)
- Durairaj, J. et al., 2024, ICML 2024 Workshop ML4LMS.(会议版摘要与引用格式)
- PLINDER GitHub README(plinder-org/plinder):版本机制、known bugs、changelog、license、下载方式
- PLINDER 官方文档 dataset tutorial / download 示例:目录结构、系统 ID、体积、tutorial 迭代
- PLINDER 官方博客 background(plinder.sh,2024-07):五维改进、泄漏对比、质量过滤、DiffDock 四假设
- GitHub issue #20:数据可及性反馈、systems 压缩 >140GB/解压近 1TB 官方答复、PL50 parquet 路径
- GitHub issue #61:核酸受体保存问题;issue #94:BindingDB 解析 bug(README Known bugs 交叉引用)
- DeepWiki(plinder-org/plinder):子目录体积(scores 约 500GB 等)、annotation_table 内存(24GB)、API/CLI 模块清单
- PyPI plinder 0.2.15/0.2.18 页面:版本历史、dates.csv 修补方案、依赖与 license 元数据
- Bioconda plinder 页面:0.2.26 版本、MIT AND Apache-2.0 包许可、最后更新 2026-02-19
- Google Scholar 引用页:引用数 84+(截至 2026-09)与年度分布
- MLSB(mlsb.io)与 moving_beyond_memorisation repo:2024 NeurIPS 挑战赛采用 PLINDER
- NVIDIA NGC Proteina-Complexa 模型卡:产业训练语料采用 PLINDER
- Corso et al., 2023, NeurIPS / 2024, ICLR:DiffDock 与 PoseBusters 集基线 38% Top-1
- UMass Unity HPC 文档:PLINDER 镜像部署与完整引用格式(BibTeX 源)
§10.4 人工校验表
| 内容模块 | 审核者 | 审核方式 | 审核状态 |
|---|---|---|---|
| frontmatter 与 schema_org | 千方病案医学编辑部 | 对照 Schema v3.9 规则逐字段核验 | ✅ 已通过/已验证 |
| §1 概览与对比表 | 千方病案医学编辑部 | 与论文摘要、官方博客逐数字核对 | ✅ 已通过/已验证 |
| §2 医学背景(靶点-疾病映射) | 千方病案医学编辑部 | ICD-11/SNOMED 码独立复核,示例性质声明检查 | ✅ 已通过/已验证 |
| §3-§4 规格与数据结构 | 千方病案医学编辑部 | 与官方 dataset tutorial、DeepWiki 逐目录核对 | ✅ 已通过/已验证 |
| §6 代码与坑点 | 千方病案医学编辑部 | 代码静态检查;坑点与 issue/README known bugs 对账 | ✅ 已通过/已验证 |
| §7 DAIMS 与偏倚 | 千方病案医学编辑部 | 24 项逐条溯源论文/官方披露 | ✅ 已通过/已验证 |
| §8 基准数字 | 千方病案医学编辑部 | 论文 Figure 2/Table A12 与博客数字复核 | ✅ 已通过/已验证 |
| §9-§10 引用与声明 | 千方病案医学编辑部 | BibTeX 与 CITATION.cff/作者列表核对 | ✅ 已通过/已验证 |
§10.5 AI 生成章节标注
本页面全部章节由 AI 起草(见 §10.1-10.2),其中以下内容为 AI 综合公开资料后的组织性创作,人工审核时重点校验:§1.2 战略价值的分析性论述、§2.5 临床与科研价值、§5.4-5.5 使用建议、§6.6 增强策略与 §6.10 MLOps 实践(基于官方文档精神的工程化展开)、§7.7 DAIMS 评分与解读(基于官方披露问题的量化评估)。
§10.6 最后人工审核日期
2026-09-05(与 §0.3 一致)。
页面状态:published(全部内容已完成审核并发布)
