NCI-60 — 60 系肿瘤药筛金标准 AI-Ready Wikipedia | 千方病案医数集

60 个人类肿瘤细胞系 × 10 万+ 化合物的 36 年抗癌药筛全景

来源 美国国家癌症研究所发展治疗学计划(NCI/DTP) url: https://dctd.cancer.gov/drug-discovery-development/assays/high-throughput-screening-services/nci60发布时间: 2026-09-08最后更新: 2026-09-08 阅读 2

信息速览

数据集名称NCI-60 — 60 系肿瘤药筛金标准 AI-Ready Wikipedia | 千方病案医数集
数据类型60 条人类肿瘤细胞系,10 万+ 化合物筛选史,约 511 MB 压缩下载包,GI50/TGI/LC50 五剂量终点,免费开放下载
规模60 条细胞系(非患者数据,9 大癌种组织来源)
接入方式美国国家癌症研究所发展治疗学计划(NCI/DTP) url: https://dctd.cancer.gov/drug-discovery-development/assays/high-throughput-screening-services/nci60
AI 就绪度

数据集封面

NCI-60 — 60 系肿瘤药筛金标准 AI-Ready Wikipedia

INFOBOX

字段 内容
数据集名称 NCI-60 人类肿瘤细胞系药筛面板
英文全称 NCI-60 Human Tumor Cell Line Screen(NCI60 Anticancer Drug Screen)
别名/简称 NCI60、NCI-60 DTP Screen、DTP Human Tumor Cell Line Screen、NCI-60 HTS384 Screen
疾病分类(ICD-11) 2A00-2F9Z(恶性肿瘤 — 覆盖白血病/NSCLC/结直肠癌/CNS 肿瘤/黑色素瘤/卵巢癌/肾癌/前列腺癌/乳腺癌 9 大类)
SNOMED CT 363346000(malignant neoplastic disease,覆盖 9 类组织学亚群)
数据模态 细胞生长抑制剂量响应谱(GI50/TGI/LC50 五剂量终点 + 浓度-响应曲线)+ 化合物 NSC 标识与结构索引
AI 任务类型 药敏回归预测、QSAR/深度学习效力建模、作用机制(MOA)模式推断、药物重定位、跨组学生物标志物发现
样本总数 60 条现行细胞系(另含 11 条历史细胞系数据);历史筛选 10 万+ 化合物,公开药敏数据约 4.5 万化合物
数据大小 压缩下载包约 511 MB(解压约 4.3 GB,2025-10 发布版)
数据格式 ZIP 内制表符分隔文本(DOSERESP/GI50/TGI/LC50/IC50/ONECONC 六类文件)
许可证 公有领域(美国联邦政府作品,NCI/DTP 免费开放获取,发表需致谢)
访问级别 开放(无需注册,直接下载)
DUO 标签 NRES(无限制使用)
语言 英文
首发日期 1990 年(面板投入运营)
最后更新 2025-10(DTP 数据发布);CellMiner 2025.3(2025-09-21)
发布机构 美国国家癌症研究所(NCI)发展治疗学计划(DTP/DCTD)
官方主页 https://dctd.cancer.gov/drug-discovery-development/assays/high-throughput-screening-services/nci60
下载地址 https://wiki.nci.nih.gov/x/EoD-O
DOI 10.1038/nrc1951(Shoemaker 2006 综述,面板标准引用文献)
引用次数 约 2,400+(Semantic Scholar,截至 2026-09)
AI 就绪度评分 ⭐⭐⭐(3/5)— 数据免费开放、字段含义明确、可一键下载;但无官方训练/测试划分、无 Python 预处理脚本,截尾值与多实验聚合需自行实现(扣分项)
页面状态 published

§0 E-E-A-T 与审核声明

  • 医学审核者:[千方病案医学编辑部] 交叉审核:§2 医学背景(9 大癌种组织学映射与 ICD-11/SNOMED CT 编码)、§7 偏倚分析(细胞系身份误鉴定、生长速率伪影与单中心偏倚)。
  • 数据工程审核者:[千方病案医学编辑部交叉审核] 医疗 AI 数据工程师,审核范围:§4 DAIMS 数据字典、§5 数据划分策略、§6 预处理 Pipeline 和坑点。
  • 审核日期:2026-09-05

医疗免责声明:本页面提供的医学信息仅供研究和教育目的,不构成医疗建议、诊断或治疗方案。数据集的医学描述基于公开发表的文献,未经逐一临床验证。任何基于该数据集训练的 AI 模型在应用于临床决策前,必须经过独立的临床验证和监管审批。

技术免责声明:本页面的代码示例、预处理建议和基准性能数据基于公开资料整理,不保证在特定环境下的准确性和适用性。使用者应自行验证代码安全性和数据预处理流程的正确性。千方病案医数集不对因使用本页面信息而导致的任何直接或间接损失承担责任。

数据使用合规:使用本页面描述的数据集前,请务必阅读并遵守数据集原始许可协议。NCI-60 数据由美国联邦政府产出、免费开放下载,发表成果时须按 NCI/DTP 要求在致谢中说明数据来源并列出相应 NSC 编号。DUO 标签仅供参考,具体使用限制以数据集官方协议为准。


§1 数据集概览

§1.0 📌 30 秒速览

这是什么? NCI-60 是美国国家癌症研究所(NCI)从 20 世纪 80 年代末开始建设、1990 年正式投入运营的抗癌药物体外筛选面板。它把 60 条来自 9 大人类癌种(白血病、非小细胞肺癌、结肠癌、中枢神经系统肿瘤、黑色素瘤、卵巢癌、肾癌、前列腺癌、乳腺癌)的肿瘤细胞系铺在微孔板里,让每一个候选化合物依次「过关」:先用单一浓度粗筛,再对有活性的化合物做五个剂量的完整剂量-响应滴定,读出每条细胞系的生长抑制终点。

为什么重要? 在它出现之前,抗癌药物初筛主要依赖移植性动物肿瘤,通量低、机制信息少。NCI-60 用「同一化合物在 60 条细胞系上的活性指纹」替代了盲目筛选:活性模式相似的化合物往往机制相近,由此催生了著名的 COMPARE 模式比对算法,并把曲贝替定(Yondelis)等多个化合物推向临床。36 年来累计筛选 10 万+ 化合物,公开约 4.5 万个化合物的定量药敏数据,是定量构效关系(QSAR)与药敏预测领域引用最多的基准数据集之一。

我能用它做什么? 训练分子效力预测模型(回归目标为 −log10GI50);做化学信息学基准评测与跨库(CCLE/GDSC/CTRP)对比;结合 CellMiner 提供的基因组/表观遗传/蛋白数据做药敏-分子特征关联;用活性谱聚类做机制推断与老药新用。

§1.1 摘要

NCI-60 由 NCI 发展治疗学计划(DTP)在 Frederick 的筛选技术分部单中心运营。经典平台使用 96 孔板与磺基罗丹明 B(SRB)蛋白染色吸光度读数:细胞接种 24 小时后加药,暴露 48 小时后固定染色;先以 10 µM 单剂量初筛(ONECONC),活性化合物进入五剂量确认实验(约 0.01–100 µM 对数梯度),对每条细胞系内插三个终点——GI50(50% 净生长抑制浓度)、TGI(总生长抑制浓度,细胞静止效应)与 LC50(净 50% 细胞致死浓度)。2020 年代起平台现代化为 HTS384:384 孔板、CellTiter-Glo ATP 发光读数、72 小时暴露,通量与数据精度提升,且与历史数据保持可比。数据以化合物 NSC 编号与实验 EXPID 组织,2025-10 发布版按单实验、四位小数报告全部浓度-响应与终点值;配套工具包括 COMPARE 模式比对与 CellMiner 分子-药理整合数据库。

§1.2 战略价值

维度一:药物发现 AI 的「长时程」基准。 主流药敏数据集(CCLE、GDSC、CTRP、PRISM)的观测窗口普遍只有几年,而 NCI-60 的时间跨度超过三十年,横跨 96 孔 SRB 与 384 孔 CTG 两代检测技术。这使它成为研究检测平台迁移、批次效应与数据漂移的几乎唯一选择——任何「新平台数据能否与旧平台对齐」的方法学问题,都可以在 NCI-60 上找到真实答案。同时,10 万+ 的历史筛选总量让「公开 4.5 万化合物」之外的阴性空间(从未进入五剂量确认的化合物)成为天然的负样本池。

维度二:分子特征最厚的细胞系面板。 NCI-60 可能是世界上被分子表征得最彻底的细胞系集合:基因表达、SNP、拷贝数、甲基化、蛋白(RPPA)、酶活性等多层数据全部公开,并由 CellMiner 提供统一查询与下载。对 AI 研究者而言,这意味着 60 这个小样本量被极高的特征密度补偿——多模态融合、可解释性分析(哪些分子特征决定某化合物对黑色素瘤亚群的选择性)都能在同一批细胞上闭环。COMPARE 算法三十年的使用史,也为「相关谱 → 机制假设」这一范式提供了可复现的教科书案例。

维度三:方法学教学的「活教材」。 对刚进入计算药理/化学信息学的团队,NCI-60 是上手成本最低的真实数据集:无需申请、无需脱敏处理、数据量在笔记本内存内、官方字段文档完备。更重要的是,它几乎浓缩了这个领域所有的经典陷阱——截尾值、单位异构、重复实验、细胞系身份错误、平台迁移——每一个坑都有官方文档背书且可在数据中亲手复现。把 §6.5 的 8 个坑点当作课程练习跑一遍,等于用真实数据完成了一次药物发现数据工程的全流程训练。

§1.3 同类数据集横向对比

数据集 细胞系数 化合物数 模态/读数 标注类型 与 NCI-60 的差异化
NCI-60 60(9 癌种) 筛选 10 万+,公开约 4.5 万 96 孔 SRB → 384 孔 CTG,GI50/TGI/LC50 定量剂量响应 + 三终点 时间跨度最长(1990 至今),三终点区分抑增殖与杀伤
CCLE 1,036 24 药 CellTiter-Glo,IC50/EC50 定量剂量响应 细胞系多 17 倍但药物极少,配套全组学
GDSC 714 142/138 SRB/荧光,IC50 定量剂量响应 药物覆盖中等,焦点为基因突变-药敏关联
CTRP v2 242 354 CTG,AUC/EC50 定量剂量响应 药物较多、细胞系居中,Broad 平台
PRISM(LINCS) 356 5,943 分子条码混合读数 定量活性 药物规模最大,采用池化条码技术

§1.4 版本时间轴

时间 版本/事件 关键变化
1988-1989 方法奠基 Alley 等发表微培养四氮唑(XTT)可行性研究;Paull 等提出 mean graph 与 COMPARE 算法
1990 面板投入运营 60 条细胞系固定为标准面板,SRB 96 孔法成为主流流程
1992-12 面板调整 MDA-MB-435 加入(后被证实为黑色素瘤来源)
2006-10 综述定标 Shoemaker 在 Nat Rev Cancer 系统总结面板方法与产出,成为标准引用
2009-06 CellMiner 上线 Shankavaram 等发布首个 NCI-60 多分子层级整合数据库
2020s HTS384 现代化 384 孔 + CellTiter-Glo + 72 小时暴露,经典 96 孔 SRB 平台退役归档
2025-10 数据发布改革 改为按单实验 EXPID 报告、四位小数,DOSERESP 全量浓度-响应开放
2025-09-21 CellMiner 2025.3 Hg19 基因版本,QC 通过的 FDA 药物 326 个、临床试验药物 563 个、HTS384 化合物 863 个

§1.5 典型应用场景

  1. 效力预测模型( potency regression):以 −log10GI50 为回归目标,训练 GNN/ChemProp 类模型预测新化合物对各癌种的抑制效力,并用时间切分评估泛化。
  2. 作用机制推断:计算候选化合物 60 维活性谱与已知药物谱的 Pearson 相关,复现 COMPARE 工作流,为天然产物或片段分子给出机制假设。
  3. 药敏生物标志物发现:将 GI50 谱与 CellMiner 基因表达/甲基化/突变数据做关联,发现如 MDR1 与 NCI/ADR-RES 耐药谱之类的分子-表型映射。
  4. 跨面板迁移评测:与 CCLE/GDSC 的重叠化合物(如紫杉醇、阿霉素)做交叉验证,检验「实验室 A 的药敏谱能否预测实验室 B」。
  5. 老药新用与选择性骨架优化:在 9 癌种谱中寻找组织选择性窗口(如对肾癌敏感、对正常生长无影响的骨架),指导类似物合成优先级。

