信息速览
INFOBOX — UCSD-VS-Longitudinal 一屏速览
维度 内容 本质 UCSD 发布于 TCIA 的前庭神经鞘瘤(VS)纵向多模态 MRI 数据集——VS=Vestibular Schwannoma,别名听神经瘤,与脊柱无关 团队 UC San Diego Health;数据引用 8 作者:Nguyen、Correia de Verdier、Saluja、Schulte、Brandel、Suresh、Farid、Rudie 发布 TCIA collection,Version 1(Updated 2026/04/21),doi:10.7937/WEFA-CP23 规模 191 例散发性 VS;570 个 MRI 时间点(75×2 + 44×3 + 72×4);约 4,391 个 NIfTI 序列文件;40 GB 影像 T1-pre/T1-post/T2 为主,部分 FLAIR/DWI/ADC/SWI/ASL 与 IAC 专用序列;1.5T 52%/3T 48%;9 种机型 GE 为主 标注 3D nnU-Net 初分割(上游 VS-SEG 训练)→ ITK-SNAP 人工修正 → 神经放射学家终审;T1-post 上二值 mask 纵向标签 subject 级三分类:stable 70% / growing 13% / shrinking 16%;逐时点治疗状态(348 治疗前 + 222 治疗后) 队列 保守观察 90 / 放疗 35 / 手术 67(分组有重叠);98 男 93 女;首诊平均 58±15 岁 采集 2015-12 至 2024-05,常规临床护理影像,真实世界多机型异质性 许可 CC BY 4.0 三资产统一(影像+分割、临床 TSV、数据字典) 获取 影像包 40GB 经 IBM Aspera Connect 插件下载;临床 TSV 96.2kb 与数据字典 2.2kb 站内直链 上游 分割初稿模型训练自 TCIA Vestibular-Schwannoma-SEG(KCL,242 例 GK SRS) 库内互链 tcia(547)、brats(24)、brats-2026(931)、brats-meningioma(949)、nuinsseg(843)、han-seg(447)
UCSD-VS-Longitudinal 是一个把「看肿瘤」这件事从单帧快照升级成连续剧集的数据集:前庭神经鞘瘤(vestibular schwannoma,VS,俗称听神经瘤)是长在第八对脑神经上的良性肿瘤,无论选择观察、放疗还是手术,患者都要在多年里反复做 MRI 监测——但既往公开数据集几乎全是单时间点快照,纵向 tumor behavior 的研究只能靠各中心自留数据。UCSD 团队把自家 2015-2024 年间 191 例散发性 VS 患者的 570 次常规临床 MRI(每人 2-4 个连续时间点)整理成公开数据集,配上神经放射学家终审的体素级分割和逐时点治疗状态表,让「肿瘤长了还是稳了」「治了之后缩小多少」这类纵向问题第一次有了公开基准。
导语读法三则:
- 只想下数据:直奔 §6——注意影像包要装 IBM Aspera Connect 插件,临床 TSV 才是站内直链,别在浏览器里干等 40GB。
- 关心标注质量:直奔 §3 分割流水线——nnU-Net 初稿、人工修正、专家终审三段式,以及参考序列选择的细节。
- 做纵向建模:直奔 §4 与 §5——纵向行为三分类的口径、治疗前/后时点构成、以及「分组重叠 192>191」的坑。
§0 导读:这个数据集解决什么问题
0.1 一个以「随访」为生命线的疾病
前庭神经鞘瘤的管理学有一个别处少见的特征:「不治」也是一种治疗。散发性 VS 生长缓慢,相当一部分患者终身只需要定期 MRI 观察(active surveillance);选择立体定向放射外科(SRS)的患者,治疗后要靠系列 MRI 区分肿瘤控制与放射性改变;接受手术切除的患者,残留或复发同样靠 MRI 随访捕捉。换言之,serial MRI surveillance 是三种管理路径共同的生命线——官方摘要开宗明义:「requires serial MRI surveillance irrespective of management strategy(无论管理策略如何都需要系列 MRI 监测)」。
这决定了 VS 影像数据的天然形态是纵向的:一个患者、多年、多次检查、多台设备。但公开数据集的历史形态偏偏是快照——每例一次检查。数据形态与研究需求的错位,正是本数据集要解决的第一层问题。
0.2 快照式公开资源的缺口
既往公开资源止步于单时间点。TCIA 上的 Vestibular-Schwannoma-SEG(KCL 团队,2021)提供了 242 例高质量的肿瘤分割,但每例只有放疗前的一次检查;此后陆续出现的 VS 影像资源也多为快照式。结果是:自动分割算法有数据可训,而纵向生长预测、治疗反应建模、随访间隔优化这些真正临床痛点,只能在小规模私有队列上做——公开基准长期缺位。缺口的三重代价:
- 模型无法学会「时间」:单时点数据训练的分割/预测模型从未见过同一肿瘤的演化轨迹,纵向任务泛化无从验证;
- 评测存在数据泄漏式偏差:私有队列各中心自用,结果之间无法横向比较,社区在重复造轮子;
- 临床决策工具停在论文里:随访间隔个性化、干预时机预警这类工具没有公开数据支撑的基准,进入临床的路径被卡住。
0.3 UCSD-VS-Longitudinal 的三层回答
第一层是数据:191 例散发性 VS、570 个 MRI 检查,每例 2-4 个连续时间点,全部来自 UC San Diego Health 的常规临床护理(1.5T 占 52%、3T 占 48%,9 种机型,GE 为主)——不是精心控制的实验协议,而是真实世界影像异质性的忠实样本。
第二层是标注:每个时间点的 T1-post 影像上提供体素级二值肿瘤分割,由训练于上游 VS-SEG 的 3D nnU-Net 出初稿、ITK-SNAP 人工修正、委员会认证神经放射学家终审批准。
第三层是临床层:逐时点的年龄、性别、种族、族裔、治疗状态,加上 subject 级的纵向行为三分类(growing/stable/shrinking),把「影像+时间+治疗」三轴拧在一张 TSV 表里。
0.4 读法三则
- 这个条目要正名:数据集缩写里的 VS 是 Vestibular Schwannoma(前庭神经鞘瘤),不是脊柱(spine)——检索时用「UCSD 脊柱侧凸纵向队列」之类的关键词会一无所获(坑 1)。
- 全文硬数字均出自 TCIA collection 页官方 Detailed Description;少数口径冲突(分组和大于例数、比例和 99%)已在坑点与 FACTS 存照。
- 数据集无独立配套论文,TCIA 页面本身就是最权威的「数据说明文」——遇到本条目与官方页冲突时以官方页为准。
§1 数据集速览:十问十答
Q1:UCSD-VS-Longitudinal 的「VS」是什么的缩写?
Vestibular Schwannoma(前庭神经鞘瘤),即听神经瘤,一种长在前庭蜗神经鞘上的良性肿瘤。与「vs(对比)」无关,也与脊柱、半椎体畸形无关——后者是检索中的常见误判(坑 1)。
Q2:规模有多大?
191 例散发性 VS 患者,共 570 个 MRI 检查(时间点):75 例有 2 个时间点、44 例 3 个、72 例 4 个。影像以 NIfTI 格式分发,约 4,391 个序列文件、40GB,另有 570 行的临床信息 TSV 与 2.2kb 数据字典。
Q3:影像是从哪来的?
UC San Diego Health 2015 年 12 月至 2024 年 5 月的常规临床护理影像:脑肿瘤或内听道(IAC)标准化临床协议,横跨 9 种机型(GE 为主,另有 Siemens、Canon、Time Medical),1.5T 占 52%、3T 占 48%。初筛 255 例,按纳入标准(2-4 个合格时间点)留下 191 例。
Q4:每个时间点有哪些序列?
全部 570 个时点都有 T1-post(对比增强 T1);几乎全部有 T1-pre 与 T2;多数有 IAC 专用序列。部分时点另有 FLAIR、DWI、ADC、SWI、ASL。共 11 种序列标识,逐时点可得性不同,由临床表格文档化——真实临床异质性被原样保留,而非事后补齐。
Q5:分割标注是怎么做的?
三段式流水线:先用训练于 TCIA Vestibular-Schwannoma-SEG 数据集的 3D nnU-Net 生成初稿,再用 ITK-SNAP 人工审校修正,最后由委员会认证神经放射学家批准为参考标准。分割在 T1-post 上完成(t1post 与 t1postIAC 并存时优先后者),为 native space 二值掩码。
Q6:纵向行为标签是什么?
subject 级三分类:growing(生长,13%)、stable(稳定,70%)、shrinking(缩小,16%),依据区间放射学报告与系列影像的容积评估。注意这是每例一个标签,不是逐时间点的生长速率曲线。
Q7:治疗信息怎么记录?
每个时点标注治疗状态:570 个时点中 348 个治疗前、222 个治疗后。患者级管理策略分保守观察(n=90)、放疗(n=35)、手术切除(n=67),多数治疗患者只接受一种干预——但三分组之和 192 大于 191,存在重叠(如观察后转治疗),重叠口径官方未披露(坑 5)。
Q8:人口学覆盖如何?
98 例男性、93 例女性;首诊 MRI 平均年龄 58±15 岁。表格变量含年龄、性别、种族(race)、族裔(ethnicity)——北美队列常见的多元构成,跨人群外推时注意分布差异。
Q9:我现在能拿到什么?
影像+分割包 40GB 经 IBM Aspera Connect 插件从 TCIA faspex 下载;临床 TSV(96.2kb)与数据字典(2.2kb)是站内 HTTP 直链。三资产统一 CC BY 4.0,引用带 DOI 即可,无需注册、无需申请。
Q10:为什么它对 AI-Ready 重要?
它是库内少见的「纵向+多时点+治疗对齐」MRI 数据集样本:license 完全开放、机器可读表格齐全、文件命名规则化(VS_XXXX_YY),AI-Ready 成色高;唯一的获取门槛是 Aspera 插件(坑 6)。对纵向建模、分割、治疗反应评估三类任务,它都是可直接落地的基准。
§2 临床背景与数据构成
2.1 VS 临床画像:从听力下降到三支管理路径
前庭神经鞘瘤起源于前庭蜗神经(第八对脑神经)的施万细胞鞘,绝大多数为散发性、单侧发病。典型起病表现是成人单侧感音神经性听力下降(adult-onset sensorineural hearing loss),可伴耳鸣与平衡障碍;影像上表现为内听道及桥小脑角区的对比增强占位。诊断确立后的管理决策在三条路径间权衡:
- 保守观察(conservative observation / active surveillance):定期 MRI 复查,仅在明确生长或有临床进展时转干预——本队列 n=90,是最大分组,契合 VS 自然史以「长或不长」为第一变量的现实;
- 放疗(radiotherapy):以立体定向放射外科(SRS)为代表,控制生长而不切除,代价是长期放射性改变与随访负担——本队列 n=35;
- 手术切除(surgical resection):按肿瘤大小、听力状态与解剖采取不同入路,追求切除程度与面神经/听力功能的平衡——本队列 n=67。
官方数据没有提供逐例的治疗指征与功能结局(Karnofsky、House-Brackmann 面神经分级等都不在表格里),但逐时点的治疗状态标注 + 治疗相对成像时间让使用者能重建每例「影像-干预」的时间线——这是治疗反应建模的最小可用结构。
2.2 队列构成:从 255 例初筛到 191 例入选
数据集的队列筛选路径是理解其分布偏差的钥匙。病例通过 chart review 与机构放射报告检索工具(mModal Scout)双通道识别,初筛 255 例散发性 VS 患者:
| 筛选环节 | 数量 | 说明 |
|---|---|---|
| 初筛(chart review + mModal Scout 报告检索) | 255 例 | UC San Diego Health 散发性 VS 患者 |
| 排除(缺必需序列 / 无预处理影像 / 非前庭神经鞘瘤 / 运动伪影 / NF2) | 64 例 | 五类排除标准(见下) |
| 最终纳入 | 191 例 | 每例 2-4 个合格纵向时间点 |
排除标准的五个出口,每一个都指向一种「数据集纯度」的取舍:
- 缺少必需 MRI 序列——纳入门槛是至少 2 个含完整必需序列的时间点,序列残缺的随访检查被整体放弃;
- 无肿瘤病例缺治疗前影像——部分治疗后复查病例若缺少可对照的预处理影像则不入组;
- 非前庭颅内神经鞘瘤——耳蜗内鞘瘤、面神经鞘瘤等其他颅内神经鞘病变被排除,保证「前庭神经鞘瘤」语义纯度;
- 运动伪影致图像质量差——临床影像不做重扫,质量不达标的时点直接弃用;
- 神经纤维瘤病 2 型(NF2)——把双侧 VS 综合征整体排除,保住「散发性」队列的口径。
最后一条值得强调:NF2 相关 VS 的生物学行为、手术策略与影像表现与散发性 VS 差异极大,混入会让纵向模型学到两类人群的混合信号。官方的排除决定让本数据集只能回答散发性 VS 的问题(也是更常见人群的问题),不能外推到 NF2。
2.3 时间点结构与监测偏倚自白
纳入后的时间点分布:
| 时间点数 | 例数 | 占比 |
|---|---|---|
| 2 个 | 75 | 39.3% |
| 3 个 | 44 | 23.0% |
| 4 个 | 72 | 37.7% |
| 合计 | 191 | 100%(570 个检查) |
时间点数与治疗路径强相关:主动观察的患者随访更久,往往贡献 3-4 个时点;短期干预后失访的患者可能只有 2 个时点。官方在 Methods 中明确自述:作为「要求多个 MRI 时点的单机构回顾性队列」,这一设计会过度代表接受主动监测或长期随访的患者,队列不能视为 VS 总体人群的代表性样本。这段自白对两类使用者重要:流行病学式外推要先过这道偏差声明;纵向建模者则可以把「时点数」本身当作与治疗路径相关的协变量来建模,而不是纯噪声。
2.4 影像资产:多机型真实世界协议
影像全部来自常规临床护理,标准化体现在协议层面而非设备层面:
- 协议:机构标准化脑肿瘤协议或内听道(IAC)协议;所有时点含对比增强 T1(分割参考),几乎全部含 T1-pre 与 T2,多数含 IAC 专用序列;
- 设备:9 种机型。GE Medical Systems 占主导,其余为 Siemens、Canon、Time Medical;1.5T 占 52%、3T 占 48%;
- 参数异质性:官方明言「成像参数因平台与时间而异,反映常规临床实践」——没有统一 TR/TE 表,因为协议本身就不是为研究设计的;
- 可选序列:FLAIR、DWI+ADC、SWI、ASL 在部分时点出现,构成「主序列保底、扩展序列彩蛋」的可得性结构。
对使用者的直接含义:这是一份**真实世界证据(RWE)**成色的影像集。做多机型泛化评测它难得;做需要统一采集参数的定量影像学研究(如 radiomics)则要先做谐波化(harmonization)——官方没有替你做。
2.5 序列体系:11 种标识的功能地图
| 序列标识 | 全称与功能 | 可得性 |
|---|---|---|
| t1post | 对比增强 T1——肿瘤显示与分割参考的标准序列 | 全部 570 时点 |
| t1postIAC | IAC 专用对比增强 T1——更高分辨率显示神经-肿瘤界面 | 多数时点 |
| t1pre | 平扫 T1——出血/蛋白内容物鉴别 | 几乎全部 |
| t1preIAC | IAC 专用平扫 T1 | 多数时点 |
| t2 | T2 加权——肿瘤-脑脊液-神经结构对比 | 几乎全部 |
| t2IAC | IAC 专用 T2(相当于 hrT2 角色) | 多数时点 |
| flair | FLAIR——脑实质水肿/白质病变 | 部分时点 |
| dwi | 弥散加权成像 | 部分时点 |
| adc | 表观弥散系数图 | 部分时点 |
| swi | 磁敏感加权——微出血/钙化 | 部分时点 |
| asl | 动脉自标记灌注 | 部分时点 |
「IAC 三件套」(t1preIAC/t1postIAC/t2IAC)是 VS 临床评估的核心:内听道协议以更高空间分辨率覆盖桥小脑角-内听道区域,是神经放射学家判断肿瘤-面神经-耳蜗神经关系的首选。数据集把 IAC 序列单列成标识而非混入标准序列,等于免费送了一套「协议分层」的实验设计。
2.6 文件组织与命名规则
全部数据以 subject 原生空间(native space)分发,DICOM 经 dcm2niix 转为压缩 NIfTI,无跨例配准、无空间标准化、保留原始分辨率。目录组织为检查(examination)级:
VS_XXXX_YY/ # XXXX=匿名 subject 号,YY=时间点 01-04
├── VS_XXXX_YY_t1post.nii.gz # T1 对比增强(分割参考之一)
├── VS_XXXX_YY_t1postIAC.nii.gz # IAC 专用 T1 对比增强(优先参考)
├── VS_XXXX_YY_t1pre.nii.gz # T1 平扫
├── VS_XXXX_YY_t1preIAC.nii.gz # IAC 专用 T1 平扫
├── VS_XXXX_YY_t2.nii.gz # T2 加权
├── VS_XXXX_YY_t2IAC.nii.gz # IAC 专用 T2
├── VS_XXXX_YY_flair.nii.gz # FLAIR(部分时点)
├── VS_XXXX_YY_dwi.nii.gz # 弥散加权(部分时点)
├── VS_XXXX_YY_adc.nii.gz # ADC 图(部分时点)
├── VS_XXXX_YY_swi.nii.gz # 磁敏感加权(部分时点)
├── VS_XXXX_YY_asl.nii.gz # 动脉自标记灌注(部分时点)
└── VS_XXXX_YY_seg_t1postIAC.nii.gz # 体素级二值分割(文件名标注参考序列)
三条组织规则值得记住:
- 分割文件名自证参考序列:
seg_t1postIAC即表示分割基于 IAC 版 T1-post;当 t1post 与 t1postIAC 并存时,官方规则是优先分割 t1postIAC——IAC 协议分辨率更高,但跨时点对比时要留意参考序列可能不同; - 缺失即缺文件:序列可得性逐时点不同,没有占位文件;逐时点序列清单以临床表格文档化,写数据加载器时应先解析表格再遍历目录;
- native space 原样保留:不做跨例标准化对 longitudinal within-subject 分析是加分项(自体对齐天然成立),对 cross-subject 模型则要求使用者自行完成配准。
2.7 临床表格:570 行 × 一条时点主键
临床与人口学数据以去标识 TSV 分发(96.2kb),逐行对应 570 个检查时点:
| 变量 | 内容 | 备注 |
|---|---|---|
| age at scan | 扫描时年龄 | 逐时点更新,可推纵向年龄效应 |
| sex / race / ethnicity | 性别、种族、族裔 | 队列级分布固定 |
| treatment history | 治疗史 | 患者级 |
| treatment timing relative to imaging | 治疗相对成像时间 | 时点级,区分 348 治疗前 / 222 治疗后 |
| longitudinal tumor behavior | 纵向行为三分类 | subject 级:growing/stable/shrinking |
数据字典(2.2kb TSV)给出各字段定义。三个资产——影像+分割、临床 TSV、数据字典——统一 CC BY 4.0,这在 TCIA 临床信息类数据集里属于开放度最高的一档。
2.8 与上游 Vestibular-Schwannoma-SEG 的关系边界
UCSD-VS-Longitudinal 明确自述「扩展自既有公开 VS 影像集合,包括 Vestibular-Schwannoma-SEG 数据集」。两者关系是血缘而非重合:
| 维度 | Vestibular-Schwannoma-SEG(上游) | UCSD-VS-Longitudinal(本条目) |
|---|---|---|
| 团队 | KCL(Shapey、Vercauteren 等) | UCSD(Nguyen、Rudie 等) |
| 规模 | 242 例、48,582 张 DICOM 影像 | 191 例、570 时点、约 4,391 个 NIfTI 文件 |
| 时点 | 单时间点(GK 放疗前) | 每例 2-4 个纵向时点 |
| 协议 | 单一 Siemens Avanto 1.5T 研究协议 | 9 机型真实世界临床协议 |
| 序列 | ceT1 MPRAGE + hrT2 CISS/FIESTA | 11 种标识的常规临床序列族 |
| 标注 | 神经外科医生+物理师共识手工分割(GammaPlan) | nnU-Net 初稿+人工修正+专家终审 |
| 附加 | RTDose/RTStruct/RTPlan + tfm 配准矩阵 + JSON 轮廓 | 治疗状态与纵向行为分类 |
| 格式 | DICOM + JSON + tfm | NIfTI + TSV |
| DOI | 10.7937/TCIA.9YTJ-5Q73 | 10.7937/WEFA-CP23 |
血缘点在于模型:本数据集的分割初稿模型(3D nnU-Net)训练自上游数据集的病例。因此两份数据在分割风格上有一致性,但病例不重叠(一为伦敦 GK 队列、一为圣地亚哥综合队列);做跨库评测时它们天然构成「训练分布 vs 部署分布」的一对。
§3 标注流水线:自动初稿如何被驯化成参考标准
3.1 三段式流水线
UCSD-VS-Longitudinal 的标注方法学是「弱监督起步、人工兜底、专家背书」的标准范本:
- 第一段:3D nnU-Net 自动初分割。模型训练自上游 TCIA Vestibular-Schwannoma-SEG 的专家手工分割病例,对 570 个时点的 T1-post 逐个推理,得到对比增强肿瘤的初始体素级掩码。用上游专家数据预训练,等于把 242 例 KCL 手工分割的经验迁移过来做冷启动——初稿在典型病例上已经接近可用,人工只需处理难点。
- 第二段:ITK-SNAP 人工审校修正。标注者在交互式分割平台 ITK-SNAP 中逐例检查初稿并手动修正错误区域。ITK-SNAP 是神经影像分割的老牌工具,支持半自动主动轮廓与逐层手工勾画,这个设计明确承认了 nnU-Net 在真实世界多机型数据上必然出现的边界误差与漏检。
- 第三段:神经放射学家终审。委员会认证(board-certified)的神经放射学家逐例批准(或继续修正)后,掩码才成为参考标准(reference standard)。官方表述为「neuroradiologist-approved voxelwise segmentations」——每个时点的掩码背后都有一个具名资质的签字背书。
与从零手工分割相比(上游 VS-SEG 的路径),这条流水线把标注成本压了一个量级,同时用「人工修正+专家终审」两道闸门保证参考标准成色。它与库内 panda-plus 的「学生初注+高年级复核+专家终审」是同一思想在不同模态的落地:专家时间只花在刀刃上,机器与初级标注者承担冗余劳动。区别在于初稿生产者——一个是受训学生,一个是预训练模型;后者的边际成本更低,但对上游数据分布的依赖更深。
3.2 上游锚点:Vestibular-Schwannoma-SEG 详注
理解本数据集的标注质量,需要理解它的初稿模型从哪里来。上游 VS-SEG 的关键事实:
- 发布方:King’s College London(KCL)生物医学工程与影像科学系(KCL-BMEIS)团队,Shapey、Kujawa、Dorent、Wang 等,通讯 Vercauteren;
- 队列:242 例连续纳入的散发性单侧 VS 患者,全部接受伽马刀立体定向放射外科(GK SRS),采集于 2012-2018 年,单一 Siemens Avanto 1.5T 设备;
- 影像:对比增强 T1(MPRAGE,0.4×0.4mm 面内分辨率)与高分辨 T2(3D CISS/FIESTA),48,582 张 DICOM 影像,28.21GB;
- 标注:由主诊神经外科医生与物理师在 Leksell GammaPlan 中达成共识的手工分割(肿瘤与耳蜗等结构),提供 JSON 轮廓与 RTSTRUCT;
- 附加资产:RTDose/RTStruct/RTPlan 放疗数据、ITK tfm 配准矩阵、KCL-BMEIS/VS_Seg GitHub 仓库的 2.5D UNet 基线(MONAI 实现);
- 论文:Scientific Data 2021(doi:10.1038/s41597-021-01064-w);数据 DOI 10.7937/TCIA.9YTJ-5Q73;CC BY 4.0。
对 UCSD 流水线的意义:上游提供了「单一设备、高分辨率协议、专家共识」的干净训练分布;UCSD 的 570 个时点则是「9 机型、双场强、临床异质」的嘈杂部署分布。初稿模型跨这个分布差推理,必然产生系统性误差——这正是第二段人工修正存在的理由。使用者评估标注质量时应记住:参考标准是「修正后的 nnU-Net+专家批准」,不是「从零独立双盲标注」,分 agreement 的上界与下游评测解读都要带这个前提。
3.3 参考序列选择:t1postIAC 优先规则
分割的参考影像序列有一条容易踩的规则:当某时点同时存在标准 T1-post(t1post)与 IAC 专用 T1-post(t1postIAC)时,分割基于 t1postIAC。IAC 协议针对内听道区域优化,通常在肿瘤-神经界面上有更高分辨率,是 VS 评估的临床首选。
这条规则的两个下游含义:
- 同一患者跨时间点的分割参考序列可能不同(某次检查只有 t1post,另一次有 t1postIAC),做体积纵向对比时要注意分辨率/视野差异引入的测度噪声;
- 分割文件名自带参考序列后缀(
seg_<reference>),数据加载器应按后缀读取对应影像,避免把掩码叠在错误序列上。
3.4 去标识与质量控制
- defacing 去面部:所有影像按机构隐私要求去除面部特征。官方做了专门的目视 QC,确认去面部不影响内听道区域与肿瘤分割——对头颅影像这是重要的一步,粗暴的去面部算法常会伤及颞骨、鼻窦与桥小脑角区;
- dcm2niix 转换:DICOM→NIfTI 的社区标准工具,保留几何与方向信息;
- native space 保持:影像留在各自采集空间与分辨率,无重采样。QC 链条因此简洁:分割与影像逐体素对齐的保证直接来自「同一空间、同一网格」,不需要额外的配准误差考量。
3.5 纵向行为标签的口径
subject 级三分类(growing 13% / stable 70% / shrinking 16%)的判定依据是区间放射学报告 + 系列影像容积评估的综合,而非单一算法输出。注意三个口径细节:
- 标签挂在 subject 上(每例一个),不随时间点变化——纵向模型要预测的正是这个「全序列汇总结论」,输入则是多时点影像/体积序列;
- 比例之和 99% 而非 100%,系四舍五入(坑 4);
- 官方未给出逐时点肿瘤体积数值表——想复现体积轨迹需要自己跑分割或重测,表格只提供分类结论。
3.6 标注质量的使用者自查清单
在把 570 个掩码当作 ground truth 之前,建议过一遍这五问:
- 抽样 10-20 例,把掩码叠在参考序列上目视——边界平滑性与桥小脑角解剖合理性;
- 对比同一患者相邻时点的体积跳变——异常跳变(倍增或腰斩)多半是参考序列切换或协议差异的信号;
- 检查分割参考序列后缀的分布——t1postIAC 占比多少,混合序列子集是否需要分层评测;
- 治疗后时点单独抽检——放疗后肿瘤缩小/变形与术后瘤床是初稿模型最可能失手的区域;
- 与官方表格的纵向行为标签交叉验证——stable 标签但体积漂移大的病例要单独审视。
§4 纵向任务方向:这份数据能做什么
4.1 任务一:多时点肿瘤分割
最直接的任务是把分割模型从「单帧快照」推向「全序列稳健」。数据集的三个特点决定了评测设计:
- 真实异质性是主考官:9 机型、双场强、逐时点序列差异,意味着在上游 VS-SEG(单一 Siemens 1.5T)上训练的模型来到这里会面临分布迁移——这恰是泛化能力的试金石;
- 参考序列漂移(t1postIAC 优先规则)要求模型按参考序列后缀取图,测试数据管线的鲁棒性;
- 570 个时点分割全量齐备,支持逐时点 Dice/HD95 评测,也可以把同一患者跨时点的一致性(同例方差)单独分析。
建议的评测协议:按机型/场强/参考序列三个维度切分层报告 Dice,而不是只报一个全集均值——全集均值会掩盖「在 GE 1.5T 上很好、在 Canon 3T 上翻车」这类部署事故。
4.2 任务二:纵向生长行为预测
数据集最独特的资产是 subject 级三分类标签(growing/stable/shrinking)。可构造的基准形态:
- 序列输入→分类输出:把 2-4 个时点的影像(或由分割推出的体积序列)送入时序模型,预测汇总标签——约 70% 的 stable 占比意味着准确率基线就是多数类,报告 balanced accuracy / per-class F1 才有意义;
- 单时点预测纵向结局:用首个时间点预测最终行为——这是临床上最有价值的问题(「现在要不要干预」),也是最难的任务;
- 体积轨迹建模:虽然表格不含逐时点体积数值,但分割掩码本身可以直接算体积,得到每例的体积-时间曲线再与标签对齐。
4.3 任务三:治疗反应评估
348 个治疗前时点与 222 个治疗后时点的划分,加上逐时点治疗状态标注,把「治疗前后影像对照」做成了现成的配对结构。放疗(n=35)与手术(n=67)患者各有自己的治疗时点锚——术后影像上肿瘤床、放射后变化与残留/复发的鉴别是神经放射学的经典难题,数据集为此提供了公开起点。注意管理分组之和 192>191 的重叠计数(坑 5),做治疗效应分析时要先厘清每例的实际干预序列。
4.4 官方基准现状
数据集没有官方 benchmark、排行榜或基线代码——TCIA 页面的 Related Analysis Results 与 Related Collections 均为空,Research Community Publications 截至抓取时点也未收录任何论文,DataCite 显示 0 引用(Version 1 于 2026 年 4 月更新,发布时间尚短)。官方公告对它的定位是「benchmark 资源」:服务于自动分割算法开发、预后模型与纵向治疗反应评估工具。换句话说:谁先把基线跑出来、公开出来,谁就占了社区先手。
4.5 基线构建实操:从下载到体积轨迹
以下 Python 片段给出一条最小可用的分析路径(NiBabel 读取、逐例体积提取、与行为标签对齐):
# 依赖:nibabel, pandas(均为主流库)
import math
import nibabel as nib
import pandas as pd
from pathlib import Path
root = Path("UCSD-VS-Longitudinal") # 解包后的影像根目录
clinical = pd.read_csv("clinical_information.tsv", sep="\t") # 570 行时点表
# 1) 从目录结构枚举时点:VS_XXXX_YY
def parse_case(folder: str):
subject, tp = folder.rsplit("_", 1)
return subject, int(tp)
records = []
for case_dir in sorted(root.glob("VS_*_*")):
subject, tp = parse_case(case_dir.name)
# 2) 找分割文件:后缀标注参考序列(t1post 或 t1postIAC)
segs = sorted(case_dir.glob(f"{case_dir.name}_seg_*.nii.gz"))
if not segs:
continue # 理论上不应发生;防御性跳过
seg = nib.load(str(segs[0]))
mask = seg.get_fdata() > 0 # 二值掩码
voxel_mm3 = float(math.prod(seg.header.get_zooms())) # 体素体积(三轴间距之积)
records.append({
"subject": subject, "timepoint": tp,
"ref_seq": segs[0].name.split("_seg_")[-1].replace(".nii.gz", ""),
"volume_ml": mask.sum() * voxel_mm3 / 1000.0,
})
vols = pd.DataFrame(records)
# 3) 每例体积轨迹概览:首末时点体积变化率
first_last = (vols.sort_values(["subject", "timepoint"])
.groupby("subject")["volume_ml"]
.agg(["first", "last", "count"]))
first_last["delta_pct"] = 100 * (first_last["last"] - first_last["first"]) / first_last["first"]
print(first_last["delta_pct"].describe())
这条路径的三行延伸:体积序列与表格里的 growing/stable/shrinking 标签对齐后,可直接检验「标签与体积变化方向的一致性」——这既是标签质量的 sanity check,也是最快的基线特征工程。
4.6 评测指标与统计卫生
- 分割任务:Dice、HD95 按机型/场强/参考序列分层报告;跨时点一致性(同一患者相邻时点的指标波动)单独成表;
- 分类任务:stable 占 70%,必须报 balanced accuracy、per-class F1 与混淆矩阵;按时间点数(2/3/4)分层看难度差异;
- 纵向建模:报告 split 时按 subject 切(同一患者的时点绝不跨 train/test,否则序列信息泄漏);年龄/性别/时间点数作为协变量的敏感性分析值得做;
- 统计卫生:13%/70%/16% 的标签分布是四舍五入口径;任何「按标签分布加权」的对比先复核和是否为 100%。
§5 生态与影响:TCIA 家谱里的纵向新枝
5.1 在 VS 公开影像景观中的位置
前庭神经鞘瘤的公开影像资源长期呈现「单点质量高、纵向深度为零」的格局。上游 Vestibular-Schwannoma-SEG(KCL,2021,242 例、48,582 张 DICOM、手工共识分割、附放疗数据与 2.5D UNet 基线,Sci Data 2021 论文)是分割任务的奠基库;UCSD-VS-Longitudinal 接棒补上纵向维度。两者都选择了 TCIA 作为宿主、CC BY 4.0 作为许可、散发性 VS 作为队列口径——前者的分割模型直接成为后者的标注流水线起点,构成了 TCIA 生态里少见的显式血缘链。
这条血缘链的示范意义值得单说:公开数据集之间的「模型血缘」正在成为新数据集的加速器——后来的机构不再从零标注,而是拿前人专家数据训练的模型做初稿,把专家时间留给修正与背书。VS 这个小病种两年内完成了「专家手工→模型初稿+专家终审」的代际切换,是全库观察标注代际演化的最佳切片。
5.2 TCIA 生态位与平台机制
- 宿主平台:TCIA 是肿瘤影像公开数据的旗舰库(库内另有 tcia 条目系统介绍)。本数据集遵循 TCIA 惯例:collection 页承载全部说明文、DOI 独立编址、Data Usage Policy 约束使用;
- Cancer Types 口径:页面标注 Vestibular Schwannoma (non-cancer)——TCIA 明确把它归入非癌类,强调良性肿瘤的管理研究价值;
- 分发方式:40GB 影像包走 IBM Aspera(faspex)而非 HTTP,这是 TCIA 对大体积包的常规做法;小体积表格文件仍为站内直链;
- 外部资源:与上游 VS-SEG 不同(后者有 NCI Imaging Data Commons 云入口),本数据集暂无关联 Analysis Results 或云端计算入口——云侧分析需要自行下载后搭建。
5.3 资助与机构背景
- 资助:NIH Grant UL1TR001442——这是 NCATS 临床与转化科学奖(CTSA)机制下 UCSD 的中心资助, Typical 的「把机构临床数据资产化公开」的产物;官方声明内容仅代表作者观点;
- 机构:UC San Diego Health 是拥有神经外科、神经放射学、放射肿瘤学与神经耳科完整谱系的学术医学中心,单机构即覆盖 VS 三条管理路径;
- 索引收录:DataCite/OpenAIRE/BIP! 均已收录数据集 DOI 与摘要,学科分类为 medical and health sciences / clinical medicine,学术检索可达性好。
5.4 对临床研究社区的意义
VS 管理的核心临床争议——观察 vs 放疗 vs 手术的决策边界、随访间隔的个性化——都受限于「纵向影像+治疗+结局」三轴齐全的数据稀缺。本数据集第一次把三轴拧在一起公开(尽管是单机构、回顾性、监测偏倚样本)。它对以下人群的直接价值:
| 人群 | 用法 |
|---|---|
| 分割算法研究者 | 多机型纵向鲁棒性评测场 |
| 纵向建模研究者 | 2-4 时点序列+三分类标签,可直接构造预测基准 |
| 神经放射学 AI 工具开发者 | 治疗前后配对影像,放疗/术后反应评估起点 |
| 临床研究者 | 队列构成、随访策略与行为分布的实证参照 |
§6 获取与许可:一个门、三份资产、一个插件
6.1 资产清单与获取路径
| 资产 | 格式 | 体积 | 获取路径 |
|---|---|---|---|
| 影像+分割包 | NIfTI(.nii.gz) | 40 GB | faspex.cancerimagingarchive.net,须装 IBM Aspera Connect 插件 |
| 临床信息表 | TSV | 96.2 kb | TCIA 站内 HTTP 直链 |
| 数据字典 | TSV | 2.2 kb | TCIA 站内 HTTP 直链 |
三资产统一 CC BY 4.0:允许商用、允许修改,唯一义务是署名——引用须包含数据引用格式(Nguyen, U., et al. (2026). The University of California San Diego Longitudinal Vestibular Schwannoma Dataset (UCSD-VS-Longitudinal) (Version 1) [Data set]. The Cancer Imaging Archive. https://doi.org/10.7937/WEFA-CP23),并遵守 TCIA Data Usage Policy and Restrictions。
没有注册墙、没有数据使用协议(DUA)签署、没有邮箱申请——在库内可获取性光谱上,这是「公开直链」一档,仅次于无插件即取的最开放层;扣分项只有 Aspera 插件依赖(坑 6)。
6.2 Aspera 实操要点
- 先下两个小 TSV 再决定要不要 40GB:临床表+数据字典共约 100kb,能先回答「这个队列/时点子集适不适合我的问题」,再装插件下影像——对带宽受限环境是必要的省流路径;
- 插件装在哪台机器:Aspera Connect 是浏览器插件+本地传输引擎的组合,点击下载链接后由本地 fasp 传输进程接管;服务器环境无 GUI 时需要 Aspera CLI(ascp)路线,提前验证可用性;
- 断点续传:fasp 协议原生支持断点续传与带宽控制,40GB 中断后不必从头再来——比裸 HTTP 直链更抗坏网络;
- 版本意识:数据集当前仅 Version 1(2026/04/21 更新),重新下载前核对 TCIA 页面版本戳,避免新旧混用。
6.3 AI-Ready 评估:DAIMS 评分
| DAIMS 维度 | 得分 | 评语 |
|---|---|---|
| D 可发现性 Discoverable | 5/5 | TCIA collection 页 + DOI + DataCite/OpenAIRE 索引;官方名与缩写一致,检索无歧义 |
| A 可获取性 Accessible | 4/5 | 三资产全开放无需注册;影像包依赖 Aspera 插件,脚本化批量获取不如直链便利 |
| I 可互操作性 Interoperable | 4/5 | NIfTI(神经影像事实标准)+ dcm2niix + TSV + 数据字典;native space 无重采样;扣分在无 BIDS 结构化 |
| M 机器可读性 Machine-readable | 5/5 | 文件命名规则化(VS_XXXX_YY)、序列标识固定 11 种、表格主键清晰、数据字典齐备 |
| S 可持续性 Sustainable | 4/5 | TCIA 长期托管 + NIH 资助背景;单机构单一版本,更新频率依赖原作者团队 |
| 总分 | 22/25 | 开放许可与机器可读性满分级;门槛集中在插件依赖与无官方基线 |
6.4 复用实操要点
- 数据加载器按表格驱动:先解析 TSV 的逐时点序列清单,再遍历目录取文件,不要假设所有序列全在;
- 软件栈零门槛:ITK-SNAP/3D Slicer/FSL/FreeSurfer/NiBabel/MONAI 全部直接可读,官方 Usage Notes 点名这六件套;
- 复现第三方分析:目前无社区论文可对照,自己做分析时把切分种子、层报口径与版本戳(Version 1,2026/04/21)写进发布物,方便后来者对表。
§7 方法学启示:三条可迁移的经验
7.1 「上游专家数据预训练 + 本地轻标注」是纵向数据集的量产路径
570 个时点若全部从零手工分割,按神经影像肿瘤分割每例 15-60 分钟的常规工时计,是数百小时的专家成本。UCSD 的路径是把这笔成本拆成「一次性投资」(上游 VS-SEG 的 242 例专家手工分割训练出 nnU-Net)+「边际成本」(每例审校修正+终审)。这条流水线对任何有历史 PACS 存量影像的机构都可直接复制:先用公开同质数据预训练初稿模型,人工只做修正与背书——纵向数据集的规模化瓶颈不在标注算法,而在标注组织的这条路径设计。
它同时提示了一个质量管理要点:初稿模型的训练分布(单一设备研究协议)与目标分布(多机型临床协议)的差距,决定了人工修正的工作量与误差形态。复制此路径的团队应在流水线早期就抽样统计「初稿需要修正的比例与区域」,据此决定人工层的编制——而不是假设模型足够好。
7.2 真实世界异质性本身是资源,不是缺陷
多机型、双场强、逐时点序列漂移——这些在「研究级数据集」标准下都是要被清洗掉的噪声,但官方选择原样保留并在 Methods 里明言「反映常规临床实践」。对照库内许多严格协议数据集,本条目提示了一个光谱的另一端:部署现实的忠实采样。分割模型如果只在干净协议数据上评测,上线即遇本数据集这类「生活真相」;把它当作评测场而非训练场,价值最大化。
7.3 subject 级汇总标签与时点级数据的分层设计
纵向行为三分类挂在 subject 上、治疗状态挂在时点上、人口学双轨并存——这种「标签分层」设计让同一份数据同时服务三类任务(分割/生长预测/治疗反应),且不强迫使用者接受单一任务口径。代价是使用者必须清楚每类标签的粒度归属(坑 4、坑 5 的根源)。设计自己的纵向数据集时,先画「标签-时间-患者」三层归属图,再定表格主键——本数据集的 570 行时点主键 + subject 级标签列就是一个可抄的模板。
7.4 排除标准的「纯度账」
NF2 排除、非前庭鞘瘤排除、伪影排除——每一条都在缩小人群覆盖面,换取任务口径的纯净。数据集论文里最容易被忽略的往往就是排除清单,但它决定了「你的模型学到的是什么人群的什么病」。本数据集的取舍逻辑:先服务最常见的散发性成人 VS 纵向问题,遗传性、罕见位置、质量存疑的信号全部让位。做自己的队列时值得对着这五条排除标准逐条问:我在用什么换什么。
§8 与库内条目的关系
8.1 家族图谱
- tcia(rid 547):宿主平台条目。本条目是 TCIA 生态的具体藏品样本——Aspera 分发、Data Usage Policy、collection 页结构等平台机制的实例演示;
- brats(rid 24)/ brats-2026(rid 931):脑肿瘤 MRI 分割基准的旗舰家族。BraTS 是多中心胶质瘤纵向挑战赛的标杆(挑战赛制、多机构数据、统一协议),本数据集是单机构纵向「非癌」肿瘤资源(资源制、真实协议)——两者构成「挑战赛驱动 vs 机构驱动」的对照样本;
- brats-meningioma(rid 949):脑膜瘤同为良性/低级别颅内肿瘤,其分割任务与本数据集在「良性肿瘤影像-治疗反应」叙事上直接同族;
- nuinsseg(rid 843):脑 MRI 白质高信号分割——同为神经影像体素级分割任务,模态族(T1/T2/FLAIR)高度重叠;
- han-seg(rid 447):鼻咽癌头颈部 MRI 分割——解剖位置(颅底-头颈)邻近,多序列 MRI 与去面部处理的工程经验可平移;
- 外部血缘锚:Vestibular-Schwannoma-SEG(TCIA,doi:10.7937/TCIA.9YTJ-5Q73,非库内)——本数据集分割流水线的训练来源,建议在正文叙述中作为上游一并介绍。
8.2 检索路径建议
- 从「脑肿瘤 MRI 分割」进入的读者:brats → brats-meningioma → 本条目(良性肿瘤与纵向维度延伸);
- 从「纵向/随访数据」进入的读者:本条目 → tcia(平台层)→ brats-2026(挑战赛口径的纵向评测);
- 从「神经影像分割方法」进入的读者:nuinsseg → han-seg → 本条目(跨解剖区域的方法迁移)。
§9 避坑清单:已踩过与必然会踩的坑
坑 1:把「VS」当成脊柱或「vs 对比」。
数据集名里的 VS = Vestibular Schwannoma(前庭神经鞘瘤),与 spine/脊柱无关,与英文缩写「vs.」无关。本次入库前 dispatcher 的任务描述即误判为「UCSD 半椎体畸形脊柱侧凸纵向队列」,三源核验后按实核身份成稿。检索时用 vestibular schwannoma / acoustic neuroma / 听神经瘤,用「UCSD spine dataset」只会找到别人的数据。
坑 2:把 570 当成 570 个患者或 570 个序列。
570 是检查时点数(191 例患者 × 每例 2-4 次)。序列文件约 4,391 个。患者数永远是 191——写论文时「n=570 patients」是必然被审稿人抓住的错误。
坑 3:假设所有时点序列齐全。
只有 T1-post 是 570/570 全有;T1-pre 与 T2 是「几乎全部」;FLAIR/DWI/ADC/SWI/ASL 是「部分时点」。数据加载器按目录存在性假设写会静默丢例——官方明确把逐时点序列可得性文档化在临床表格里,先读表再取数。
坑 4:把 13%/70%/16% 当成互斥完备分布。
三项之和是 99% 不是 100%(四舍五入),且这是 subject 级标签(每例一个),不是逐时点标签。用它做分层抽样时按 191 例算,不要按 570 时点算。
坑 5:把 90+35+67=192 当成患者分组。
管理策略三分组之和比 191 例多 1,存在重叠计数(如观察后转治疗的患者在两组都出现),重叠口径官方未披露。做治疗效应分析前先按 TSV 的逐时点治疗状态重建每例的实际干预序列,不要直接用三分组做互斥臂。
坑 6:没有 Aspera 插件就开不动的 40GB。
影像包走 IBM Aspera(faspex)分发,浏览器直接点下载会被要求装 Aspera Connect 插件;部分受限网络环境装不上插件就拿不到影像。缓解路径:先取两个小 TSV(HTTP 直链)评估价值,再在可控网络环境装插件;需要脚本化批量下载的场景要提前验证 Aspera CLI 可用性。
坑 7:把 native space 当成已配准数据用。
所有影像保留各自采集空间与分辨率,无跨例标准化、无重采样。做跨患者的模板坐标分析(如脑区归属、对称性指标)必须自行配准;直接把多个患者的体素堆进同一坐标系的模型会静默失效。
坑 8:默认分割参考序列统一。
t1post 与 t1postIAC 并存时官方优先分割 t1postIAC,分割文件名后缀标注实际参考序列。跨时点体积对比时,参考序列切换(分辨率/视野差异)会引入测度噪声——按后缀分组检查,或先做序列间一致性验证。
§10 总结
10.1 三句话总结
- UCSD-VS-Longitudinal 是 UCSD 发布于 TCIA 的前庭神经鞘瘤纵向多模态 MRI 数据集:191 例散发性 VS、570 个检查时点(每例 2-4 个连续时间点)、约 4,391 个 NIfTI 序列文件、40GB,采集自 2015-2024 年常规临床护理。
- 每个时点提供神经放射学家终审的 T1-post 体素级肿瘤分割(nnU-Net 初稿+人工修正),配套 subject 级纵向行为三分类(growing 13%/stable 70%/shrinking 16%)与逐时点治疗状态表(348 治疗前+222 治疗后)。
- 三资产统一 CC BY 4.0、无需注册申请,影像包经 IBM Aspera 插件下载;无官方基准与配套论文,TCIA collection 页即权威说明文。
10.2 适合谁
- 做肿瘤分割泛化评测的团队:9 机型、双场强、序列漂移的真实异质性考场;
- 做纵向/时序医学影像建模的研究者:公开数据里稀缺的「多时点+行为标签+治疗对齐」三轴齐全样本;
- 做 VS 或良性肿瘤治疗反应分析的临床 AI 组:放疗/手术前后配对影像的公开起点;
- 数据集工程研究者:上游专家数据预训练+本地轻标注的流水线范本。
10.3 不适合谁
- 需要 BIDS 结构化、统一采集参数或已配准影像的分析:native space 原样分发,一切标准化自备;
- 需要 NF2/遗传性 VS、儿童患者或逐时点体积数值表的研究:NF2 已被排除、队列全为成人、体积需自行从掩码重算;
- 期待官方基线代码或排行榜的复现型工作:目前只有数据与标签,基准需自建。
10.4 30 秒决策卡
| 你要做什么 | 该不该用 |
|---|---|
| 多机型纵向分割鲁棒性评测 | 用,真实异质性难得 |
| 肿瘤生长/治疗反应纵向预测 | 用,三分类标签+治疗状态现成 |
| 统一协议 radiomics 特征研究 | 慎用,参数异质性需先谐波化 |
| 跨患者模板坐标分析 | 慎用,需自行配准 |
| 零门槛浏览器下载 | 半个坑:表格直链可零门槛,影像要装插件 |
| 商业产品训练 | 可以,CC BY 4.0 允许商用,署名即可 |
§11 数据获取实操手册:从 100KB 预览到 40GB 落盘
§6 交代了「三资产、两种链路、统一 CC BY 4.0」的骨架,本节把它展开成可以照着走的操作序列:先花五分钟零门槛预览两个小 TSV 判断数据价值,再决定是否为 40GB 影像包安装 Aspera 插件,最后在落盘后做一次结构体检确认下载完整。全程不需要注册、申请或审批。
11.1 三资产获取路线图
| 资产 | 体量 | 分发链路 | 前置条件 | 建议动作 |
|---|---|---|---|---|
| 临床数据 TSV | 96.2kb | TCIA 站内 HTTP 直链 | 无 | 第一个下载,读完再决定要不要影像 |
| 数据字典 TSV | 2.2kb | TCIA 站内 HTTP 直链 | 无 | 与临床表同时下载,列语义以此为准 |
| 影像+分割包 | 40GB | IBM Aspera(faspex.cancerimagingarchive.net) | Aspera Connect 插件 | 预览确认价值后在可控网络环境安装 |
读表要点:两个 TSV 加起来不到 100KB,却是整个数据集的「目录与说明书」——570 行时点级记录、11 种序列标识的逐时点可得性、治疗时间线全部在里面。先读表再下影像是本数据集特有的省时路径:如果任务只需要 subject 级标签分布或队列构成统计,可能根本不需要碰 40GB 影像。
11.2 第一步:零门槛预览临床表格
两个 TSV 是普通 HTTP 直链,浏览器另存或命令行均可。直链地址以 TCIA collection 页 Clinical Data 区给出的链接为准,文件名以页面实际附件为准(约 96.2kb 与 2.2kb 两个 TSV):
curl -L -o ucsd_vs_clinical.tsv "<collection页给出的临床TSV直链>"
curl -L -o ucsd_vs_datadict.tsv "<collection页给出的数据字典直链>"
用 pandas 做首轮预览(TSV 精确列名以数据字典为准,下例用语义名示意):
import pandas as pd
clinical = pd.read_csv("ucsd_vs_clinical.tsv", sep="\t")
datadict = pd.read_csv("ucsd_vs_datadict.tsv", sep="\t")
# 行数应为 570(时点级主键),患者去重应为 191
print(len(clinical), clinical["patient_id"].nunique()) # 列名以数据字典为准
# 每例时点数分布:应落在 2-4,期望 2 时点 75 例、3 时点 44 例、4 时点 72 例
tp = clinical.groupby("patient_id").size()
print(tp.value_counts().sort_index())
# 逐时点序列可得性:官方文档化在表格中,先看缺失模式再写加载器(坑 3)
# 治疗时间线:检查治疗前/治疗后状态列,对照 348+222=570 的口径
这 20 行能直接回答四个原本只能靠文字描述的问题:队列构成(98 男/93 女、首诊 58±15 岁)、时点分布(75/44/72)、治疗时间线(348 治疗前/222 治疗后)、序列可得性矩阵。写任何数据加载代码之前,这是性价比最高的投入。
11.3 第二步:Aspera 拿影像的两种姿势
40GB 影像+分割包经 faspex.cancerimagingarchive.net 分发,走 IBM Aspera 的 fasp 协议,站内不提供 HTTP/FTP 大包直下。两种可行姿势:
姿势 A:桌面插件,适合一次性获取。 浏览器打开 collection 页影像下载入口,按提示安装 Aspera Connect 桌面插件,点击下载后由插件接管传输,支持断点续传。受限网络环境装不上插件时,这就是硬门槛(坑 6)——换可控网络环境再试,不要在插件上死磕。
姿势 B:命令行 ascp,适合服务器与脚本化。 服务器无 GUI 时用 Aspera 的 ascp 客户端,从 faspex 页面获取带令牌的下载参数后执行,形态示意:
# 主机/用户/令牌/路径以 faspex 页面实际生成的下载信息为准
ascp -T -l 100m --host=<faspex主机> --user=<下载用户> \
"<带令牌的下载路径>" ./UCSD-VS-Longitudinal/
脚本化批量下载前务必先用单个小文件试通链路再放量——faspex 的下载令牌通常有时效,大批量任务要预留令牌过期重取的环节。
11.4 第三步:落盘后的五分钟体检
40GB 传输中断的风险真实存在,落盘后先跑一遍结构体检,对照三个官方硬数:191 个 subject、570 个检查时点、约 4,391 个 NIfTI 文件:
from pathlib import Path
from collections import Counter
root = Path("./UCSD-VS-Longitudinal/")
niftis = sorted(root.rglob("*.nii.gz"))
studies = sorted({p.parent.name for p in niftis}) # VS_XXXX_YY 检查夹
subjects = sorted({"_".join(s.split("_")[:2]) for s in studies}) # VS_XXXX 患者
print(f"序列文件: {len(niftis)}") # 期望约 4,391
print(f"检查时点: {len(studies)}") # 期望 570
print(f"患者: {len(subjects)}") # 期望 191
# 每例时点数分布(期望 2:75 / 3:44 / 4:72)
per_subj = Counter("_".join(s.split("_")[:2]) for s in studies)
print(Counter(per_subj.values()))
# 分割文件的参考序列后缀盘点:t1postIAC 应占多数(官方优先分割规则)
segs = [p for p in niftis if "_seg_" in p.name]
refs = Counter(p.name.split("_seg_")[1].replace(".nii.gz", "") for p in segs)
print(refs) # 后缀切换的时点要记录:跨时点体积对比时它是测度噪声源(坑 8)
三个数对不上时的排查顺序:先查是否传输中断留下截断的 .nii.gz(重新解压验证),再查是否有 subject 目录整体缺失,最后对照临床 TSV 的时点清单定位缺口。
11.5 软件栈速配表
官方 Usage Notes 点名支持的软件栈与各自的最佳岗位:
| 工具 | 定位 | 什么时候用它 |
|---|---|---|
| ITK-SNAP | 桌面分割审校 | 抽查掩码质量、复现人工修正环节的工作流 |
| 3D Slicer | 桌面可视化+扩展生态 | 多序列叠放浏览、体积测量原型 |
| NiBabel | Python 底层 I/O | 读 NIfTI 与仿射矩阵,自算体积的第一依赖 |
| MONAI | PyTorch 医学影像框架 | 训练分割/分类模型,原生消费 NIfTI |
| FSL | 影像处理套件 | 配准到模板、颅内容积估计等辅助步骤 |
| FreeSurfer | 影像处理套件 | 解剖参考与跨患者标准化(需自行配准,坑 7) |
两点提醒:数据已是 dcm2niix 转换好的压缩 NIfTI,无需自备 DICOM 转换环节;但也因此拿不到原始 DICOM 的完整私有头信息,需要采集参数细节的任务要意识到这一层损失。
11.6 获取检查单
写第一行加载代码之前逐项打勾:
- 两个 TSV 已下载并能用 pandas 读出 570 行、191 个去重患者;
- 数据字典已通读,代码里的列名语义与字典一致;
- 191 subject、570 时点、约 4,391 文件三个数体检通过;
- 分割文件参考序列后缀分布已盘点(t1postIAC 优先规则知悉,坑 8);
- Aspera 链路在目标网络环境验证通过(坑 6);
- 署名材料准备就绪:数据集 DOI 10.7937/WEFA-CP23(CC BY 4.0 的引用义务)。
§12 最小复现路径:一个下午跑通纵向基线
上一章解决「怎么把数据拿回家」,这一章解决「拿回家之后第一个实验怎么做」。目标刻意压到最低:不碰深度学习,只靠表格与掩膜体积,跑通「环境 → 索引 → 切分 → 特征 → 评测」五步,产出一张能直接写进实验记录本的基线成绩单。后面两章分别负责排雷误用(§13)与拆解标签语义(§14),本章先把骨架立起来。
12.1 第 0 步:环境就位
这套数据的「软件体重」小得惊人:临床 TSV 与数据字典合计不到 100 KB,影像虽 40GB 但 NIfTI 是任何主流工具都能直读的格式。推荐最小依赖集四件套:
python3.11 -m pip install pandas numpy nibabel scikit-learn
pandas 负责表格,nibabel 负责 NIfTI 头信息与掩膜数组,scikit-learn 负责切分与评测。版本不求新、求稳;若后续要走 3D 卷积路线,再补 MONAI 与 SimpleITK 不迟(见 12.6)。磁盘预算按「原始包 40GB + 解压后同量级」估算,留 100GB 余量即可从容展开;掩膜体积统计全程只读头文件与掩膜,8GB 内存的笔记本也能跑。
12.2 第 1 步:表格驱动的数据索引
一切从那张 96.2 KB 的临床 TSV 出发。它是全数据集的「总目录」:191 名患者、570 个检查时点,每行一条记录。先把表读进来,再与影像侧 NIfTI 落盘结果做三道对账:
import pandas as pd
from pathlib import Path
# 列名以随包数据字典为准,这里用语义名示意,下同
tsv = pd.read_csv("ucsd_vs_clinical.tsv", sep="\t")
print(tsv.shape) # 预期约 570 行
print(tsv["patient_id"].nunique()) # 预期 191
# 影像侧:40GB 包落盘后的 NIfTI 索引
niftis = sorted(Path("UCSD-VS-Longitudinal").rglob("*.nii.gz"))
studies = sorted({p.parent.name for p in niftis}) # VS_XXXX_YY
subjects = sorted({"_".join(s.split("_")[:2]) for s in studies}) # VS_XXXX
print(len(subjects), len(studies), len(niftis))
# 对账硬数:191 名患者 / 570 个检查时点 / 约 4391 个 NIfTI
三行 print 就是三道对账闸门:与 191 / 570 / 约 4391 任一不符,先停下来查落盘完整性,别急着往下跑。临床表行数与影像 study 数也应能对上(每时点一行),对不上时优先怀疑 TSV 与影像包版本不同步,而不是硬着头皮继续。
12.3 第 2 步:subject 级切分,防时点泄漏
纵向数据最大的陷阱是切分粒度:同一患者的 2-4 个时点是高度相关的「同一双手」,若按 study 行随机切,训练集见过 VS_0001_01、测试集再考 VS_0001_03,模型等于开卷考试,成绩虚高。坑 4 提醒过「subject 级标签按 191 例算,不要按 570 时点算」——同一原则落到切分上,就是以患者为单位切:
from sklearn.model_selection import GroupShuffleSplit
# X / y / groups:患者级特征、纵向三分类标签、patient_id(下一节填充)
gss = GroupShuffleSplit(n_splits=1, test_size=0.25, random_state=42)
tr, te = next(gss.split(X, y, groups=groups))
规则只有一条:切分键永远是 patient_id,不是 study、更不是文件名。交叉验证同理换 GroupKFold(groups=patient_id);若要把 90/35/67 的管理分组参与分层,同样以患者为单位归组,避免分组标签跨集合漂移。
12.4 第 3 步:体积轨迹特征
基线特征不必花哨:每个时点算一个肿瘤体积,患者级得到一条 2-4 点的轨迹。体积 = 掩膜内体素数 × 单体素体积:
import numpy as np
import nibabel as nib
def tumor_volume_mm3(mask_path):
img = nib.load(mask_path)
data = np.asanyarray(img.dataobj) > 0
zooms = img.header.get_zooms()[:3] # (dx, dy, dz),单位 mm
return int(data.sum()) * float(np.prod(zooms))
两个细节决定成败。其一是序列一致性:同一患者不同时点的掩膜并非都出自同一序列,t1postIAC 优先规则(坑 6)意味着文件名里 _seg_ 后缀可能不同;取体积前先确认掩膜来自哪条序列,混用 1.5T 与 3T、混用不同序列定义的体积做差会引入系统性偏移。其二是时间轴:官方表格是否含检查日期字段以数据字典为准;若无精确日期,就用时点序号代替真实时间,宁可用粗时间轴也不要虚构随访间隔(坑 7 的精神)。
# 患者级轨迹特征示意:首末体积差 + 相对变化率
feats = []
for sid, grp in tsv.sort_values("timepoint").groupby("patient_id"):
vols = grp["volume_mm3"].tolist() # timepoint / volume_mm3 均为示意列名
feats.append({
"patient_id": sid,
"n_tp": len(vols),
"dv": vols[-1] - vols[0],
"dv_rel": (vols[-1] - vols[0]) / vols[0],
})
12.5 第 4 步:基线模型与分层评测
任务定义成患者级三分类:stable / growing / shrinking。类别天然不平衡(约 70% / 13% / 16%),普通准确率在这里毫无信息量,成绩单上只写三样:balanced accuracy、per-class F1、混淆矩阵。
from sklearn.dummy import DummyClassifier
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import balanced_accuracy_score, f1_score
for clf in (DummyClassifier(strategy="most_frequent"),
LogisticRegression(max_iter=1000)):
clf.fit(X[tr], y[tr])
pred = clf.predict(X[te])
print(type(clf).__name__,
round(balanced_accuracy_score(y[te], pred), 3),
[round(f, 3) for f in f1_score(y[te], pred, average=None)])
先跑 most_frequent 哑基线再跑逻辑回归,是给自己定价:逻辑回归若只比哑基线高两三个点,说明轨迹特征信息量有限,该回头查特征而不是急着换模型。混淆矩阵重点盯 growing 与 shrinking 是否互相混淆——这两个小类正是临床上最要紧的判别(详见 §14 的 70/13/16 监测偏倚读法)。
12.6 第 5 步:升级路径
基线立住之后,三条升级线按性价比排序:
- 序列级稳健性:不只在单一序列定义上算体积,把 11 种序列标识当作条件维度,看体积轨迹在不同序列定义下是否稳健;
- 预训练权重:上游 Vestibular-Schwannoma-SEG(KCL)公开过 2.5D UNet 基线(KCL-BMEIS/VS_Seg),掩膜质量不满意时可先借鉴其训练配方自训分割,再回到本节特征管线;
- 3D 端到端:MONAI 起一个 3D 网络,输入双时点配对影像直接回归体积变化;此时 12.3 的 subject 级切分与 12.5 的分层评测协议原封不动照搬——协议不换,模型才可比。
管理分组(90/35/67)与治疗标记(348 治疗前 / 222 治疗后)在这个阶段都还是「协变量货架」上的备件:先别急着塞进模型,等基线成绩单稳定后再逐一加入、观察增量贡献,避免一上来就炖一锅大杂烩。
小结:五步跑完,你得到的不只是几个数字,而是一条可复现的流水线——对账闸门守住数据完整性,subject 级切分守住评估公正性,分层指标守住小类可见性。第 13 章的翻车剧场、第 14 章的标签解剖,都与这条流水线直接咬合。
§13 典型误用剧场:八段翻车实录与逐段修正
§9 的坑点清单是「警告牌」,本节把八个坑逐一演成翻车现场:每段先给出一段能跑通、数字也看着合理的错误代码,再给出修正。错误之所以危险,恰恰在于它不报错——八段剧场有一条共同的暗线:出错的地方都会静默通过,直到审稿人或复现者敲上门。
剧场 1(坑 1):检索词从根上写错,调研全程南辕北辙。 把「UCSD-VS」脑补成「UCSD 脊柱纵向队列」,后续一切检索、笔记、相关工作的引用全部建立在错误身份上。dispatcher 成稿前就真实上演过这一幕。
# 错误:按误判身份检索,TCIA 返回空集,还以为数据没公开
curl -s "https://services.cancerimagingarchive.net/nbia-api/services/v2/getCollectionValues" \
| grep -i "ucsd.*spine" # 查无此物
修正:身份先行——VS = Vestibular Schwannoma(前庭神经鞘瘤/听神经瘤),检索词用 vestibular schwannoma、acoustic neuroma,再来走 §11 的获取路线。
剧场 2(坑 2):「n=570 patients」写进论文摘要。 把 570 个检查时点当成 570 个患者,统计功效瞬间「膨胀」近三倍,这是审稿人一抓一个准的硬伤。
# 错误:拿 study 目录数当患者数
n_patients = len(studies)
print(f"enrolled n={n_patients} patients") # 570 ← 错,这是时点数
# 修正:患者级聚合后再计数
n_patients = len(subjects)
print(f"enrolled n={n_patients} patients") # 191
剧场 3(坑 3):加载器假设序列齐全,静默丢例。 只有 T1-post 是 570/570 全有,T1-pre 与 T2 是「几乎全部」,FLAIR/DWI/ADC/SWI/ASL 是「部分时点」。按「目录里就该有」写加载器,丢例不报错。
# 错误:存在性假设写死,部分时点直接静默跳过
for st in study_dirs:
rec = {"study": st.name}
for seq in ("t1pre", "t1post", "t2", "flair", "dwi"):
f = st / f"{st.name}_{seq}.nii.gz"
if not f.exists():
continue # ← 每跳过一个,样本就在下游悄悄少一块
rec[seq] = str(f)
# 修正:先读临床表的逐时点序列可得性文档化字段,按表取数
avail = set(tsv.loc[tsv["study_id"] == st.name, "sequences_available"].iloc[0].split(";"))
for seq in ("t1pre", "t1post", "t2", "flair", "dwi"):
if seq in avail: # 列名与取值格式以数据字典为准
rec[seq] = str(st / f"{st.name}_{seq}.nii.gz")
剧场 4(坑 4):把 subject 级标签摊到时点再分层。 纵向三分类(stable 70% / growing 13% / shrinking 16%,和 99%)是每例一个的标签;把它复制到 570 个时点再做分层切分,等于让同一患者的标签在训练与测试两侧同时出现。
# 错误:按 570 行分层,标签跨集合泄漏
X_570, y_570 = expand_to_timepoints(features, subject_labels)
tr, te = train_test_split(X_570, stratify=y_570, test_size=0.25)
# 修正:按 191 例做患者级分层,再把分组映射回时点行
gss = StratifiedGroupKFold(n_splits=4, shuffle=True, random_state=42)
for tr, te in gss.split(features, subject_labels, groups=patient_ids):
... # groups 保证同一患者只出现在一侧
剧场 5(坑 5):把 90/35/67 当互斥臂做治疗效应分析。 三分组之和 192 大于 191,重叠患者(如观察后转治疗)会被重复计入两组,效应估计被污染;重叠口径官方未披露。
# 错误:三分组当互斥臂,患者重复计数
for arm_name, n in [("obs", 90), ("srs", 35), ("surgery", 67)]:
subset = patients_in(arm_name) # 192 > 191,有人进了两组
# 修正:按 TSV 逐时点治疗状态重建每例干预序列,再定义分析队列
treat_seq = (tsv.sort_values("timepoint")
.groupby("patient_id")["treatment_status"]
.apply(list)) # 例:["pre", "pre", "post"],口径以数据字典为准
剧场 6(坑 6):在受限网络里硬磕 Aspera 插件。 浏览器点下载 → 提示装 Aspera Connect → 装不上 → 反复重试,一下午原地打转。40GB 影像包只走 faspex 分发,插件是硬依赖。
# 错误姿势:环境装不上插件,仍反复刷新下载按钮
# (无代码可贴——问题就出在「以为再点一次会有奇迹」)
修正:两步走——先用 HTTP 直链把 96.2 KB 临床 TSV 与 2.2 KB 数据字典拿回家评估价值(§11.2),再换可控网络环境装插件或走 ascp 命令行(§11.3 姿势 B)。
剧场 7(坑 7):把多患者的体素堆进同一坐标系。 所有影像保留各自采集空间与分辨率,无跨例标准化、无重采样。直接堆叠做「体素级群体分析」,形状能对上、解剖全错位。
# 错误:假设可跨患者逐体素对齐
import numpy as np, nibabel as nib
stack = np.stack([nib.load(p).get_fdata() for p in mask_paths]) # 静默失效
group_map = stack.mean(axis=0) # 平均出来的不是任何人的解剖
# 修正:跨患者体素分析前先自行配准(FSL/FreeSurfer/ANTs 均可),
# 或退一步选用对坐标系不敏感的患者级特征(如 12.4 的体积轨迹)
vols = [tumor_volume_mm3(p) for p in mask_paths] # 体积与空间无关,天然可跨例
剧场 8(坑 8):跨时点体积直接做差,无视参考序列切换。 分割文件名后缀标注实际参考序列,t1postIAC 优先;两个时点的掩膜若参考序列不同,分辨率/视野差异会混进体积差值,被误读成「肿瘤变化」。
# 错误:闭眼做差
dv = vol(v_tp3) - vol(v_tp1) # 若后缀一个是 t1postIAC、一个是 t1post?
# 修正:按 _seg_ 后缀分组检查(§11.4 的 Counter 盘点派上用场)
from collections import Counter
refs = Counter(p.name.split("_seg_")[-1].split(".")[0] for p in seg_files)
pair_ok = ref(tp1) == ref(tp3) # 参考序列一致才直接做差;
# 不一致时先做序列间一致性验证或标记测度噪声
八段剧场的共同教训:代码能跑 ≠ 分析正确。防线只有两道——§12.2 的三道对账闸门守数字,临床 TSV 的逐时点元数据守语义;两道都在,静默错误才无处藏身。
14. 纵向标签与治疗时间线解剖
§2 到 §10 已经把数据集的骨架讲清楚了;这一节专门解剖两样最容易被"想当然"的东西——纵向三分类标签的判定机制,以及治疗前/治疗后的时间线结构。这两块是纵向研究中最有信息量的部分,也是最容易在阅读官方文档时漏掉关键限定词的部分。
14.1 三分类标签到底是什么粒度:subject 级,不是时点级
官方给出的纵向行为分布是三个数字:stable 约 70%、growing 约 13%、shrinking 约 16%(和为 99%,余下约 1% 为标签缺失或归并所致,官方页面未逐项展开)。围绕这三个数字,有一条必须刻在脑子里的规则:
- 这三个百分比按 191 例患者算,不是按 570 个时点算。每个 subject 拿到一个纵向行为标签,描述的是该患者整个随访期内肿瘤的总体走势。
- 这正是坑 4 反复强调的计数口径问题。如果按 570 时点去数标签,得到的分布毫无意义——时点本身没有"行为",行为是跨时点比较出来的结果。
- 落到代码上,标签应该出现在 patient 级的元数据表里(一行一个患者),而不是成像目录或时点清单里。用 §12.2 的表格索引拿到时点清单后,纵向标签要用
patient_id做 merge,merge 之后的行数必须是 191:
import pandas as pd
# tsv_points: 一行一个时点(§12.2 的产物);tsv_labels: 一行一个患者
# 列名以随包数据字典为准,这里用语义名示意
tumor_labels = pd.read_csv(tsv_labels, sep="\t") # patient_id, growth_pattern, ...
assert tumor_labels["patient_id"].is_unique, "纵向标签必须是 subject 级:一行一患者"
merged = tsv_points.merge(tumor_labels, on="patient_id", how="left")
assert len(merged) == len(tsv_points) # 时点数不变:570
assert merged["patient_id"].nunique() == 191 # 患者数不变:191
还有一个细节值得点破:70% + 13% + 16% = 99% ≠ 100%。这 1 个百分点的缺口说明标签体系并非"三分天下、滴水不漏"——可能是某例无法判定,也可能是四舍五入的舍入误差。官方文档没有给出逐项解释,你也不必替官方编一个。稳妥做法是:把标签当作"带缺失的 subject 级属性"处理,任何 value_counts() 之后先 dropna=False 看一眼再下结论。
14.2 读这三个百分比之前,先问队列是谁
70/13/16 这组数字最危险的读法,是把它当成"散发性 VS 人群的自然分布"。它不是,而且离得很远。要理解为什么,得回到官方自述的队列构成:
- 该数据集的入组人群来自长期随访、定期影像监测的队列——官方明确将其定位为服务纵向研究与治疗决策分析,换句话说,能进这份数据的患者,本身就是"被影像科持续盯着"的那批人。
- 这带来一层经典的监测偏倚(ascertainment bias):growing 类患者的占比,会因"长了才被密集随访、被随访才发现长了"而系统性偏高;而大量"从未长大、随访几次就失访或临床放养"的小肿瘤,根本不会进入这个队列。
- 因此,把 13% 的 growing 占比外推到"所有偶发发现的 VS 里 13% 会生长",是一个没有依据的推论。文献中偶发 VS 的实际生长比例因纳入标准和随访时长而异,本数据集的数字只在"这个队列"内有解释力。
对建模者的直接启示:如果你的目标是训练一个"预测肿瘤会不会长"的通用模型,这条队列偏倚必须写进 model card 的 limitation 一栏;如果目标只是"在监测队列内做行为建模或复核辅助",那么 70/13/16 恰好定义了三类极不均衡的先验——约 7:1.3:1.6——§12.5 里 balanced accuracy 与 per-class F1 的必要性正来源于此。
14.3 治疗时间线:348 个治疗前时点 + 222 个治疗后时点
570 个时点在治疗维度上切成两段:348 个治疗前(pre-treatment)时点 + 222 个治疗后(post-treatment)时点,348 + 222 = 570,账是平的。这个切分比纵向三分类更"硬",因为它直接对应临床事件(是否接受过治疗),而不是跨时点的体积比较。
时间线的典型形状是:患者以若干次治疗前 MRI 入组(对应随访期的"监测段"),其中一部分人在某个时点接受治疗(显微手术切除、立体定向放射治疗等),之后再产生若干次治疗后影像(“术后段”)。但注意,并非所有 191 例都接受了治疗——348 个治疗前时点摊在全部患者头上,人均约 1.8 次监测影像;222 个治疗后时点只属于接受了治疗的那部分患者。每位患者的时点数为 2-4 次,治疗前/后的具体配比因人而异。
一个实用的重建示意:给每个时点打上 pre/post 标记后,就能把每个患者的时间线折成"序号 + 阶段"两列,一眼看出治疗发生在第几个时点:
# tsv_points 含: patient_id, session_id, stage ∈ {pre_treatment, post_treatment}
# 列名以随包数据字典为准
def timeline_brief(sub: pd.DataFrame) -> str:
sub = sub.sort_values("session_id")
n_pre = (sub["stage"] == "pre_treatment").sum()
n_post = (sub["stage"] == "post_treatment").sum()
return f"{len(sub)} 时点(前 {n_pre} / 后 {n_post})"
brief = tsv_points.groupby("patient_id").apply(timeline_brief)
print(brief.head()) # 例如: "3 时点(前 2 / 后 1)"
n_no_post = (tsv_points.groupby("patient_id")["stage"]
.apply(lambda s: (s == "post_treatment").sum() == 0).sum())
print(f"全程无治疗后影像的患者数: {n_no_post}")
最后一行打印的数字(全程只有治疗前影像的患者)就是"未治疗或治疗后未再复查"的规模——具体多少例取决于官方 TSV 的真实标注,跑一遍才知道,不要预估后当结论用。
14.4 治疗后影像的三个雷区
拿到 222 个治疗后时点,最先想做的事大概是"把术前术后的肿瘤体积画成轨迹"。可以画,但画之前要先认识治疗后影像里的三个雷区:
雷区一:术后切除腔不是肿瘤。 显微手术之后,原肿瘤位置会留下一个充满液体(有时夹杂气体或血液降解产物)的切除腔。在 T1 增强序列上,腔壁的环形强化在术后早期非常常见,与"残留肿瘤强化"在单张切片上难以区分。任何在治疗后时点上直接跑分割模型或人工勾画的人,都要先回答"这个高信号是腔壁还是残留"这个问题。如果你复用上游 VS-SEG 的 2.5D UNet(见 §15.1),要知道它是在术前影像上训练的,直接套用到术后影像上属于分布外推理,结果只能当草稿。
雷区二:放疗后改变会持续多年。 立体定向放射治疗后,靶区周围可能出现强化、水肿与占位效应的波动,时间窗可以从数月拖到数年。这段"治疗后影像不典型期"里的体积变化,既可能是肿瘤真缩小/复发,也可能是放射性改变的影像学表现。做 volume trajectory 时,把放疗后首两年内的时点与更晚的时点混在一起拟合趋势线,是一个值得警惕的做法——官方数据集没有提供放疗后影像的时间-表现对照注解,这项判断属于你的分析责任。
雷区三:序列可比性在治疗后更差。 坑 8 已经讲过默认参考序列的选择逻辑(t1postIAC 优先)与跨时点体积对比的测度噪声;治疗后时点会把这个问题放大——术前与术后的扫描参数、序列构成未必一致,甚至设备可能换过(数据集跨越 9 个机型、1.5T 与 3T 两种场强)。在 348/222 的切分线上,"术前最后时点 vs 术后首时点"的体积差是全数据集里测量噪声最大的一类比较,解读时请把它放在引号里。
14.5 官方未披露的边界:一份诚实清单
做纵向研究,最体面的姿态是先列出"官方没说什么"。以下条目在撰写本章时逐条核对过官方页面与文档,均无披露——请把它们当作你分析的已知未知:
| # | 未披露项 | 后果与对策 |
|---|---|---|
| 1 | 管理分组 90/35/67 的精确口径(三数之和 192 > 191,患者可跨组、或存在官方未说明的归类规则) | 不能把三组当互斥分组做 supervised 分组分析;若需分组,自行定义规则并声明 |
| 2 | 纵向三分类的判定阈值(体积变化多少个百分点算 growing/shrinking)与最短观察窗 | 复现标签不可行;把官方标签当 ground truth 用,不要试图"重新发明"判定规则再与官方对比 |
| 3 | 每例随访间隔(3 个月?6 个月?1 年?) | 无法做时间加权轨迹;只能按时点序号或按扫描日期(若 TSV 提供)排序 |
| 4 | 99% 之外那约 1% 标签的去向 | value_counts(dropna=False) 先看缺失规模再决定填充或排除 |
| 5 | 治疗类型与治疗时间的逐例明细(TSV 是否含、含几列,以数据字典为准) | 治疗效应建模前先清点 TSV 列,缺列就是缺,不要从影像反推治疗史 |
这张表与 §5 的官方信息边界一脉相承,但在纵向语境下重新过了一遍筛。一条经验法则:凡是需要"两个时点之间发生了什么"才能回答的问题,都要先查这张表——官方没给的时间或阈值信息,任何模型都补不回来,能补回来的只有你的假设,而假设要写进文档,不是藏进代码。
§15 横向对照:上游 VS-SEG 血缘、库内坐标与纵向定位
§1 到 §14 都是「向内看」——把这一个数据集的骨架、坑点与复现路径讲透;这一节换个方向「向外看」:它在上游数据生态里处于什么位置、与谁有血缘关系、在库内条目网络中扮演什么角色,以及在「纵向」这个维度上到底提供了什么别的资源给不了的东西。横向对照不是给数据集排座次,而是帮你在动手之前回答一个选型问题:这个任务该用哪个数据集,或者哪几个组合着用。
先交代与既有章节的分工:§2.8 已经划定了与上游 Vestibular-Schwannoma-SEG 的关系边界(一句话版),§3.2 给了上游数据集的详注(供理解标注流水线用),§8.1 画了库内家族图谱。本节不再重复它们的叙述职能,而是把散在三处的信息收拢成可以直接拿来做决策的对照表与路由表。
15.1 与上游 Vestibular-Schwannoma-SEG 的逐项对照
血缘一句话:本数据集分割流水线(§3.1)的第一段——3D nnU-Net 初分割——其模型训练自 TCIA 的另一 collection Vestibular-Schwannoma-SEG(Shapey et al., Scientific Data 2021)。也就是说,你在本数据集里看到的每一个参考掩码,其初稿都出自一个在 VS-SEG 上训练出来的模型之手。两者是「上游训练集 → 下游应用集」的关系,不是同一份数据的两个版本。
| 维度 | UCSD-VS-Longitudinal(本数据集) | Vestibular-Schwannoma-SEG(上游) |
|---|---|---|
| 队列定位 | 散发性 VS 纵向监测队列(观察/放疗/手术混合) | 伽马刀放射外科(GK SRS)治疗队列 |
| 规模 | 191 例 / 570 时点 / 40GB | 242 例 / 28.21GB |
| 影像构成 | 11 种序列标识、9 机型、1.5T/3T 混合,临床常规协议 | ceT1 MPRAGE + hrT2(CISS/FIESTA),研究协议 |
| 标注流程 | nnU-Net 初稿 → ITK-SNAP 审校 → 神经放射学家终审 | 神经外科医生 + 物理师共识分割 |
| 分割参考标准 | 有(570 时点) | 有(242 例单时点) |
| 额外资产 | 临床 TSV(纵向行为/治疗标签) | RTDose/RTStruct/RTPlan 放疗计划文件 |
| 官方基线 | 无 | KCL-BMEIS/VS_Seg(GitHub,2.5D UNet) |
| 版本 | Version 1(页面更新 2026/04/21) | Version 2(2021/03/17) |
| 数据 DOI | 10.7937/WEFA-CP23 | 10.7937/TCIA.9YTJ-5Q73(论文 doi:10.1038/s41597-021-01064-w) |
| License | CC BY 4.0 | CC BY 4.0 |
| IDC 云入口 | 无检索入口提示 | 有 |
读表要点三条:
- 分割参考标准这一项两者等价,影像分布完全不等价。VS-SEG 是研究协议(设备与序列高度受控),本数据集是 9 机型临床真实分布。用 VS-SEG 训练的模型直接打本数据集,性能衰减是预期内的——本数据集「初稿模型 + 人工修正」的设计(§3.1)本身就承认了这一点。反过来说,这恰恰让本数据集成为检验 VS 影像分割跨域泛化的好考场。
- 放疗资产只在 VS-SEG。RTDose/RTStruct/RTPlan 是放疗剂量与靶区文件,做剂量-影像相关分析必须去上游;本数据集只有治疗状态与治疗相对成像时间的表格字段(§14.3)。这是两个数据集最硬的功能分界线。
- 纵向标签只在本数据集。VS-SEG 全部是单时点横断面,没有随访结构;本数据集的 2-4 时点重复观测、348/222 治疗前后时点与 subject 级行为标签,在上游完全找不到对应物。
15.2 三种组合式复用路径
两个数据集 License 同为 CC BY 4.0,组合使用没有许可障碍。按投入产出排序,有三条经过推敲的路径:
路径 A:上游预训练 → 本数据集微调(分割向)。 KCL-BMEIS/VS_Seg 的 2.5D UNet 基线代码开源,可以直接当起点:先在 VS-SEG 上复现基线,再把权重搬到本数据集上微调。微调后的模型要报两组数字——VS-SEG 测试集上的分数(对齐社区已有结果)与本数据集上的分数(体现临床分布适配)。
路径 B:跨数据集泛化评测(方法学向)。 把本数据集当 VS-SEG 训练模型的外部测试集,570 个专家终审掩码就是现成的评测集。报告时必须写清楚两处口径差异:序列不同(MPRAGE vs t1post/t1postIAC,参考 §3.3 的选择规则)与机型分布不同(§14.4 的可比性问题在这里变成跨库可比性问题)。只报一个总分不报分组误差,等于没做泛化分析。
路径 C:任务互补拆分(应用向)。 分割方法学论文用 VS-SEG(有基线可比、有社区关注度),纵向应用论文用本数据集(有行为标签与治疗时间线)。两篇工作共享同一套预处理代码(都是 NIfTI + native space),工程成本接近摊薄一半。
15.3 库内坐标:任务 → 条目的路由表
§8.1 的家族图谱按「亲缘关系」组织;这里换一个视角,按「你手头的任务」路由——遇到什么问题,该顺手翻哪个条目。
| 你要做的事 | 先看哪个条目 | 对照点 |
|---|---|---|
| 理解 TCIA 平台、Aspera 下载机制、Data Usage Policy | tcia | 宿主平台条目,本数据集的获取链路(§11)全靠它背书 |
| 找大规模脑肿瘤分割基准与挑战赛 baseline | brats / brats-2026 | 恶性胶质瘤 vs 良性 VS:任务同构、肿瘤性质与随访逻辑不同 |
| 找「良性颅内肿瘤」的最近对照 | brats-meningioma | 脑膜瘤同为良性、同样占位效应主导,生长行为判定逻辑可互参 |
| 白质高信号分割、非肿瘤神经影像任务 | nuinsseg | 分割技术栈同族(MRI + 掩码 + nnU-Net 生态) |
| 头颈/颅底区域多序列 MRI 分割 | han-seg | 鼻咽癌头颈部 MRI,解剖邻近内听道区域的勾画经验可借鉴 |
检索入口复述 §8.2 的结论:vestibular schwannoma、acoustic neuroma、听神经瘤、前庭神经鞘瘤、longitudinal MRI、tumor segmentation、treatment response、TCIA——用「UCSD spine」「UCSD scoliosis」只会查无此物(坑 1)。
15.4 「纵向」这个卖点到底由什么构成
本条目反复强调 Longitudinal,但纵向不是一个笼统的词。本数据集提供了三种彼此独立的纵向结构,任选其一或组合都足以支撑一个研究问题:
| 纵向结构 | 数据支撑 | 典型问题 | 前置阅读 |
|---|---|---|---|
| 同一肿瘤的重复观测 | 每例 2-4 个时点 | 体积变化轨迹、跨时点分割一致性 | §12.4、坑 2/坑 4 |
| 治疗前-治疗后对照 | 348 治疗前 + 222 治疗后时点 | 治疗反应评估、干预前后形态学对比 | §14.3、§14.4 |
| subject 级行为标签 | stable 70% / growing 13% / shrinking 16% | 纵向行为预测(从基线影像预测走向) | §14.1、§14.5 |
把这三种结构放回库内对照,稀缺性就出来了:本库收录的相关条目里,brats 家族规模大但无纵向随访标签,VS-SEG 有放疗计划但全部单时点,nuinsseg 与 han-seg 压根不是随访设计。同时具备「专家终审分割 + 治疗时间线 + 行为标签」三件套的 VS 纵向资源,目前公开生态里就是这一份。如果你的研究问题里带「随时间」三个字,选型讨论到这里就可以结束了。
15.5 选型速查:本数据集还是上游 VS-SEG
§10.4 的 30 秒决策卡回答「要不要用这个数据集」;下面这张速查表回答更细的一层——「用它还是用它的上游」:
- 只要 T1 增强分割金标准、想跟现成基线比数字 → VS-SEG(有 2.5D UNet 基线,社区结果可对齐)
- 要纵向行为标签、治疗时间线、多序列临床真实分布 → 本数据集(唯一选择)
- 要放疗剂量与靶区文件 → VS-SEG(RTDose/RTStruct/RTPlan 只在上游)
- 要检验模型的跨设备泛化能力 → 本数据集当考场,VS-SEG 当训练场(路径 B)
- 两个都要:分割方法学走 VS-SEG、纵向应用走本数据集(路径 C)——多数团队的最优解是组合,不是二选一
最后一条经验:横向对照做完,把结论落成一行写进你自己的实验记录——「本工作用 X 做什么、用 Y 做什么、为什么不用 Z」。三个月后回来复现的是你,不是今天对照过五个数据集的你;这行字就是那时候的路标。
§16 引用、版本与数据治理实务
§15 回答了「用哪个数据集」;这一节处理用完之后的三件事——怎么引用才合规、版本怎么追踪才不会引错、以及治理层面还有哪些现状需要知道。这些内容零散分布在 §1、§3、§5 与 §6,这里收拢成可以照抄的实务清单。别小看这三件事:引用格式错误会让你的数据使用在评审时被打折扣,版本引错会让复现者下到另一份数据,而治理现状的误判会让协作计划落空。
16.1 引用怎么做:一条 DOI 打底,署名照抄官方顺序
本数据集没有配套论文(§1),所以数据引用是唯一的引用形式。实务要点:
- 引用对象是数据集 DOI:10.7937/WEFA-CP23。不要试图去引一篇不存在的「原始论文」——TCIA 页面的 Publications 栏为空,社区论文截至抓取时点也未被收录(§4.4)。
- 署名照抄数据引用页的作者顺序:Uyen Nguyen; Maria Correia de Verdier; Rachit Saluja; Jessica Schulte; Michael Brandel; Krish Suresh; Nikdokht Farid; Jeffrey Rudie。不要按自己的印象重排或擅自指定通讯作者——官方页面未标注通讯归属(待核项,§9),猜测没有意义。
- License 义务写进你的 acknowledgements 或 methods:CC BY 4.0 要求署名(即上述 DOI 引用)并遵守 TCIA Data Usage Policy。三个资产(影像+分割、临床 TSV、数据字典)统一 CC BY 4.0,不存在「表格另有限制」的特例。
- 下游成果的公式化表述可以写成:「数据来源:The Cancer Imaging Archive collection UCSD-VS-Longitudinal (DOI: 10.7937/WEFA-CP23), licensed under CC BY 4.0」——一句话同时覆盖来源、DOI 与许可。
16.2 版本追踪:单一版本的宽裕与抓取时点的责任
版本现状非常简单:Version 1(页面更新 2026/04/21)是唯一版本,无前代。这带来两点实务便利与一项长期责任:
- 便利一:不存在「复现者下到旧版本」的经典事故—— everyone 下载的都是同一版。
- 便利二:不需要写跨版本字段映射表;本条目所有数字(191/570/4,391、40GB、序列标识)都锚定在 Version 1 口径上。
- 长期责任:官方页面是活的,TCIA 可以在未来追加 Version 2。本条目抓取时点为 2026-10-09,其后的官方变更以页面为准(Q32 的原则)。稳妥的做法是在你的实验记录里记下下载日期与文件清单校验和(§11.4 体检的副产品),将来官方出 Version 2 时,你有凭据判断自己用的是哪一版。
16.3 治理现状的诚实描述:生态位里有什么、没什么
对协作与工程规划而言,「没什么」和「有什么」同样重要。截至抓取时点:
- 没有关联 Analysis Results、没有关联 Collections——TCIA 页面明确注明。这意味着官方不提供现成的分析产物(指标表、排行榜、预训练权重包),一切基线自建(§4.4、§12)。
- IDC 侧没有本 collection 的检索入口(§15.1 对照表末行)——不能假设「反正 IDC 上能云取」;云上路径目前只对上游 VS-SEG 成立。
- 临床表格的列语义以随包数据字典(2.2kb TSV)为准——任何第三方文档(包括本条目)对列名的转述都可能因官方更新而漂移,字典文件才是权威。
- 资助与归属:NIH Grant UL1TR001442(UCSD CTSA);机构为 UCSD Health 单机构回顾性队列。写 funding statement 或机构归属时以此为准,不要把 UCSD 误写成 USC 或其他缩写变体(坑 1 的近亲错误)。
16.4 三类读者的行动清单
把全条目收束成三份按角色裁剪的行动清单,每份五条以内:
临床研究者(想做纵向结局分析):① 先读临床 TSV 与 §14,确认 treatment history 字段粒度满足你的问题;② 按时点序号组织随访结构,不假设固定随访间隔;③ 治疗后影像分析过一遍 §14.4 三雷区;④ 官方标签当 ground truth 用,不重判(Q40);⑤ 引用按 §16.1 抄模板。
AI 工程师(想做分割或预测模型):① 环境里先装 NiBabel/MONAI(§11.5 速配表);② subject 级切分写进数据管道第一步(§12.3);③ 序列可得性逐时点查表,别假设齐全(坑 3、坑 8);④ 基线从体积轨迹特征起步,别上来就堆时序模型(Q43);⑤ 跨库组合路线参考 §15.2。
数据管理者(要入库存档或建平台):① 下载走 Aspera,预留插件环境(坑 6);② 落盘体检记录 191/时点分布/4,391 三数并留存校验和(§11.4);③ 三个资产一份都不许缺,数据字典单独备份(§16.3 的权威性);④ 许可整包 CC BY 4.0,转分发保留署名与政策链接;⑤ 版本记录写「Version 1,下载于 X 日期」,为未来 Version 2 留对账锚点。
§17 评审者视角:六类常见质疑与应答思路
最后一份实用收束:把这份数据集写进论文或项目书时,评审与同行评议里反复会出现的六类质疑,逐条给出基于官方口径的应答思路。这些质疑没有一条是数据的「缺陷暴露」——它们全部源于本条目前文已经解释过的设计选择;这里做的是把散落各节的应答素材集中到一个可以在投稿前翻阅的位置。原则照旧:只应答数据集实际支撑的内容,不替官方许诺它没给的东西。
17.1 质疑一:单机构队列,外部效度怎么保证?
应答分两层。第一层,单机构不等于协议单一:9 种机型、GE/Siemens/Canon/Time Medical 四家厂商、1.5T 与 3T 各占约半,这已经是公开 VS 影像资源里少见的设备多样性(§2.4),跨设备泛化评测反而因此可行(§15.1 要点 1)。第二层,诚实承认机构间临床路径差异(纳入偏好在初筛 255→191 的漏斗里已经发生,§2.2),并把跨机构验证列为 limitation 与后续工作——本数据集恰好可以当别人模型的外部考场(§15.2 路径 B),机构角色是可互换的。
17.2 质疑二:70% 稳定是不是高估了良性病程?
这条质疑源自监测偏倚(§2.3、§14.2):能进队列的必须是 2-4 个时点的长期随访者,而长期随访者天然偏向主动监测的稳定病例。应答姿态是承认而非辩解:官方自述了这一偏倚,队列定位是「纵向监测人群」而非流行病学样本;任何把 70/13/16 写成疾病自然史比例的用法都是误用(坑 4)。正确的框架是把它写成条件分布——「在符合纵向随访条件的监测人群中,行为分布如此」。
17.3 质疑三:行为标签阈值未披露,还算可复现吗?
应答关键是拆开「复现」的两个含义。标签判定过程不可逐例复现(阈值与最短观察窗未披露,§14.5)——这是事实,不回避;但标签本身是可复用的事实数据:每例一个专家综合判定的 ground truth,下游的模型训练、统计检验、轨迹分析全部可以精确复现,因为输入输出都是公开文件。论文里的写法:把官方标签当标注事实引用,自建判定规则的研究单独声明阈值并单独报告,两者不混表(Q40 的展开)。
17.4 质疑四:初稿模型的偏置会不会传导进参考标准?
三段式流水线(§3.1)对这个问题有结构性应答:nnU-Net 初稿只是起点,经过 ITK-SNAP 人工逐例审校与委员会认证神经放射学家终审批准,「参考标准」的口径锚定在专家层,不在模型层。但结构应答之外要给实证出口:初稿模型继承 VS-SEG 的研究协议分布,面对 9 机型临床数据必有系统性误差,所以高质量的使用者应该抽样自查(§3.6 五问清单)——评审认可的不是「绝对无偏」的宣称,而是「有机制且有验证路径」的设计。
17.5 质疑五:n=191 的样本量撑得起结论吗?
按任务分层回答,不要笼统辩护。分割任务:570 个专家掩码的体素级监督信号在 VS 领域属于充足量级,且每例多时点是天然的数据增广。纵向行为预测:191 个 subject 级标签确实限制了深度模型的容量上限,务实路线是轻量特征加统计检验(Q43),并把 70/13/16 的类不均衡写进评测设计(§12.5 的 balanced accuracy)。治疗反应分析:348+222 的时点对照结构支撑分组比较,但治疗明细粒度受 TSV 列限制(§14.5 清单第 5 条),先清点再承诺。分层应答的共同点:每类任务报一个准确的数,而不是用一个 191 应付所有质疑。
17.6 质疑六:为什么是 NIfTI 而不是原始 DICOM?
应答三点。一,NIfTI 是神经影像分析的主流工作格式,NiBabel/MONAI/ITK-SNAP/3D Slicer 全链路原生支持(§11.5),对目标用户是减负而非阉割。二,转换器与口径透明:dcm2niix 转换、保留原始采集空间与分辨率、无重采样无配准(§2.6),空间信息的处理方式全部有据可查。三,去标识在 DICOM 阶段已完成(defacing),NIfTI 分发与机构隐私要求一致——这是合规设计而不是格式偷懒。若评审坚持要 DICOM,答案是明确的:本 collection 不提供,需原始 DICOM 的场景只能联系官方或上游 VS-SEG(其同样为 NIfTI 分发生态)。
17.7 一页收束:把 limitation 写成设计说明书
六条应答串起来看,有一个共同的写作模板——把 limitation 直接升格为设计说明:「我们不做 X(承认),因此 Y 用 Z 方式处理(机制),验证路径是 W(出口)」。单机构如此、监测偏倚如此、阈值未披露如此、初稿偏置如此、样本量如此、格式取舍亦如此。评审真正想确认的不是数据集完美无缺,而是使用者清醒地知道边界在哪、并且在边界内工作。这份条目从 §0 到 §17 反复强调的口径纪律,最终都会变成你 methods 一节里的那几句话。
FAQ(高频问答 32 问)
A. 基础认知
Q1:UCSD-VS-Longitudinal 是什么?
加州大学圣地亚哥分校整理、发布于 TCIA 的前庭神经鞘瘤(VS,听神经瘤)纵向 MRI 数据集,191 例散发性 VS、570 个检查时点,含专家终审的体素级分割与纵向行为/治疗标签。
Q2:VS 是什么病的缩写?
Vestibular Schwannoma(前庭神经鞘瘤),第八对脑神经(前庭蜗神经)鞘上的良性肿瘤,俗称听神经瘤(acoustic neuroma)。与脊柱无关,也不是英文「vs.」。
Q3:肿瘤是恶性的吗?
不是。VS 是良性肿瘤,TCIA 页面在 Cancer Types 一栏明确标注 Vestibular Schwannoma (non-cancer)。它致残的主要机制是占位效应(压迫脑干、面神经、耳蜗神经)与听力损害,而非恶性增殖转移。
Q4:数据集有配套论文吗?
没有独立论文。TCIA collection 页的 Detailed Description(Abstract/Introduction/Methods/Usage Notes)承担了数据说明文职能,页面作者推荐论文一栏为空。数据引用直接引数据集 DOI。
Q5:什么时候发布的?
Version 1,页面更新时间戳 2026/04/21;影像采集区间为 2015 年 12 月至 2024 年 5 月。发布尚新,社区引用与下游基准仍在起步期。
Q6:为什么叫「Longitudinal」?
区别于既往快照式 VS 影像资源的核心卖点是纵向:每例 2-4 个连续 MRI 时间点,支持同一肿瘤随时间的演化分析(生长/稳定/缩小与治疗反应)。
B. 数据与获取
Q7:数据多大规模?
191 例患者、570 个 MRI 检查(75 例 2 时点、44 例 3 时点、72 例 4 时点)、约 4,391 个 NIfTI 序列文件、40GB;临床 TSV 570 行。
Q8:怎么下载?
影像+分割包经 faspex.cancerimagingarchive.net 用 IBM Aspera Connect 插件下载;临床 TSV(96.2kb)与数据字典(2.2kb)是 TCIA 站内 HTTP 直链。
Q9:需要注册或签协议吗?
不需要。CC BY 4.0 全开放,义务只有署名(引用数据集 DOI)并遵守 TCIA Data Usage Policy。
Q10:影像是什么格式?
压缩 NIfTI(.nii.gz),由 DICOM 经 dcm2niix 转换,保留 subject 原生空间与原始分辨率,无重采样、无跨例配准。
Q11:都有哪些序列?
11 种序列标识:t1post、t1postIAC、t1pre、t1preIAC、t2、t2IAC、flair、dwi、adc、swi、asl。所有时点都有 T1-post;几乎全部有 T1-pre 与 T2;可选序列逐时点不同,清单见临床表格。
Q12:文件怎么命名?
检查文件夹 VS_XXXX_YY(XXXX 匿名号,YY 时点 01-04);序列文件 VS_XXXX_YY_<sequence>.nii.gz;分割 VS_XXXX_YY_seg_<reference>.nii.gz,后缀标注参考序列。
Q13:人口学构成如何?
98 例男性、93 例女性;首诊 MRI 平均年龄 58±15 岁,全部为成人;表格含 race/ethnicity 字段。
Q14:设备构成如何?
9 种机型:GE Medical Systems 为主,另有 Siemens、Canon、Time Medical;场强 1.5T 占 52%、3T 占 48%。协议为机构标准化脑肿瘤或内听道临床协议。
C. 标注与质量
Q15:分割是谁做的?
三段式:训练于上游 Vestibular-Schwannoma-SEG 的 3D nnU-Net 出初稿 → ITK-SNAP 人工审校修正 → 委员会认证神经放射学家终审批准为参考标准。
Q16:分割在哪个序列上?
T1-post 上分割对比增强肿瘤;若标准 t1post 与 IAC 专用 t1postIAC 并存,按官方规则分割 t1postIAC;分割文件名后缀标注实际参考序列。
Q17:纵向行为标签怎么来的?
subject 级三分类(growing 13%、stable 70%、shrinking 16%),依据区间放射学报告与系列影像容积评估综合判定;每例一个标签,非逐时点。
Q18:去标识做了什么?
defacing 去除面部特征(经目视 QC 确认不影响内听道与肿瘤区域);文件名与临床表均使用匿名 ID;表格变量去标识化后以 TSV 分发。
Q19:分割是纯人工的吗?初稿模型的偏置要担心吗?
不是纯人工。初稿模型继承上游数据分布(单一设备研究协议),面对 9 机型临床数据必有系统性误差——这正是人工修正层存在的理由。担心偏置的使用者可参考 §3.6 的五问自查清单抽样验证。
Q20:有逐时点肿瘤体积数值吗?
没有。表格只有分类标签;体积需要使用者从分割掩码自行计算(体素数×体素体积),见 §4.5 的代码路径。
D. 任务与复用
Q21:官方有基准测试或排行榜吗?
没有。Related Analysis Results 与社区论文栏均为空(截至 2026-10 抓取),DataCite 引用数 0——基准与基线需自建,这也是机会所在。
Q22:最常见的三个复用任务?
多时点分割评测(570 个参考掩码现成);纵向行为预测(序列输入→三分类输出);治疗反应评估(348 治疗前+222 治疗后时点对照)。
Q23:跑基线用什么栈?
ITK-SNAP/3D Slicer 可视化,NiBabel/MONAI 做加载与训练,FSL/FreeSurfer 做辅助处理;官方 Usage Notes 点名支持全部六件套。
Q24:可以做放疗剂量或手术结局分析吗?
数据集只给治疗状态与时机,不含放疗剂量文件或手术细节(上游 VS-SEG 才带 RTDose/RTStruct/RTPlan)。治疗反应分析以影像+时点对照为主。
Q25:数据划分(train/val/test)官方给吗?
不给。需要按 subject 级自行切分——同一患者的所有时点必须落在同一侧,否则序列信息泄漏进测试集。
Q26:能用于商业项目吗?
能。CC BY 4.0 允许商用与衍生,条件是署名(带 DOI 的数据引用)并遵守 TCIA 使用政策;对产品化唯一现实门槛是 Aspera 下载链路。
E. 口径与库内
Q27:191/570/4,391 三个数怎么用才不出错?
191 是患者数(n),570 是检查时点数,4,391 是 NIfTI 序列文件数(TCIA 表格 series/images 同值口径)。写「patients, n=570」是最常见的翻车。
Q28:管理策略分组为什么加起来 192?
观察 90+放疗 35+手术 67=192,比 191 例多 1,分组存在重叠(官方称多数治疗患者单一干预,重叠口径未披露)。做分组分析先按 TSV 重建每例干预序列。
Q29:为什么队列里稳定肿瘤占七成?
纳入标准要求 2-4 个纵向时点,天然偏向接受长期随访的患者——而长期随访者多为主动监测的稳定病例。这是官方自述的监测偏倚,使用时按 §2.3 处理而非当流行病学率。
Q30:库内还有哪些相关条目?
tcia(宿主平台)、brats 与 brats-2026、brats-meningioma(脑肿瘤 MRI 分割家族)、nuinsseg(脑 MRI 分割)、han-seg(头颈 MRI 分割);外部上游锚为 TCIA 的 Vestibular-Schwannoma-SEG。
Q31:检索本数据集用什么关键词?
UCSD-VS-Longitudinal、vestibular schwannoma、acoustic neuroma、听神经瘤、longitudinal MRI、tumor segmentation、TCIA。用「UCSD spine」「UCSD scoliosis」会查无此物——那是误判身份(坑 1)。
Q32:遇到本条目与官方页面不一致时信谁?
信官方 TCIA collection 页。数据集无配套论文,官方页面持续维护(版本戳 2026/04/21),本条目抓取时点为 2026-10-09,其后的官方更新以页面为准。
F. 深度扩展问答(对应 §11-§15)
Q33:不想下 40GB,能先评估值不值得用吗?
能,这正是 §11 推荐的标准路径:先拉两个小 TSV(合计不到 100KB)——临床表 570 行给出时点结构、序列可得性、治疗与标签的全貌,读完再决定要不要装 Aspera 插件。只做队列统计或标签分布分析的任务可能根本不需要影像。
Q34:Aspera 插件装不上怎么办?
没有替代下载链路——40GB 影像包只走 faspex.cancerimagingarchive.net 的 Aspera 通道,这是坑 6 的内容。两个 TSV 是站内 HTTP 直链不受影响;影像部分只能换可控网络环境重试插件,或请有环境的协作者代为落盘后按 CC BY 4.0 转发(保留署名义务)。
Q35:下载完怎么确认包是完整的?
按 §11.4 的五分钟体检:subject 文件夹数应为 191(VS_XXXX 编号),每例时点数应落在 2-4 且与临床表逐例对上,NIfTI 总量约 4,391 个;任一数字对不上就回查下载日志,不要带着残缺包开工。
Q36:最少几步能跑通一个纵向基线?
§12 给了五步路径:环境就位 → 表格驱动索引 → subject 级切分 → 体积轨迹特征 → 分层评测。全部用 NiBabel 加 pandas,不需要 GPU 集群,目标是「一个下午跑通」的最小闭环,之后每一步都可独立升级。
Q37:切分数据时最大的坑是什么?
按 subject 切,不是按文件切。同一患者的所有时点必须落在同一侧,否则基线影像和随访影像分属训练与测试集,模型等于「背过答案」——体积轨迹会在测试集上虚假地变好(§12.3 的检查代码一行就能防住)。
Q38:§9 的八个坑里哪个最致命?
坑 1(把 VS 当脊柱数据)。它是身份级误判,会让整个选题、检索与实验设计全部建在错误地基上;其余七坑(计数口径、序列假设、标签粒度、分组重叠、下载链路、空间口径、参考序列)至少能在动手后被数据「纠正」,坑 1 只会被沉默地放大。
Q39:治疗后的影像能直接和治疗前比吗?
能比,但要带着 §14.4 的三个雷区比:术后切除腔的环形强化不是残留肿瘤;放疗后改变会持续多年被误读为进展;治疗后序列构成更不齐(跨 9 机型与双场强)。做对照前先把这三个混淆源写进分析计划的排除说明。
Q40:我可以自己重新判定 growing/stable/shrinking 吗?
可以自建标签做研究,但不要拿它和官方标签互相「验货」——判定阈值与最短观察窗官方未披露(§14.5),复现官方判定不可行。正确姿势:分析官方标签时把它当 ground truth;自建标签时单独声明规则、单独报告,两套结果不混在一张表里。
Q41:这个数据集和上游 VS-SEG 怎么选?
一句话版见 §15.5:要现成基线对比或放疗剂量文件选 VS-SEG;要纵向标签、治疗时间线、多序列临床分布选本数据集;分割方法学 + 纵向应用的组合是多数团队的最优解(§15.2 路径 C)。
Q42:VS-SEG 上训练的模型能直接拿来用吗?
能跑,但衰减是预期内的:上游是研究协议影像,本数据集是 9 机型临床分布。两条正路是 §15.2 的路径 A(搬到本数据集上微调)或路径 B(把本数据集当外部测试集做泛化评测);直接用零样本结果当最终性能是最常见的省事式误用。
Q43:每例只有 2-4 个时点,撑得起深度时序模型吗?
撑不起复杂时序架构——这不是数据缺陷而是设计使然(监测随访的采样密度,§15.4)。务实做法是把时点数当特征而非序列:体积差、体积变化率、首末时点对比这类轻量特征打满,深度序列模型留给时点更密的资源。
Q44:能用于儿科 VS 研究吗?
不能。队列全部为成人,首诊 MRI 平均年龄 58±15 岁(Q13),而儿科 VS 在流行病学与处理策略上都是另一套逻辑。需要儿科神经影像资源时应另做检索,本数据集的结论外推到儿童没有官方背书。
事实清单(硬事实 26 条)
- 官方全称 The University of California San Diego Longitudinal Vestibular Schwannoma Dataset (UCSD-VS-Longitudinal);VS=Vestibular Schwannoma 前庭神经鞘瘤,别名 acoustic neuroma。
- 发布平台:The Cancer Imaging Archive(TCIA);DOI 10.7937/WEFA-CP23;Version 1,Updated 2026/04/21。
- 数据引用 8 作者:Nguyen U、Correia de Verdier M、Saluja R、Schulte J、Brandel M、Suresh K、Farid N、Rudie J(2026)。
- 191 例散发性 VS 患者;570 个 MRI 时间点;40GB;NIfTI 格式。
- 时间点分布:75 例 2 时点、44 例 3 时点、72 例 4 时点(75+44+72=191)。
- 影像与分割、临床 TSV、数据字典三资产统一 CC BY 4.0。
- 采集区间 2015-12 至 2024-05,UC San Diego Health 常规临床护理。
- 初筛 255 例;排除含 NF2、非前庭神经鞘瘤、缺序列、运动伪影、无预处理影像五类。
- 性别 98 男/93 女;首诊 MRI 平均年龄 58±15 岁。
- 管理策略:保守观察 n=90、放疗 n=35、手术切除 n=67(和 192>191,分组有重叠)。
- 时点构成:348 治疗前+222 治疗后=570。
- 扫描设备 9 种机型;GE 为主,另有 Siemens、Canon、Time Medical;1.5T 52%/3T 48%。
- 11 种序列标识(t1post/t1postIAC/t1pre/t1preIAC/t2/t2IAC/flair/dwi/adc/swi/asl);全部时点含 T1-post,几乎全部含 T1-pre 与 T2,多数含 IAC 序列。
- 分割流水线:3D nnU-Net(训练自 TCIA Vestibular-Schwannoma-SEG)初稿 → ITK-SNAP 人工修正 → board-certified 神经放射学家终审。
- t1post 与 t1postIAC 并存时优先分割 t1postIAC;分割文件名 seg_<reference> 标注参考序列。
- 纵向行为三分类(subject 级):growing 13%、stable 70%、shrinking 16%(和 99%,四舍五入)。
- 判定依据:区间放射学报告+系列影像容积评估。
- 影像 defaced 去面部,QC 确认不影响内听道与肿瘤分割。
- dcm2niix 转换;native space;无空间标准化/跨例配准;保留原始分辨率。
- 命名规则:VS_XXXX_YY 检查夹;VS_XXXX_YY_<sequence>.nii.gz 序列;VS_XXXX_YY_seg_<reference>.nii.gz 分割。
- 临床 TSV 96.2kb(570 行);数据字典 TSV 2.2kb;变量含 age/sex/race/ethnicity/treatment history/treatment timing/行为分类。
- 影像包下载须 IBM Aspera Connect 插件(faspex 分发)。
- 资助:NIH Grant UL1TR001442(UCSD CTSA)。
- 无独立配套论文;TCIA 页作者推荐论文栏为空;社区论文栏为空;DataCite 0 引用(2026-10 抓取)。
- 上游数据集 Vestibular-Schwannoma-SEG:KCL(Shapey 等),242 例 GK SRS 患者,ceT1+hrT2,手工共识分割+RT 数据,Sci Data 2021(10.1038/s41597-021-01064-w),数据 DOI 10.7937/TCIA.9YTJ-5Q73,CC BY 4.0。
- TCIA 官方定位:自动分割算法、预后模型、纵向治疗反应评估工具的 benchmark 资源;官方自述队列过代表主动监测/长期随访人群。
相关数据集导航
以下为站内 AI-Ready 数据集百科中与本词条共享多个主题标签的相关数据集,按相关度降序排列:
- ucsd-bmets-longitudinal — 共享标签:医学影像 / MRI / 脑影像 / 脑肿瘤 / 医学图像分割 / 肿瘤学
- brats-africa — 共享标签:医学影像 / MRI / 脑肿瘤 / 医学图像分割 / 肿瘤学
- brisc — 共享标签:医学影像 / MRI / 脑影像 / 脑肿瘤 / 医学图像分割
- panda-cms — 共享标签:医学影像 / MRI / 脑肿瘤 / 医学图像分割 / 肿瘤学
- cfb-gbm — 共享标签:医学影像 / MRI / 脑肿瘤 / 医学图像分割 / 肿瘤学
- ucsf-pdgm — 共享标签:医学影像 / MRI / 脑肿瘤 / 肿瘤学
- fets — 共享标签:医学影像 / MRI / 脑肿瘤 / 肿瘤学
- bratious — 共享标签:医学影像 / 脑肿瘤 / 医学图像分割 / 肿瘤学
- yale-brain-mets-longitudinal — 共享标签:医学影像 / MRI / 脑肿瘤 / 肿瘤学
- brats-meningioma — 共享标签:医学影像 / MRI / 脑肿瘤 / 医学图像分割 / 肿瘤学
导航说明:本章节由全站统一标签体系自动计算生成(标签重合度算法),双向可达;点击链接可跳转至对应数据集词条。

