乐于分享
好东西不私藏

德国癌症研究相关数据库 — 数据下载方式与 Python/R 实操指南

德国癌症研究相关数据库 — 数据下载方式与 Python/R 实操指南

随着生物信息学与计算肿瘤学的发展,获取高质量、标准化的多组学数据是模型训练和机制研究的前提。针对德国癌症研究场景,本文梳理了五大核心数据资源,覆盖从宏观 Bulk 测序到微观单细胞功能状态,从开放下载到受限审批的各级数据获取方案,并提供完整的 R/Python 双语实操代码。
***
一、直接开放下载的数据库(零审批门槛)
此类数据库允许直接通过网络或代码获取标准化矩阵,是模型训练的首选基石。
1. CancerSEA:肿瘤单细胞功能状态图谱
作为首个专用于解码癌症单细胞功能状态的数据库,CancerSEA 由哈尔滨医科大学肖云教授团队开发,收录了 25 种癌症的 41,900 个单细胞功能注释信息,涵盖干性、侵袭、转移、EMT 等 14 种功能表型,关联了 18,895 条蛋白编码基因和 15,571 条非编码 lncRNA。对于研究肿瘤细胞内高度异质的功能状态(如静息、缺氧、DNA 损伤等)具有不可替代的价值。
下载方式:网页直接下载 CSV/TXT 表达与功能状态配置文件,暂无官方 API,但可通过公开 URL 使用 “requests” 抓取。
R 实操示例
# 直接从公开链接获取单细胞表达矩阵与细胞类型注释
download.file(“http://biocc.hrbmu.edu.cn/CancerState/download/CancerSea.txt”,
“cancersea_expression.txt”)
expr_matrix <- read.table(“cancersea_expression.txt”, header=TRUE, row.names=1, sep=”\t”)

anno_url <- “http://biocc.hrbmu.edu.cn/CancerState/download/cell_type.txt”
annotation <- read.table(anno_url, header=TRUE, sep=”\t”)
Python 实操示例
import requests
import pandas as pd

# 读取单细胞表达矩阵
url = “http://biocc.hrbmu.edu.cn/CancerState/download/CancerSea.txt”
df = pd.read_csv(url, sep=’\t’, index_col=0)
print(df.head())

# 获取细胞注释
anno_url = “http://biocc.hrbmu.edu.cn/CancerState/download/cell_type.txt”
annotation = pd.read_csv(anno_url, sep=’\t’)
«⚠️ 提示:官网链接可能随版本更新变动,建议先访问主页确认当前有效 URL。»
2. TCGA / ICGC:最完善的多组学程序化下载生态
TCGA(The Cancer Genome Atlas)是目前最全面的肿瘤多组学公开数据库,存储了 RNAseq、miRNAseq、DNA 甲基化、CNV、SNP 及临床信息等。其中,德国研究机构贡献了 PedBrain、POG、TARGET 等包含德国患者样本的项目。对于数据获取,官方推荐三种途径:
– TCGA Data Portal (GDC):官方原始数据源头,支持精准过滤。
– UCSC Xena:经过整理和标准化的矩阵,最适合新手与模型训练,无需复杂预处理。
– ICGC:国际多中心数据,适合交叉验证。
方案 A:UCSC Xena 极速方案(强烈推荐)
UCSC Xena 已将 TCGA 数据整理为统一格式(如 “log2(count+1)” 归一化),可直接用 URL 读取整块矩阵,免除了逐样本合并的繁琐步骤。
R 实操
url <- “https://ucsc@gdc.xenahubs.net/download/TCGA.allPrimaryTissues.matrix.xls”
expr <- read.delim(url, row.names = 1, check.names = FALSE)
dim(expr) # 约 20119 基因 × 10707 肿瘤样本
Python 实操
import pandas as pd

url = “https://ucsc@gdc.xenahubs.net/download/TCGA.allPrimaryTissues.matrix.xls”
df = pd.read_csv(url, sep=’\t’, index_col=0)
print(df.shape) # 约 20000 基因 × 10700+ 肿瘤样本
方案 B:GDC 官方 API 与 TCGAbiolinks(精准定制)
当需要严格根据疾病类型、数据类别(如仅下载 counts 或 FPKM-UQ)、或特定临床特征筛选样本时,必须通过 GDC 平台下载。
R —— TCGAbiolinks 包(最主流)
if (!requireNamespace(“BiocManager”)) install.packages(“BiocManager”)
BiocManager::install(“TCGAbiolinks”)
library(TCGAbiolinks)