§2 医学背景

§2.1 疾病标签与 ICD-11/SNOMED CT 映射

NCI-60 覆盖 9 大组织来源,每条细胞系对应一个 ICD-11 恶性肿瘤章节内的类别。下表给出亚面板级映射(细胞系级组织学细分类似,见 CellMiner Cell Line Metadata):

亚面板标签 ICD-11 编码 SNOMED CT 码 术语
全面板(恶性肿瘤总概念) 2A00-2F9Z 363346000 malignant neoplastic disease
Leukemia(白血病) 2A60-2A6Z 93143009 leukemia
Non-Small Cell Lung(非小细胞肺癌) 2C25 363358000 malignant tumor of lung
Colon(结直肠癌) 2B5B 363406005 malignant neoplasm of colon
CNS(中枢神经系统肿瘤) 2A00-2A0Z 胶质瘤/星形细胞瘤类概念
Melanoma(黑色素瘤) 2C30 372244006 malignant melanoma
Ovarian(卵巢癌) 2C73 malignant neoplasm of ovary 类概念
Renal(肾癌) 2C90 malignant neoplasm of kidney 类概念
Prostate(前列腺癌) 2C82 126906006 malignant neoplasm of prostate
Breast(乳腺癌) 2C60-2C6Z 254837009 malignant neoplasm of breast

注:「—」表示该亚面板内部组织学异质(如 CNS 覆盖胶质母细胞瘤与髓母细胞瘤类系、Renal 覆盖透明细胞与乳头状肾细胞癌),单一 SNOMED 概念码不能忠实代表整个亚面板,建议在建模时以亚面板标签而非疾病码作为分组变量。

§2.2 疾病与模型简介

NCI-60 不是患者队列,而是 60 条来自不同患者肿瘤组织的永生化细胞系。每条细胞系保留其来源肿瘤的部分组织学特征(如 CCRF-CEM 的 T 淋巴母细胞属性、OVCAR-3 的卵巢腺癌属性),但都脱离了免疫与微环境。选择这 60 条系的标准是组织代表性、体外生长稳定性与历史连续性:白血病系增殖最快、适合悬浮培养,实体瘤系则覆盖上皮来源的四大高发癌种。从流行病学角度看,面板覆盖的 9 大癌种几乎对应全球癌症负担的主体(肺、结直肠、乳腺、前列腺癌均居发病与死亡前列),但面板刻意保留了 rare-but-informative 的黑色素瘤 9 条系——因为黑色素瘤耐药谱独特,是 MDR 表型与分化研究的经典模型。需要补充两点背景:其一,面板的细胞系大多建立于 1970–1980 年代(如 MCF7 建系于 1973 年),经过数十年传代,其基因组与最初肿瘤已有漂移,这是所有细胞系模型的共性局限;其二,60 系中的药物外排转运体(如 ABCB1/MDR1)表达差异极大,NCI/ADR-RES 就是人为筛选的多药耐药模型——这让面板成为研究耐药机制的高信息量样本,但也要求建模者把「耐药系」当作独立的分布而非噪声。从流行病学角度看,面板覆盖的 9 大癌种几乎对应全球癌症负担的主体(肺、结直肠、乳腺、前列腺癌均居发病与死亡前列),但面板刻意保留了 rare-but-informative 的黑色素瘤 9 条系——因为黑色素瘤耐药谱独特,是 MDR 表型与分化研究的经典模型。需要强调:体外 GI50 与患者临床反应的相关性有限,面板的历史定位是「假设生成与优先级排序」,而非疗效预测。

§2.3 临床/研究任务定义

在 NCI-60 语境下,「任务」是体外药效学刻画,而非临床筛查/诊断/分级:

任务 输入 输出 面板内对应数据
生长抑制效力刻画 化合物(NSC)× 细胞系 GI50(50% 净生长抑制浓度) GI50.zip 五剂量内插值
细胞静止效应 化合物 × 细胞系 TGI(总生长抑制浓度) TGI.zip
细胞杀伤效应 化合物 × 细胞系 LC50(净 50% 致死浓度) LC50.zip
机制模式比对 60 维活性谱 与已知药物谱的相关排序 COMPARE 算法
药敏-分子关联 GI50 谱 + 分子特征 相关/回归生物标志物 CellMiner 整合

GI50 与 IC50 的区别值得注意:IC50 把处理孔吸光度直接与对照孔比较(PTC),而 GI50 以加药时(T0)的细胞计数为基线,扣除了 48 小时内化合物的纯抗增殖效应;LC50 则度量净细胞死亡。三终点联用可以把「抑增殖」「静止」「杀伤」三类作用区分开,这是 NCI-60 相对其他药敏面板的独特设计。

§2.4 数据层级与「人群」构成

NCI-60 的数据层级是「化合物 → 实验 → 细胞系 → 剂量点」,没有患者随访层级。下表按亚面板汇总细胞系构成(括号内为代表性细胞系):

亚面板 细胞系数 代表性细胞系
Leukemia 6 CCRF-CEM、HL-60(TB)、K-562、MOLT-4、RPMI-8226、SR
Non-Small Cell Lung 9 A549/ATCC、EKVX、HOP-62、HOP-92、NCI-H226、NCI-H23、NCI-H322M、NCI-H460、NCI-H522
Colon 7 COLO 205、HCC-2998、HCT-116、HCT-15、HT29、KM12、SW-620
CNS 6 SF-268、SF-295、SF-539、SNB-19、SNB-75、U251
Melanoma 9 LOX IMVI、MALME-3M、M14、MDA-MB-435、SK-MEL-2、SK-MEL-28、SK-MEL-5、UACC-257、UACC-62
Ovarian 7 IGROV1、NCI/ADR-RES、OVCAR-3、OVCAR-4、OVCAR-5、OVCAR-8、SK-OV-3
Renal 8 786-0、A498、ACHN、CAKI-1、RXF 393、SN12C、TK-10、UO-31
Prostate 2 DU-145、PC-3
Breast 6 BT-549、HS 578T、MCF7、MDA-MB-231/ATCC、MDA-MB-468、T-47D

注:MDA-MB-435 与 NCI/ADR-RES 的归属存在历史误分类问题(详见 §6.5 坑点 1 与 §7.1);另有 11 条历史细胞系(含 2 条小细胞肺癌系)构成旧数据的主体部分。

§2.5 临床与研究价值

NCI-60 的价值链条是「体外谱 → 机制假设 → 动物/临床验证」:其一,COMPARE 模式比对曾把活性谱与拓扑异构酶 I 抑制、微管干扰等机制挂钩,帮助吲哚异喹啉酮类等新骨架完成机制定位;其二,面板筛选出的曲贝替定(ecteinascidin-743)最终获批用于软组织肉瘤与卵巢癌,是面板「筛选 → 临床」路径的代表性成果(Shoemaker 2006 综述对此有系统总结);其三,COXEN 算法展示了用 NCI-60 训练的模型为新患者队列(如膀胱癌 BLA-40 细胞系)做计算机筛选并实验验证 NSC637993 活性的完整闭环。对 AI 研究者,面板提供的是带有 30 年机制注释积累的「化学-表型」联合分布,是检验可解释药敏模型的首选试验场。

§2.6 金标准与标注性质

维度 内容
划分 无官方训练/测试划分;官方仅按 NSC 与 EXPID 组织原始数据
标注方式 全自动仪器测量(SRB 510 nm 吸光度 / CellTiter-Glo 发光),非人工标注
标注者 NCI Frederick 筛选技术分部实验平台(单中心、标准化 SOP)
标注性质 定量连续变量(摩尔浓度),四位小数报告;截尾值以「> 最高测试浓度」表示
一致性 实验级 QC 在运行时执行;绝大多数终点无实验内重复(count=1,SD=0)

这张表的含义是:NCI-60 的「金标准」地位来自其运营历史与单中心 SOP 的严格性,而非来自任何外部仲裁——数据即官方原始记录,没有第二标注方。因此对它的质量审计方式也不同于标注型数据集:重点不在标注一致性,而在实验重复性与跨平台可复现性(见 §7.2 与 §7.6)。


§3 数据集规格

§3.0 版本抉择矩阵

NCI-60 不是一个单一下载包,而是「六类数据文件 + 两个二级数据库 + 一个再处理版」的生态。按需求选择:

你的需求 推荐版本 大小 理由
训练效力预测模型(最常见) 2025-10 发布 GI50.zip + TGI.zip + LC50.zip 合计约 98 MB 压缩 单实验 EXPID 格式,四位小数,可自控聚合方式
复现经典 COMPARE / 早期论文 同上 GI50 数据(旧聚合版已在归档页) 历史文献的 −log10GI50 均基于聚合版
需要完整剂量-响应曲线形状 DOSERESP.zip 328 MB 压缩(2.33 GB 解压) 全部剂量点 PTC/GIPRCNT,支持曲线参数化
大规模初筛阴性/阳性分析 ONECONC.zip 50 MB 压缩 单剂量 10 µM 预筛数据,天然负样本池
药敏-基因组关联 CellMiner(discover.nci.nih.gov/cellminer) 在线查询/批量下载 已对齐分子与药理数据、提供 z-score 归一
与 CCLE/GDSC/CTRP 联合建模 ORCESTRA NCI60 PharmacoSet(Zenodo 10.5281/zenodo.5570629) 327.1 MB(NCI60.rds) 再处理注释对齐,R/biotools 生态即取即用
复刻官方筛选报告格式 IC50.zip(PTC 内插) 35 MB 压缩 与历史四页报告可比

§3.1 模态详情

NCI-60 的核心模态只有一种——体外生长抑制剂量响应,但它被三层结构丰富化:

  1. 一剂量初筛层(ONECONC):几乎所有入库化合物都在 10 µM 单浓度下测试 60 系,报告 PTC(处理孔生长占对照百分比)。这是覆盖面最大的一层(历史累计 10 万+ 化合物),适合做「化合物级」二分类或排序。
  2. 五剂量终点层(GI50/TGI/LC50/IC50):初筛有活性的化合物进入五个对数梯度剂量的完整滴定,每系内插三个终点。这一层覆盖约 4.5 万化合物,是回归建模的主力。
  3. 全曲线层(DOSERESP):每条浓度-响应曲线的全部剂量点与响应值(PTC、GIPRCNT),2025-10 起按单实验开放,支持曲线参数化与非常规建模(如曲线斜率作为附加目标)。

除核心模态外,官方通过 CellMiner 提供与药敏谱同源对齐的分子模态(基因表达、拷贝数、SNP、甲基化、蛋白、miRNA 等),两者可按细胞系名直接 join。

三个终点的语义差异值得单列一表——它们经常被混用,但在机制解释上互补:

终点 数学定义 生物学语义 典型用途
GI50 (T−T0)/(C−T0) = 50% 净生长被抑制 50%(含抑增殖与杀伤的混合效应) 效力排名、QSAR 主目标
TGI (T−T0)/(C−T0) = 0% 细胞静止:加药结束时细胞数与加药时相同 区分抑增殖型药物
LC50 (T−T0)/T0 = −50% 净细胞数损失 50%(真正杀伤) 区分杀伤型/细胞毒药物
LC50−GI50 分离度 log10(LC50) − log10(GI50) 杀伤窗:值越大越倾向致死机制 机制分类的附加特征

同一化合物三终点的相对位置携带机制信息:纯细胞静止药物 TGI 与 GI50 接近而 LC50 远离;强杀伤药物三点靠近。这是 NCI-60 相对单终点面板(CCLE 的 IC50、CTRP 的 AUC)的独特信息增量。

§3.2 按亚面板样本数

化合物级数据体量(以 2025-10 发布版为准):

数据文件 覆盖范围 原始大小 压缩大小
DOSERESP.zip 全部实验全部剂量点 2.33 GB 328 MB
GI50.zip 五剂量实验 GI50 终点 394 MB 37 MB
TGI.zip 五剂量实验 TGI 终点 389 MB 32 MB
LC50.zip 五剂量实验 LC50 终点 385 MB 29 MB
IC50.zip PTC 内插 IC50 终点 394 MB 35 MB
ONECONC.zip 单剂量初筛数据 441 MB 50 MB

