You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python从GEO、TCGA等数据库提取乳腺癌基因组数据?

从TCGA、GEO提取乳腺癌基因组数据的Python实操指南

一、TCGA数据提取(用tcga-biolinks库)

tcga-biolinks是TCGA官方推荐的Python工具,适合新手快速获取标准化数据。

  1. 安装依赖库
pip install tcga-biolinks pandas numpy
  1. 核心代码示例(提取乳腺癌RNA-seq及转移相关样本)
import tcga_biolinks as tb
import pandas as pd

# 构建查询:指定乳腺癌项目ID、RNA-seq数据类型
query = tb.query_gdc(
    project_id="TCGA-BRCA",
    data_type="Gene Expression Quantification",
    experimental_strategy="RNA-Seq",
    workflow_type="STAR - Counts"
)

# 下载数据到本地目录
tb.download(query, directory="./tcga_brca_data")

# 读取并整理原始计数矩阵
counts_df = tb.prepare_expression_matrix("./tcga_brca_data", "raw")

# 拉取临床数据,筛选转移样本(M1表示有远处转移)
clinical_data = tb.get_clinical("TCGA-BRCA")
metastatic_sample_ids = clinical_data[clinical_data["ajcc_pathologic_m"] == "M1"]["submitter_id"]
metastatic_counts = counts_df[counts_df.columns.isin(metastatic_sample_ids)]

# 保存筛选后的结果
metastatic_counts.to_csv("./tcga_brca_metastatic_counts.csv")

二、GEO数据提取(用GEOquery库)

GEOquery可直接拉取GEO公开数据集,适合获取特定研究的乳腺癌样本数据。

  1. 安装依赖库
pip install GEOquery pandas
  1. 核心代码示例(以含转移样本的GSE20685为例)
from GEOquery import getGEO
import pandas as pd

# 获取目标GEO数据集(替换为你需要的数据集ID)
gse = getGEO("GSE20685", destdir="./geo_data")

# 提取基因表达矩阵
expr_matrix = gse[0].table

# 提取样本信息,筛选转移相关样本
sample_info = gse[0].phenotype_data
metastatic_sample_names = sample_info[sample_info["characteristics_ch1.2"].str.contains("metastatic")]["title"]
metastatic_expr = expr_matrix[expr_matrix.columns.isin(metastatic_sample_names)]

# 保存结果
metastatic_expr.to_csv("./geo_gse20685_metastatic_expr.csv")

新手实操提示

  • 建议用conda创建独立环境避免依赖冲突:conda create -n bioinfo python=3.9,激活后再安装库
  • 首次下载数据耗时较长,尽量在稳定网络环境下操作
  • 若需筛选特定转移相关基因,可在提取矩阵后用counts_df.loc[target_gene_list, :]实现
  • TCGA临床数据中ajcc_pathologic_m字段是转移状态标记,GEO样本的转移信息需根据对应数据集的phenotype字段自行匹配

内容的提问来源于stack exchange,提问作者JackCacti

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 19:12:20