生信技能树——GEO芯片数据的合并

GSE83521和GSE89143数据合并

1.下载数据

rm(list = ls())
library(GEOquery)
library(stringr)
gse = "GSE83521"
eSet1 <- getGEO("GSE83521", 
                destdir = '.', 
                getGPL = F)
eSet2 <- getGEO("GSE89143", 
                destdir = '.', 
                getGPL = F)
#(1)提取表达矩阵exp
exp1 <- exprs(eSet1[[1]])
exp1[1:4,1:4]
exp2 <- exprs(eSet2[[1]])
exp2[1:4,1:4]
exp2 = log2(exp2+1)
table(rownames(exp1) %in% rownames(exp2))
length(intersect(rownames(exp1),rownames(exp2)))
exp1 <- exp1[intersect(rownames(exp1),rownames(exp2)),]
exp2 <- exp2[intersect(rownames(exp1),rownames(exp2)),]
boxplot(exp1)
boxplot(exp2)

#(2)提取临床信息
pd1 <- pData(eSet1[[1]])
pd2 <- pData(eSet2[[1]])
if(!identical(rownames(pd1),colnames(exp1))) exp1 = exp1[,match(rownames(pd1),colnames(exp1))]
if(!identical(rownames(pd2),colnames(exp2))) exp2 = exp2[,match(rownames(pd2),colnames(exp2))]

#(3)提取芯片平台编号
gpl <- eSet2[[1]]@annotation

#(4)合并表达矩阵
# exp2的第三个样本有些异常,可以去掉或者用normalizeBetweenArrays标准化,把它拉回正常水平。

exp2 = exp2[,-3]

exp = cbind(exp1,exp2)
boxplot(exp)
Group1 = ifelse(str_detect(pd1$title,"Tumour"),"Tumour","Normal")
Group2 = ifelse(str_detect(pd2$source_name_ch1,"Paracancerous"),"Normal","Tumour")[-3]

Group = c(Group1,Group2)
table(Group)
Group = factor(Group,levels = c("Normal","Tumour"))
save(gse,Group,exp,gpl,file = "exp.Rdata")

两个数据集样本的情况
在这里插入图片描述
合并后的数据
在这里插入图片描述

2.针对不同数据集数据的差异,需要处理批次效应

2.1 使用limma包里的removeBatchEffect()函数

rm(list = ls())
load("exp.Rdata")
#处理批次效应
library(limma)
#?removeBatchEffect()
batch <- c(rep("A",12),rep("B",5))
exp2 <- removeBatchEffect(exp, batch)
par(mfrow=c(1,2))  # 展示的图片为一行两列
boxplot(as.data.frame(exp),main="Original")
boxplot(as.data.frame(exp2),main="Batch corrected")

在这里插入图片描述

2.2 使用sva包中的combat() 函数

rm(list = ls())
load("exp.Rdata")
#处理批次效应(combat)
library(sva)
#?ComBat

batch <- c(rep("A",12),rep("B",5))
mod = model.matrix(~Group)
exp2 = ComBat(dat=exp, batch=batch, 
              mod=mod, par.prior=TRUE, ref.batch="A")
par(mfrow=c(1,2))
boxplot(as.data.frame(exp),main="Original")
boxplot(as.data.frame(exp2),main="Batch corrected")

在这里插入图片描述

  • 9
    点赞
  • 101
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
GEO(Gene Expression Omnibus)是一个公共数据库,存储了各种物种的表达谱数据和相关信息。在生物信息学中,通过研究GEO数据可以识别基因表达模式和相关通路,从而对疾病发生机制进行研究。而合并代码是指将来自GEO的多个数据集合并起来进行进一步分析和比较。 生信自学网提供了合并GEO数据集的代码示例,这个代码主要基于R语言中的Bioconductor包。首先,需要导入所需的R包,如GEOquery和limma等,这些包可以通过install.packages()函数进行安装。 接下来,通过GEOquery包中的getGEO()函数读取GEO数据集。可以通过在函数中指定GEO编号或GEO查询词,来获取GEO数据集的信息。然后,使用exprs()函数提取数据集的表达矩阵。 接下来就是数据的处理和整合。如果从GEO获取的数据集有多个,需要进行合并。可以使用cbind()函数将不同数据集的表达矩阵按列合并,或使用rbind()函数按行合并合并后的数据集可以进行进一步的数据预处理,如去除低表达的基因和对数据进行标准化等。 最后,可以使用rankProd包和limma包等进行差异分析和富集分析等进一步的生物信息学分析。这些分析可以帮助我们发现不同基因表达的模式,从而进一步研究相关通路和疾病机制。 通过生信自学网提供的GEO合并代码示例,我们可以方便地将来自GEO数据集进行合并和分析,从而深入研究基因表达的模式和生物学机制。这对于疾病的研究以及药物研发等方面具有重要的意义。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值