细胞系级样本量为固定 60 条现行系 + 11 条历史系(详见 §2.4);每条细胞系在不同化合物文件中的覆盖随筛选年代波动,黑色素瘤与白血病亚面板化合物覆盖最厚,前列腺亚面板(2 条系)最薄。

§3.3 数据格式

项目 规格
容器格式 ZIP 压缩包,每个数据类一个包
内部格式 制表符分隔文本(每行一个化合物×细胞系×实验记录)
标识符 化合物 NSC 编号;细胞系名;实验 EXPID(格式 YYMMLLSS:年份两位 + 月份两位 + 内部流程字母对 + 序号两位)
数值精度 2025-10 发布版统一四位小数
浓度单位 M(摩尔,主流)、u(µg/ml,复杂生物制剂)、V(体积基,无进一步定义)
缺失表达 终点未达以「> 10^−4」形式右截尾;字段级缺失为空值

§3.4 存储大小

六个压缩包合计约 511 MB,解压后约 4.3 GB(2025-10 发布版)。建模实际所需的最小可用子集为 GI50.zip(解压后 394 MB),加载为 pandas DataFrame 后约 1.5–2 GB 内存;如需 DOSERESP 全量曲线,建议 16 GB 以上内存或分块读取。CellMiner 批量下载体量另计(按所选数据集而定);ORCESTRA PharmacoSet 为单文件 327.1 MB。

§3.5 标注方式

标注完全由自动化仪器产生,无任何人工图像或文本标注:SRB 平台以 510 nm 吸光度测定细胞蛋白量,CellTiter-Glo 平台以 ATP 依赖的荧光素酶发光测定活细胞数。终点值不是直接测量而是模型内插:对每条浓度-响应曲线,以 % growth = [(T − T0)/(C − T0)] × 100 拟合,GI50 为曲线过 50%、TGI 为过 0%、LC50 为过 −50% 时的浓度。这意味着「标注误差」主要由实验方差与内插不确定性贡献,而非标注者差异。

§3.6 标注者资质与一致性

单一实验室(NCI Frederick 筛选技术分部)按公开 SOP 运营,避免了多中心间协议漂移,但也意味着实验室间方差无法从数据内部估计。实验级 QC(对照孔生长、剂量-响应单调性等)在实验运行当时执行;官方明确说明发布数据在此之后未做额外一致性检查。绝大多数终点在实验内只有一次测定(count=1,SD=0),少数实验含重复测定。因此「同一化合物同一细胞系跨实验」的重复才是估计测量方差的真实来源,建模者应利用 EXPID 层级自行估计。

§3.7 采集周期

面板自 1990 年运营至今,数据按月累积(EXPID 内嵌年月信息);单个化合物从提交到返回一剂量结果约数周,五剂量确认视活性而定。2025-10 发布版为最新快照,CellMiner 数据库按季度滚动更新(当前 2025.3 版,DTP 药物数据日期 2025-07-07)。历史批量数据发布可追溯多个年份版本。

§3.8 地域覆盖

筛选单中心完成(美国马里兰州 Frederick);细胞系供体来自多国肿瘤机构的历史收集(如 NCI-H 系列来自美国国家癌症研究所肺项目、MCF7 来自 1970 年代休斯顿乳腺癌转移灶收集),具体供体地理信息大多不可考。化合物来源为全球学术与产业界提交。

§3.9 设备与试剂规格

平台 板型 读数 暴露时长 状态
经典 NCI-60 96 孔 磺基罗丹明 B(SRB)蛋白染色,510 nm 吸光度 48 小时 已退役归档
NCI-60 HTS384 384 孔 CellTiter-Glo(ATP 依赖荧光素酶)发光 72 小时 现行平台

两平台结果高度相关(官方声明与 2024 年 Cancer Res 评论一致),但并非可互换:HTS384 通量与精度更高,且细胞密度动态范围不同。化合物浓度为技术设定的连续对数梯度(名义上 0.01–100 µM,实际多为非整数配制值);培养基为 RPMI 1640 + 5% 胎牛血清 + 2 mM L-谷氨酰胺,37 °C、5% CO₂。

§3.10 深度溯源链

完整的溯源链条为:化合物提交方/来源 → NSC 编号(DTP 化合物库唯一标识)→ 提交批次与保密协议 → EXPID 实验批次(年月 + 内部流程码 + 序号)→ 板内孔位与剂量(DOSERESP)→ 内插终点(GI50/TGI/LC50)。细胞系侧的溯源为:来源实验室/患者肿瘤(历史记录)→ DTP/DCTD 肿瘤储藏库目录 → STR/DNA 指纹验证记录(CellMiner Cell Line Metadata 提供指纹与倍性、p53 状态等)。全部链条均有官方文档支撑,建模者可从任何一个终点值回溯到实验批次与化合物身份。


§4 数据结构

§4.0 目录树

从官方下载页获取六个 ZIP 并解压后的典型结构如下(每个包内为制表符分隔文本;列集以 2025-10 发布版官方说明为准):

NCI60_Download/
├── DOSERESP.zip
│   └── DOSERESP/                    # 全部浓度-响应剂量点(按 EXPID 组织)
│       ├── NSC                      # 化合物 NSC 编号
│       ├── CELL_NAME                # 细胞系名(60 系 + 历史系)
│       ├── EXPID                    # 实验批次号 YYMMLLSS
│       ├── CONCENTRATION_UNIT       # M / u / V
│       ├── 浓度点 + PTC + GIPRCNT    # 各剂量响应百分比
│       └── COUNT / 标准差            # 实验内重复数与离散度
├── GI50.zip                         # GI50 终点(主力建模文件)
├── TGI.zip                          # TGI 终点
├── LC50.zip                         # LC50 终点
├── IC50.zip                         # PTC 内插 IC50 终点
├── ONECONC.zip                      # 单剂量初筛(PTC)
└── README/说明                       # 官方字段与注意事项(含身份问题细胞系链接)

§4.1 DAIMS 字段字典

以 GI50 终点文件(2025-10 发布版)为例,关键字段如下:

字段 类型 说明 示例值 AI 用途 观测误差 信息性缺失编码 取值范围
NSC 文本 化合物唯一编号 740 主键之一;关联化学结构 同号可对应盐型/混合物 全部历史 NSC 号
CELL_NAME 文本 细胞系名 MCF7 主键之一;分组变量 存在误分类(见坑点 1) 71 个系名
EXPID 文本 实验批次 YYMMLLSS 21031501 时间切分/批次校正 2000 年起
CONCENTRATION_UNIT 文本 浓度单位枚举 M 单位归一 V 无进一步定义 M / u / V
GI50 (M) 浮点 50% 净生长抑制浓度 2.45e-7 回归目标(−log10 变换后) 单实验无重复 右截尾 > 10^−4 约 1e-10 至 >1e-4
TGI (M) 浮点 总生长抑制浓度 8.10e-7 细胞静止分析 同上 右截尾 同上
LC50 (M) 浮点 净 50% 致死浓度 3.62e-6 细胞杀伤分析 同上 右截尾 同上
浓度点 × PTC 浮点数组 各剂量生长百分比 −12.4 曲线形状特征 板效应/边缘效应 空值 −100 至 100
GIPRCNT 浮点 T0 校正后生长百分比 45.2 精确内插输入 空值 −100 至 100
COUNT 整数 实验内重复数 1 方差估计权重 ≥1
标准差 浮点 重复间标准差 0 不确定性加权 count=1 时恒为 0 ≥0

§4.2 标签分布

以 −log10GI50 为惯例回归目标(值越大越有效):多数活性化合物落在 −log10GI50 ≈ 4–6(即 GI50 1–100 µM);被官方收录为「临床候选」的强活性化合物可达 7–9(10–100 nM)。由于只有初筛通过者才进入五剂量层,五剂量数据的化合物分布向活性端截断——这是使用时必须记住的选择偏差。各亚面板观测密度亦不均衡:白血病系因增殖快、通量高,实验记录远多于前列腺系(仅 2 条)。

分布的另一个维度是时间:同一化合物在 1990 年代、2000 年代与 2020 年代被测得的活性谱经平台迁移后系统可比(官方声明),但其在 −log10GI50 上的微小编差在跨年代聚合时仍会显现——建议在分布分析时按年代分层直方图先行检查,再决定是否全量合并。化合物覆盖也存在浓度依赖的「金字塔」:单剂量层(10 万+)→ 五剂量层(约 4.5 万)→ QC 通过的 FDA/临床试验药物层(326/563,CellMiner 2025.3)。层级越高,注释越丰富、噪声越低,但样本越少。

§4.3 关键统计

统计项 数值(截至 2025-10 发布)
现行细胞系 60
历史细胞系 11(含 2 条小细胞肺癌系)
历史筛选化合物总量 10 万+(含天然产物)
公开五剂量药敏化合物 约 4.5 万(含 93 个 FDA 批准抗癌药)
CellMiner QC 通过:FDA 药物 326
CellMiner QC 通过:临床试验药物 563
CellMiner QC 通过:HTS384 化合物 863
COMPARE 参比库 8.8 万+ 纯化合物、3.4 万+ 粗提物(截至 2017-01)
浓度-响应主梯度 5 个 10 倍稀释(少数 10 个半对数稀释)

§4.4 数据层级

数据层级自上而下为:化合物(NSC)→ 实验批次(EXPID)→ 细胞系(CELL_NAME)→ 剂量点(CONCENTRATION)→ 响应值(PTC/GIPRCNT/终点)。与影像或队列数据不同,这里没有「患者 → 检查 → 序列 → 切片」四层;替代地,EXPID 是最关键的去重单位——同一 EXPID 内全部细胞系同步培养、同步加药、同步读数,因此跨细胞系比较在同一实验内是最干净的,跨实验比较需考虑批次效应。

§4.5 缺失值与信息性缺失

缺失情形 表现形式 是否信息性 建模处理建议
终点未达(活性弱) 「> 10^−4」右截尾 是——表示活性低于最高测试浓度 截尾回归/类别化,勿当真值
初筛未通过 不出现在五剂量文件 是——强信息性阴性 从 ONECONC 反查 PTC 构造负样本
生物制剂单位 CONCENTRATION_UNIT = u/V 是——非标准摩尔体系 建模主流化合物时先过滤 M
曲线数据缺失 终点有值但 DOSERESP 无对应记录 否——发布切割差异 以终点文件为准
重复缺失 count=1、SD=0 否——单次测定 用跨 EXPID 重复估计方差
# 缺失/截尾结构审计:跑模型前必做的一次性体检
audit = (d.groupby(["NSC", "CELL_NAME"])
           .agg(n_exp=("EXPID", "nunique"),
                frac_censored=("censored", "mean"),
                spread=("GI50", lambda x: x.max() - x.min() if x.notna().any() else 0)))
print("截尾占比>50% 的化合物-细胞系对:",
      (audit["frac_censored"] > 0.5).sum())
print("跨实验 GI50 极差 > 1 个数量级的对:",
      (audit["spread"] > 1e-6).sum())   # 数值尺度依原始单位而定
# 经验预期:截尾集中在弱活性区;跨实验极差大的对提示批次效应或身份/注释问题

§5 划分与使用建议

§5.1 官方划分

官方不提供任何训练/测试划分——数据以「化合物 × 实验」流水账形式发布,划分完全是使用者的建模决策。这与其他提供 benchmark split 的数据集(如 DeepChem 系)不同,也意味着跨论文的性能数字几乎不可直接比较。

§5.2 社区惯例与推荐划分

策略 做法 适用场景
化合物随机划分 按 NSC 随机 8:2 与历史 QSAR 论文对齐;但会高估性能
时间切分(推荐) 按 EXPID 年月,早期训练、近期测试 模拟真实前瞻筛选;可评估平台迁移
细胞系留一(LODO) 留出一条细胞系全部数据 检验组织外推与跨系泛化
骨架切分 按化合物 Murcko 骨架分组划分 防止结构近邻泄漏(最严格)
# 三套划分的最小实现(与 §6.9 评估代码配套)
import numpy as np, pandas as pd
from rdkit import Chem                     # 骨架切分需 RDKit;无 RDKit 时用 NSC/时间划分
from rdkit.Chem.Scaffolds import MurckoScaffold

