【GEO数据库挖掘】三、表达矩阵

代码参考:

https://github.com/jmzeng1314/5years/blob/master/learn-R/tasks/3-r-20-codes.R

1 构建新矩阵

rm(list=ls())

if(T){
  # BiocManager::install('CLL')
  suppressPackageStartupMessages(library(CLL))
  data(sCLLex)
  sCLLex
  exprSet=exprs(sCLLex)   
  ##sCLLex是依赖于CLL这个package的一个对象
  samples=sampleNames(sCLLex)
  pdata=pData(sCLLex)
  group_list=as.character(pdata[,2])
  dim(exprSet)
  exprSet[1:5,1:5]
  
  # BiocManager::install('hgu95av2.db')
  library(hgu95av2.db)
  ls("package:hgu95av2.db") 
  
  ids=toTable(hgu95av2SYMBOL)
  save(ids,exprSet,pdata,file = 'input.Rdata')
  length(unique(ids$symbol))
  tail(sort(table(ids$symbol)))
  table(sort(table(ids$symbol)))
  
  plot(table(sort(table(ids$symbol))))
  
  table(rownames(exprSet) %in% ids$probe_id)
  dim(exprSet)
  exprSet=exprSet[rownames(exprSet) %in% ids$probe_id,]
  dim(exprSet)
  
  ids=ids[match(rownames(exprSet),ids$probe_id),]
  head(ids)
  rownames(exprSet)=ids[match(rownames(exprSet),ids$probe_id),2]##关键一步,把exprSet的列改为ids匹配的基因名列
  exprSet[1:5,1:5]
}
image.png
##检验一些常见基因,查看GAPDH基因表达量
> exprSet['GAPDH',]
CLL11.CEL CLL12.CEL CLL13.CEL CLL14.CEL CLL15.CEL CLL16.CEL CLL17.CEL CLL18.CEL 
 11.43349  10.62135  11.64079  11.15077  11.58473  11.69951  11.40295  10.35316 
CLL19.CEL CLL20.CEL CLL21.CEL CLL22.CEL CLL23.CEL CLL24.CEL  CLL2.CEL  CLL3.CEL 
 10.78962  11.20747  11.66021  10.98364  11.57492  10.97744  11.33880  11.46153 
 CLL4.CEL  CLL5.CEL  CLL6.CEL  CLL7.CEL  CLL8.CEL  CLL9.CEL 
 11.84727  11.40218  11.57526  11.98662  10.65648  11.29905 

##查看第一列的表达值
> boxplot(exprSet[,1])
image.png
##看到表达值5左右,GAPDH的表达值10很高
##查看ACTB基因表达量,都是比较高的
> exprSet['ACTB',]
CLL11.CEL CLL12.CEL CLL13.CEL CLL14.CEL CLL15.CEL CLL16.CEL CLL17.CEL CLL18.CEL 
 11.61486  12.64229  12.45857  12.28548  11.79786  11.00114  10.91522  11.48071 
CLL19.CEL CLL20.CEL CLL21.CEL CLL22.CEL CLL23.CEL CLL24.CEL  CLL2.CEL  CLL3.CEL 
 11.48298  10.64709  12.82371  12.20490  12.46759  11.31447  12.40611  11.96456 
 CLL4.CEL  CLL5.CEL  CLL6.CEL  CLL7.CEL  CLL8.CEL  CLL9.CEL 
 11.77779  11.82606  12.30924  11.20237  12.18950  12.12897 
library(reshape2)
exprSet_L=melt(exprSet)
colnames(exprSet_L)=c('probe','sample','value')
exprSet_L$group=rep(group_list,each=nrow(exprSet))
head(exprSet_L)

