信息速览
TIL-WSI-TCGA 是存放在美国癌症影像档案馆(TCIA)的一份分析结果集:研究者用训练好的卷积网络,把 13 个 TCGA 癌种、近五千例受试者的数千张诊断 H&E 全切片逐张切网格,给每个小方格打上"有无淋巴细胞浸润"的判断,再拼成热图。它不是原始影像库,而是别人算好的中间产物——全量只有 73.4 GB,比它依附的全切片小了三个数量级,也正因为小,一份 CSV 就能装下整张切片的免疫地理。
这份中间产物的价值在于"全"。病理 AI 领域不缺万级全切片,缺的是每张切片都有的、跨癌种同口径的免疫微环境读数。TCGA 的分子分型、临床随访都是齐全的,唯独没有"这批病人肿瘤里淋巴细胞有多少、聚在哪"这一层;TIL 图谱补上的正是这一层,而且补了十三种癌。凡是涉及 “TIL 计数—分子亚型—预后” 三元关系的课题,这条资源几乎是公开数据里唯一可用的全癌种标注层。
但它有一个必须先说清的边界:它交付的是网格化的比例热图,不是"每个淋巴细胞的坐标"。两者看起来只是精度差别,实际决定了它能回答哪类问题。一屏速览见下表。
§1 速览:它到底是什么
1.1 一句话定义与三个坐标
一句话:TIL-WSI-TCGA 是"用 2018 年的一个卷积网络,把 TCGA 十三癌种的诊断切片翻译成 patch 级淋巴细胞比例地图"的产物集,附带原切片与生成代码,按 TCIA 的分析结果惯例单独挂 DOI 分发。
把它拆成三个坐标,思路就清楚了:
| 坐标 | 内容 | 决定了什么 |
|---|---|---|
| 它属于谁 | TCGA 诊断 H&E 切片的派生分析结果,托管在 TCIA | 与 TCGA 的 barcode、分子数据天然对齐 |
| 它测什么 | 每个 50×50 µm 小方格里"像不像淋巴细胞浸润区域" | 能做区域级免疫定量,做不了单细胞 |
| 它怎么给 | CSV 网格 + 原切片 + 生成代码 | 直读零门槛,可复算,也可改造 |
这三个坐标里,第二个最容易被忽略,也最容易出事故。第三节会把这件事展开。
1.2 为什么它不是普通的"病理数据集"
普通的病理影像库回答"长什么样",TIL 图谱回答"像不像免疫区域"。这句话不是修辞,它有具体的算法含义:模型没有见过淋巴细胞这个概念,它只学到"哪些 patch 在颜色和纹理上与训练时被标为阳性的 patch 相似"。权重是死的,阈值还要按切片再调一次。所以输出值是一个逐切片校准后的相对判断,不是绝对计数。
这带来两个直接后果。其一,跨切片的比较需要信任"逐切片阈值校正"这一步,而这一步的具体参数不会随数据分发;其二,输出的数值虽然叫"百分比",它的分母是前景面积而非细胞总数,与病理医师肉眼判读的 TIL 百分比、与分子层面的淋巴细胞比例都不是同一个量。三种"TIL 比例"之间的差别,在 §4.3 用一张表对齐。
1.3 三十秒决策卡:你的处境对应哪条路径
| 你的处境 | 这份资源能帮你什么 |
|---|---|
| 想验证"高 TIL 是否对应更好预后",但手头只有 RNA 数据 | 补上图像侧的组织面积 TIL 比例,与生存数据做双变量分析 |
| 想给 TCGA 做免疫分型,需要一个不依赖测序的影像代理量 | 用切片级 TIL 比例 + 聚类指数构造影像端免疫表型 |
| 手里有一批自建切片,想找一个现成的 TIL 分类器先跑基线 | 下载生成代码与模型权重,先跑通再决定是否重训 |
| 做弱监督多实例学习,需要"切片级标签 + 补丁级局部性" | CSV 网格本身就是现成的局部标签,可直接构造 MIL 包 |
| 想用公开数据评测自己的病理基础模型在免疫相关任务上的表现 | 拿网格热图当回归/分割的两个方向的伪真值 |
| 想研究肿瘤-免疫空间边界,需要"交界区有多宽" | 网格足够做 50 µm 尺度上的边界带分析 |
1.4 不适合谁
这里的边界比上表的适用路径更要紧,因为它决定了一批课题要不要换数据源。
如果需求是细胞级形态测量——数每个淋巴细胞的核面积、核质比、看它们贴不贴着肿瘤细胞——那 TIL-WSI-TCGA 给不了你任何东西。它连一个细胞的位置都没有记录,网格里只有"这一格主要是不是淋巴细胞浸润区"。
如果需求是细胞间邻接分析——构建细胞图、算免疫细胞到最近肿瘤细胞的平均距离、做 GNN 建图——同样不行。50 µm 的格子比一个淋巴细胞大两个数量级,格子之间的关系不等于细胞之间的关系。
如果需求是追溯单细胞——把某一张切片里的淋巴细胞与另一张切片里的做匹配或谱系追踪——也不行,它没有单细胞实体可供追溯。
如果需求是空间转录组层面的分子真值——需要"每个位置测得哪些基因"——那应该去看 HEST-1k 那样的配对资源,或者直接去 GDC 取冰冻切片的表达数据。TIL 图谱通篇没有任何分子测量。
最后,如果需求是从零训练一个细胞分割模型,正确的去处是逐核标注型的资源,例如泛癌细胞核分割集那样带实例掩膜的库。把 TIL 热图当分割掩膜喂进去,标签语义从一开始就错了。
1.5 它不是三类东西
为了把边界钉牢,把三种常见但错误的归类摊开:
| 误归类 | 为什么错 | 正确的对应物 |
|---|---|---|
| 把它当"淋巴细胞分割数据集" | 输出是比例网格,无实例边界、无质心、无掩膜 | 逐核实例标注型资源(掩膜级) |
| 把它当"免疫组化替代" | 计算染色基于 H&E 颜色纹理,不是抗体—抗原显色 | 真正的 CD3/CD8 IHC 切片 |
| 把它当"TCGA 切片的完整版本" | 它只覆盖 13 个癌种、且只保留成功生成图谱的切片 | TCGA 全量诊断切片(GDC / TCIA 采集页) |
§2 数据构成与规格
2.1 规模:四个数字与它们的口径
官方页面给出的核心数字只有几个,但每一个都要连着口径读:
| 数字 | 含义 | 口径提醒 |
|---|---|---|
| 13 | 癌种数 | 是 TCGA 癌种代码的数量,不是器官数 |
| 4,759 | 受试者数 | 受试者,不是切片数;同一人可能贡献多张 |
| 5,202 | 切片数(Series/Images 列) | 成功生成图谱的诊断切片数 |
| 73.4 GB | 全量体积 | 含切片、热图与代码的打包体积 |
| 5,455 | 处理量 | 论文口径的处理总数,不等于交付量 |
| 5,144 | 完成聚类 | 切片级聚类成功的数量 |
| 4,509 | 可算指数 | 进入浸润模式指数计算的病例数 |
这张表里最容易被误用的是交付切片数。它是"成功产出图谱的切片数",不是"参与处理的切片数"。论文方法部分明确写出:研究者对 13 个癌种共 5,455 张诊断全切片做了处理,其中 253 张(约 4.6%)因为图像质量差、预测准确率过低或属于重复切片而未能产出图谱。用处理总量减去这 253 张,差值正好等于交付量。这个减法关系是核对口径是否对齐的最快方法:任何引用里出现"五千四百多张"的说法,多半是在讲处理总量而非交付量。
体积 73.4 GB 同样要连着口径读。这个数字里既有全切片(SVS 格式,单张通常数百 MB),也有体量小得多的 CSV 热图。后续章节会说明,实际计算中最主要的 IO 压力来自切片,而最常被反复读写的对象恰恰是 CSV。
2.2 十三癌种清单
官方页面以编号列表形式给出 13 个癌种代码,表内顺序与官方一致:
| # | 代码 | 中文 | 器官系统 |
|---|---|---|---|
| 1 | BLCA | 膀胱尿路上皮癌 | 泌尿 |
| 2 | BRCA | 乳腺浸润癌 | 乳腺 |
| 3 | CESC | 宫颈鳞癌与宫颈腺癌 | 妇科 |
| 4 | COAD | 结肠腺癌 | 消化道 |
| 5 | LUAD | 肺腺癌 | 呼吸 |
| 6 | LUSC | 肺鳞癌 | 呼吸 |
| 7 | PAAD | 胰腺腺癌 | 消化腺 |
| 8 | PRAD | 前列腺腺癌 | 泌尿生殖 |
| 9 | READ | 直肠腺癌 | 消化道 |
| 10 | SKCM | 皮肤黑色素瘤 | 皮肤 |
| 11 | STAD | 胃腺癌 | 消化道 |
| 12 | UCEC | 子宫内膜癌 | 妇科 |
| 13 | UVM | 葡萄膜黑色素瘤 | 眼 |
这份清单里藏着一个少见的细节:UVM 的入选理由与前十二个癌种相反。论文明确说明,葡萄膜黑色素瘤在 TCGA 各癌种中免疫细胞最少,纳入它主要是充当阴性对照——如果模型在 UVM 上仍然报告大量"淋巴细胞浸润区",那多半是模型在过拟合染色或坏死纹理,而不是真的发现了免疫细胞。凡是做方法学评测的人,都应该把 UVM 单独拉出来看,它是一类免费的负对照。
对应的解剖位置在官方页面以器官词表形式列出:膀胱、乳腺、胸部、结肠、眼、肺、胰腺、前列腺、直肠、皮肤、胃、子宫、宫颈。注意"胸部"与"肺"同时出现,说明 B 超或胸壁组织属性被单独编码过;做器官维度分组时不要简单按癌种代码硬映射。
2.3 目录构成:三件东西
TCIA 的分析结果集通常不提供一张整齐的目录树截图,但官方页面的访问表把交付物分成互不相同的三块:
| 交付块 | 内容 | 使用频率 |
|---|---|---|
| 全切片影像 | 诊断 H&E SVS 切片,与 TCGA 诊断切片同源 | 中(只在需要重算或可视化时下载) |
| CSV 热图 | 逐切片的 patch 网格与淋巴细胞比例 | 高(绝大多数分析直接读这个) |
| 生成代码 | QuIP 软件栈与 u24_lymphocyte 分类流程 | 低(复算或改造时才用) |
这种"结果 + 原始 + 代码"三件套的分发方式在 TCIA 分析结果里是标准动作,但对使用者有实际意义:它意味着热图不是黑箱。如果对某一格产生怀疑,可以下载原切片、跑一遍代码、看同一格是否复现。这一点在 §5 会给出具体操作。
2.4 一条 CSV 的解剖
一个 TIL 网格 CSV 的逻辑结构可以这样理解:它本质是一张二维表,行与列对应切片在 20 倍放大下的 patch 网格,单元格里是该 patch 的淋巴细胞浸润判断与概率/比例值。下面是一段合成示意,字段名与排布用于说明形状,真实文件的列名以实际下载为准:
#-- 合成示意(字段名用于说明结构,非真实文件头)
#-- row 与 col 为 patch 网格索引,20x 下 1 个 patch = 50x50 um ≈ 100x100 px
row,col,tile_x,tile_y,p_til,score,label
0,0,0,0,0.02,0.01,0
0,1,100,0,0.11,0.07,0
0,2,200,0,0.63,0.71,1
1,0,0,100,0.00,0.00,-1
1,1,100,100,0.41,0.38,0
读这段示意要抓住三件事。第一,row/col 是网格位置,不是图像坐标;要还原到像素需要乘 patch 边长。第二,label 只传达"这一格是不是淋巴细胞浸润区"这一层判断,不给细胞个数。第三,负数标签通常代表背景(无组织),这与论文中"仅前景 patch 参与统计"的设定一致:背景不计入 TIL 比例的分子,也不计入分母。
这也解释了为什么同一个 CSV 在不同人手里会算出不同的"平均 TIL":分母的定义(是否含背景、是否含非肿瘤组织)不同,结果自然不同。官方口径是"仅用前景 patch",但前景不等于肿瘤。
2.5 为什么是 CSV
在 2026 年看,CSV 装热图显得朴素。这个选择在 2018 年有它的道理,也在今天留下具体后果。
好处是直读:任何语言、任何环境,打开就能看,不需要专门库,不需要版本匹配。对教学、快速探查、跨团队交接,这种"零依赖"极有价值。坏处是体积与索引:一张切片的网格行数可能上万,CSV 是纯文本,解析比二进制慢一到两个数量级;同时 CSV 没有内建索引,按 barcode 检索要靠 DataScope 或自建清单。
对这个规模的库,CSV 的影响是可控的——73.4 GB 里 CSV 只占一小部分。真正需要在意的是工程习惯:把 CSV 一次性读进内存做全库统计会很难受,先转 Parquet 再用列式读取,是省时间的常规做法。§5.4 给了一段转换脚本。
2.6 与同类资源的定位差异
把免疫微环境标注这条线上几个常见资源摆在一起,差异就很清楚了:
| 资源 | 标注粒度 | 癌种覆盖 | 交付形式 | 定位 |
|---|---|---|---|---|
| TIL-WSI-TCGA | patch 网格比例 | 13 个 TCGA 癌种 | CSV + 切片 + 代码 | 全癌种面积级免疫读数 |
| HEST-1k | spot/bin 级基因表达 | 器官与队列多元、癌症样本占比三成级 | H5AD + 切片 + 坐标 | 形态—分子配对 |
| 逐核分割型资源 | 细胞实例掩膜 | 视来源而定 | 掩膜 + 切片 | 细胞级形态学 |
| 自建 IHC 队列 | 蛋白显色 | 单机构少数癌种 | 切片 | 抗原特异证据 |
判断规则可以压缩成一句话:要广度选这一条,要分子选配对资源,要细胞选逐核标注,要抗原证据只能自建 IHC。四者不能互相替代,硬替代的结果要么是标签错位,要么是结论外推过头。
2.7 与上游 TCGA 的接口
TIL-WSI-TCGA 的最大隐性资产是它的索引体系与 TCGA 完全同源。切片以 TCGA barcode 标识,格式为 TCGA-XX-XXXX-01Z-00-DX1:前两段定位项目与受试者,第三段是样本类型码,后两段区分切片与染色。这种设计让"图像侧 TIL 比例"可以直接与"分子侧表达矩阵"、"临床侧随访"在同一张表里对齐,不必做额外的实体消歧。
对齐时的常见问题是 barcode 粒度。受试者级、样本级、切片级是三个层级,用 TCGA-XX-XXXX 匹配会退化为受试者级,同一受试者的多张切片会被合并;用完整 barcode 匹配才是切片级。做生存分析时前者更常用,做切片级建模时后者必须保住。
2.8 规模口径的三处张力
把官方页面与论文并读,会发现三处需要点明的口径张力。
第一处是受试者与病例。页面写近五千例受试者;论文在讲聚类与分子整合时用的是"病例"这一说法,并给出可用于分子整合的病例数少于图谱数。这两个概念不冲突,但引用时若混用,会得出"每张切片都有一份分子数据"的错误印象。
第二处是切片与图像。页面访问表的标题列写 Image,正文写切片,二者在本库里指同一对象(诊断全切片影像)。但在 TCIA 其他采集页里,"图像"也可能指 MRI 序列,跨页面搬运数字时容易串。
第三处是体积。73.4 GB 是打包体积,不是解压后的磁盘占用,也不是"只下 CSV"的体积。规划存储时应把它当上界而非下界。
§3 标注层:比例,而不是点
3.1 交付物的真实形状
把这件事说透,只需回答一个问句:打开任意一个 CSV,里面有没有"一个淋巴细胞一行"的记录?
答案是:没有。CSV 的每一行对应切片网格上的一个方形区域,不是对应一个细胞。区域里可能有一个淋巴细胞,也可能有五十个,也可能一个都没有——但只要有足够多的淋巴细胞让这一块"看起来像浸润区",它就被记为阳性。反过来,一个孤零零的淋巴细胞落在一个 mostly 是纤维组织的格子里,很可能被判为阴性。
这就是"网格化比例"与"细胞坐标"的根本差别:前者把一个区域压缩成一个数,后者保住了每个细胞的独立身份。压缩带来轻量,也永久丢掉了细胞之间的位置关系。这个损失不可逆——从比例热图反推不出细胞坐标,就像从直方图反推不出原始观测值。
3.2 为什么采用网格而非细胞
这不只是当年的技术妥协,也是任务设计的自然结果。
论文要回答的问题是"肿瘤里的淋巴细胞在空间上如何组织",而不是"这里有几千个淋巴细胞"。前一个问题需要的是区域性的密度与分布形态;后一个问题需要实例分割加计数。2018 年时,全切片级别的实例分割既贵又不稳,而 patch 分类在病理学上已有成熟的对应物——病理医师读片时看的正是"这一片区域里淋巴细胞多不多",很少去数单个细胞。
任务设计决定了标注形式。这是理解这份资源的关键一步:它不是在"细胞级标注"上做得不够好,它压根做的是区域级标注。
3.3 四种数据形态的对照
把这个差别放到四种常见的病理标注形态里看:
| 形态 | 每行代表 | 能回答 | 不能回答 |
|---|---|---|---|
| 细胞实例掩膜 | 一个细胞 | 核形态、细胞计数、邻接图 | 快速跨癌种批量统计(成本高) |
| 点标注 | 一个细胞中心 | 细胞位置与密度 | 细胞边界与形态 |
| patch 网格比例 | 一个 50 µm 区域 | 区域密度、空间分布、边界带 | 细胞计数、邻接、单细胞身份 |
| 切片级标签 | 一整张切片 | 二分类或回归 | 任何空间定位 |
TIL-WSI-TCGA 落在第三行。要注意它与第四行的区别:切片级标签只有一个数,而网格热图有上万个数,保留了空间结构。这让它能做"边界带分析"这类第三行独有能力,也让它在"细胞计数"上和第四行一样无力。
3.4 一个具体例子:同一张切片能问与不能问的问题
假设手上有 TCGA-BRCA 的一张诊断切片及其 TIL 热图。能问的问题是:
- 这张切片的 TIL 高值区集中在肿瘤实质内还是间质内?(可以在网格上做连通域分析)
- 高值区是否沿组织边缘呈条带状分布?(可以对高值格做形态学骨架)
- 这张切片与前一张同受试者切片的 TIL 分布是否一致?(可以逐格做相关性)
不能问的问题是:
- 这张切片里有多少个淋巴细胞?(网格只给区域,不给个数)
- 淋巴细胞与肿瘤细胞的平均最近距离是多少?(没有细胞坐标)
- 高值区里淋巴细胞是大是小、核异型性如何?(没有细胞形态)
- 这些淋巴细胞是 T 细胞还是 B 细胞?(H&E 无法分亚型,热图更不行)
把四组问句并排放,边界一目了然。前一组是"组织地理",后一组是"细胞个体"。这份资源只做前者。
3.5 三条不能越过的红线
基于上面的分析,可以写出三条硬边界:
- 不能做细胞级形态学。热图不携带任何核轮廓、核面积或纹理特征,做形态学只能回到原切片重新分割。
- 不能做细胞间邻接分析。邻接需要坐标,坐标不存在;用格子中心当代理会把误差放大到不可解释的程度。
- 不能追溯单细胞。跨切片、跨时间点的细胞身份匹配需要细胞实体,热图里没有。
这三条不是"建议不要",而是"做不到"。写论文时若在局限性里写成"分辨率有限",容易让人以为重训一下就能提升;准确的说法应是"标注层级不支持此类分析"。
3.6 边界与"可升级路径"
说清限制不等于否定用途。正确的用法是承认层级,然后在层级允许的范围内做到最好——必要时用原切片升级。
| 需求 | 直接用热图 | 需要升级 |
|---|---|---|
| 切片级 TIL 比例 | ✅ 可 | — |
| 50 µm 尺度空间分布 | ✅ 可 | — |
| 细胞计数 | ❌ | 回原切片做实例分割 |
| 细胞邻接 | ❌ | 分割后建图 |
| 免疫亚型 | ❌ | 上 IHC 或空间组学 |
升级路径的存在恰恰说明这份资源的位置:它是"低成本先跑一遍"的一层,而不是终点。多数课题先用它判断方向,再决定要不要花大价钱做细胞级测量——这个次序比反过来要经济得多。
§4 数值怎么读:比例的三种口径
4.1 图像侧比例的分母是什么
“这张切片 TIL 比例是 30%“这句话,在三个不同语境下指三件不同的事。图像侧的比例,分母是前景 patch 面积:先剔除背景(RGB 通道标准差的均值低于阈值的格子),再在剩下的格子里数阳性格。所以分母是"有组织的面积”,不是"肿瘤面积”,也不是"细胞总数"。
这一点直接导致一个系统性偏差:切片里如果含有较多正常组织、坏死或间质,这些区域的格子若被判为阳性,会把比例抬高。论文对此有明确表述,把"非肿瘤区域的 TIL 被计入"列为图像估计与分子估计不一致的首要原因之一。
4.2 三个分母的对照
| 口径 | 分母 | 谁在用 | 典型偏差方向 |
|---|---|---|---|
| 面积比例 | 有组织的前景面积 | 本资源、图像算法 | 非肿瘤区抬高 |
| 细胞计数比 | 淋巴细胞数 / 总细胞数 | 流式、单细胞解离 | 受解离偏倚影响 |
| 转录本比例 | 免疫相关转录本占比 | bulk RNA | 受肿瘤纯度影响 |
三者的共同点是都在测"免疫有多少",不同点是测的量纲完全不同。论文自己把这一点写成了一句话式的判断:分子估计像细胞计数比,图像比例则是含 TIL 的空间面积占比,两者本来就不该完全一致。
4.3 为什么不该追求"完全一致"
一些使用者会试图用 RNA 估计去校准图像比例,追求高相关性。这条路在方法学上站不住,原因有四条,官方论文逐条给出:
| 原因 | 具体机制 |
|---|---|
| 切片不同源 | 分子数据来自与诊断切片相邻的冰冻切片,空间对应关系未知 |
| 量纲不同 | 分子估计与淋巴细胞数成比例,图像比例按组织面积计 |
| 区域构成不同 | 图像侧统计包含切片上的非肿瘤区域 |
| 富集策略不同 | 分子定量来自高肿瘤纯度的冰冻切片 |
把这四条记住,就不会再问"为什么图像 TIL 与 RNA 免疫评分的相关性只有中等"——这不是谁不准,而是两个测量对象不同。任何声称把两者"打通"的做法,都必须先声明它如何补偿这四条差异。
4.4 切片级阈值校正的隐含意义
论文里有一个容易被跳过的步骤:为每张切片单独确定选择阈值,原因是网络会对某些切片系统性高估、对另一些系统性低估。
这个校正让比例在切片间更可比,但也引入了一个使用上的注意事项:阈值随切片变化,意味着"阳性"的绝对含义不是常量。一张高估倾向的切片,其阳性判定门槛被抬高;一张低估倾向的切片,门槛被压低。对切片内部做空间分析(哪里高、哪里低)没有影响;对跨切片做绝对比较时,需要理解这一层校准已经吸收了部分切片间差异。
正确的态度是:把比例当作"经校准的相对强度",而不是"可溯源到细胞数的绝对量"。这句话适用于绝大多数基于弱监督 CNN 的病理定量任务,不只适用于这一份资源。
4.5 聚类与模式指数
除逐格比例外,论文还在切片级做了聚类,并给出浸润模式指数。按公开的论文口径,全部图谱中有 5,144 张成功完成聚类,随后又基于 4,509 例计算了校正后的指数。
这些切片级结果的存在意味着三件事。第一,如果课题只需要切片级免疫分型,可以直接取这些汇总值,不必逐格重算。第二,聚类数与指数的定义随论文附件给出,使用前应回查附件而非凭印象。第三,少量切片在聚类环节失败或超时,做全量汇总时会出现"图谱数大于聚类数"的情况,这不是数据缺失,而是流水线阶段的正常损耗。
4.6 一个反直觉的观察
论文报告了一个值得记住的观察:非肿瘤区域的 TIL 在解释空间 TIL 与分子估计的差异上起了主要作用。
这句话的含义超出本资源本身:在诊断切片上,"肿瘤里有多少免疫细胞"这个朴素问题本身就有歧义。切片可能包含大量肿瘤旁组织、淋巴结或正常黏膜,这些区域的免疫细胞会被图像算法照单全收,而分子定量用的是富集肿瘤的冰冻切片。要贴近"肿瘤内"的语义,必须额外做肿瘤区域掩膜,而这正是论文列为后续工作的事项。
使用者的实操建议:如果课题严格关心肿瘤内 TIL,应当自行叠加一个肿瘤区域判定(无论用组织学规则、外部分割模型,还是直接买带肿瘤掩膜的切片资源),并在方法部分声明分母已被限定。不做这一步而直接使用面积比例,得到的更接近"整张切片的免疫活跃度",而不是"肿瘤内的免疫浸润"。
§5 生成流程与复算
5.1 流水线全貌
把生成过程拆开,是一条很标准、也很 2018 的流水线:
| 阶段 | 做什么 | 关键参数 |
|---|---|---|
| 切片栅格化 | 把全切片切成规则 patch | 20 倍放大、50×50 µm |
| 前景判定 | 剔除无组织格子 | RGB 通道标准差均值 < 18 判为背景 |
| 淋巴细胞分类 | CNN 判有/无浸润 | 18 层网络,输入 100×100 像素 |
| 坏死抑制 | 排除坏死区误报 | 500×500 µm 上下文,下采样至 333×333 |
| 阈值校正 | 逐切片调整判定门槛 | 按整片概率分布选阈值 |
| 热图导出 | 拼网格、导 CSV、渲染覆盖层 | 红=阳性,蓝=无 TIL 组织,黑=无组织 |
这张表值得收藏。它解释了为什么热图看起来"块状":最小单位就是 50 µm 见方的格子,再细也细不过去。也解释了为什么坏死区域会被单独处理:坏死核与淋巴细胞核在 H&E 下都可能呈现深染的小圆点,不专门抑制就会大面积误报。
5.2 分类器结构与其含义
淋巴细胞分类网络是 18 层的结构(14 层卷积、3 层池化、1 层全连接),并用卷积自编码器做初始化。对使用者而言,结构细节的意义不在层数,而在两点:其一,这是个小网络,推理快、依赖少,很容易在现代硬件上重跑;其二,它的感受野以 50 µm 尺度为中心,对更细的细胞形态几乎不敏感——这从设计上就决定了它做不了细胞级任务。
换句话讲,即便有人把 CSV 换成逐像素掩膜,只要模型还是这个,输出的语义仍然是"这一小片区域像不像浸润区",不会因为分辨率提高自动变成"这个细胞是不是淋巴细胞"。
5.3 复算需要什么
复算整条流水线需要三样东西:原切片、软件栈、模型权重。原切片在 TCIA 页面随结果集提供,也可以从 GDC 取同源诊断切片;软件栈是 QuIP 发行版;分类流程在 u24_lymphocyte 仓库中,仓库按功能分目录(patch_extraction/ 切块、prediction/ 推理、training/ 训练、heatmap_gen/ 出图、csv_generation/ 出 CSV、download_heatmap/ 取灰度热图并二值化)。
要复算时,安装依赖是第一道坎。下面的命令只做一件事:把仓库拉下来并确认目录齐备,不预先安装任何第三方包。
#-- 拉取分类流程并查看目录结构(依赖需按仓库 requirements 自行安装)
git clone https://github.com/SBU-BMI/u24_lymphocyte.git
cd u24_lymphocyte
ls -d */ | head -20
之所以先看目录而不急着装依赖:这个仓库的多个子目录有独立的依赖需求(推理与训练不一定共用同一套环境),先摸清结构再决定在哪一层复算,比整体 pip install 稳妥得多。
5.4 把 CSV 转成可查询格式
如果只是要读 CSV,不需要 Python 以外的任何东西;但要反复按 barcode 查、按癌种聚合,转成 Parquet 会省下大量时间。下面这段做的是最基础的一步:把一个目录下所有 CSV 合并成一张带切片标识的长表。
#-- 把一批 TIL 网格 CSV 合并成长表(Parquet),便于后续按 barcode 检索
import glob, os
import pandas as pd
frames = []
for path in glob.glob("til_maps/**/*.csv", recursive=True):
barcode = os.path.splitext(os.path.basename(path))[0]
df = pd.read_csv(path)
df["barcode"] = barcode
frames.append(df)
all_til = pd.concat(frames, ignore_index=True)
all_til.to_parquet("til_long.parquet", index=False)
print(all_til.shape)
读这段代码要注意三点:barcode 从文件名取,前提是文件名与 TCIA 侧命名一致,不一致时需改成从 manifest 映射;pd.concat 会把所有切片放进内存,全库一次跑请分癌种批次处理;to_parquet 需要 pyarrow,装一次即可。转换后,按癌种筛选从"遍历目录"变成一次谓词下推,速度差别明显。
5.5 从网格还原空间图
热图的价值一半在数值,一半在形状。把网格重排成二维矩阵,就能看到浸润是弥漫、是条带还是灶状。下面这一段只做重排与可视化,不做任何统计推断。
#-- 单张切片:把网格重排成矩阵并保存为图像,用于肉眼检查分布形态
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_csv("til_maps/TCGA-XX-XXXX-01Z-00-DX1.csv")
grid = np.full((df["row"].max() + 1, df["col"].max() + 1), np.nan)
grid[df["row"], df["col"]] = df["score"]
plt.figure(figsize=(6, 6))
plt.imshow(grid, cmap="inferno")
plt.colorbar(label="TIL score")
plt.title("patch-level TIL map")
plt.savefig("til_map.png", dpi=150, bbox_inches="tight")
重排的关键是行列索引必须来自数据本身而非假定连续。真实网格常有空洞(背景格被剔除),强行按等距索引会导致错位;用 max()+1 建画布再把缺失留成 NaN,空洞会被画成空白,这恰好是背景的位置。
5.6 切片级汇总的最小实现
多数课题不需要逐格数据,只需要每张切片一个数。下面这段把长表压成切片级指标,包含阳性格占比与阳性格的空间离散度两个量。
#-- 切片级汇总:阳性格占比 + 阳性格中心的离散度(空间聚集程度)
import numpy as np
import pandas as pd
df = pd.read_parquet("til_long.parquet")
fg = df[df["label"] >= 0] # 仅前景格参与统计
fg = fg.assign(pos=(fg["label"] == 1).astype(int))
def summarize(g):
pos = g[g["pos"] == 1]
if len(pos) == 0:
return pd.Series({"n_patch": len(g), "til_frac": 0.0, "spread": np.nan})
rr, cc = pos["row"].to_numpy(), pos["col"].to_numpy()
return pd.Series({
"n_patch": len(g),
"til_frac": pos.shape[0] / len(g),
"spread": float(np.hypot(rr.std(), cc.std())),
})
summary = fg.groupby("barcode").apply(summarize)
summary.to_csv("til_slice_summary.csv")
print(summary.describe())
这段的用意是把"比例"和"分布"分开:两张切片可以有相同的 til_frac,但一张是均匀散布、一张是集中成灶,spread 就是区分它们的粗粒度指标。它远不完美,但足以在探索阶段把"弥漫型"和"灶型"两组样本分开,为后续分析提供线索。
5.7 与 TCGA 分子数据对齐
真正的分析通常在"图像比例 × 分子分型"这个二维表上做。下面这段演示用 barcode 的前十二位把切片级结果挂到 TCGA 受试者级临床表上。
#-- 用受试者级 barcode 前缀把切片级 TIL 汇总挂到临床表
import pandas as pd
clin = pd.read_csv("clinical.csv", dtype=str) # 至少含 barcode 与癌种两列
summ = pd.read_csv("til_slice_summary.csv")
summ["case_id"] = summ["barcode"].str[:12]
merged = summ.merge(clin, on="case_id", how="inner")
merged = merged[merged["cancer_type"].isin(["BRCA", "LUAD", "SKCM"])]
print(merged.groupby("cancer_type")["til_frac"].agg(["count", "median"]))
前十二位是 TCGA 受试者标识,这是对齐的唯一稳定锚点。用 how="inner" 而不是 left,是为了先看清能对上多少张——对不上的部分往往来自样本类型码不匹配(如正常组织切片),这一步的 merge 行数差本身就是诊断信息。
5.8 复算的现实成本
复算不是免费动作。把成本摊开:
| 环节 | 主要代价 | 可否跳过 |
|---|---|---|
| 下载全切片 | 体积是热图的数十倍 | 只做统计可跳过 |
| 环境与权重 | 旧框架依赖,版本兼容需调 | 可用现成热图跳过 |
| 逐片推理 | 与切片数成正比 | 可抽样 |
| 阈值校正 | 需要整片分布,难以逐格并行 | 不可跳 |
结论很实用:绝大多数课题不需要复算。复算只在三种情况下值得做——怀疑某个癌种的热图有系统偏移、想换更新更强的分类器做对比、或者要把流程迁移到自建队列上。其余情况下,直接用 CSV 是正确选择。
§6 在库内的位置与配用
6.1 三层标注的分工
把库内与病理标注相关的几条资源按层级排开,配用关系就清楚了:
| 层级 | 资源 | 回答的问题 | 规模 |
|---|---|---|---|
| 面积级免疫 | TIL-WSI-TCGA | 这一片区域免疫活跃吗 | 十三癌种、数千张切片 |
| 分子级配对 | 空间转录组配对资源 | 这一点的基因表达是什么 | 千级样本 |
| 细胞级形态 | 逐核分割资源 | 这个细胞长什么样 | 视来源而定 |
三层不是竞争关系,而是成本与精度的梯度。实践中常见的路线是:先在面积级筛出候选切片,再到分子级验证机制,最后在细胞级做形态学解释。跳过第一层直接进第三层,代价是标注成本;停在第一层就下机制结论,风险是语义外推过头。
6.2 与 TCGA 主库的关系
TCGA 主库提供分子、临床与影像三块底座;TIL 图谱是挂在影像底座上的一层派生结果。二者的关系是"索引共享、内容独立":内容独立意味着更新不同步(TCGA 的切片版本可能微调,TIL 图谱不会跟着重算),索引共享意味着对齐几乎零成本。
这个不对称有一个实际后果:如果某张切片在 LCIA 侧更新过扫描,TIL 图谱仍是当年那一版算出来的。差异通常很小,但在做像素级比对时值得记一笔。
6.3 与单癌种词条的关系
乳腺癌、肺腺癌这类单癌种词条讲的是某个 TCGA 队列的完整构成(分子、临床、影像),TIL 图谱讲的是十三癌种共有的一个标注维度。二者互补:从单癌种词条进来的人,通常关心"这个癌种的全貌";从这份图谱进来的人,通常关心"跨癌种的免疫表型比较"。做跨癌种比较时,母库提供分组变量,图谱提供被比较的量。
6.4 与泛癌分析词条的关系
泛癌图谱类词条处理的是分子层面的跨癌种整合;TIL 图谱提供的是图像层面的跨癌种整合。两者叠加,才能回答"分子亚型是否在形态免疫维度上也有对应"这类问题。需要注意的是,两边的癌种集合不完全相同(泛癌分析的癌种数多于十三),做交叉时必须取交集后再比较。
6.5 检索路径
从这份图谱出发,三条常规检索路径:
| 目标 | 路径 |
|---|---|
| 拿到某癌种的全部 TIL 热图 | TCIA 页面 → TIL Map Browser → 按癌种筛 barcode |
| 拿到与分子数据可对齐的样本表 | TCIA 清单 → 截取受试者级 barcode → 与 GDC 临床表 inner join |
| 拿到细胞级替代方案 | 转至逐核分割类资源,按癌种与器官筛 |
三条路径的共同前提是先把 barcode 粒度想清楚——这是整条检索链上唯一容易出错的地方。
6.6 互链建议
按用途配对:要分子侧去看配对资源,要细胞侧去看逐核标注资源,要原始影像与临床就看 TCGA 主库。本篇末尾由站内标签体系自动生成的导航列表,已经按这一逻辑排序,无需另行维护。
§7 质量评估与局限性
7.0 阅读本节前需要知道的一件事
评价这份资源,不能套用"数据集质量"的框架。它不是一份采集来的数据,而是一份算出来的结果;它的质量等于"当年那个分类器 + 那套阈值 + 那批切片"三者的合成质量。用"标注准确率多少"去问它,等同于问一张 X 光片"诊断准确率多少"——问题本身错位。
正确的问题是三个:这个分类器在它被设计的目标上是否可靠?它的输出被人当作什么使用时最危险?过了八年,哪些部分已经被更新的方法超越、哪些仍然不可替代?
另外要避免两种常见误判。第一种是把它当训练集,直接拿网格标签去训分割模型——语义层级不对,训出来的模型学的是"区域像不像浸润区",却被当成细胞分割器部署。第二种是认为既然有了病理基础模型,这份 2018 年的产物已经无用——事实上它的价值恰恰不在模型,而在"全癌种、同口径、已算好"这三点的组合,这一点至今没有等价替代。
7.1 三类已知局限
| 局限 | 性质 | 影响面 | 缓解 |
|---|---|---|---|
| 比例而非坐标 | 结构性,不可通过重训消除 | 所有细胞级分析 | 回原切片重做实例分割 |
| 无分子真值 | 结构性 | 机制类结论 | 与分子/空间组学配对使用 |
| 癌种覆盖不均 | 抽样性 | 单癌种统计推断 | 按癌种分层报告,不看总量 |
| 阈值逐片校准 | 方法性 | 跨切片绝对比较 | 视为相对强度 |
| 非肿瘤区计入 | 方法性 | 肿瘤内 TIL 的估计 | 叠加肿瘤掩膜 |
| 模型年代久 | 技术性 | 与新一代模型的对比 | 复算或换分类器 |
这张表按"能不能靠工程手段补救"分三档:结构性局限要换数据形态,方法性局限要加预处理,技术性局限要重跑模型。把三类混为一谈,就会得出"等有更强的模型就都能解决"的错误结论——前两类不会因为模型变强而消失。
7.2 癌种覆盖的实际情况
十三癌种听着齐整,实际每癌种的切片数差别很大。官方页面没有逐癌种给出切片数,需要在 TIL Map Browser 中按癌种筛选后才能计数。这个动作应当成为使用前的固定步骤,因为单癌种结论的可信度与切片数直接相关,而这个数字不在页面上。
做跨癌种比较时还有一个被低估的问题:癌种间的 TIL 基线本身差异巨大。皮肤黑色素瘤与肺鳞癌的免疫浸润通常比前列腺癌与葡萄膜黑色素瘤活跃得多,这是生物学事实而非数据缺陷。跨癌种直接比较绝对比例没有意义,比较的是"在该癌种内部处在什么分位"。
7.3 DAIMS 评分表
DAIMS(Data and Analytics Interoperability Maturity Standards 口径)从描述、结构、访问三层看一个数据资源是否"可被别人正确使用"。这里按八项打分:
| 评估维度 | 层级 | 评分 | 依据 |
|---|---|---|---|
| 描述层·身份与边界 | 描述 | 4/5 | 名称、DOI、癌种、规模齐全;但"比例 vs 坐标"的边界未在页面显式声明,需读论文才能确认 |
| 描述层·文档完备度 | 描述 | 3/5 | 有配套论文与 FAQ 文档;但 CSV 字段字典未随页面公开,格式细节须看代码 |
| 结构层·标识体系 | 结构 | 5/5 | TCGA barcode 与上游完全同源,受试者/样本/切片三级粒度清晰可辨 |
| 结构层·层级一致性 | 结构 | 4/5 | 网格行列索引语义一致;个别切片存在空洞(背景剔除),需按数据自建画布 |
| 结构层·模态配对 | 结构 | 4/5 | 影像、热图、代码三件同源分发;分子数据在 GDC,需自行按 barcode 对齐 |
| 访问层·开放程度 | 访问 | 5/5 | 无需注册即可按 barcode 检索与下载,提供 DataScope 检索入口 |
| 访问层·可复现性 | 访问 | 4/5 | 代码与软件栈公开,可复算;但逐切片阈值参数不随数据发布 |
| 访问层·许可清晰度 | 访问 | 4/5 | CC BY 3.0 明确;上游影像受 GDC 条款约束,两层关系需自行厘清 |
合计 33/40。这个分数与它的定位相符:作为"挂在成熟索引体系上的派生结果",它在标识与访问上失分很少;失分集中在边界表述与字段文档——这两项恰是需要读论文才能补齐的部分,也是使用门槛的真实所在。
对你意味着什么:标识与许可可以直接信任,不必再花时间审计;但"这份东西到底测的是什么"必须自己读论文确认,页面不会告诉你。第 1 项的 4 分与第 2 项的 3 分,是这条资源最容易造成误用的两处。
7.4 外部验证的现状
按 TCIA 页面显示的 DOI 引用情况,该结果集的引用量在十条量级。这在影像分析结果集里属于中等偏上,说明它被使用过、被引用过,但远未达到"社区标准基准"的量级。
外部验证的形式大致三类:一是把它当作 TCGA 影像队列的附加特征,与分子分型或生存做关联;二是把它当作弱监督学习的现成标签;三是把它当作对照组,检验新方法的输出是否与既有结论一致。三类的共同点是都把它当"输入",很少把它当"待验证对象"——这正是它目前最主要的验证缺口:没有一个独立的、前瞻性的复现研究专门检验它的输出在多中心数据上的稳定性。
7.5 伦理与合规
分发内容为 TCGA 去标识化的研究切片与派生热图。CC BY 3.0 允许商业使用,但底图来自 TCGA 诊断切片,切片本身在 GDC 有独立的使用条款。合规的稳妥做法是两条都看,取更严格者。
另有一层常被忽略:热图虽然不是影像,但它从影像派生,且逐格可还原到原切片的对应区域。所以在涉及再分发时,应当把它与影像同等对待,而不是当"统计表"处理。
7.6 精度与分辨率的双重含义
谈这份资源的"精度",要区分两个概念:空间分辨率(50 µm 一格)与分类精度(判对/判错的概率)。前者是固定的设计参数,后者取决于模型与病例。
很多误用来自把两者混淆。看到"50 µm 分辨率"就以为"每个 50 µm 格子的判断都可靠",是错的:分辨率说的是格子多大,不是格子判得准。反过来,看到"分类精度高"就以为"可以细到细胞级",也是错的:精度再高,也跳不出格子。
7.7 失效模式清单
| 失效场景 | 表现 | 原因 |
|---|---|---|
| 坏死区误报 | 热图在坏死带出现大片阳性 | 坏死核与淋巴细胞核颜色相近,抑制不彻底 |
| 淋巴滤泡过判 | 三级淋巴结构被整块标为阳性 | 滤泡本身就是淋巴细胞密集区,语义上并不算错 |
| 染色偏深切片 | 全片阳性率偏高 | 阈值校正只能部分吸收染色差异 |
| 组织折叠切片 | 折叠处出现假阳性条带 | 折叠使组织密度翻倍 |
| 边缘伪影 | 切片边缘条带状假阳性 | 扫描边缘失焦或胶带残留 |
这份清单的价值在于:它给出的都是"能在热图上肉眼看出来"的现象。拿到一张热图先扫一遍这五种形态,能挡掉大部分明显不可用的切片,成本极低。
7.8 与"图像 TIL 比例"这一概念的总体评价
最后回到概念层。TIL 在病理学里长期是一个"半定量"概念——病理医师看片后给出一个百分比,不同人给出的数差别不小。图像算法给出的比例并不比人眼更"真",它只是更可重复:同一张切片跑两遍,结果一样;两个人看同一张切片,结果可能不同。
这份资源真正的贡献是把一个半定量的主观判断,变成了可批量复现、可全癌种比较的数值。理解这一点,就不会去追问"它准不准",而会去问"它的可重复性带来了什么新可能"。答案在下一节。
§8 版本、由来与生态位
8.1 只有一个版本,且八年未动
TCIA 页面的数据访问区只有一个版本号:Version 1,更新日期 2018 年 12 月 17 日。没有 v2,没有勘误表,也没有后续追加的癌种。
这一点必须和"项目活跃度"分开理解。TCIA 上大量分析结果集都是"一次性交付"模式:作者跑完、上传、写论文,此后不再维护。这不是失职,而是这类资源的生产逻辑决定的——它是论文的补充材料,论文定稿,产物就冻结。冻结带来稳定性(引用它的人不受版本漂移影响),也带来滞后(模型与标注口径不会随领域进展更新)。
对使用者的实际含义是:可以放心把"v1 / 2018-12-17"写进方法部分,不必担心哪天数据悄悄变了;但也不能指望它被修过——如果发现某个癌种的热图有系统问题,只能等作者或社区自行处理。
8.2 它是怎么来的
这条资源是一条"方法论文的配套产物"。研究团队来自石溪大学生物医学信息学系,长期做 QuIP 软件栈与病理影像的 Web 检索。他们的出发点不是"建一个 TIL 数据集",而是验证一个方法学判断:H&E 切片里蕴含的形态信息,是否足以支撑对免疫浸润的定量估计,且这种估计能否与分子数据相互印证。
为此他们需要的不是新采集的数据,而是一批"图像齐、分子齐、临床齐"的现成队列。TCGA 恰好三样都有,唯独缺免疫标注。于是就有了这个闭环:用 TCGA 验证方法,验证完把产物还给 TCGA 生态。这是典型的"公共数据反哺公共数据"路径,也是它能在八年里保持唯一性的原因之一——后续想复刻的团队,要面对的是"已经有了一份,为什么还要再做一份"的问题。
8.3 为何能持续
一个冻结于 2018 年的结果集,为什么至今仍被引用?三条支撑:
| 支撑 | 机制 |
|---|---|
| 索引刚性 | 与 TCGA barcode 同源,任何用 TCGA 影像的课题都能零成本接入 |
| 覆盖稀缺 | 十三癌种、数千张切片的同口径免疫标注,至今没有等量替代 |
| 语义简单 | 一张网格图,业务侧(病理、肿瘤、统计)都能理解,不需要分子生物学背景 |
三条里最硬的是第二条。做细胞级的资源不少,做分子级的资源不少,但"每张切片都有、跨十三个癌种、口径统一"的免疫读数,只有这一份。稀缺性不来自技术难度,而来自"在正确的时间用足够的算力把整批公共队列跑完"这件事,晚做或早做都做不出来。
8.4 生态位的三个邻居
把它的上下游邻居摆出来,位置更清楚:
| 邻居 | 与这份图谱的关系 |
|---|---|
| TCGA 影像采集页 | 上游:提供切片与 barcode 索引 |
| GDC 分子与临床门户 | 平行:提供对齐用的分子与随访变量 |
| 病理基础模型与下游 MIL 工具链 | 下游:把网格热图当弱标签或评测目标 |
它处在这条链的中间位置:不是最底层的数据,也不是最上层的模型,而是一层"已被解释过的影像"。这个位置决定了它的寿命——底层切片会一直存在,上层模型会不断换代,中间的解释层则取决于解释本身是否还有价值。
8.5 八年间的变与不变
变的是一侧的测量能力。2018 年时,全切片级别的细胞实例分割是重活;到 2026 年,用病理基础模型做零样本或少量标注的细胞分割已经是常规操作。这意味着"想要细胞级免疫定量"的人,今天可以从原切片直接做,不必依赖这份网格。
不变的是另一侧的覆盖。自建细胞级流水线需要算力、工程与验证,不是每个课题组都愿意承担。而"下载 CSV、算个比例、和生存数据跑一下"的成本,八年没有变化。所以它的用户结构大概率发生了位移:从"当年唯一能做的方法",变成"成本最低的初筛手段"。这个位移不削弱它的价值,只是换了价值的位置。
8.6 引用与署名
使用时需要署名,因为许可是 CC BY 3.0。规范的引用方式有两条:引用结果集本身(DOI 指向 TCIA 的分析结果页),引用方法论文。前者说明数据从哪来,后者说明数据怎么算出来。只引用其中一个,在方法学审稿里常被要求补全。
§9 使用指引
9.1 三种角色的路径
| 角色 | 第一步 | 第二步 | 交付物 |
|---|---|---|---|
| 临床/转化研究者 | 按癌种筛切片,取切片级汇总 | 与临床结局、分子分型做关联 | 一张关联表 + 分层图 |
| 算法研究者 | 取网格热图当弱标签 | 训 MIL 或分割模型,与逐核标注对比 | 模型 + 对比表 |
| 数据工程师 | 建 barcode 清单,CSV 转 Parquet | 搭切片级缓存与元数据索引 | 可查询的内部数据层 |
三种角色的共同前置动作是同一件:先把 barcode 清单拉下来,把"有哪些切片"这件事变成一张可查询的表。跳过这一步直接下 CSV,通常会在中途发现目录里混着非目标癌种的切片。
9.2 最小可用流程
从零到第一个结论,最短路径是五步:
- 在 TCIA 的结果页通过 TIL Map Browser 按癌种筛选,导出 barcode 清单;
- 只下载 CSV(不下载切片),体积可控;
- 按 §5.4 转成长表,按 §5.6 压成切片级汇总;
- 从 GDC 拉取对应受试者的临床表,按前十二位 barcode 合并;
- 按癌种分层报告比例分布,不做跨癌种合并。
第五步最容易被省掉,也最不该省。跨癌种合并会把生物学差异当成统计信号,得到的"高 TIL 组预后更好"之类的结论,往往是癌种构成差异的伪装。
9.3 在 AI 流程中的位置
放到一条典型的病理 AI 流水线上,这份资源占的是"弱标签供给"与"评测参照"两个位置:
| 流水线环节 | 本资源的作用 |
|---|---|
| 数据准备 | 提供切片级与区域级标签,免去人工标注 |
| 预训练 | 不适用(标签是区域级,不适合做自监督语料) |
| 微调 | 可作为多任务中的一个辅助头 |
| 评测 | 作为外部参照,检查模型输出与既有结论是否一致 |
| 部署监控 | 作为分布偏移的参照基线 |
"预训练不适用"这一条值得强调:它的标签是监督信号,不是无监督语料。想拿它做自监督预训练的人,实际想用的是它附带的原切片——那属于 TCGA 影像,不属于这份结果集。
9.4 常见工程坑与规避
| 坑 | 表现 | 规避 |
|---|---|---|
| 把受试者数当切片数 | 统计时样本量偏小 | 明确按 barcode 粒度计数 |
| 把背景格算进分母 | 比例系统性偏低 | 先按 label 过滤前景 |
| 直接假设网格连续 | 重排后图形错位 | 用 max 索引建画布,缺失留空 |
| 全库 CSV 一次读入内存 | 进程被杀 | 按癌种分批 |
| 跨癌种合并统计 | 结论被癌种构成主导 | 分层报告 |
| 把热图当分割掩膜 | 标签语义错位 | 回到实例级资源 |
这张表里的每一项都在实践中出现过,其中最后一项后果最重:它不会当场报错,而是让一个语义错误的模型安静地跑完训练,直到上线才暴露。
9.5 切片级质控的最小脚本
下载后先做一次粗筛,成本低、收益高。下面这段只检查两件事:前景格数量是否过少(切片可能大部分是空白),以及阳性率是否异常(可能染色或阈值问题)。
#-- 切片级粗筛:前景过少或阳性率异常的切片先剔出人工复核
import pandas as pd
df = pd.read_parquet("til_long.parquet")
fg = df[df["label"] >= 0]
stat = fg.groupby("barcode").agg(n_fg=("label", "size"))
stat["pos_rate"] = fg.assign(p=(fg["label"] == 1)).groupby("barcode")["p"].mean()
flag = stat[(stat["n_fg"] < 200) | (stat["pos_rate"] > 0.6) | (stat["pos_rate"] < 0.005)]
print(flag.sort_values("pos_rate"))
三个阈值都是经验值,不是官方标准:前景少于 200 格说明组织可能大部分缺失或被误判为背景;阳性率超过六成在多数癌种里不合理;低于千分之五则可能是阈值定得过高。把被标记的切片人工看一眼热图,再决定去留,比全量信任要稳。
9.6 一份可交付的分析骨架
如果要把这条资源用进一个正式课题,建议的最小交付结构是:
| 交付项 | 内容 |
|---|---|
| 切片清单 | barcode、癌种、前景格数、阳性率 |
| 质控记录 | 剔除清单与剔除理由 |
| 切片级指标 | 比例 + 空间离散度 + 聚类归属 |
| 关联表 | 与临床、分子变量的合并结果 |
| 分层报告 | 按癌种分别给出,不合并 |
这份结构不是模板,而是把前面所有边界条件落成的检查项。填不满的格子,通常就是问题所在。
§10 AI 使用声明
| 项 | 内容 |
|---|---|
| 性质 | 算法生成的分析结果集,非原始采集数据 |
| 建议用途 | 免疫微环境定量特征、免疫表型分层、弱监督标签、方法评测参照 |
| 不建议用途 | 细胞级形态学、细胞邻接分析、单细胞追溯、临床诊断输出 |
| 伦理边界 | 去标识研究数据;不得尝试重识别;热图与影像同等对待 |
| 引用要求 | 同时引用结果集 DOI 与方法论文 |
| 版本 | v1,2018-12-17 |
| 状态 | 冻结,无后续版本 |
| 再分发 | 遵循 CC BY 3.0 署名,并核对上游 GDC 条款 |
常见误读
| 常见说法 | 实际情况 | 证据 |
|---|---|---|
| “它给出每个淋巴细胞的位置” | 只给 50 µm 网格内的浸润判断,无细胞坐标 | 论文方法:patch 级分类,热图为区域覆盖层 |
| “可以拿它训细胞分割模型” | 标签是区域级,训出的模型语义错位 | 输出为 patch 概率,无实例掩膜 |
| “TIL 百分比等于分子免疫评分” | 一个按面积、一个按细胞数或转录本,量纲不同 | 论文列出四条不一致原因 |
| “交付切片数就是参与处理的切片数” | 交付量少于处理量,差额为两百余张 | 论文:未产出占 4.6% |
| “规模数字里的第一个是切片数” | 那是受试者数,切片数另计 | 页面 Subjects 列与 Images 列分列 |
| “十三癌种样本量相当” | 各癌种切片数差异大,需按癌种筛选计数 | 页面未逐癌种披露,须用浏览器统计 |
| “它可以替代 CD3/CD8 免疫组化” | 计算染色基于 H&E 纹理,非抗原显色 | 官方称 computational staining |
| “UVM 也应当有大量 TIL” | UVM 是阴性对照,免疫细胞最少 | 论文说明其入选理由 |
| “热图分辨率提高就能到细胞级” | 模型设计尺度是 50 µm 区域,细节不敏感 | 输入 patch 100×100 像素 |
| “比例可直接跨切片绝对比较” | 阈值逐片校准,只能当相对强度 | 论文的逐切片阈值校正步骤 |
| “它覆盖了 TCGA 全部癌种” | 只有 13 个癌种有图谱 | 页面癌种清单 |
FAQ
Q1:这份资源叫什么,名字怎么念?
官方名称是 TIL-WSI-TCGA,副标题为 Tumor-Infiltrating Lymphocytes Maps from TCGA H&E Whole Slide Pathology Images。日常简称 TCGA TIL Maps,TCIA 侧的浏览入口叫 TIL Map Browser。
Q2:它和 TCGA 是什么关系?
TCGA 提供切片,这份资源提供在切片上算出来的免疫浸润热图。索引共用同一套 barcode,内容各自独立,更新也不同步。
Q3:我只要 CSV,需要下载多少?
CSV 在全量里只占一小部分。真正的体积大头是 SVS 全切片,只做统计时完全可以只取 CSV。
Q4:为什么交付的切片数比处理的少?
论文写明有 253 张因图像质量、预测准确率过低或属重复切片而未产出图谱,占处理量的 4.6%。
Q5:CSV 里一个格子代表多大面积?
50×50 µm,对应 20 倍放大下的 100×100 像素。这个尺度是全部后续解读的地基。
Q6:能不能用它区分 T 细胞和 B 细胞?
不能。H&E 染色本身不提供免疫细胞亚型信息,热图只是"像不像淋巴细胞浸润区"的判断,连细胞身份都不给,遑论亚型。
Q7:跨切片比较比例要注意什么?
注意逐切片阈值校正已吸收了部分切片间差异,比例应视为经校准的相对强度;做绝对比较前应先看同一癌种内的分布。
Q8:为什么做生存分析必须按癌种分层?
癌种之间 TIL 基线差异巨大,合并分析会把癌种构成差异误读为免疫效应。分层也是最省事的做法。
Q9:它有没有官方训练集/测试集划分?
没有。结果集不提供划分,划分责任在使用方,按受试者而非切片划分是底线。
Q10:我能把它用在商业产品里吗?
CC BY 3.0 允许商用,需署名。但底图来自 TCGA 切片,商用前应同时核对 GDC 侧的条款。
Q11:想升级到细胞级,最快的路是什么?
回到 TCGA 原切片,用现成的通用细胞分割模型做一遍,再按需要做淋巴细胞分类。这条路的成本已远低于 2018 年。
Q12:它会不会有 v2?
从 2018 年至今只有一个版本,页面无维护迹象。按"冻结资源"规划使用,不要等更新。
术语表
| 术语 | 解释 |
|---|---|
| TIL | 肿瘤浸润淋巴细胞,指进入肿瘤组织的淋巴细胞 |
| WSI | 全切片影像,一张玻片经扫描后得到的金字塔图像 |
| patch | 切片被切出的规则小方块,本资源为 50×50 µm |
| 计算染色 | 用算法在 H&E 上"染"出目标结构,非真实抗体显色 |
| 弱监督 | 用切片级或区域级标签训练模型,标签不含像素级真值 |
| MIL | 多实例学习,把一张切片视为多个 patch 的包 |
| 前景 | 判定为有组织、参与统计的 patch |
| 背景 | 无组织或被判定为空的 patch,不计入分母 |
| 阈值校正 | 按整片概率分布调整判定门槛,抵消切片间系统偏移 |
| 坏死抑制 | 用单独的模型排除坏死区的误报 |
| 聚类指数 | 刻画浸润模式空间聚集程度的切片级统计量 |
| TCGA barcode | 十六位样本标识,前十二位定位受试者 |
| TCIA | 美国癌症影像档案馆,分析结果集的托管方 |
| QuIP | 病理影像的 Web 检索与标注软件栈 |
| DataScope | TCIA 的在线筛选与下载入口 |
| SVS | Aperio 扫描仪的全切片文件格式 |
| 阴性对照 | 预期无信号的癌种,用于检验模型是否过度报告 |
| 面积比例 | 阳性格面积除以有组织面积,本资源的输出口径 |
附录 A 速查卡
| 键 | 值 |
|---|---|
| 全称 | Tumor-Infiltrating Lymphocytes Maps from TCGA H&E Whole Slide Pathology Images |
| DOI | 10.7937/K9/TCIA.2018.Y75F9W1 |
| 癌种 | 13 |
| 受试者 | 近五千例 |
| 切片 | 五千余张(处理量更多) |
| 体积 | 七十余 GB |
| 网格 | 50×50 µm,20 倍放大 |
| 版本 | v1,2018-12-17 |
| 许可 | CC BY 3.0 |
| 入口 | TCIA 分析结果页 |
| 代码 | QuIP + u24_lymphocyte |
| 边界 | 比例网格,非细胞坐标 |
附录 B 文件清单
| 文件/目录 | 内容 | 是否必需 |
|---|---|---|
| CSV 热图 | 逐切片网格与比例 | 是 |
| SVS 切片 | 诊断 H&E 全切片 | 视任务 |
| 分类代码 | patch 切分、推理、出图 | 仅复算 |
| 软件栈 | QuIP 发行版 | 仅复算 |
| 论文附件 | 聚类与指数定义 | 做切片级分析时 |
附录 C 外部资源对照
| 资源 | 用途 |
|---|---|
| TCIA 分析结果页 | 下载与检索入口 |
| TIL Map Browser | 按 barcode 浏览与筛选 |
| GDC 门户 | 分子与临床数据 |
| u24_lymphocyte 仓库 | 分类流程源码 |
| QuIP 发行版页面 | 软件栈说明 |
| 方法论文 | 算法、阈值、局限的原始表述 |
附录 D 口径对照
| 说法 | 数值 | 出处 |
|---|---|---|
| 处理切片 | 5,455 | 方法论文 |
| 成功出图 | 页面 Images 列 | 页面 |
| 未出图 | 253(4.6%) | 方法论文 |
| 受试者 | 页面 Subjects 列 | 页面 |
| 完成聚类 | 5,144 | 方法论文 |
| 可算指数 | 4,509 | 方法论文 |
这张表的作用是把"哪一个数字属于哪一道工序"钉住。同一份结果集里,受试者、切片、聚类、指数四个量分属四个阶段,跨阶段相减相除必然出错。
附录 E 检查清单
| 检查项 | 完成标志 |
|---|---|
| 明确分析层级 | 知道自己在做区域级还是细胞级 |
| 明确分母 | 声明是否剔除背景、是否限定肿瘤区 |
| 明确粒度 | 统计以切片还是受试者为单位 |
| 明确分层 | 跨癌种结论已分层报告 |
| 明确许可 | 引用与再分发条款已核对 |
| 明确版本 | 方法中写明 v1 与日期 |
编辑说明
核验时间:2026-10-29。核验方式:官方 TCIA 分析结果页正文、TCIA DataScope 入口、方法论文(Cell Reports 2018)正文与作者仓库 README。未覆盖内容:逐癌种切片数未在页面公开披露,故正文未给出各癌种切片数;CSV 字段名以实际分发文件为准,正文示意为结构说明;逐切片阈值参数未随数据发布,故未列具体数值。与初稿事实表的差异:事实表未列 DOI 与受试者/切片的口径拆分,此处补充;13 癌种清单中"宫颈鳞癌及腺癌"在官方为合并条目,"葡萄膜黑色素瘤"为阴性对照,事实表未标注。
相关数据集导航
以下为站内 AI-Ready 数据集百科中与本词条共享多个主题标签的相关数据集,按相关度降序排列:
- ocelot — 共享标签:医学影像 / 病理图像 / 肿瘤学
- sicapv2 — 共享标签:医学影像 / 病理图像 / 肿瘤学
- msk-impact — 共享标签:医学影像 / 病理图像 / 肿瘤学
- munich-bmc — 共享标签:医学影像 / 病理图像 / 肿瘤学
- cima — 共享标签:医学影像 / 病理图像 / 肿瘤学
- icgc — 共享标签:医学影像 / 病理图像 / 肿瘤学
- osteosarcoma — 共享标签:医学影像 / 病理图像 / 肿瘤学
- midog — 共享标签:医学影像 / 病理图像 / 肿瘤学
- hest-1k — 共享标签:医学影像 / 病理图像 / 肿瘤学
- leopard — 共享标签:医学影像 / 病理图像 / 肿瘤学
导航说明:本章节由全站统一标签体系自动计算生成(标签重合度算法),双向可达;点击链接可跳转至对应数据集词条。
需要更高工程化程度或合规出域的商业版本?
当前展示的公开版本适用于学术研究与原型验证。千方医数集依托三甲医院直采网络,提供经专家标注、符合伦理合规的专病数据集交易服务。

