下面是学徒写的《GEO数据挖掘课程》的配套笔记(第6篇)
在临床实践中,就需要HR阳性,HER2阴性乳腺癌的预后和预测模型,为了实现这些目的,基因检测,如OncotypeDx和PAM50, 已经被开发并在多个临床实验中得以验证
基于基因在癌症中的表达,乳腺癌可以分为5个固有的分子亚型
R 语言实现PAM50分类:genefu
load(file = 'step1-output.Rdata')
# 每次都要检测数据
dat[1:4,1:4]
dim(dat)
class(dat)
str(dat)
library(hgu133plus2.db)
ids=toTable(hgu133plus2SYMBOL)
head(ids)
dat=dat[ids$probe_id,]
dat[1:4,1:4]
ids$median=apply(dat,1,median)
ids=ids[order(ids$symbol,ids$median,decreasing = T),]
ids=ids[!duplicated(ids$symbol),]
dat=dat[ids$probe_id,]
rownames(dat)=ids$symbol
dat[1:4,1:4]
dim(dat)
dat['GAPDH',]
boxplot(dat[,1])
if(T){
ddata=t(dat) #首先要进行转置,列名为基因,行名为样本名
ddata[1:4,1:4]
s=colnames(ddata);head(s)
library(org.Hs.eg.db)
s2g=toTable(org.Hs.egSYMBOL)
g=s2g[match(s,s2g$symbol),1];head(g)
# probe Gene.symbol Gene.ID
dannot=data.frame(probe=s,
"Gene.Symbol" =s,
"EntrezGene.ID"=g) #将symbol转换成ENTREZID是下游分析必须的
ddata=ddata[,!is.na(dannot$EntrezGene.ID)]#去除列的NA值
dannot=dannot[!is.na(dannot$EntrezGene.ID),] #去除行的NA值
head(dannot)
library(genefu)
# c("scmgene", "scmod1", "scmod2","pam50", "ssp2006", "ssp2003", "intClust", "AIMS","claudinLow")
s<-molecular.subtyping(sbt.model = "pam50",data=ddata,
annot=dannot,do.mapping=TRUE) #挑选模型pam50
table(s$subtype) #这就是一个分组依据,和我们之前根据是否是TNBC分组一样
tmp=as.data.frame(s$subtype)
subtypes=as.character(s$subtype)
}
取出PAM50基因,根据这些基因的表达了绘制热图,并添加分组信息,与原始分组(TNBC,noTNBC)进行对比。
library(genefu)
pam50genes=pam50$centroids.map[c(1,3)]
#我们表达数据中的这三个基因名与PAM50中的基因名不一样,所以需要先进行转换
pam50genes[pam50genes$probe=='CDCA1',1]='NUF2'
pam50genes[pam50genes$probe=='KNTC2',1]='NDC80'
pam50genes[pam50genes$probe=='ORC6L',1]='ORC6'
x=dat
x=x[pam50genes$probe[pam50genes$probe %in% rownames(x)] ,] #判断pam50基因是否存在于我们的基因中,存在才取出对应的表达信息
table(group_list)
tmp=data.frame(group=group_list,
subtypes=subtypes) #制作分组信息,分组信息有两个,第一个是原始的分组信息,也就是是否是TNBC,第二个分组信息为PAM50给出的分组信息
rownames(tmp)=colnames(x)
library(pheatmap)
#原始表达数据
pheatmap(x,show_rownames = T,show_colnames = F,
annotation_col = tmp,fontsize = 5)
#表达值进行归一化,只对基因的表达值进行样本之间的比较,不考虑基因之间的差异
x=t(scale(t(x)))
x[x>1.6]=1.6
x[x< -1.6]= -1.6
pheatmap(x,show_rownames = T,show_colnames = F,
annotation_col = tmp,fontsize = 5)
未进行归一化之前的热图
pam50_热图_原图.Rplot01
进行了归一化之后的数据绘制的热图可以更明显的看出样本之间的差异,而基因之间的差异则被弱化了。
pam50_热图_归一化.Rplot01
比较两个分组信息我们可以发现:
TNBC和basal-like的重合度很高。TNBC是根据组织切片对三阴性乳腺癌的定义,而basal-like则是根据芯片表达数据定义的,都是恶性的,这说明我们的分析是可靠的。
这些分析,基本上读一下我五年前在生信技能树的表达芯片的公共数据库挖掘系列推文 就明白了;
视频观看方式
我把3年前的收费视频课程:3年前的GEO数据挖掘课程你可以听3小时或者3天甚至3个月,免费到B站:
然后马上就有了3千多学习量,而且有学员给出来了图文并茂版本万字笔记,让我非常感动!