2020-05-08 复现GSE137675 RNA-Seq结果(2):下游分析

  1. 将上游分析最后得到的counts.txt读入到R中
rm(list = ls())  # 魔幻操作,一键清空~
options(stringsAsFactors = F)  # 关闭字符串转因子选项
# 读入featureCounts的表达矩阵
data <- read.table("counts.txt",sep = "\t",header = T,row.names = 1)
data[1:3,]

# 查看低/零表达基因情况
dim(data)
## [1] 60662    12
table(rowSums(data==0)==ncol(data))
## FALSE  TRUE 
## 40892 19770 
# 去除低表达和不表达的基因
exprSet <- data[apply(data,1,sum)!=0,]
dim(exprSet)
## [1] 40892    12

#对exprSet行名进行重命名(去除点号和后面的数字,去除重复的基因名)
tmp0 <- exprSet
tmp0$mean <- apply(tmp0,1,mean)
tmp0 <- tmp0[order(tmp0$mean,decreasing = T),]

str <- stringr::str_split(rownames(tmp0),"\\.",simplify=T)
tmp0$id <- str[,1]
tmp0 <- tmp0[!duplicated(tmp0$id),]
rownames(tmp0) <- tmp0$id

exprSet <- tmp0[,-(ncol(tmp0)-1)]

# 保存预处理后的表达矩阵
save(exprSet,file = "data/Step01-featureCounts2exprSet.Rdata")
  1. 读入作者上传的表达矩阵GSE137675_Reads_count_featureCounts.xlsx
    并跟自己处理的结果做样本相关性分析。
    代码参考:https://mp.weixin.qq.com/s/b7UHpcicVu6yjj4aM_BGvw
rm(list = ls())  # 魔幻操作,一键清空~
options(stringsAsFactors = F)  # 关闭字符串转因子选项
# 读入作者上传的表达矩阵
tmp <- read.csv("GSE137675_Reads_count_featureCounts.csv",row.names = 1)
dim(tmp)
## [1] 40892    12
tmp2 <- tmp[apply(tmp,1,sum)!=0,]
## [1] 35904    12
tmp2$id <- rownames(tmp2)

# 合并作者上传的表达矩阵和自己走上游分析流程得到的表达矩阵
m <- merge(exprSet,tmp2,by='id')
rownames(m) <- m$id
m <- m[,-1]
dim(m)
## [1] 31523    24
pheatmap::pheatmap(cor(m))
pheatmap::pheatmap(cor(log2(m+1)))

cpmM <- log(edgeR::cpm(m+1))
pheatmap::pheatmap(cor(cpmM))

hg1 <- names(tail(sort(apply(cpmM[,1:12],1,mad)),500))
hg2 <- names(tail(sort(apply(cpmM[,13:24],1,mad)),500))
hg <- intersect(hg1,hg2)
hgM <- cpmM[hg,]
pheatmap::pheatmap(cor(hgM))
corrplot.png

对照表

CM2005.1.RNA-seq.rep1 SRR10139778
CM2005.1.RNA-seq.rep2 SRR10139779
CRMM1.RNA-seq.rep1 SRR10139780
CRMM1.RNA-seq.rep2 SRR10139781
OCM1.RNA-seq.rep1 SRR10139782
OCM1.RNA-seq.rep2 SRR10139783
OCM1a.RNA-seq.rep1 SRR10139784
OCM1a.RNA-seq.rep2 SRR10139785
OM431.RNA-seq.rep1 SRR10139786
OM431.RNA-seq.rep2 SRR10139787
PIG1.RNA-seq.rep1 SRR10139788
PIG1.RNA-seq.rep2 SRR10139789
  1. 使用R包DESeq2分析基因差异表达
rm(list = ls())  # 魔幻操作,一键清空~
options(stringsAsFactors = F)  # 关闭字符串转因子选项

# 读取基因表达矩阵信息
load(file = "data/Step01-featureCounts2exprSet.Rdata")

# 查看分组信息和表达矩阵数据
dim(exprSet)
## [1] 40884    13
colnames(exprSet)
##  [1] "SRR10139778" "SRR10139779" "SRR10139780" "SRR10139781" "SRR10139782"
##  [6] "SRR10139783" "SRR10139784" "SRR10139785" "SRR10139786" "SRR10139787"
## [11] "SRR10139788" "SRR10139789" "id" 
exprSet <- exprSet[,-ncol(exprSet)]
group_list <- c(rep("tumor",10),rep("normal",2))
names(group_list)<-colnames(exprSet)
group_list <- as.factor(group_list)

suppressMessages(library(DESeq2))
#### 第一步,构建DESeq2的DESeq对象
colData <- data.frame(row.names=colnames(exprSet),group_list=group_list)
dds <- DESeqDataSetFromMatrix(countData = exprSet,colData = colData,
                              design = ~ group_list)
#### 第二步,进行差异表达分析
f  <- 'data/Step03-DESeq2_dds2.Rdata'
if(!file.exists(f)){
  dds2 <- DESeq(dds)
  # 保存差异表达分析结果
  save(dds2, file = "data/Step03-DESeq2_dds2.Rdata")
}
#### 第三步,提取差异分析结果
load(file = "data/Step03-DESeq2_dds2.Rdata")
# 提取差异分析结果,tumor组对normal组的差异分析结果
res <- results(dds2,contrast=c("group_list","tumor","normal"))
resOrdered <- res[order(res$padj),]
head(resOrdered)

DEG <- as.data.frame(resOrdered)
# 去除差异分析结果中包含NA值的行
DESeq2_DEG = na.omit(DEG)

# 取出包含logFC和P值的两列
nrDEG=DESeq2_DEG[,c(2,6)]
colnames(nrDEG)=c('log2FoldChange','pvalue')  
save(nrDEG, DESeq2_DEG, file = "data/Step03-DESeq2_nrDEG.Rdata")

DEG <- nrDEG
logFC_cutoff <- 1.5
DEG$change = as.factor(ifelse(DEG$pvalue < 0.05 & abs(DEG$log2FoldChange) > logFC_cutoff,
                              ifelse(DEG$log2FoldChange > logFC_cutoff ,'UP','DOWN'),'STABLE'))
table(DEG$change)
##  DOWN STABLE     UP 
##  1555  20684   1964 
DOWN STABLE UP
1555 20684 1964

作者的差异基因分析结果:


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