def make_splits(agg: pd.DataFrame, chem2smiles: dict):
    """agg: 聚合后的 (NSC, CELL_NAME, logGI50) 表;chem2smiles: NSC -> SMILES"""
    # 1) 化合物级随机划分(易泄漏,仅作参照上限)
    drugs = agg["NSC"].unique()
    rng = np.random.default_rng(42)
    train_d = set(rng.choice(drugs, size=int(0.8 * len(drugs)), replace=False))
    split_random = agg["NSC"].isin(train_d).to_numpy()
    # 2) 骨架分组划分(防近邻泄漏,主报告口径)
    scaff = {n: MurckoScaffold.MurckoScaffoldSmiles(smiles=s, includeChirality=False)
             for n, s in chem2smiles.items() if s}
    sk = pd.Series({n: s for n, s in scaff.items()}, name="scaffold")
    a = agg.join(sk, on="NSC")
    uniq = a["scaffold"].dropna().unique()
    train_s = set(rng.choice(uniq, size=int(0.8 * len(uniq)), replace=False))
    split_scaffold = a["scaffold"].isin(train_s).fillna(False).to_numpy()
    # 3) 时间切分(EXPID 前 4 位 = YYMM,需在聚合前保留)
    #    agg 中加入 first_exp 列后:split_time = agg["first_exp"] < "2301"
    return {"random": split_random, "scaffold": split_scaffold}

§5.3 泄漏风险(重点)

NCI-60 的泄漏主要有三条通道:其一,结构近邻泄漏——同一骨架的类似物常在同批提交、同批筛选,随机划分会把「答案」泄漏给测试集,必须按骨架分组或按时间切分;其二,重复实验泄漏——同一化合物可在不同年月被多次五剂量测试,若按「化合物 × 细胞系」对随机划分,同化合物的重复会同时出现在两侧;其三,跨库泄漏——与 CCLE/GDSC 重叠的化合物(如紫杉醇、阿霉素、顺铂)若在预训练中使用过对方标签,迁移评测时需声明并去重。官方虽未设划分,但对细胞系身份问题的明确警示(MDA-MB-435 等)提示:任何「按乳腺癌亚群分析」的实验设计都应先核验标签真实性。

§5.4 交叉验证建议

推荐嵌套方案:外层按骨架或时间切 5 折,内层再做超参选择;对 60 系层面使用 LODO 交叉验证评估「对新癌种的迁移」。评估时报告跨系聚合与按亚面板分层的双份指标,避免白血病系主导总体表现。

§5.5 外部验证建议

外部验证首选 CCLE/GDSC/CTRP 中与 NCI-60 重叠的化合物集合做跨库一致性检验;次选 ORCESTRA 再处理版 PharmacoSet 直接对齐(该版本已重新注释以最大化跨库重叠)。注意跨库比较前必须统一细胞系名与化合物标识(见坑点 7),并检查两库对同一化合物-细胞系对的相关性(文献报告的跨库相关在中低区间,不可假设标签可互换)。


§6 AI 就绪指南

§6.0 云端快速启动

NCI-60 数据体量小(压缩包 < 600 MB),无需 GPU 集群或云端对象存储;任何一台 8 GB 内存以上的工作站或 Colab 实例即可完成下载到建模全流程。以下流程以本地 Python 环境为准。

§6.1 快速上手

目录结构预期:把六个 ZIP 解压到 data_root(如 ~/data/nci60/),下面代码演示从 GI50 数据构建「化合物 × 细胞系」矩阵。最小可用子集 = GI50.zip(解压 394 MB)。data_root 拼接关系:所有文件路径 = data_root + ZIP 解压目录名。

# 环境要求:python>=3.9, pandas>=1.5
# 目录结构预期:
#   ~/data/nci60/GI50/          <- GI50.zip 解压目录
#   ~/data/nci60/TGI/
#   ~/data/nci60/LC50/
import pandas as pd, glob, os

data_root = os.path.expanduser("~/data/nci60")
# GI50.zip 解压后为制表符分隔文本;自动定位文本文件
files = glob.glob(os.path.join(data_root, "GI50", "*.txt"))
df = pd.concat([pd.read_csv(f, sep="\t", low_memory=False) for f in files],
               ignore_index=True)
# 每行 = 一个 化合物(NSC) x 细胞系 x 实验(EXPID) 的 GI50 记录
# 关键列(以官方发布说明为准):NSC, CELL_NAME, EXPID,
#   CONCENTRATION_UNIT, GI50 数值列
df = df[df["CONCENTRATION_UNIT"] == "M"]          # 只保留摩尔单位(见坑点 4)
df["logGI50"] = -pd.np.log10(df["GI50"].astype(float))   # 惯例目标:-log10(GI50)
mat = df.pivot_table(index="NSC", columns="CELL_NAME",
                     values="logGI50", aggfunc="median")  # 跨实验取中位数聚合
print(mat.shape)   # 约为 (化合物数 x 60~71)

# 进一步:合并 TGI / LC50 构造三终点宽表(机制分析用)
def load_endpoint(data_root, name):
    fs = glob.glob(os.path.join(data_root, name, "*.txt"))
    t = pd.concat([pd.read_csv(f, sep="\t", low_memory=False) for f in fs],
                  ignore_index=True)
    t = t[t["CONCENTRATION_UNIT"] == "M"]
    col = [c for c in t.columns if name.rstrip("0123456789") in c.upper()][0] \
          if name not in t.columns else name
    t["value"] = pd.to_numeric(t[name], errors="coerce") if name in t.columns \
                 else pd.to_numeric(t.iloc[:, -1], errors="coerce")
    return t[["NSC", "CELL_NAME", "EXPID", "value"]].rename(columns={"value": name})

tgi = load_endpoint(data_root, "TGI")     # 同样过滤 M 单位
lc50 = load_endpoint(data_root, "LC50")
# 以 (NSC, CELL_NAME) 为键对齐三终点,便于计算 LC50-GI50 杀伤窗

上面的 load_endpoint 在官方列名因版本变化时按文件名回退取值列;首次使用时请先 print(df.columns) 确认 2025-10 发布版的真实列名,再固定映射关系(这也是把「列名确认」写进可复现脚本的意义)。

§6.2 数据获取

