【Medical AI】TCGA病理全图(WSI)数据下载指南

【Medical AI】TCGA病理全图(WSI)数据下载指南

【start:250721】

文章目录

目标

从 GDC 官网下载结直肠癌相关的数据集:

  • TCGA-COAD(结肠癌)
  • TCGA-READ(直肠癌)

获取“病理全图WSI”

1. 进入官网

访问 GDC 官网:https://portal.gdc.cancer.gov


2. 创建 Cohort

进入 Project 页面

  • 点击页面上方导航栏中的 Projects
  • 搜索并选中 TCGA-COADTCGA-READ
项目选择

创建 Cohort

点击 “Create New Cohort”,命名为 Colorectal

创建cohort

3. 筛选并下载图像数据

进入 Repository 页面

进入Repository

筛选 Diagnostic Slide 类型

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


选择svs格式

添加到购物车并导出 Manifest

点击 “Add All Files to Cart” 后,点击购物车图标,导出 Manifest 文件:

导出Manifest


保存Manifest

4. 安装 GDC Data Transfer Tool

GDC 官方提供高性能数据下载工具:

官网地址

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

下载

Windows版下载(zip压缩包)

Ubuntu版下载(zip压缩包)

安装路径建议

将解压后的工具放置到:

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

主程序路径为:

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

5. 下载数据集

下载命令示例

window版本
# 切换至数据保存目录cd G:\TCGA G: # 执行下载命令 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 

下载过程示意