### ggplot2 
library(ggplot2)
p=ggplot(exprSet_L,aes(x=sample,y=value,fill=group))+geom_boxplot()
print(p)##图1
p=ggplot(exprSet_L,aes(x=sample,y=value,fill=group))+geom_violin()
print(p)
p=ggplot(exprSet_L,aes(value,fill=group))+geom_histogram(bins = 200)+facet_wrap(~sample, nrow = 4)
print(p)
p=ggplot(exprSet_L,aes(value,col=group))+geom_density()+facet_wrap(~sample, nrow = 4)##查看样本分布趋势是否相同
print(p)##图2
p=ggplot(exprSet_L,aes(value,col=group))+geom_density() 
print(p)
p=ggplot(exprSet_L,aes(x=sample,y=value,fill=group))+geom_boxplot()
p=p+stat_summary(fun.y="mean",geom="point",shape=23,size=3,fill="red")
p=p+theme_set(theme_set(theme_bw(base_size=20)))
p=p+theme(text=element_text(face='bold'),axis.text.x=element_text(angle=30,hjust=1),axis.title=element_blank())
print(p)

图1 全部数据的箱线图,整体数据表达量在一条线上,表明可以比较


image.png

图2 检查样本分布是否有问题


image.png
##绘画样本间进化关系
plot(hclust(dist(t(exprSet))))
image.png
##把名改为progress(横坐标),再次画图,整体结果符合实验趋势

## hclust 
colnames(exprSet)=paste(group_list,1:22,sep='')
image.png
## PCA图 

# BiocManager::install('ggfortify')
library(ggfortify)
df=as.data.frame(t(exprSet))
df$group=group_list 
autoplot(prcomp( df[,1:(ncol(df)-1)] ), data=df,colour = 'group')
image.png

2 回到GSE42872表达矩阵

还有很多需要加工的地方。

dat=exprSet

##ids新建median这一列,列名为median,同时对dat这个矩阵按行操作,取每一行的中位数,将结果给到median这一列的每一行
ids$median=apply(dat,1,median)

##对ids$symbol按照ids$median中位数从大到小排列的顺序排序,将对应的行赋值为一个新的ids
ids=ids[order(ids$symbol,ids$median,decreasing = T),]

##将symbol这一列取取出重复项,'!'为否,即取出不重复的项,去除重复的gene ,保留每个基因最大表达量结果s
ids=ids[!duplicated(ids$symbol),]

##新的ids取出probe_id这一列,将dat按照取出的这一列中的每一行组成一个新的dat
dat=dat[ids$probe_id,] 

##把ids的symbol这一列中的每一行给dat作为dat的行名
rownames(dat)=ids$symbol

##保留每个基因ID第一次出现的信息
dat[1:4,1:4]

表达矩阵的变化:新的表达矩阵叫dat

image.png

image.png

看箱线图

group_list=c('control','control','control','case','case','case')

library(reshape2)
exprSet_L=melt(dat)
colnames(exprSet_L)=c('sample','value')

library(ggplot2)
p=ggplot(exprSet_L,aes(x=sample,y=value))+geom_boxplot()
print(p)
image.png

整体分布还是比较均一。

hc图

## hclust 
colnames(dat)=paste(group_list,1:6,sep='')

## Define nodePar
nodePar <- list(lab.cex = 0.6, pch = c(NA, 19), 
                cex = 0.7, col = "blue")
hc=hclust(dist(t(dat)))
par(mar=c(5,5,5,10)) 
plot(as.dendrogram(hc), nodePar = nodePar,  horiz = TRUE)
image.png

可以看出,control和case严格区分,实验结果符合预期。

PCA图

## BiocManager::install('ggfortify')
library(ggfortify)
df=as.data.frame(t(dat))
df$group=group_list 
autoplot(prcomp( df[,1:(ncol(df)-1)] ), data=df,colour = 'group')
image.png

数据区分,药物处理的结果明显。

表达矩阵分析就到这里,下一篇我们继续差异分析。

我们下一篇再见!

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,657评论 6 505
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,889评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,057评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,509评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,562评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,443评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,251评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,129评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,561评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,779评论 3 335
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,902评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,621评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,220评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,838评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,971评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,025评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,843评论 2 354

推荐阅读更多精彩内容