跳到主要内容TCGA 结直肠癌 WSI 数据下载与临床信息解析 | 极客日志PythonAI算法
TCGA 结直肠癌 WSI 数据下载与临床信息解析
TCGA 结直肠癌 WSI 数据下载与临床信息解析。演示了如何通过 GDC Portal 筛选并下载 TCGA-COAD 和 TCGA-READ 的病理全图切片,利用 gdc-client 工具完成批量获取。介绍了基于 openslide 库读取 SVS 缩略图的方法,以及解析文件名中的样本类型编码以区分肿瘤与正常组织。此外,还涵盖了从 XML 格式的临床数据中提取生存状态与随访时间的脚本实现,为医学 AI 模型训练提供完整的数据准备流程。
lzdxwyh84 浏览 目标
从 GDC 官网获取结直肠癌相关数据集,主要包括 TCGA-COAD(结肠癌)和 TCGA-READ(直肠癌)。我们将分两部分进行:病理全图(WSI)数据的下载与可视化,以及生存预测所需临床信息的提取。
获取'病理全图 WSI'
1. 进入官网
首先访问 GDC Portal 首页:https://portal.gdc.cancer.gov
2. 创建 Cohort
进入 Project 页面
在顶部导航栏点击 Projects,搜索并选中 TCGA-COAD 和 TCGA-READ。这一步是为了锁定我们要分析的项目范围。

创建 Cohort
点击页面上的 'Create New Cohort',将其命名为 Colorectal。这样可以将两个项目的样本聚合在一起管理。

3. 筛选并下载图像数据
进入 Repository 页面
在 Cohort 页面中,切换到 Repository 标签页查看可用文件。

筛选 Diagnostic Slide 类型
我们需要的是病理切片,所以过滤条件如下:
- Experimental Strategy 选择
Diagnostic Slide
- Data Format 选择
.svs

