芯片数据差异分析案例GSE149507(小细胞肺癌)
芯片数据差异分析
#程序前准备
Sys.setenv(LANGUAGE = "en")
options(stringsAsFactors = FALSE)
rm(list=ls())
#调用R包
library(GEOquery)
library(dplyr)
library(tidyverse)
#下载并读取数据
gset = getGEO('GSE149507', destdir=".",getGPL =F)#F表示不下载探针文件
soft=getGEO(filename ="GSE149507_family.soft/GSE149507_family.soft")
gpl=soft@gpls[["GPL23270"]]@dataTable@table
gset=gset[[1]]
pdata=pData(gset)#获得临床信息
exprSet=exprs(gset)#获得表达矩阵
#把探针文件的ENTREZ_GENE_ID转换为GENE SYMBOL
library(org.Hs.eg.db)
keytypes(org.Hs.eg.db)#查看一下有哪些基因ID
x1=gpl$ENTREZ_GENE_ID
x1=as.character(x1)
x2=AnnotationDbi::select(org.Hs.eg.db, keys=x1, columns=c("ENTREZID", "SYMBOL"), keytype="ENTREZID")
gpl=gpl[,c(1,2)]
gpl$gene=x2$SYMBOL
#将平台文件和矩阵文件合并
exp=as.data.frame(exprSet)
exp.pl=merge(gpl,exp,by.x=1,by.y=0)
#将GENE SYMBOL变为行名
rownames(exp.pl)=exp.pl$gene#发现报错了,因为行名有重复
exp.pl.1=distinct(exp.pl,gene,.keep_all = T)#去除重复
rownames(exp.pl.1)=exp.pl.1$gene#发现报错了,因为有缺失值
exp.pl.2=na.omit(exp.pl.1)
rownames(exp.pl.2)=exp.pl.2$gene#转换成功
exp.pl.3=exp.pl.2[,-c(1:3)]#去除无用信息,得到基因表达矩阵
#查看临床分组信息
View(pdata)
a=c(1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35)
a2=a+1
exp.4=exp.pl.3[,c(a2,a)]#调整顺序,前18列全是normal,后面全是cancer
group_list=c(rep('control',18),rep('tumor',18))
group_list=factor(group_list)
group_list <- relevel(group_list, ref="control")#强制限定顺序
#构建差异分析的矩阵
design=model.matrix(~ group_list)
colnames(design) <- levels(group_list)
rownames(design) <- colnames(exp.4)
#limma包差异分析
library(limma)
fit=lmFit(exp.4,design)#构建线性拟合模型
fit=eBayes(fit)#eBayes()使用trend=TRUE对标准误差进行经验贝叶斯平滑,计算每个对比中每个基因的moderated t-statistic和log-odds。
allDiff=topTable(fit,coef=2,adjust='fdr',number=Inf)#topTable()给出一个最有可能在给定对比下差异表达的基因列表。
#topTable函数的coef参数,coef=2是指design的第2列,即tumour,即把tumour与normal进行对比
write.table(allDiff,file = "allDiff.txt",sep = "\t",col.names = NA)
#有配对信息的差异分析
pairinfo = factor(rep(1:18,2))
design=model.matrix(~ pairinfo+group_list)
fit=lmFit(exprSet,design)
fit=eBayes(fit)
allDiff_pair=topTable(fit,adjust='BH',coef="T",number=Inf,p.value=0.05)
##adjust="BH"表示对p值的校正方法,包括了:"none", "BH", "BY" and "holm"。

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐
所有评论(0)