# 1. 精准查询并下载乳腺癌表达矩阵
query <- GDCquery(project = “TCGA-BRCA”,
data.category = “Transcriptome Profiling”,
data.type = “Gene Expression Quantification”,
workflow.type = “STAR – Counts”)
GDCdownload(query)
brca_exp <- GDCprepare(query)
expr_matrix <- assay(brca_exp)
clin_data <- brca_exp@colData

# 2. 下载突变数据
mut_query <- GDCquery(project = “TCGA-BRCA”,
data.category = “Simplified Data”,
data.type = “Simple Nucleotide Polymorphism”)
GDCdownload(mut_query)
maf_data <- GDCprepare(mut_query)

# 3. 批量泛癌下载
tcga_projects <- c(“TCGA-LUAD”, “TCGA-LUSC”, “TCGA-HNSC”, “TCGA-STAD”)
all_expr <- lapply(tcga_projects, function(proj) {
q <- GDCquery(project = proj, data.category = “Transcriptome Profiling”,
data.type = “Gene Expression Quantification”, workflow.type = “STAR – Counts”)
mat <- assay(GDCprepare(q))
list(Project = proj, Expression = mat)
})
Python —— GDC API 原始请求或 Manifest 脚本
除了官方的 “gdc-client” 命令行工具,也可通过 Python 的 “requests” 直接 POST 请求 API,或使用基于 manifest 文件的批量下载脚本。
import requests
import json
import re
import sys
import pandas as pd

# 方法1:API 精准查询
def download_tcga_gdc_cases(project, data_type):
api_url = “https://api.gdc.cancer.gov/files”
payload = {
“filters”: {
“op”: “and”,
“content”: [
{“op”: “equals”, “content”: {“field”: “projects.project_id”, “value”: [project]}},
{“op”: “equals”, “content”: {“field”: “data_category”, “value”: [data_type]}}
]
},
“format”: “TSV”,
“fields”: “id,file_name,file_size,data_center”
}
resp = requests.post(api_url, json=payload)
# 解析并遍历下载…

# 方法2:Manifest 批量下载 (参考 python_TCGA.py)
data_endpt = “https://api.gdc.cancer.gov/data”
mainfest = pd.read_table(“gdc_manifest.txt”, sep=”\t”)
ids = list(mainfest[‘id’].values)
response = requests.post(data_endpt, data=json.dumps({“ids”: ids}),
headers={“Content-Type”: “application/json”})
# 解析响应头获取文件名并写入本地…
«💡 速度提示:相较于官方 “gdc-client”,直接使用 Python 脚本配合 Manifest 下载通常速度更快,且无明显报错。»
3. cBioPortal:突变与临床数据的可视化中枢
cBioPortal 整合了 TCGA 及诸多国际肿瘤队列,尤其擅长临床预后、突变排秩与通路可视化。它提供强大的 REST API,支持 R 和 Python 无缝调用。
R 实操示例
install.packages(“cbioportalR”)
library(cbioportalR)

search_studies(“ovarian”) # 查询研究
clinical <- get_clinical(“ovary_oncotarget_2014”) # 获取临床数据
mutations <- get_mutations(“ovary_oncotarget_2014”) # 获取突变数据
expression <- get_expression(“ovary_oncotarget_2014”, gene = “TP53”)
Python 实操示例
# pip install cbioportal-ts-api-client
from cbioportal_client import ClinicalClient