100% [####################################################################################] Time: 0:01:58 10.7 MiB/s... 

下载完成效果

所有数据将保存在你设定的目录中:

下载结果

6. 数据展示

图片展示的代码

读取并可视化 .svs 病理切片缩略图

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 inenumerate(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 Codes


TCGA 使用两位数字(01~99)表示样本的样本类型(Sample Type)和组织来源。常用的编码如下:

编码类型描述(英文)中文说明建议标签
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 

这部分是标准的 TCGA 编码,按照官方命名规则分段如下:

位置字段含义示例
1TCGA项目名称TCGA
2D5组织来源编码(Tissue Source Site)D5
36932患者编号(Participant ID)6932
401样本类型(Sample Type)01 = Primary Solid Tumor(原发性实体肿瘤)
5Z管编号(Vial)Z
600样本份编号(Portion)00
7DX1Slide(病理切片编号)DX1
✅ 根据样本类型(Sample Type) 01 可判断这是肿瘤样本,即 label = 1

第二部分(UUID 后缀)

d18111de-f0f5-4637-8534-a2b4396cbb41 

这是该切片文件的唯一标识符 UUID,通常用于索引或查询该切片在 GDC 文件系统中的原始记录(如 metadata、clinical、biospecimen 等信息)。

以下是润色后的版本:

获取“生存预测信息”

筛选clinical类型

  • Data Category 选择 clinical
在这里插入图片描述

下载 TCGA Clinical Data,并提取 days_to_deathvital_status 字段

文件结构与说明

打印树状结构:

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 文件TCGA-DM-A285 患者的临床数据文件(包括诊断、治疗、随访等信息)
annotations.txt文本文件可能包含人工或程序生成的注释(具体内容视情况而定)
logs/文件夹存放相关日志或下载的元信息
logs/nationwidechildrens.org_clinical.TCGA-DM-A285.xml.parcelParcel 文件gdc-client 下载过程中生成的 parcel 包信息,用于校验和恢复下载等操作

通过获取 TCGA-DM-A285 这个病例的完整临床数据文件,我们可以提取以下关键信息:

  • 诊断时间
  • 肿瘤分期/分级
  • 生存状态与随访时间(可作为生存预测标签)
  • 治疗方案

这些数据对于生存预测模型的训练至关重要,可以用来分析患者的生存状态、疾病进展情况,并指导后续的临床决策。

从xml中提取关键信息

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):forfilein files:iffile.endswith('.xml'):# 只处理 XML 文件 xml_path = os.path.join(root,file)# 读取 XML 文件作为普通文本withopen(xml_path,'r', encoding='utf-8')asfile: xml_content =file.read()# 使用正则表达式查找所有 <clin_shared:vital_status> 元素 vital_status_matches = re.findall(r'<clin_shared:vital_status[^>]*>(.*?)</clin_shared:vital_status>', xml_content)# 使用正则表达式查找所有 <clin_shared: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)# 使用正则表达式查找所有 <clin_shared: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 inrange(max_matches):# 获取每个标签的值,如果没有匹配项则使用 "Not Found" 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])# i+1 是编号从 1 开始# 保存 Excel 文件 output_path ='/disk4/lxq_data/dataset/TCGA/extracted_data.xlsx' wb.save(output_path)print(f"Data has been saved to {output_path}")

部分结果如下:

在这里插入图片描述

Read more

Flutter 组件 spry 适配鸿蒙 HarmonyOS 实战:轻量化 Web 框架,构建高性能端侧微服务与 Middleware 治理架构

Flutter 组件 spry 适配鸿蒙 HarmonyOS 实战:轻量化 Web 框架,构建高性能端侧微服务与 Middleware 治理架构

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net Flutter 组件 spry 适配鸿蒙 HarmonyOS 实战:轻量化 Web 框架,构建高性能端侧微服务与 Middleware 治理架构 前言 在鸿蒙(OpenHarmony)生态迈向全场景分布式协同、涉及设备端侧 API 暴露、轻量化资源服务镜像及严苛的跨端 RPC 通信背景下,如何实现一套既能保持极低内存足迹(Footprint)、又能提供类似后端(Node.js/Koa)般丝滑开发体验且具备全异步处理能力的“端侧 Web 基座”,已成为决定应用分布式自治能力与全栈同构效率的关键。在鸿蒙设备这类强调 AOT 极致效能与背景任务严格限制的环境下,如果应用依然采用重量级的 HTTP 服务端,由于由于进程级的上下文切换开销,极易由于由于“算力溢出”导致鸿蒙应用在作为服务端响应时发生明显的电量损耗。 我们需要一种能够解耦路由逻辑、支持

Web 可访问性最佳实践:构建人人可用的前端界面

Web 可访问性最佳实践:构建人人可用的前端界面 代码如诗,包容如画。让我们用可访问性的理念,构建出人人都能使用的前端界面。 什么是 Web 可访问性? Web 可访问性(Web Accessibility)是指网站、工具和技术能够被所有人使用,包括那些有 disabilities 的人。这意味着无论用户的能力如何,他们都应该能够感知、理解、导航和与 Web 内容交互。 为什么 Web 可访问性很重要? 1. 法律要求:许多国家和地区都有法律法规要求网站必须具有可访问性。 2. 扩大用户群体:约 15% 的世界人口生活有某种形式的 disability,可访问性可以让更多人使用你的网站。 3. SEO 优化:搜索引擎爬虫依赖于可访问性良好的网站结构。 4. 更好的用户体验:可访问性改进通常会使所有用户受益,而不仅仅是那些有 disabilities 的用户。 5. 社会责任:

用Java飞算AI打造磁盘大文件搜寻助手,轻松解决C盘爆满难题

用Java飞算AI打造磁盘大文件搜寻助手,轻松解决C盘爆满难题

文章目录 * 一、前言 * 二、Java飞算AI开发体验 * 第一步:安装Java飞算插件 * 第二步:智能需求分析 * 第三步:智能接口设计 * 第四步:处理逻辑设计 * 第五步:一键生成源码 * 三、实战效果展示 * 发现问题的根源 * 清理前后对比 * 优化用户体验 * 深度清理成果 * 四、总结与感悟 一、前言 相信很多朋友都遇到过这样的困扰:C盘突然爆红,系统运行缓慢,却不知道到底是哪些文件在"偷偷"占用宝贵的磁盘空间。市面上的清理软件要么功能有限,要么需要开通会员才能查看大文件详情,着实让人头疼。 最近我在使用Java飞算插件开发MES系统时,深深被其强大的AI代码生成能力所震撼。今天,我决定用Java飞算来解决这个磁盘空间的老大难问题——开发一个磁盘大文件搜寻助手。 项目目标:基于Java 8开发一款轻量级工具,能够快速扫描指定磁盘或目录下的所有文件,按文件大小降序排列,并通过REST API提供查询功能,帮助用户精准定位大文件,高效分析磁盘空间占用情况。

从 XMLHttpRequest 到 Fetch API:现代前端网络请求的演进与迁移指南

从 XMLHttpRequest 到 Fetch API:现代前端网络请求的演进与迁移指南

🧑 博主简介:ZEEKLOG博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/?__c=1000,移动端可关注公众号 “ 心海云图 ” 微信小程序搜索“历代文学”)总架构师,16年工作经验,精通Java编程,高并发设计,分布式系统架构设计,Springboot和微服务,熟悉Linux,ESXI虚拟化以及云原生Docker和K8s,热衷于探索科技的边界,并将理论知识转化为实际应用。保持对新技术的好奇心,乐于分享所学,希望通过我的实践经历和见解,启发他人的创新思维。在这里,我希望能与志同道合的朋友交流探讨,共同进步,一起在技术的世界里不断学习成长。 🤝商务合作:请搜索或扫码关注微信公众号 “ 心海云图 ” 从 XMLHttpRequest 到 Fetch API:现代前端网络请求的演进与迁移指南 引言:为什么我们需要新的网络请求方案? 在前端开发领域,XMLHttpRequest (XHR) 长期统治着浏览器端的网络请求。然而,随着 Web