geo数据集 下载后 获得表达基因和描述,,提取所有样本的临床表型信息,想知道 样本信息 和描述

下面给出一份“从 GEO 下载数据 → 拿到表达矩阵 → 提取所有样本的临床表型信息 → 看懂样本描述字段”的完整思路与实操代码。
所有步骤均以 R 语言 + GEOquery 包完成,适用于芯片或 RNA-seq 的 Series 矩阵文件(GSE***_series_matrix.txt.gz)。如你下载的是 MINiML(GSE***_family.xml)或原始 RAW.tar,只需把文件名换成对应路径即可,提取临床信息的函数不变。


  1. 安装并加载必备包

if (!requireNamespace("GEOquery", quietly = TRUE))
    BiocManager::install("GEOquery")
library(GEOquery)
library(tidyverse)   # 方便洗数据

  1. 把数据“一键”下载到本地(含表达矩阵 + 样本信息)

gse_id <- "GSE61763"               # 换成你自己的编号
dir.create(gse_id, showWarnings = FALSE)
getGEO(gse_id, destdir = gse_id, GSEMatrix = TRUE, AnnotGPL = FALSE)

下载完成后,你会在 GSE61763/ 里看到至少 2 个关键文件:

  • GSE61763_series_matrix.txt.gz ← 表达矩阵 + 样本表型
  • GSE61763_family.xml ← 更完整的 MINiML 注释(可选)

  1. 读入对象并快速查看结构

gset <- getGEO(filename = file.path(gse_id, paste0(gse_id, "_series_matrix.txt.gz")),
               GSEMatrix = TRUE, AnnotGPL = FALSE)[[1]]
# gset 是一个 ExpressionSet 对象
# 表达矩阵:exprs(gset)
# 样本信息:pData(gset)

  1. 提取“临床表型信息”——其实就是样本信息表

sampleInfo <- pData(gset) %>% as_tibble(rownames = "gsm_id")
View(sampleInfo)

sampleInfo 里每一行是一个 GSM 样本,每一列是作者提交时填写的“描述字段”。
常见字段(不同 GSE 略有差异):

列名示例含义
title样本一句话标题
source_name_ch1组织 / 细胞来源
characteristics_ch1.*多次追加的临床特征,如年龄、性别、分期、吸烟史…
treatment_ch1 / treatment_protocol_ch1处理/药物信息
extract_protocol_ch1RNA 提取方法
data_processing标准化方法
description自由文本,最详细的“样本描述”

  1. 只保留“有用”的临床字段并重命名

keep_cols <- c("gsm_id",
               "source_name_ch1",
               grep("^characteristics_ch1", names(sampleInfo), value = TRUE),
               "description")

cli <- sampleInfo %>% 
       select(all_of(intersect(keep_cols, names(sampleInfo)))) %>% 
       rename_with(~ str_replace(., "characteristics_ch1\\.", "")) %>% 
       rename(group = source_name_ch1)        # 把分组字段改个易记的名字

现在 cli 就是“所有样本的临床表型信息”整洁表。


  1. 把表达矩阵和临床表型“对齐”

exp <- as.data.frame(exprs(gset))   # 行是探针/基因,列是 GSM
exp <- exp %>% select(all_of(cli$gsm_id))  # 保证列顺序与临床表一致

至此,你手里就有:

  • exp —— 表达矩阵
  • cli —— 每个样本的临床/表型/描述信息

  1. 看不懂字段?去网页“批量翻译”

  1. 打开 https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GSE61763
  2. 页面最下方 “Supplementary file” 下方有个 Sample table 链接,点进去即可看到所有 GSM 的原始填写内容,比 R 里更直观。
  3. 若仍缺失关键临床信息(如 TNM 分期、生存时间),可回到该 GSE 的 Publication 栏,下原文 PDF 的 Supplementary Table,通常会把详细临床单独列一张 Excel。

  1. 常见问题 & 解决

  • 下不到表达矩阵?
    有些 RNA-seq 数据只给 counts / RAW.tar → 用 getGEOSuppFiles(gse_id) 取原始 counts,或去 SRA 跑 fastq 上游。
  • 样本信息太乱?
    stringr::str_extract / case_when 做规则清洗,把“male 43 years”拆成 sex=“male”, age=43。
  • 多平台混用?
    一个 GSE 含 GPL570、GPL96 等多个芯片 → 先用 Meta(gset)$platform_id 看平台,再分别 getGEO("GPL570", …) 取注释,把探针转成 gene symbol 后再合并。

一句话总结
GEOquery::getGEO() 把 GSE 读成 ExpressionSet 后,pData() 就是“所有样本的临床表型信息”;descriptioncharacteristics_ch1.* 等字段即样本描述;清洗后与你的表达矩阵 exprs() 按 GSM ID 对齐即可开展下游差异分析或 WGCNA。

祝分析顺利!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值