clinical_client = ClinicalClient()
studies = clinical_client.list_studies()
print(studies[:3])
***
二、需申请或受限访问的深度数据库
此类数据库包含极度敏感的个人信息或受控人类遗传资源,无法直接下载原始数据,需走严格的合规审批流程。
4. FDZ Gesundheit:德国医保结算大数据(仅限虚拟空间)
该库拥有约 7300 万法定医疗保险投保人的结算数据,是进行肿瘤流行病学、卫生经济学与真实世界研究的宝库。但受限于德国数据保护法,严禁任何原始数据离境出网。
访问流程:
1. 访问 https://fdz.dzhd.eu/ 注册研究人员账号。
2. 选择数据目录(如 DD0038),提交研究计划书与伦理声明。
3. 等待 4-8 周审核,获批后将获得 SSH 接入权限。
4. 所有分析必须在远程虚拟分析空间内完成,仅脱敏后的汇总结果可导出审查。
# 在远程虚拟空间内执行的 R 代码示例
library(srvyr)
# data <- read_sav(“/remote/data/directory/file.sav”)
# result <- data %>%
# group_by(diagnosis_code) %>%
# summarize(n = n(), mean_cost = weighted_mean(cost, weight = wf))
# write_csv(result, “/remote/output/result.csv”) # 提交给管理员审查
5. DKFZ 肿瘤生物库:深度多组学受控数据(via EGA)
德国癌症研究中心(DKFZ)的组织样本库产生的高深度多组学数据,通常汇入欧洲基因组表型档案(EGA)。需提交严格的研究目的审查方可获取。
下载流程:需在 ega-archive.org 注册并申请特定 Dataset 权限,获批后通过客户端加密下载。
R / Python 客户端下载
# R – egaDE 包
library(“egaDE”)
EGA.dataset.login(“DDASxxx”)
data <- ega.fetch.file(“EGAFxxxxx.raw.tar.gz”)
# Python – ega-download-client
import subprocess
subprocess.run([“pip”, “install”, “ega-download-client”])
subprocess.run([“ega-download-client”,
“–dataset_id”, “EGAD00001000000”,
“–file_id”, “EGAF00001000000”,
“–personal_certificate”, “cert.p12”,
“–output_directory”, “./ega_data”])
***
三、数据库全景对比总结
| 数据库 | 开放程度 | Python 推荐方案 | R 推荐方案 | 核心优势与应用场景 |
|—|—|—|—|—|
| CancerSEA | ✅ 直接下载 | “requests” + “pd.read_csv()” | “read.table()” | 单细胞水平 14 种功能表型异质性注释,机制挖掘利器 |
| TCGA (Xena) | ✅ 直接下载 | “pd.read_csv()” 直接读 URL | “read.delim()” 直接读 URL | 极简主义首选,已对齐归一化的大规模泛癌矩阵 |
| TCGA (GDC) | ✅ 直接下载 | “requests” post / “python_TCGA.py” | “TCGAbiolinks” | 精准控制变量,按临床/分子分型筛选原始 count 数据 |
| cBioPortal | ✅ API 支持 | “cbioportal-ts-api-client” | “cbioportalR” | 突变排秩、生存曲线一站式获取与可视化 |
| DKFZ (EGA) | ⚠️ 严格申请 | “ega-download-client” | “egaDE” | 德国本土极高深度多组学队列数据 |
| FDZ Gesundheit | ❌ 虚拟空间 | 不支持本地运行 | 远程 “srvyr” 流行病学分析 | 海量真实世界医保结算数据,仅输出统计结果 |
***
四、面向 AI 模型训练的最佳实践路径
若目标是构建大规模预测模型(如深度学习生存分析、跨癌种转移预测),强烈推荐以下低成本、零审批、纯代码的三段式融合路线,兼顾宏观群体特征与微观细胞状态:
1. 宏观底座特征:TCGA via UCSC Xena。一次性拉取逾万例泛癌样本的转录组/临床矩阵,构建模型的主干输入。
2. 关键突变与预后:cBioPortal。提取高频驱动基因突变状态及对应生存标签,作为强特征干预或分层依据。
3. 微观细胞状态:CancerSEA。提取目标基因与 14 种功能状态(如干性、侵袭、缺氧)的关联权重或基因集,作为模型先验知识或单细胞级别的微调特征。
***
五、必备核心依赖包一键安装
为确保代码顺利运行,请预先安装以下生态包。
R 环境
# Bioconductor 核心生信包
BiocManager::install(c(“TCGAbiolinks”, “RTCGA”, “cbioportalR”, “egaDE”))

# 可视化与生存分析
install.packages(c(“pheatmap”, “survival”, “survminer”, “ComplexHeatmap”))
Python 环境
# 基础数据处理与网络请求
pip install pandas matplotlib seaborn requests scikit-learn

# 数据库专用客户端
pip install xenapy cbioportal-ts-api-client

# 若需深度学习扩展
pip install torch torchvision pytorch-lightning