跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像AI 生图工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
PythonAI算法

TCGA 结直肠癌 WSI 数据下载与临床信息解析

TCGA 结直肠癌 WSI 数据下载与临床信息解析。演示了如何通过 GDC Portal 筛选并下载 TCGA-COAD 和 TCGA-READ 的病理全图切片,利用 gdc-client 工具完成批量获取。介绍了基于 openslide 库读取 SVS 缩略图的方法,以及解析文件名中的样本类型编码以区分肿瘤与正常组织。此外,还涵盖了从 XML 格式的临床数据中提取生存状态与随访时间的脚本实现,为医学 AI 模型训练提供完整的数据准备流程。

lzdxwyh发布于 2026/4/7更新于 2026/7/2140 浏览
TCGA 结直肠癌 WSI 数据下载与临床信息解析

目标

从 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。这样可以将两个项目的样本聚合在一起管理。

创建 cohort

3. 筛选并下载图像数据

进入 Repository 页面

在 Cohort 页面中,切换到 Repository 标签页查看可用文件。

进入 Repository

筛选 Diagnostic Slide 类型

我们需要的是病理切片,所以过滤条件如下:

  • Experimental Strategy 选择 Diagnostic Slide
  • Data Format 选择 .svs

选择 Slide 选择 svs 格式

添加到购物车并导出 Manifest

确认筛选结果无误后,点击 'Add All Files to Cart'。随后点击购物车图标,选择导出 Manifest 文件。这个 Manifest 文件包含了所有待下载文件的 ID 列表,是后续批量下载的关键。

导出 Manifest 保存 Manifest

4. 安装 GDC Data Transfer Tool

GDC 官方提供了高性能的数据传输工具 gdc-client,比浏览器直接下载更稳定且支持断点续传。

官网地址

https://gdc.cancer.gov/access-data/gdc-data-transfer-tool

下载与安装

根据操作系统选择对应的版本:

  • Windows: Windows 版 (zip)
  • Ubuntu: Ubuntu 版 (zip)

建议将解压后的工具放置在非系统盘路径下,例如:

F:\CS2\GDC_Data\gdc-client_2.3_Windows_x64\

主程序即为 gdc-client.exe。

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 文件路径
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"

# 打开 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()

运行后可以看到清晰的病理切片预览图。

SVS 缩略图预览

7. 标签解析

文件名中的编码包含关键信息,特别是样本类型(Sample Type),这决定了它是肿瘤组织还是正常组织。

编码规则

参考官方文档:Sample Type Codes

TCGA 使用两位数字表示样本类型。常用编码对照如下:

编码类型描述(英文)中文说明建议标签
01Primary Solid Tumor原发性实体瘤组织肿瘤(1)
02Recurrent Solid Tumor复发性实体瘤肿瘤(1)
03Primary Blood Derived Cancer – Peripheral Blood血源性肿瘤肿瘤(1)
05Additional – New Primary新的原发肿瘤肿瘤(1)
06Metastatic转移性肿瘤组织肿瘤(1)
07Additional Metastatic附加转移瘤样本肿瘤(1)
08Human Tumor Original Cells原发肿瘤培养细胞肿瘤(1)
09Primary Blood Derived Cancer – Bone Marrow骨髓来源的肿瘤肿瘤(1)
10Blood Derived Normal正常血样正常(0)
11Solid Tissue Normal正常实性组织正常(0)
12Buccal Cell Normal口腔细胞正常(0)
13EBV Immortalized NormalEB 病毒永生化细胞正常(0)
14Bone Marrow Normal正常骨髓正常(0)
20Control Analyte对照分析物(非组织)对照组
40Recurrent Blood Derived Cancer – Bone Marrow复发性血癌肿瘤(1)
50Cell Lines细胞系样本可忽略或自定义
文件名结构解析

以文件名 TCGA-D5-6932-01Z-00-DX1.d18111de-f0f5-4637-8534-a2b4396cbb41.svs 为例:

第一部分(前缀)

TCGA-D5-6932-01Z-00-DX1

分段含义如下:

位置字段含义示例
1TCGA项目名称TCGA
2D5组织来源编码D5
36932患者编号6932
401样本类型01 = Primary Solid Tumor
5Z管编号Z
600样本份编号00
7DX1Slide 编号DX1

✅ 根据样本类型 01 可判断这是肿瘤样本,即 label = 1

第二部分(UUID 后缀)

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.xmlXML 文件患者的临床数据文件(诊断、治疗、随访等)
annotations.txt文本文件人工或程序生成的注释
logs/文件夹存放下载日志或 parcel 包信息