添加到购物车并导出 Manifest
确认筛选结果无误后,点击 'Add All Files to Cart'。随后点击购物车图标,选择导出 Manifest 文件。这个 Manifest 文件包含了所有待下载文件的 ID 列表,是后续批量下载的关键。
4. 安装 GDC Data Transfer Tool
GDC 官方提供了高性能的数据传输工具 gdc-client,比浏览器直接下载更稳定且支持断点续传。
官网地址
下载与安装
F:\CS2\GDC_Data\gdc-client_2.3_Windows_x64\
5. 下载数据集
准备好 Manifest 文件和客户端后,即可执行下载命令。这里以 Windows 和 Ubuntu 为例。
下载命令示例
Windows 版本
cd G:\TCGA
F:\CS2\GDC_Data\gdc-client_2.3_Windows_x64\gdc-client.exe download -m F:\CS2\GDC_Data\gdc-client_2.3_Windows_x64\gdc_manifest.2025-07-21.162827.txt
Ubuntu 版本
cd /disk4/lxq_data/tool/GDC
wget https://gdc.cancer.gov/system/files/public/file/gdc-client_v1.6.1_Ubuntu_x64.zip
unzip gdc-client_v1.6.1_Ubuntu_x64.zip
chmod +x gdc-client
./gdc-client download -m /disk4/lxq_data/tool/GDC/gdc_manifest.2025-07-21.162827.txt --dir /disk4/lxq_data/dataset/WSI/TCGA
下载过程中会显示进度条,速度取决于网络状况。完成后,所有数据将保存在你指定的 --dir 目录下。
6. 数据展示
下载下来的 .svs 文件通常很大,直接用普通看图软件可能打不开或很慢。推荐使用 Python 的 openslide 库来读取缩略图。
图片展示的代码
import openslide
import matplotlib.pyplot as plt
svs_path = r"/disk4/lxq_data/dataset/WSI/2b02baad-7143-4fea-9f28-ff2d4efc4044/TCGA-D5-6932-01Z-00-DX1.d18111de-f0f5-4637-8534-a2b4396cbb41.svs"
slide = openslide.OpenSlide(svs_path)
print("层数(resolutions):", slide.level_count)
print("每层尺寸(从高到低分辨率):")
for i, level_dim in enumerate(slide.level_dimensions):
print(f" - Level {i}: {level_dim}")
thumbnail = slide.get_thumbnail((1024, 1024))
plt.figure(figsize=(8, 8))
plt.imshow(thumbnail)
plt.title("Thumbnail of SVS File")
plt.axis("off")
plt.show()
7. 标签解析
文件名中的编码包含关键信息,特别是样本类型(Sample Type),这决定了它是肿瘤组织还是正常组织。
编码规则
TCGA 使用两位数字表示样本类型。常用编码对照如下:
| 编码 | 类型描述(英文) | 中文说明 | 建议标签 |
|---|
| 01 | Primary Solid Tumor | 原发性实体瘤组织 | 肿瘤(1) |
| 02 | Recurrent Solid Tumor | 复发性实体瘤 | 肿瘤(1) |
| 03 | Primary Blood Derived Cancer – Peripheral Blood | 血源性肿瘤 | 肿瘤(1) |
| 05 | Additional – New Primary | 新的原发肿瘤 | 肿瘤(1) |
| 06 | Metastatic | 转移性肿瘤组织 | 肿瘤(1) |
| 07 | Additional Metastatic | 附加转移瘤样本 | 肿瘤(1) |
| 08 | Human Tumor Original Cells | 原发肿瘤培养细胞 | 肿瘤(1) |
| 09 | Primary Blood Derived Cancer – Bone Marrow | 骨髓来源的肿瘤 | 肿瘤(1) |
| 10 | Blood Derived Normal | 正常血样 | 正常(0) |
| 11 | Solid Tissue Normal | 正常实性组织 | 正常(0) |
| 12 | Buccal Cell Normal | 口腔细胞 | 正常(0) |
| 13 | EBV Immortalized Normal | EB 病毒永生化细胞 | 正常(0) |
| 14 | Bone Marrow Normal | 正常骨髓 | 正常(0) |
| 20 | Control Analyte | 对照分析物(非组织) | 对照组 |
| 40 | Recurrent Blood Derived Cancer – Bone Marrow | 复发性血癌 | 肿瘤(1) |
| 50 | Cell Lines | 细胞系样本 | 可忽略或自定义 |
文件名结构解析
以文件名 TCGA-D5-6932-01Z-00-DX1.d18111de-f0f5-4637-8534-a2b4396cbb41.svs 为例:
| 位置 | 字段 | 含义 | 示例 |
|---|
| 1 | TCGA | 项目名称 | TCGA |
| 2 | D5 | 组织来源编码 | D5 |
| 3 | 6932 | 患者编号 | 6932 |
| 4 | 01 | 样本类型 | 01 = Primary Solid Tumor |
| 5 | Z | 管编号 | Z |
| 6 | 00 | 样本份编号 | 00 |
| 7 | DX1 | Slide 编号 | DX1 |
✅ 根据样本类型 01 可判断这是肿瘤样本,即 label = 1
d18111de-f0f5-4637-8534-a2b4396cbb41
这是该切片文件的唯一标识符,用于在 GDC 系统中索引元数据、临床信息等。
获取'生存预测信息'
除了图像数据,训练生存预测模型还需要患者的临床随访信息。
筛选 clinical 类型
在 GDC Portal 中,将 Data Category 选择为 clinical,然后下载对应的临床数据。
重点提取 days_to_death 和 vital_status 字段。
文件结构与说明
下载后的临床数据通常以 XML 格式存储。目录结构大致如下:
find /disk4/lxq_data/dataset/WSI/TCGA/clinical/00b9eb65-04c6-4d62-9cf6-6b77d75ab79b |sed's|[^/]*/│ |g;s|│ \([^│]\)|├── \1|'
cf6-6b77d75ab79b/
├── nationwidechildrens.org_clinical.TCGA-DM-A285.xml
├── annotations.txt
└── logs/
└── nationwidechildrens.org_clinical.TCGA-DM-A285.xml.parcel
| 文件/文件夹名 | 类型 | 说明 |
|---|
nationwidechildrens.org_clinical.TCGA-DM-A285.xml | XML 文件 | 患者的临床数据文件(诊断、治疗、随访等) |
annotations.txt | 文本文件 | 人工或程序生成的注释 |
logs/ | 文件夹 | 存放下载日志或 parcel 包信息 |
通过解析这些 XML 文件,我们可以获取诊断时间、肿瘤分期、生存状态与随访时间等关键指标。
从 xml 中提取关键信息
下面是一个简单的 Python 脚本,用于遍历 XML 文件并提取生存相关信息,保存到 Excel 中。
import os
import re
from openpyxl import Workbook
directory = '/disk4/lxq_data/dataset/TCGA/clinical'
wb = Workbook()
ws = wb.active
ws.title = "XML Data"
ws.append(["File", "Match Number", "Vital Status", "Days to Last Followup", "Days to Death"])
for root, dirs, files in os.walk(directory):
for file in files:
if file.endswith('.xml'):
xml_path = os.path.join(root, file)
with open(xml_path, 'r', encoding='utf-8') as f:
xml_content = f.read()
vital_status_matches = re.findall(r'<clin_shared:vital_status[^>]*>(.*?)</clin_shared:vital_status>', xml_content)
days_to_last_followup_matches = re.findall(r'<clin_shared:days_to_last_followup[^>]*>(.*?)</clin_shared:days_to_last_followup>', xml_content)
days_to_death_matches = re.findall(r'<clin_shared:days_to_death[^>]*>(.*?)</clin_shared:days_to_death>', xml_content)
max_matches = max(len(vital_status_matches), len(days_to_last_followup_matches), len(days_to_death_matches))
for i in range(max_matches):
vital_status = vital_status_matches[i] if i < len(vital_status_matches) else "Not Found"
days_to_last_followup = days_to_last_followup_matches[i] if i < len(days_to_last_followup_matches) else "Not Found"
days_to_death = days_to_death_matches[i] if i < len(days_to_death_matches) else "Not Found"
ws.append([xml_path, i + 1, vital_status, days_to_last_followup, days_to_death])
output_path = '/disk4/lxq_data/dataset/TCGA/extracted_data.xlsx'
wb.save(output_path)
print(f"Data has been saved to {output_path}")
相关免费在线工具
- 加密/解密文本
使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
- RSA密钥对生成器
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
- Mermaid 预览与可视化编辑
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
- 随机西班牙地址生成器
随机生成西班牙地址(支持马德里、加泰罗尼亚、安达卢西亚、瓦伦西亚筛选),支持数量快捷选择、显示全部与下载。 在线工具,随机西班牙地址生成器在线工具,online
- Gemini 图片去水印
基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online
- curl 转代码
解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online