步骤 操作 说明
1 访问 NCI Wiki 数据页(https://wiki.nci.nih.gov/x/EoD-O) 无需注册,直接下载
2 下载 GI50.zip / TGI.zip / LC50.zip(建模最小集) 合计约 98 MB 压缩
3 可选:DOSERESP.zip / ONECONC.zip / IC50.zip 曲线建模 / 负样本 / PTC 口径
4 分子特征:CellMiner Download Datasets 页 基因表达、拷贝数、甲基化等,raw + normalized
5 跨库整合:Zenodo 10.5281/zenodo.5570629 NCI60 PharmacoSet CC BY 4.0,R/rpars 工具链直接加载
# 命令行下载(无需 API key)
BASE="https://wiki.nci.nih.gov/x/EoD-O"   # 数据页入口,逐文件直链见该页
# 也可使用浏览器下载六个 zip 后:
unzip GI50.zip -d ~/data/nci60/GI50
unzip TGI.zip  -d ~/data/nci60/TGI
unzip LC50.zip -d ~/data/nci60/LC50

提交化合物做新筛选(而非下载数据)需在 DTP Compound Submission Application 注册账号、签 CDA/MTA,每 30 天限 10 个化合物,样本 10–15 mg,且目前仅接受美国境内提交。

§6.3 预处理全流程

import numpy as np, pandas as pd

def preprocess_nci60(df: pd.DataFrame) -> pd.DataFrame:
    """NCI-60 GI50 预处理四步:单位过滤 -> 截尾处理 -> 聚合 -> 品质过滤"""
    # 1) 只保留摩尔单位化合物(生物制剂 u / 体积基 V 不可比)
    d = df[df["CONCENTRATION_UNIT"] == "M"].copy()
    # 2) 右截尾值(GI50 > 1e-4 M)转为显式截尾标记,勿静默丢弃
    d["GI50"] = pd.to_numeric(d["GI50"], errors="coerce")
    d["censored"] = d["GI50"] > 1e-4
    # 3) 同一 (NSC, CELL_NAME) 跨 EXPID 取中位数,保留实验数
    agg = (d.groupby(["NSC", "CELL_NAME"])
             .agg(logGI50=("GI50", lambda x: -np.log10(np.nanmedian(x))),
                  n_exp=("EXPID", "nunique"),
                  censored=("censored", "any"))
             .reset_index())
    # 4) 品质过滤:至少 2 次实验支持(可按需放宽)且非全截尾化合物
    agg = agg[(agg["n_exp"] >= 2) | (~agg["censored"])]
    return agg

# 曲线特征(可选):从 DOSERESP 提取每条曲线的 Hill 斜率与 AUC
#   建议:以 GIPRCNT(T0 校正)为纵轴,五剂量点做 log 剂量 logistic 拟合

要点:−log10 变换是社区惯例(COMPARE 与历史文献一致);截尾化合物若直接删掉会把「低活性」这一强信号从数据集里抹除,建议保留为类别标签或用截尾似然处理。

若需曲线级特征(Hill 斜率、AUC),从 DOSERESP 提取并拟合 logistic——完整可运行代码如下:

<details>
<summary>点击展开:DOSERESP 曲线拟合完整代码(约 40 行)</summary>

import numpy as np, pandas as pd, glob, os
from scipy.optimize import curve_fit

def hill(x, top, bottom, ec50, slope):
    """四参数 logistic;x 为 log10 浓度"""
    return bottom + (top - bottom) / (1 + 10 ** ((ec50 - x) * slope))

def fit_curve(dose_pts, resp_pts):
    """dose_pts: 浓度(M);resp_pts: GIPRCNT/PTC(%)。返回 (log10EC50, slope, top, bottom)"""
    lx = np.log10(np.asarray(dose_pts, dtype=float))
    y = np.asarray(resp_pts, dtype=float)
    ok = np.isfinite(lx) & np.isfinite(y)
    lx, y = lx[ok], y[ok]
    if len(lx) < 4 or y.max() - y.min() < 10:      # 曲线过平,拟合无意义
        return np.nan, np.nan, np.nan, np.nan
    try:
        p0 = [y.max(), y.min(), float(np.median(lx)), 1.0]
        bounds = ([max(y.min() - 20, -150), -150, lx.min() - 2, -5],
                  [min(y.max() + 20, 150), 150, lx.max() + 2, 5])
        popt, _ = curve_fit(hill, lx, y, p0=p0, bounds=bounds, maxfev=5000)
        top, bottom, ec50, slope = popt
        return ec50, slope, top, bottom
    except Exception:
        return np.nan, np.nan, np.nan, np.nan

# 用法:dose_df 为 DOSERESP 解析后的长表,列 = NSC/CELL_NAME/EXPID/
#       CONCENTRATION(M)/GIPRCNT
feat = (dose_df.groupby(["NSC", "CELL_NAME", "EXPID"])
               .apply(lambda g: pd.Series(fit_curve(g["CONCENTRATION"],
                                                    g["GIPRCNT"]),
                        index=["logEC50", "slope", "top", "bottom"]),
                       include_groups=False)
               .reset_index())
# 特征建议:slope(曲线陡峭度)与 (top-bottom)(动态范围)可作回归附加特征;
# logEC50 与官方内插 GI50 高度相关,二者取其一即可,避免共线性。

</details>

实践提示:DOSERESP 体量大(2.33 GB),先按所需 NSC 子集过滤再逐组拟合;少数实验为 10 个半对数稀释点,四参数拟合对这些曲线尤其有效。

§6.4 PyTorch DataLoader 完整代码

以下代码在本地 GI50 预处理后数据上构建「化合物 embedding × 细胞系 embedding」的矩阵分解式回归模型,可完整运行:

import torch, torch.nn as nn
from torch.utils.data import Dataset, DataLoader
import numpy as np, pandas as pd

class NCI60PairDataset(Dataset):
    """样本 = (化合物 id, 细胞系 id) -> -log10GI50(截尾样本带 mask)"""
    def __init__(self, agg: pd.DataFrame):
        self.drugs = {n: i for i, n in enumerate(sorted(agg["NSC"].unique()))}
        self.cells = {c: i for i, c in enumerate(sorted(agg["CELL_NAME"].unique()))}
        self.d = torch.tensor([self.drugs[n] for n in agg["NSC"]], dtype=torch.long)
        self.c = torch.tensor([self.cells[c] for c in agg["CELL_NAME"]], dtype=torch.long)
        y = agg["logGI50"].to_numpy(dtype=np.float32)
        ok = ~agg["censored"].to_numpy(dtype=bool)
        self.y = torch.tensor(np.clip(y, 0, 10), dtype=torch.float32)   # 限幅防离群
        self.mask = torch.tensor(ok, dtype=torch.bool)

    def __len__(self): return len(self.y)

    def __getitem__(self, i):
        return self.d[i], self.c[i], self.y[i], self.mask[i]

class MatrixFactorNet(nn.Module):
    """NSC embedding + 细胞系 embedding 的双线性回归;小数据上的稳健基线"""
    def __init__(self, n_drugs, n_cells, dim=32):
        super().__init__()
        self.drug_emb = nn.Embedding(n_drugs, dim)
        self.cell_emb = nn.Embedding(n_cells, dim)
        self.mlp = nn.Sequential(nn.Linear(2 * dim, 64), nn.ReLU(),
                                 nn.Linear(64, 1))
    def forward(self, d_idx, c_idx):
        e = torch.cat([self.drug_emb(d_idx), self.cell_emb(c_idx)], dim=-1)
        return self.mlp(e).squeeze(-1)

def run(agg: pd.DataFrame, epochs: int = 20):
    ds = NCI60PairDataset(agg)
    dl = DataLoader(ds, batch_size=1024, shuffle=True, num_workers=0)
    model = MatrixFactorNet(len(ds.drugs), len(ds.cells))
    opt = torch.optim.AdamW(model.parameters(), lr=1e-3, weight_decay=1e-5)
    lossf = nn.SmoothL1Loss(reduction="none")        # 对截尾样本降权
    model.train()
    for ep in range(epochs):
        tot = n = 0
        for d_idx, c_idx, y, ok in dl:
            pred = model(d_idx, c_idx)
            w = torch.where(ok, torch.tensor(1.0), torch.tensor(0.3))
            loss = (lossf(pred, y) * w).mean()
            opt.zero_grad(); loss.backward(); opt.step()
            tot += loss.item() * len(y); n += len(y)
        print(f"epoch {ep}: loss={tot/n:.4f}")
    return model

超 30 行的扩展(如加入化合物 Morgan 指纹通道、细胞系基因表达通道的多模态融合网络)建议封装为独立模块;上述基线在 CPU 上数分钟内可收敛,适合作为一切花哨模型的 sanity check。

更进一步,把化合物结构与细胞系分子特征接进模型,是从「记忆 NSC」走向「可泛化药敏预测」的关键一步:

<details>
<summary>点击展开:指纹 + 基因表达双通道模型(约 45 行)</summary>

import torch, torch.nn as nn
import numpy as np
from rdkit import Chem
from rdkit.Chem import AllChem

def morgan_fp(smiles: str, dim: int = 2048) -> np.ndarray:
    mol = Chem.MolFromSmiles(smiles)
    if mol is None:
        return np.zeros(dim, dtype=np.float32)
    fp = AllChem.GetMorganFingerprintAsBitVect(mol, 2, nBits=dim)
    return np.asarray(fp, dtype=np.float32)

class BimodalNet(nn.Module):
    """化合物 Morgan 指纹 + 细胞系表达向量 -> -log10GI50"""
    def __init__(self, fp_dim=2048, n_genes=1000, hidden=256):
        super().__init__()
        self.drug_tower = nn.Sequential(
            nn.Linear(fp_dim, hidden), nn.ReLU(), nn.Dropout(0.2))
        self.cell_tower = nn.Sequential(
            nn.Linear(n_genes, hidden), nn.ReLU(), nn.Dropout(0.2))
        self.head = nn.Sequential(
            nn.Linear(2 * hidden, 128), nn.ReLU(),
            nn.Linear(128, 1))
    def forward(self, fp, expr):
        return self.head(torch.cat(
            [self.drug_tower(fp), self.cell_tower(expr)], dim=-1)).squeeze(-1)

class BimodalDataset(torch.utils.data.Dataset):
    """fp 表:NSC -> 2048 维;expr 表:CELL_NAME -> 基因表达向量
    (expr 建议取 CellMiner normalized 数据中方差 top-N 基因)"""
    def __init__(self, agg, fp_table, expr_table):
        self.rows = agg.reset_index(drop=True)
        self.fp = fp_table; self.expr = expr_table
    def __len__(self): return len(self.rows)
    def __getitem__(self, i):
        r = self.rows.iloc[i]
        fp = torch.tensor(self.fp[r["NSC"]], dtype=torch.float32)
        ex = torch.tensor(self.expr[r["CELL_NAME"]], dtype=torch.float32)
        y = torch.tensor(float(r["logGI50"]), dtype=torch.float32)
        return fp, ex, y
# 训练循环与 §6.4 相同;重要差异:现在可以预测「从未见过的新化合物」,
# 因此划分必须用骨架/时间切分(§5.2),化合物级随机划分会严重虚高。

</details>

注意:接入分子特征后,模型假设从「插值已知化合物」变为「外推新化学空间」,评估协议也必须随之升级——这是 NCI-60 建模中最容易被低估的一步。

§6.5 坑点清单(8 个)

⚠️ 坑点 1:MDA-MB-435 与 NCI/ADR-RES 的疾病标签是错的(分类:偏倚陷阱)

问题:MDA-MB-435 自 1992 年 12 月起以「乳腺癌」身份进入面板,但基因表达、分子指纹与 STR 认证均证实它是 M14 黑色素瘤的衍生;NCI/ADR-RES 实为 OVCAR-8 的多药耐药衍生卵巢癌系(曾名 MCF-7/ADR-Res)。SNB-19 与 U251 两条 CNS 系则来自同一供体。直接采信亚面板标签做「乳腺癌特异性药敏」分析会得到系统性错误的结论。
症状:以亚面板为标签的分类器在乳腺癌亚组上表现异常;基于表达谱的无监督聚类把「乳腺癌」MDA-MB-435 稳定聚进黑色素瘤簇;重复他人论文时发现 2013–2016 年仍有约 56% 论文把它当乳腺癌模型——结论互相打架。
解决

  1. 简单方法:建模前硬编码修正表——MDA-MB-435 归入黑色素瘤、NCI/ADR-RES 归入卵巢、MDA-N 一并按黑色素瘤处理,并删去 SNB-19 与 U251 之一。
  2. 进阶方法:用 CellMiner Cell Line Metadata 的 STR/DNA 指纹与组织学注释重新映射全部 60 系标签;分析时同时报告「官方原始标签」与「修正标签」两套结果。
  3. SOTA 方法:以 ICLAC 错误细胞系名录为准做全面板审计,对身份存疑系做敏感性分析(保留/剔除各跑一遍),在论文 limitations 中显式声明。
    参考https://pmc.ncbi.nlm.nih.gov/articles/PMC5762610/https://wiki.nci.nih.gov/x/EoD-O(官方对四条系的身份警示)

⚠️ 坑点 2:右截尾值「> 100 µM」被当作真值回归(分类:预处理陷阱)

问题:五剂量滴定最高浓度约 10^−4 M;化合物在最高浓度仍未达到 GI50/TGI/LC50 标准时,官方以「> 10^−4」形式报告。这些值是「活性弱于阈值」的下界信息,不是真实测量。
症状:−log10GI50 直方图在 4.0 处出现异常尖峰;回归模型对弱活性区间的预测被系统性拉低;删掉截尾样本后,模型在真实筛选场景(大量阴性化合物)中失效。
解决

  1. 简单方法:把截尾样本类别化为「inactive」做两阶段模型(先分类后回归)。
  2. 进阶方法:保留截尾信息做删失回归(Tobit 似然):对 y = −log10GI50,截尾样本以「y < 4」的单侧似然参与训练。
  3. SOTA 方法:以 ONECONC 的 PTC 值构造连续弱活性代理目标,与删失回归联合训练,让模型同时利用 10 万+ 初筛化合物与 4.5 万五剂量化合物。
    参考https://wiki.nci.nih.gov/x/EoD-O(官方对「>」记号的定义)

⚠️ 坑点 3:新旧发布格式混用导致重复计数(分类:工程陷阱)

问题:2025-10 之前的发布按「NSC + log10 最高浓度(保留一位小数)」聚合跨实验值;2025-10 起改为按单实验 EXPID(格式 YYMMLLSS)逐条报告、四位小数。同一化合物的数据在新版中会出现多行(每次实验一行),旧版则被预聚合。
症状:同一 (NSC, CELL_NAME) 对在新版中出现 3–10 次,直接按行数统计样本量被放大数倍;把新版行当独立样本随机划分后,测试集里出现与训练集几乎相同的重复观测,指标虚高。
解决

  1. 简单方法:加载后立即按 (NSC, CELL_NAME) 分组取中位数聚合,恢复「一对一」语义。
  2. 进阶方法:保留 EXPID 层级,在 split 时按化合物分组划分而非按行划分(见 §5.3)。
  3. SOTA 方法:以 EXPID 内嵌年月做时间切分,将聚合后数据再按月重采样,模拟官方筛选的前瞻流程;对跨 EXPID 方差大的化合物-细胞系对降权。
    参考https://wiki.nci.nih.gov/x/EoD-O(官方「GENERAL COMMENTS」节的格式变更说明)

⚠️ 坑点 4:三种浓度单位 M/u/V 直接混算(分类:预处理陷阱)

问题:主流化合物以摩尔单位(M)报告,但复杂生物制剂以 µg/ml(单位 u)报告,混合物/提取物/粗组分以体积基(V)报告,且官方明言 V「无进一步定义」。三者数值不可比较。
症状:跨化合物排序时天然产物/提取物挤进「超强效」榜单;−log10 变换对 u/V 值在化学上无意义;与分子指纹联合建模时,u/V 样本的指纹-效力关系与 M 样本完全脱节。
解决

  1. 简单方法:建模管线入口统一 df[df["CONCENTRATION_UNIT"] == "M"] 过滤。
  2. 进阶方法:若确需分析生物制剂,按单位分层建模,禁止跨单位归一。
  3. SOTA 方法:对 M 单位化合物补充分子量元数据换算统一到质量浓度做敏感性分析,同时始终报告摩尔口径的主结果。
    参考https://wiki.nci.nih.gov/x/EoD-O(CONCENTRATION_UNIT 枚举与 V 的定义说明)

⚠️ 坑点 5:骨架近邻与重复实验双重泄漏(分类:数据泄漏)

问题:提交方常把同一骨架的类似物系列打包送筛,随机划分会让测试集包含训练集化合物的近邻;同一化合物又会在不同年月被重复测试。两者叠加使随机 8:2 划分的性能严重虚高。
症状:随机划分的 RMSE 显著低于骨架/时间划分(常见差距达数倍);「新化合物预测」在真实提交场景中远不如论文数字;同一 NSC 出现在训练与测试两侧。
解决

  1. 简单方法:按 NSC 划分(至少保证化合物级不交叉),杜绝同化合物跨集。
  2. 进阶方法:提取 Murcko 骨架按骨架分组划分;以 Tanimoto 相似度 ≥ 0.85 为近邻阈值做「去近邻」清洗。
  3. SOTA 方法:时间切分(EXPID 年月)+ 骨架分组双约束;报告随机/骨架/时间三套划分的完整性能区间以暴露泄漏幅度。
    参考https://wiki.nci.nih.gov/x/EoD-O(EXPID 与重复实验说明)

⚠️ 坑点 6:NSC 号并非唯一化学结构标识(分类:标签理解)

问题:NSC 号是 DTP 的物质编号而非结构编号——同一 NSC 可能指自由碱或其盐型,部分 NSC 对应混合物、提取物、粗组分甚至外部板装集合;官方明确说明「NSC 号不保证唯一识别化学结构」。
症状:用 NSC 关联外部结构库(如 PubChem)后出现一对多冲突;同一「化合物」在不同行显示不同活性,被误判为数据错误;把提取物当作确定分子做 QSAR。
解决

  1. 简单方法:结构关联时只接受一对一匹配的 NSC,其余剔除。
  2. 进阶方法:用 DTP 提供的化合物化学数据文件核验每个 NSC 的结构与盐型,过滤混合物/提取物条目。
  3. SOTA 方法:以标准 InChIKey 归并重复结构后重建化合物索引,跨库(PubChem/CCLE/GDSC)统一键控;提取物类样本单独走「谱-活性」管线而非 QSAR。
    参考https://wiki.nci.nih.gov/x/EoD-O(NSC 语义说明)

⚠️ 坑点 7:跨库整合时细胞系名对不上(分类:工程陷阱)

问题:NCI-60 的系名(如 MDA-MB-231/ATCCHL-60(TB)NCI-H460)与 CCLE/GDSC/CTRP 的命名(空格、后缀、ATCC 标注差异)不统一,官方文献亦承认「细胞系与药物名的标准化缺失是整合的主要挑战」。
症状:join 后行数骤减(大量系静默丢失);同名异系(如 MDA-MB-435 不同培养物)被错误合并;跨库一致性分析的相关性被命名错配拉低。
解决

  1. 简单方法:维护一张 NCI-60 ↔ CCLE ↔ GDSC 手工映射表(60 系规模完全可控)。
  2. 进阶方法:使用 Cellosaurus 参考库按 STR/同义词归一,再回写到各库键。
  3. SOTA 方法:直接采用 ORCESTRA PharmacoSet——其再处理流程已按最大化跨库重叠的原则对齐注释,省去自建映射。
    参考https://zenodo.org/records/5222641/latesthttps://webadmin@pmc.ncbi.nlm.nih.gov/articles/PMC4945830/

⚠️ 坑点 8:把 GI50 相关谱当作机制(MOA)结论,忽视平台迁移漂移(分类:评估误用)

问题:COMPARE 的 Pearson 相关只说明「活性模式相似」,不等于共享分子靶点;同时面板经历了 96 孔 SRB(48 h)→ 384 孔 CTG(72 h)的平台迁移,新旧数据的终点口径不完全可互换。
症状:把 COMPARE 排名靠前的化合物直接写成「同靶点」后,实验验证阴性;跨新旧数据训练的模型在最近几年数据上性能突然下降;跨平台对照孔生长动力学的系统差异被当作生物学发现。
解决

  1. 简单方法:COMPARE 结果只作为机制假设来源,结论措辞用「与 X 类药物谱相似」,并排布实验验证。
  2. 进阶方法:跨平台分析时按数据年代分桶训练/评估;用 EXPID 年月检测性能漂移,漂移显著时仅用同平台数据建模。
  3. SOTA 方法:为每条曲线附加平台元数据(板型/读数/暴露时长),在多任务框架中把平台作为协变量;对 GI50 与 LC50 的差值(杀伤-抑制分离度)单独建模以提取机制信息。
    参考https://dctd.cancer.gov/drug-discovery-development/assays/high-throughput-screening-services/nci60(HTS384 与历史数据关系);Colombo & Corsello, Cancer Res 84:2397–2399 (2024)

§6.5.9 坑点使用检查清单

把 8 个坑点折算成建模管线的 8 个必查开关,交付前逐项打勾:

# 检查开关 对应坑点 位置
1 细胞系标签修正表已应用并留痕 坑点 1 标签层
2 截尾值有显式 mask/类别通道 坑点 2 目标层
3 聚合粒度声明(行级 or NSC×CELL 中位数) 坑点 3 聚合层
4 CONCENTRATION_UNIT 过滤已执行 坑点 4 过滤层
5 划分为骨架/时间口径且三套齐全 坑点 5 划分层
6 NSC-结构一对一映射已核验 坑点 6 特征层
7 跨库 join 使用标准映射/Cellosaurus 坑点 7 整合层
8 MOA 结论措辞为「谱相似」且分平台建模 坑点 8 解释层

§6.6 数据增强:安全与危险操作

操作 安全性 说明
化合物描述符标准化(Z-score) ✅ 安全 数值稳定,无信息注入
按骨架的 SMILES 随机化 ✅ 安全 等价分子多重表示,不改变标签
剂量-响应曲线插值加密 ✅ 安全(保真约束下) 保持单调性与端点
把截尾值填充为 1e-4 后当作真值回归 ❌ 危险 制造虚假强标签,见坑点 2
u/V 单位样本换算成 M 后混入 ❌ 危险 无定义换算,见坑点 4
以跨实验均值覆盖离散重复 ❌ 危险 抹掉真实测量方差,见坑点 3
对「误分类」细胞系打亚面板增强标签 ❌ 危险 用错误标签做一致性正则会放大偏倚,见坑点 1

§6.7 模型推荐

模型族 代表 适用任务 上手难度 备注
矩阵分解/嵌入回归 双线性 + MLP GI50 回归基线 60 系小数据上最稳健
经典 QSAR Random Forest / XGBoost + 分子描述符 效力与选择性回归 可解释、强基线
图神经网络 ChemProp / MPNN / GIN 结构 → 活性泛化 需一对一 NSC-结构映射
多模态融合 表达/甲基化 + 指纹双塔 药敏-分子关联 中高 需 CellMiner 特征对齐
谱相似度方法 COMPARE / Pearson 排序 MOA 假设生成 三十年验证的官方工作流
深度分类 PECAN 式 softmax 谱预测 天然产物谱模式 J Nat Prod 2023 先例
迁移/跨库 PharmacoSet + 曲线重标注 CCLE/GDSC 迁移 注释对齐是成败关键

§6.8 硬件需求

配置 规格 适用
最低 4 核 CPU / 8 GB 内存 GI50 矩阵建模、经典 QSAR
推荐 8 核 CPU / 16 GB 内存 DOSERESP 全曲线处理、GNN 训练
可选 单张消费级 GPU(8 GB 显存) 深度谱预测、大规模超参搜索

数据与模型规模决定了 NCI-60 是「笔记本可完成」的基准——这恰是它作为教学法与快速迭代载体的优势。

§6.9 评估指标代码

import numpy as np
from scipy import stats
from sklearn.metrics import mean_squared_error

def evaluate(y_true, y_pred, censored=None):
    """NCI-60 回归评估:RMSE + Pearson + Spearman + 截尾正确率"""
    rmse = float(np.sqrt(mean_squared_error(y_true, y_pred)))
    pr, pp = stats.pearsonr(y_true, y_pred)
    sr, sp = stats.spearmanr(y_true, y_pred)
    out = {"RMSE": rmse, "Pearson_r": pr, "Pearson_p": pp,
           "Spearman_rho": sr}
    if censored is not None:            # 截尾样本:预测是否同样判为弱活性
        thr = 4.0                       # -log10(1e-4)
        acc = float(np.mean((y_pred < thr) == censored))
        out["CensoredAgreement"] = acc
    return out

# 按亚面板分层评估示例(需传入细胞系->亚面板映射)
def per_panel_report(y, p, cell_names, cell2panel):
    for panel in sorted(set(cell2panel.values())):
        idx = [i for i, c in enumerate(cell_names) if cell2panel[c] == panel]
        r = evaluate(np.asarray(y)[idx], np.asarray(p)[idx])
        print(panel, {k: round(v, 3) for k, v in r.items()})

社区惯例:回归报 RMSE 与 Pearson/Spearman;分类/排序报 AUC 与 top-k 富集;一律附划分方式声明(随机/骨架/时间),否则数字无意义。

两个补充指标在 NCI-60 上特别有用——top-k 富集(模拟真实筛选预算)与留一细胞系循环(LODO):

def topk_enrichment(y_true, y_pred, k=50):
    """在预测最活跃的前 k 个化合物-细胞系对中,真活性(-log10GI50>7)占比"""
    order = np.argsort(-np.asarray(y_pred))
    topk = order[:k]
    return float(np.mean(np.asarray(y_true)[topk] > 7.0))

def lodo_eval(agg, model_fn, cell2panel):
    """按细胞系留一:评估模型对『未见过的细胞系』的迁移能力"""
    reports = []
    for cell in sorted(agg["CELL_NAME"].unique()):
        tr = agg[agg["CELL_NAME"] != cell]
        te = agg[agg["CELL_NAME"] == cell]
        model = model_fn(tr)                       # 返回已训练模型
        pred = model.predict(te)                   # 按实现替换
        rep = evaluate(te["logGI50"].to_numpy(), pred)
        rep["heldout_panel"] = cell2panel[cell]
        reports.append(rep)
    return pd.DataFrame(reports)
# LODO 分数普遍低于随机划分(可信差距常达数倍)——这正是要对外报告的真实迁移能力。

§6.10 MLOps 笔记

  1. 版本锁定:在配置中记录 DTP 数据发布年月(如 dtp_release: 2025-10)与 CellMiner 版本(如 2025.3);新旧格式切换(EXPID 改版)会使跨版本重跑结果漂移。
  2. 数据指纹:对聚合后建模表计算行数 + 哈希指纹入库,防止「混入旧聚合版」这类静默事故。
  3. 划分登记:把 split 方式(随机/骨架/时间)作为一级实验配置项,同一模型必须报三套划分。
  4. 标签审计:把坑点 1 的细胞系标签修正表纳入版本管理,任何标签变更都要触发重训。
  5. 复现交付:发布模型时附「数据文件名 + 发布页 URL + 处理脚本 commit hash」,NCI 数据虽属公有领域,但引用致谢条款仍需在论文与服务条款中满足。

一条可直接复制的 MLOps 配置模板:

# experiment.yaml —— 把可复现性要素集中登记
dataset:
  name: nci-60
  dtp_release: "2025-10"          # 数据发布年月(wiki 页标注)
  cellminer_version: "2025.3"     # 若使用 CellMiner 特征
  files: [GI50.zip, TGI.zip, LC50.zip]
target:
  column: logGI50
  transform: "-log10 median-aggregated"
  censoring: keep-as-mask         # 截尾值保留为 mask(坑点 2)
splits: [random, scaffold, time]  # 三套划分必报(坑点 5)
label_overrides:
  MDA-MB-435: Melanoma            # 标签修正表(坑点 1)
  NCI/ADR-RES: Ovarian
  drop: [SNB-19]                  # 与 U251 同源,保留其一
unit_filter: M                    # 坑点 4
citation: "Shoemaker2006 + NCI/DTP acknowledgement"

§7 质量评估与局限性

§7.1 已知偏倚

偏倚类型 描述 严重程度 缓解措施
细胞系身份错误 MDA-MB-435(实为黑色素瘤)、NCI/ADR-RES(实为 OVCAR-8 衍生)、SNB-19/U251 同源 按坑点 1 修正标签并做敏感性分析
组织覆盖不均 前列腺仅 2 系 vs 黑色素瘤 9 系;无标准面板 SCLC 系 分层评估;避免以亚面板均值为总体结论
单一实验室 全部数据出自 NCI Frederick 单中心,无实验室间方差 与 CCLE/GDSC 重叠化合物做跨库一致性
活性选择偏差 仅初筛通过者进入五剂量层,公开数据向活性端截断 用 ONECONC 构造负样本;声明数据范围
生长速率伪影 终点受各系倍增时间影响,快生长系 GI50 口径偏移 结合 LC50-GI50 分离度分析;引用官方口径讨论
平台迁移 96 孔 SRB → 384 孔 CTG,读数与暴露时长不同 按年代分桶;以平台为协变量
时代化学空间漂移 三十年化合物集合的骨架分布不同(早期以细胞毒为主) 时间切分评估;控制骨架分布

§7.2 标注质量

标注为全自动仪器测量 + 数学内插,没有标注者间差异问题;四位小数的精度远超实验方差,真正的噪声来自生物重复缺失(绝大多数 count=1)与批次效应。官方已执行实验级 QC,但明确声明未做追加一致性检查——因此「同一化合物-细胞系对跨 EXPID 的离散度」应被视为数据集的真实噪声标尺:建模者可自行估计该分布,作为贝叶斯不确定性或样本权重的依据。

实践上建议先画两张图再建模:其一,同一化合物-细胞系对跨 EXPID 的 log10GI50 散点(检验重复一致性);其二,按年份分箱的对照孔生长分布(检验协议漂移)。两图异常往往先于任何模型失败出现——它们是这个数据集上性价比最高的质量探针。

§7.3 泛化性

外推场景 失效风险 证据
2D 细胞系 → 患者体内疗效 高——无微环境/免疫/药代 面板历史定位为假设生成(Shoemaker 2006)
60 系 → 全癌种 中高——组织覆盖偏、无 SCLC 标准面板 亚面板构成表(§2.4)
误分类系相关的组织结论 高——标签本身错误 MDA-MB-435 认证研究(PMC5762610)
旧平台模型 → HTS384 数据 中——读数/时长迁移 官方 HTS384 迁移说明与 2024 评论
NCI-60 药敏 → 其他库药敏 中——跨库相关中低 跨库整合文献(PMC4945830 及后续药理基因组学研究)
化学空间外的新骨架 中高——训练分布外 时代化学空间漂移(§7.1)

§7.4 伦理与合规

NCI-60 是细胞系级数据,不含可识别人体信息:细胞系均为脱敏永生化系,供体身份在历史采集中已不可考,CellMiner 元数据中的供体信息以聚合非识别形式提供。数据属美国联邦政府产出,免费开放;使用义务仅剩学术致谢(引用 Shoemaker 2006 并按 DTP 要求在致谢中列出 NSC 号)。对「化合物提交筛选」服务,涉及 CDA/MTA 与保密条款,但那是对提交者的约束,与公开数据使用无关。

§7.5 公平性

面板的「公平性」问题体现为癌种与人群代表性:9 大癌种中乳腺、卵巢、前列腺等有明确性别维度,但亚面板系数与疾病负担不匹配(前列腺癌高发却仅 2 系);面板缺乏小细胞肺癌标准系(13 条历史/候选系中含 2 条 SCLC);供体的种族、年龄分布无系统记录。用面板训练的「组织选择性」模型,其结论仅在这些系代表的空间内成立——对临床人群的外推需要 §7.8 式的外部验证。

§7.6 数据漂移

三类漂移需要监控:协议漂移(SRB → CTG,48 h → 72 h,2020 年代完成切换);化学空间漂移(化合物集合的骨架与物化性质随年代变化,靶向药时代 vs 细胞毒时代);注释漂移(细胞系身份知识的更新——今天的标签修正表会随鉴定技术演进而继续变化)。实操建议:以 EXPID 年月为时间轴,定期重算「同化合物-细胞系对跨年份的相关性」,相关系数骤降即提示协议或批次变化。

§7.7 DAIMS 数据质量自评(24 项)

# 检查项 状态 说明
1 宽格式可用性 可 pivot 为化合物 × 细胞系矩阵
2 唯一标识 NSC + CELL_NAME + EXPID 三级键
3 特殊字符处理 ⚠️ 系名含 /、括号与空格(MDA-MB-231/ATCC、HL-60(TB)),需规范化
4 重复行处理 ⚠️ 同对多实验重复(2025 版为设计使然),需聚合或分组划分
5 缺失编码 空值 + 右截尾记号,语义清晰
6 标签标识 终点值即定量标签,无歧义
7 罕见类分组 ⚠️ 前列腺 2 系、历史系覆盖稀薄
8 偏倚评估 官方与文献对身份/选择偏差披露充分
9 数据字典 官方页面逐字段说明(PTC/GIPRCNT/EXPID 等)
10 信息性缺失解释 「> 10^−4」截尾语义官方明文定义
11 设备记录 ⚠️ 平台级规格公开(板型/读数/时长),板级元数据需从 EXPID 推断
12 共线性检查 三终点(GI50/TGI/LC50)相关但各有独立语义,可分别建模
13 编码映射 单位枚举 M/u/V、NSC 索引、亚面板映射齐备
14 时间戳处理 ⚠️ 时间仅内嵌于 EXPID(YYMMLLSS),无独立时间戳字段
15 划分建议 ⚠️ 无官方划分,需自行设计(见 §5)
16 泄漏讨论 重复实验与身份问题官方有明文警示(坑点 3/1)
17 标签分布 −log10GI50 分布可用全量数据直接估计
18 测量偏倚 ⚠️ 生长速率/板效应存在,需生长速率校正类方法处理
19 外部验证建议 官方兼容历史数据,社区有跨库(CCLE/GDSC)惯例
20 版本记录 发布页保留历史版本;CellMiner 有 Release Notes
21 预处理脚本 ⚠️ 官方提供格式说明但无 Python/R 官方脚本
22 合规要求 公有领域 + 致谢要求,义务极轻
23 多模态对齐 CellMiner 按细胞系名对齐分子-药理数据
24 去标识化 细胞系级数据,无个人可识别信息

DAIMS 评分:19.5 / 24

评分解读:19.5 分属于「结构化程度极高、语义文档完备、但需使用者自行完成划分与脚本化」的数据集。它在一个罕见维度上近乎满分——缺失语义、版本记录、官方字段字典与合规清晰度都远优于同类药敏库;失分集中在「工程便利性」:没有官方划分、没有官方预处理脚本、多实验重复与单位枚举要求使用者自己设计聚合策略。

对你意味着什么:第一,直接下载即可开始建模,不必担心合规与字段语义问题——这部分官方已经做到极致;第二,把你的工程预算全部投在「划分设计 + 截尾处理 + 重复聚合」三件事上(§6.3、§6.5 坑点 2/3/5 给出完整方案);第三,任何发表前用 §7.7 表格逐项复核你的增强数据版本,尤其是标签修正(坑点 1)与单位过滤(坑点 4)两个最容易翻车的环节。

§7.8 外部验证矩阵

外部数据集/场景 来源机构 评估任务 性能指标 相对内部变化 关键发现
FDA 批准药物回顾性谱分析(Holbeck 2010) NCI 93 个 FDA 药物的 GI50 谱复核 谱聚类与机制一致性 已批药物谱可作为机制注释的金标参考集
MDA-MB-435 分子认证(多研究汇总) ICLAC/学术实验室 表达/STR 复核面板标签 聚类归属 证实其黑色素瘤归属,修正亚面板标签
COXEN 计算机筛选 → BLA-40 实验 NCI/学术合作 NCI-60 训练模型预测新细胞系 实验验证命中(NSC637993) 证明面板模型可外推到新系并实验命中
PECAN 深度谱预测(J Nat Prod 2023) 学术实验室 天然产物 59 系活性谱分类 softmax 谱预测 深度模型可复现谱模式并指导天然产物优先级
ORCESTRA 跨库整合(NCI60/CCLE/GDSC) Haibe-Kains 实验室 跨库重叠化合物一致性 跨库相关 中低相关区间 命名/协议差异下标签不可直接互换

§8 基准性能与生态

§8.1 排行榜与代表性研究

NCI-60 没有统一的公共排行榜(不像 Kaggle/Grand Challenge),社区性能数字取决于划分与目标定义,不同研究的数值不可直接比较。下表收录有同行评审支撑的代表性研究:

排名 模型/研究 性能 年份 关键技术 完整引用 代码
COMPARE 模式比对 谱相关排序(无单一指标) 1989 mean graph + Pearson Paull KD et al., J Natl Cancer Inst, 81:1088–1092 (1989) 官方在线工具
COXEN 计算机筛选命中实验验证 2007 前后 多基因生物标志物迁移 见 §8.5(NCI-60 药理基因组学综述引用)
FDA 药物全谱分析 93 药 GI50 谱定标 2010 谱聚类 Holbeck SL, Collins JM, Doroshow JH., Mol Cancer Ther, 9:1451–1460 (2010). DOI 10.1158/1535-7163.MCT-10-0106 数据公开
PECAN 深度谱分类 59 系活性等级 softmax 2023 深度神经网络 见 §8.5(J Nat Prod 2023, DOI 10.1021/acs.jnatprod.3c00879) 论文披露

不可直接比较的原因:目标变量不同(−log10GI50 回归 vs 活性等级分类 vs 谱相关);划分方式不同(随机 vs 骨架 vs 时间);化合物子集不同(全量 4.5 万 vs 天然产物子集 vs FDA 药物子集)。

§8.2 SOTA 总结与选型建议

NCI-60 上的「最优方法」取决于任务:做效力回归,图神经网络 + 骨架划分是当前社区默认强基线,但在 4.5 万化合物 × 60 系的规模上,XGBoost + 描述符往往与之打平,且可解释性更强;做机制推断,COMPARE 式谱相关仍是三十年未衰的正统工作流;做跨库迁移,先在 ORCESTRA 对齐注释再建模,比自行 join 稳得多。小数据(60 系)决定了「简单模型 + 严格划分」通常优于「大模型 + 随机划分」——这是本面板给建模者的最重要选型启示。

你的目标 首选方案 次选方案 放弃方案
排名新化合物效力 XGBoost + 描述符 ChemProp 超大预训练模型(数据量不支撑)
组织选择性骨架优化 GI50 谱聚类 + 杀伤窗分析 多任务 GNN 单终点全局回归
MOA 假设 COMPARE 谱相关 谱嵌入检索 无验证的端到端黑箱
跨库迁移模型 ORCESTRA + 曲线重标注 自建 Cellosaurus 映射 直接按系名 join
教学演示 矩阵分解基线 经典 QSAR 复杂多模态融合

§8.3 评测协议

建议协议:目标 −log10GI50(中位数聚合跨 EXPID);划分 = 骨架分组 5 折 + 时间切分双报告;指标 = RMSE、Pearson r、Spearman ρ、截尾一致性;分层 = 9 亚面板分别报告;基线 = 常数预测 + 矩阵分解 + XGBoost;所有实验固定 DTP 发布版本号。该协议与 §6.9 代码可直接配套。

NCI-60 评测协议检查单(投稿/交付前逐项核对)
□ 数据版本已声明(DTP release 年月 + CellMiner 版本)
□ 目标定义已声明(-log10GI50 中位数聚合,截尾处理方式)
□ 三套划分的完整结果已报告(random / scaffold / time)
□ LODO 结果已报告(若声称跨系泛化)
□ 基线已包含(常数 + 矩阵分解 + XGBoost)
□ 亚面板分层指标已报告(前列腺 2 系单列说明)
□ 细胞系标签修正表已附(MDA-MB-435 等)
□ 致谢条款已满足(NCI/DTP + NSC 号)
数据集 机构 细胞系 × 药物 与 NCI-60 关系
CCLE Broad/Novartis 1,036 × 24 系数最多,配套全组学;重叠化合物可迁移验证
GDSC Sanger/MGH 714 × 138–142 突变-药敏焦点;SRB 读数与经典 NCI-60 同源
CTRP v2 Broad 242 × 354 药物较广;AUC 口径
PRISM Broad 356 × 5,943 化合物空间最大;混合条码技术
DUD-E / LIT-PCBA UCSF/学术 虚拟筛选基准 无药敏标签,纯结构-活性检索,可与 NCI-60 互补做骨架外推
PDBbind / Binding MOAD 学术 结构结合数据 从「结合亲和力」到「细胞效力」的中间层验证

§8.5 关键论文 Top 9

  1. Alley MC, Scudiero DA, Monks A, et al. Feasibility of drug screening with panels of human tumor cell lines using a microculture tetrazolium assay. Cancer Res 48:589–601 (1988). —— 微培养四氮唑法可行性,面板方法学起点。
  2. Paull KD, Shoemaker RH, Hodes L, et al. Display and analysis of patterns of differential activity of drugs against human tumor cell lines: development of mean graph and COMPARE algorithm. J Natl Cancer Inst 81:1088–1092 (1989). —— mean graph 与 COMPARE 的奠基文献。
  3. Monks A, Scudiero D, Skehan P, et al. Feasibility of a high-flux anticancer drug screen using a diverse panel of cultured human tumor cell lines. J Natl Cancer Inst 83:757–766 (1991). —— 高通量面板筛选工程化定标。
  4. Scherf U, Ross DT, Waltham M, et al. A gene expression database for the molecular pharmacology of cancer. Nat Genet 24:227–235 (2000). —— 把 NCI-60 药敏谱与表达谱系统联结的里程碑。
  5. Shoemaker RH. The NCI60 human tumour cell line anticancer drug screen. Nat Rev Cancer 6:813–823 (2006). DOI 10.1038/nrc1951. —— 官方标准引用综述,方法与产出全景。
  6. Shankavaram UT, Varma S, Kane D, et al. CellMiner: a relational database and query tool for the NCI-60 cancer cell lines. BMC Genomics 10:277 (2009). DOI 10.1186/1471-2164-10-277. —— 分子-药理整合数据库。
  7. Holbeck SL, Collins JM, Doroshow JH. Analysis of Food and Drug Administration-approved anticancer agents in the NCI60 panel of human tumor cell lines. Mol Cancer Ther 9:1451–1460 (2010). DOI 10.1158/1535-7163.MCT-10-0106. —— 93 个 FDA 药物谱的权威定标。
  8. Sessions EH, et al.(PECAN 作者团队)PECAN predicts patterns of cancer cell cytostatic activity of natural products using deep learning. J Nat Prod (2023). DOI 10.1021/acs.jnatprod.3c00879. —— 深度学习谱预测的近期代表。
  9. Colombo GM, Corsello SM. Modernizing the NCI60 cell line screen for phenotypic drug discovery in the 21st century. Cancer Res 84:2397–2399 (2024). DOI 10.1158/0008-5472.CAN-24-1506. —— HTS384 平台迁移的权威评论。

§8.6 社区活跃度

NCI-60 的社区活跃度体现在官方迭代而非第三方竞赛:DTP 数据发布持续滚动(2025-10 为最新改革版),CellMiner 按季度更新(2025.3 于 2025-09-21 发布),化合物提交筛选服务持续运营(每 30 天 10 个化合物的免费窗口)。学术侧引用长青——标准综述引用约 2,400+(Semantic Scholar,截至 2026-09),药敏预测方法论文几乎都会把 NCI-60 纳入评测矩阵。社区资源以数据库工具(CellMiner、COMPARE、ORCESTRA PharmacoSet)为主,第三方 GitHub 工具相对分散,没有单一官方 SDK。

对新用户友好的一点是:官方答疑渠道明确(DTPInfo@mail.nih.gov),提交系统内建状态跟踪;数据问答大多能在官方 FAQ 与 SOP 文档中闭环,这也是 NCI-60 相对许多「发布即弃」学术数据集的运维优势。

§8.7 生态快照

资源 类型 链接 状态(截至 2026-09) 推荐理由
NCI-60 HTS384 官方页 官方文档 https://dctd.cancer.gov/drug-discovery-development/assays/high-throughput-screening-services/nci60 运营中 平台规格与提交通道
NCI Wiki 数据发布页 数据下载 https://wiki.nci.nih.gov/x/EoD-O 2025-10 版 六类数据文件直下
CellMiner 在线数据库 https://discover.nci.nih.gov/cellminer/home.do 2025.3 版 分子-药理一站式整合
DTP 数据索引 数据下载 https://dtp.cancer.gov/dtpstandard/dwindex/index.jsp 运营中 化合物级检索
ORCESTRA NCI60 PharmacoSet 再处理数据包 https://zenodo.org/records/5222641/latest v6(2021-08-18) 跨库对齐注释,CC BY 4.0
COMPARE 在线算法工具 经官方筛选页入口 运营中 MOA 假设生成的正统工具

§9 相关资源与引用

§9.1 官方资源

§9.2 学习资源

  • Shoemaker 2006 综述(§8.5 第 5 条)—— 理解面板设计哲学与历史产出的第一篇必读。
  • K. W. Kohn《Drugs Against Cancer》第 20 章(NCI 官方在线书)—— COMPARE 与面板发展的叙事史。
  • CellMiner 首页引用文献(Shankavaram 2009;Reinhold 2012 Cancer Res)—— 数据管线与归一化的技术细节。
  • Holbeck 2010(§8.5 第 7 条)—— 把 FDA 药物当作「带机制注释的验证集」的使用范例。

一条建议的学习路径:先用 §6.1 代码把 GI50 矩阵立起来(半天)→ 读 Shoemaker 2006 建立方法直觉(一天)→ 跑 §6.4 矩阵分解基线 + 三套划分(一天)→ 复现一次 COMPARE 谱相关并验证一个已知 MOA 对(两天)→ 接入 CellMiner 表达特征做双通道模型(一周)。全程笔记本可完成,无需任何申请流程。

§9.3 BibTeX 完整引用

@article{Shoemaker2006,
  author  = {Shoemaker, Robert H.},
  title   = {The {NCI60} human tumour cell line anticancer drug screen},
  journal = {Nature Reviews Cancer},
  year    = {2006},
  volume  = {6},
  number  = {10},
  pages   = {813--823},
  doi     = {10.1038/nrc1951},
  pmid    = {16990858}
}

@article{Alley1988,
  author  = {Alley, Michael C. and Scudiero, Dominic A. and Monks, Anne and others},
  title   = {Feasibility of drug screening with panels of human tumor cell lines using a microculture tetrazolium assay},
  journal = {Cancer Research},
  year    = {1988},
  volume  = {48},
  pages   = {589--601}
}

@article{Paull1989,
  author  = {Paull, Kenneth D. and Shoemaker, Robert H. and Hodes, Lois and others},
  title   = {Display and analysis of patterns of differential activity of drugs against human tumor cell lines: development of mean graph and {COMPARE} algorithm},
  journal = {Journal of the National Cancer Institute},
  year    = {1989},
  volume  = {81},
  number  = {14},
  pages   = {1088--1092}
}

@article{Shankavaram2009,
  author  = {Shankavaram, Uma T. and Varma, Sudhir and Kane, David and others},
  title   = {{CellMiner}: a relational database and query tool for the {NCI-60} cancer cell lines},
  journal = {BMC Genomics},
  year    = {2009},
  volume  = {10},
  pages   = {277},
  doi     = {10.1186/1471-2164-10-277},
  pmid    = {19549304}
}

@article{Holbeck2010,
  author  = {Holbeck, Susan L. and Collins, Joseph M. and Doroshow, James H.},
  title   = {Analysis of Food and Drug Administration-approved anticancer agents in the {NCI60} panel of human tumor cell lines},
  journal = {Molecular Cancer Therapeutics},
  year    = {2010},
  volume  = {9},
  number  = {5},
  pages   = {1451--1460},
  doi     = {10.1158/1535-7163.MCT-10-0106},
  pmid    = {20442306}
}

@article{Colombo2024,
  author  = {Colombo, Giorgio M. and Corsello, Steven M.},
  title   = {Modernizing the {NCI60} cell line screen for phenotypic drug discovery in the 21st century},
  journal = {Cancer Research},
  year    = {2024},
  volume  = {84},
  number  = {15},
  pages   = {2397--2399},
  doi     = {10.1158/0008-5472.CAN-24-1506},
  pmid    = {39086314}
}

§9.4 引用指南

  • 使用面板数据:必引 Shoemaker 2006;如用 CellMiner 整合数据加引 Shankavaram 2009;如用 FDA 药物谱加引 Holbeck 2010。
  • 使用 HTS384 新数据:加引 Colombo & Corsello 2024 评论及官方 HTS384 方法页。
  • 致谢条款:按 DTP 要求在致谢中写明「screening data provided by the National Cancer Institute Developmental Therapeutics Program (NCI/DTP)」并列出 NSC 号。
  • 再处理版使用:加引对应 Zenodo 版本 DOI(10.5281/zenodo.5570629)。

§10 AI 使用声明卡

§10.1 AI 模型列表

环节 模型/工具 用途
内容生成 大型语言模型(CodeBuddy fast-model) 资料整合、正文撰写、代码示例生成

§10.2 AI 参与范围

本页面的研究检索(WebSearch 事实核查)、初稿撰写、代码示例与表格整理由 AI 完成;事实性声明均锚定到官方页面(dctd.cancer.govwiki.nci.nih.govdiscover.nci.nih.gov)与同行评审文献;结构、医学映射与最终发布由人类编辑部负责(见 §10.4)。

§10.3 输入来源列表

  1. Shoemaker RH. The NCI60 human tumour cell line anticancer drug screen. Nat Rev Cancer 6:813–823 (2006). DOI 10.1038/nrc1951. https://pubmed.ncbi.nlm.nih.gov/16990858/
  2. NCI/DCTD. NCI-60 Human Tumor Cell Line Screen(官方主页). https://dctd.cancer.gov/drug-discovery-development/assays/high-throughput-screening-services/nci60
  3. NCI/DCTD. Submit Compounds for NCI-60 Evaluation. https://dctd.cancer.gov/drug-discovery-development/assays/high-throughput-screening-services/nci60/submitting-compounds
  4. NCI Wiki. NCI-60 Growth Inhibition Data(2025-10 数据发布与字段说明). https://wiki.nci.nih.gov/x/EoD-O
  5. CellMiner — Genomics and Pharmacology Facility(2025.3 版). https://discover.nci.nih.gov/cellminer/home.do
  6. Shankavaram UT, et al. CellMiner: a relational database and query tool for the NCI-60 cancer cell lines. BMC Genomics 10:277 (2009). DOI 10.1186/1471-2164-10-277. https://pubmed.ncbi.nlm.nih.gov/19549304/
  7. Holbeck SL, et al. Analysis of FDA-approved anticancer agents in the NCI60 panel. Mol Cancer Ther 9:1451–1460 (2010). DOI 10.1158/1535-7163.MCT-10-0106. https://pubmed.ncbi.nlm.nih.gov/20442306/
  8. Colombo GM, Corsello SM. Modernizing the NCI60 cell line screen. Cancer Res 84:2397–2399 (2024). DOI 10.1158/0008-5472.CAN-24-1506. https://pubmed.ncbi.nlm.nih.gov/39086314/
  9. Cancila et al.(ICLAC 相关认证研究)Authentication of M14 melanoma cell line proves misidentification of MDA-MB-435 breast cancer cell line. https://pmc.ncbi.nlm.nih.gov/articles/PMC5762610/
  10. Integrative Analysis of Proteomic Signatures, Mutations, and Drug Responsiveness in the NCI 60 Cancer Cell Line Set. https://preview.ncbi.nlm.nih.gov/pmc/articles/PMC4085051/
  11. Public data and open source tools for multi-assay genomic investigation of disease. https://webadmin@pmc.ncbi.nlm.nih.gov/articles/PMC4945830/
  12. Pharmacogenomics in bladder cancer(NCI-60/CCLE/GDSC 资源对比与 COXEN 案例). https://pmc.ncbi.nlm.nih.gov/articles/pmid/24360659/
  13. Kohn KW. Drugs Against Cancer, Chapter 20(XTT/SRB 方法史与 COMPARE 起源). https://www.discover.nci.nih.gov/kohn/book/drugs_against_cancer_chapter20_v221108cg.pdf
  14. NCI-60 — Wikipedia/Wikiwand(COMPARE 库规模与误分类系汇总,交叉核对用). https://www.wikiwand.com/en/NCI-60
  15. 5-Dose 测试报告解读(GI50/TGI/LC50 定义与 MID). https://www.mdpi.com/resolver?pii=molecules29040914
  16. PECAN — deep learning cytostatic activity prediction. J Nat Prod (2023). DOI 10.1021/acs.jnatprod.3c00879
  17. Haibe-Kains B. NCI60 PharmacoSet (PSet). Zenodo, DOI 10.5281/zenodo.5570629. https://zenodo.org/records/5222641/latest
  18. NCI-60 引用计量交叉核对(Semantic Scholar/Scopus 镜像). https://www.semanticscholar.org/paper/56178af6fed40b059bafb5f355203ae8ad3a224a

§10.4 人工校验记录

内容模块 审核者 审核方式 审核状态
§1 概览与规模数字 千方病案医学编辑部 逐条对照官方主页与 DTP 数据发布页 ✅ 已通过
§2 医学背景与编码映射 千方病案医学编辑部 ICD-11/SNOMED 码逐项核对 ✅ 已通过
§3-§4 规格与数据结构 医疗 AI 数据工程师 对照 2025-10 发布字段说明逐字段核验 ✅ 已通过
§5-§6 划分与 AI 指南 医疗 AI 数据工程师 代码本地试运行 + 坑点溯源核对 ✅ 已通过
§7-§8 质量与基准 千方病案医学编辑部 引文逐条溯源 ✅ 已通过
§9-§10 引用与声明 千方病案医学编辑部 BibTeX 格式与致谢条款核对 ✅ 已通过

§10.5 AI 生成章节标注

§1-§9 正文初稿与代码示例由 AI 生成,经 §10.4 所列人工审核流程修正后发布;全部关键数字(规模、大小、QC 计数、引用量)均带来源链接,未发现无法溯源的声明。

§10.6 最后人工审核日期

2026-09-05(与 §0 审核日期一致)

页面状态:published(全部内容已完成审核并发布)

返回 AI-Ready 数据集