通过解析这些 XML 文件,我们可以获取诊断时间、肿瘤分期、生存状态与随访时间等关键指标。

从 xml 中提取关键信息

下面是一个简单的 Python 脚本,用于遍历 XML 文件并提取生存相关信息,保存到 Excel 中。

import os
import re
from openpyxl import Workbook

# 定义要查找的目录
directory = '/disk4/lxq_data/dataset/TCGA/clinical'

# 创建 Excel 工作簿
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 文件
            xml_path = os.path.join(root, file)
            
            # 读取 XML 文件作为普通文本
            with open(xml_path, 'r', encoding='utf-8') as f:
                xml_content = f.read()
            
            # 使用正则表达式查找 vital_status 元素
            vital_status_matches = re.findall(r'<clin_shared:vital_status[^>]*>(.*?)</clin_shared:vital_status>', xml_content)
            
            # 查找 days_to_last_followup 元素
            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 元素
            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))
            
            # 为每个 XML 文件中的每个匹配项添加编号
            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"
                
                # 将数据添加到 Excel 表格中
                ws.append([xml_path, i + 1, vital_status, days_to_last_followup, days_to_death])

# 保存 Excel 文件
output_path = '/disk4/lxq_data/dataset/TCGA/extracted_data.xlsx'
wb.save(output_path)
print(f"Data has been saved to {output_path}")

部分提取结果如下:

在这里插入图片描述

目录

  1. 目标
  2. 获取“病理全图 WSI”
  3. 1. 进入官网
  4. 2. 创建 Cohort
  5. 进入 Project 页面
  6. 创建 Cohort
  7. 3. 筛选并下载图像数据
  8. 进入 Repository 页面
  9. 筛选 Diagnostic Slide 类型
  10. 添加到购物车并导出 Manifest
  11. 4. 安装 GDC Data Transfer Tool
  12. 官网地址
  13. 下载与安装
  14. 5. 下载数据集
  15. 下载命令示例
  16. Windows 版本
  17. 切换至数据保存目录
  18. 执行下载命令
  19. Ubuntu 版本
  20. 6. 数据展示
  21. 图片展示的代码
  22. 指定 SVS 文件路径
  23. 打开 SVS 文件
  24. 打印基本信息
  25. 读取缩略图(默认从最高层缩放)
  26. 显示缩略图
  27. 7. 标签解析
  28. 编码规则
  29. 文件名结构解析
  30. 获取“生存预测信息”
  31. 筛选 clinical 类型
  32. 文件结构与说明
  33. 从 xml 中提取关键信息
  34. 定义要查找的目录
  35. 创建 Excel 工作簿
  36. 遍历目录中的所有文件
  37. 保存 Excel 文件
  • 免费图片AI生成工具免费生成了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 免费图片视频在线生成30秒,将你的创意变成现实开始设计
  • X/Twitter免费视频下载器免登陆无限额度免费视频解析下载了解详情
  • 100+免费在线小游戏爽一把
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • GitHub Copilot 实战指南:提升 Python 开发效率的 AI 助手
  • 自然语言处理在社交媒体分析领域的应用与实战
  • 医疗大模型 LoRA 微调实战指南
  • Java 9 至 Java 25:核心演进与实战变革解析
  • C++ 类完全指南:从基础定义到访问控制实践
  • 基于 Windows 环境的 wnmp web 开发环境的研究与实践开题报告2
  • 生成式 AI 在软件开发全流程中的应用现状与协同挑战
  • 字节跳动前端面试回顾:一面到三面常见考点与高频题
  • LeetCode 92 区间反转:递归与哨兵节点解法
  • AI 驱动的在线考试系统设计与实现
  • PaperXie降重复|AIGC率中的英文Turnitin降AIGC:拯救被Turnitin标红的留学生论文
  • 设计一个支持万人并发抢购的秒杀系统架构方案
  • VR 音游音符轨道系统开发实录与原理解析
  • 手写一个通用的 Java 重试机制
  • Stable Diffusion 整合包部署及常用功能详解
  • AI 大模型:核心原理、架构演进与应用实践
  • OpenClaw 大龙虾机器人本地部署与配置指南
  • LangChain 适配 ChatGLM-Zhipu API v2 实践
  • 如何使用 Llama-Factory 快速微调 Qwen、Baichuan、ChatGLM
  • Shannon:基于白盒分析的 AI 自动化渗透测试平台

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如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