前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >花了10多万的队列就只为了这一张图吗?

花了10多万的队列就只为了这一张图吗?

作者头像
生信技能树
发布2024-12-27 19:56:59
发布2024-12-27 19:56:59
7900
代码可运行
举报
文章被收录于专栏:生信技能树生信技能树
运行总次数:0
代码可运行

前面已经给出了3个GEO芯片数据挖掘分析点,详见:

现在继续完成老板分配的任务,《100个GEO芯片数据分析》,真的是信息量很大啊。又遇到了一个有意思的芯片数据,数据如下:

https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GSE44861,

作者一下子做了111个样本的芯片测序,那可是在2013年提交进GEO的,说明芯片测序可能在更早的时候,那个时候单个表达量芯片样品起码得两三千块钱人民币,这个队列保守估计仅仅是芯片费用十几万了。

样本表型包括:111 colon tissues from tumors and adjacent noncancerous tissues

然后按照芯片的标准分析,如下:

首先是获取样本分组:
代码语言:javascript
代码运行次数:0
运行
复制
## 魔幻操作,一键清空~
rm(list = ls())
library(AnnoProbe)
library(GEOquery)
library(ggplot2)
library(ggstatsplot)
library(patchwork)
library(reshape2)
library(stringr)
library(limma)
library(tidyverse)
getOption('timeout')
options(timeout=10000)

## 获取并且检查表达量矩阵
## ~~~gse编号需修改~~~
gse_number <- "GSE44861"
dir.create(gse_number)
setwd(gse_number)
getwd()
list.files() 

#gset <- geoChina(gse_number)
gset <- getGEO(gse_number, destdir = '.', getGPL = T)
gset[[1]]

#######
## 根据生物学背景及研究目的人为分组
## 通过查看说明书知道取对象a里的临床信息用pData
## 挑选一些感兴趣的临床表型。
a <- gset[[1]]
pd <- pData(a)
colnames(pd)
pd$title
pd$characteristics_ch1.3
table(pd$characteristics_ch1.3)
table(pd$`tissue:ch1`)
table(pd$`rs5995355 genotype:ch1`)
table(pd$`tissue:ch1`,pd$`rs5995355 genotype:ch1`)

## ~~~分组信息编号需修改~~~
group_list <- ifelse(grepl('N',pd$title ,ignore.case = T ), "normal","tumor")
group_list <- factor(group_list, levels = c("normal","tumor"))
table(group_list)

# normal  tumor 
#    55     56 

共有55个癌旁正常样本,56个肿瘤样本。(非常标准的实验设计,理论上癌症组织跟癌旁肯定是差异很大),前面我们就讨论过:

然后是提取芯片表达矩阵,探针id转换基因symbol:
代码语言:javascript
代码运行次数:0
运行
复制
#######################################################
a <- gset[[1]]
dat <- exprs(a) # a现在是一个对象,取a这个对象通过看说明书知道要用exprs这个函数
dim(dat)        # 看一下dat这个矩阵的维度
dat[1:4,1:4]    # 查看dat这个矩阵的1至4行和1至4列,逗号前为行,逗号后为列
range(dat)

## 查看注释平台gpl 获取芯片注释信息
a
gpl <- getGEO(filename="GPL3921.soft.gz")
class(gpl)
gpl_anno <- gpl@dataTable@table
colnames(gpl_anno)

id2name <- gpl_anno[,c("ID" ,"Gene Symbol")]
colnames(id2name) <- c("ID","GENE_SYMBOL")
# 1.过滤掉空的探针
id2name <- na.omit(id2name)
id2name <- id2name[which(id2name$GENE_SYMBOL!=""), ]
# 2.过滤探针一对多
id2name <- id2name[!grepl("\\///",id2name$GENE_SYMBOL), ]
head(id2name)

# 3.多对一取均值
# 合并探针ID 与基因,表达谱对应关系
# 提取表达矩阵
dat <- dat %>% 
  as.data.frame() %>% 
  rownames_to_column("ID")

exp <- merge(id2name, dat, by.x="ID", by.y="ID")

# 多对一取均值
exp <- avereps(exp[,-c(1,2)],ID = exp$GENE_SYMBOL) %>% 
  as.data.frame()

dat <- as.matrix(exp[,pd$geo_accession])
dim(dat)
fivenum(dat['CRP',])
fivenum(dat['GAPDH',])
dat[1:5, 1:6]
save(gse_number, dat, group_list, pd, file = 'step1_output.Rdata')
吭哧吭哧一顿出图:

经典三张图:PCA,sd top1000 基因热图、样本相关性热图

代码语言:javascript
代码运行次数:0
运行
复制
## 数据检查
load( file = 'step1_output.Rdata')
source('../scripts/run_check.R')
# ERα基因的symbol是ESR1
run_check(dat, group_list, target_gene='NCF4', pro=gse_number,path='./')

可以看到这个数据集的生物学分组不是很好,两个分组(癌症和癌旁)里面的病人样品在PCA图根本分不开呀!

接着我对肿瘤样本 vs 癌旁正常样本 做了差异分析:

代码语言:javascript
代码运行次数:0
运行
复制
## 人类看家基因列表如下(部分基因,最常用的是CRP和CRP)
# ERα基因的symbol是ESR1
source('../scripts/run_DEG.R')
group_list
deg <- run_DEG(dat, group_list, target_gene=c('NCF4'),pro=gse_number,path='./')
head(deg)
table(deg$g)

差异结果如下:

然后老板看完我的结果,进行了灵魂发问:

你这个分组有问题呀!你跟作者的文献中的结果对比了吗?作者做了什么分析吗?可以对的上吗?

我:我说作者没有没有做差异分析

老板:这么大的数据队列,作者为什么没有做差异分析呢?

我:愣在原地不知所措,哈哈哈哈哈哈哈哈哈。。。(其实我想反驳但是不敢发话

来看看,作者文献里面的结果分析(全部结果只有这一样简单的图):

灵魂发问:你说为什么呢?(毕竟这个数据花了差不多10万块呢!)

人工智能大模型告诉我为什么癌症和癌旁差异不明显

表达量芯片分析中,癌症组与癌旁组织组之间的差异不明显可能有几个原因:

  1. 生物学异质性:癌症样本之间可能存在很大的生物学差异,这取决于癌症的类型、阶段、亚型以及个体间的遗传差异。
  2. 样本污染:癌旁组织可能受到癌细胞的污染,或者癌症组织中仍然包含一些正常细胞,这可能会掩盖真实的差异。
  3. 技术变异:芯片实验过程中的技术变异可能掩盖了生物学上的差异。这可能包括样本处理、RNA提取、芯片杂交和扫描过程中的不一致性。
  4. 样本选择:选择的癌旁组织可能距离肿瘤较远,因此受肿瘤微环境的影响较小,导致差异不明显。
  5. 疾病进展:在某些情况下,肿瘤可能在早期阶段对周围组织的影响较小,或者肿瘤的生物学特性与周围组织相似,导致差异不显著。
  6. 基因表达调控:肿瘤可能通过非转录水平的调控(如翻译后修饰、miRNA调控等)来实现其生物学特性,这些在表达量芯片分析中可能无法检测到。
  7. 统计功效:如果样本量较小,可能没有足够的统计功效来检测到两组之间的差异。
  8. 数据标准化和归一化:数据预处理方法,如标准化和归一化,可能会影响差异表达基因的检测。
  9. 生物学噪声:生物学过程中的随机变异可能导致基因表达的波动,这可能会掩盖真实的差异。
  10. 疾病特异性:某些类型的癌症可能在转录水平上与正常组织的差异不大,或者它们的差异表达基因在芯片上未能被有效检测。

为了解决这些问题,可能需要采取以下措施:

  • 增加样本量以提高统计功效。
  • 确保样本的纯净性,避免污染。
  • 使用更敏感的技术,如RNA测序(RNA-seq)。
  • 对数据进行适当的预处理和归一化。
  • 考虑使用其他类型的生物标志物或分析方法。

最后,如果差异不明显,可能需要重新评估实验设计和假设,或者考虑其他可能的生物学机制。

学徒作业

找到类似的实验设计的公共数据集,同样的colon的癌症和癌旁表达量数据,做差异分析看看,是否在pca就能看到两分组的泾渭分明的分离。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-12-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 生信技能树 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 现在继续完成老板分配的任务,《100个GEO芯片数据分析》,真的是信息量很大啊。又遇到了一个有意思的芯片数据,数据如下:
  • 然后按照芯片的标准分析,如下:
    • 首先是获取样本分组:
    • 然后是提取芯片表达矩阵,探针id转换基因symbol:
    • 吭哧吭哧一顿出图:
  • 来看看,作者文献里面的结果分析(全部结果只有这一样简单的图):
  • 人工智能大模型告诉我为什么癌症和癌旁差异不明显
  • 学徒作业
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档