RNA_seq 熱圖繪制


若已經拿到表達矩陣exprSet

若差異較大,進行log縮小不同樣本的差距

1、熱圖全體

 1 ##加載包
 2 library(pheatmap)
 3 
 4 ##縮小表達量差距
 5 exprSet <- log2(exprSet+1)
 6 
 7 ##取最大標准差前1000個基因名字
 8 cg <-names(tail(sort(apply(exprSet,1,sd)),1000))
 9 
10 ##標准化,只關注樣品間基因差異,不關注基因之間的,將離群點拉平
11 n <-t(scale(t(exprSet[cg,])))
12 n[n>2] <-2
13 n[n<-2] <-2
14 
15 ##這是group_list
16 group_list <-c(rep("a",3),rep("b",3))
17 ac <- data.frame(sample=group_list)
18 rownames(ac) <- colnames(n)
19 
20 ##draw pheatmap,其中annotation_col 可以增加sample組
21 pheatmap(n, show_rownames = F, show_colnames = F,
22          annotation_col = ac)
23 
24 ##draw pheatmap add number
25 pheatmap(n, show_rownames = F, show_colnames = F,
26          annotation_col = ac, display_numbers = TRUE)

 

 

2、對差異基因進行繪制,步驟都類似,在進行繪制時,應對數據進行一定處理

 1 ##DEseq2 獲得dds
 2 dds <- DESeq2(dds)
 3 res <- results(dds)
 4 res <- res[order(res$padj),]
 5 DEG <- as.data.frame(res)
 6 
 7 ##去掉NA
 8 DEG <- na.omit(DEG)
 9 
10 ##熱圖
11 library(pheatmap)
12 choose_gene <- head(rownames(DEG),100)  ##50 maybe better
13 choose_matrix <- exprSet[choose_gene,]
14 choose_matrix <- t(scale(t(choose_matrix)))
15 pheatmap(choose_matrix, show_rownames = F, show_colnames = F,
16          annotation_col = ac)

 

3、rlog 進行數據標准化

1 ##rlog 標准化
2 rld <- rlog(dds)
3 ##讀取
4 exprMatrix_rlog <- assay(rld)
5 ##輸出
6 write.csv(exprMatrix_rlog, 'exprMatrix.rlog.csv')

標准化和raw count 的比較

png("DEseq_RAWvsNORM.png",height = 800,width=800)
par(cex= 0.7)
n.samples <- ncol(exprSet)
if(n.samples>40) par(cex=0.5)
cols <- rainbow(n.samples*1.2)
par(mfrow =c(2,2))
boxplot(exprSet,col=cols, main="expression value",las=2)
boxplot(exprMatrix_rlog,col=cols, main="expression value",las=2)
hist(as.matrix(exprSet))
hist(exprMatrix_rlog)
dev.off()

可以看到rlog后,樣本間可以進行很好觀察

 

參考:生信技能樹

 

 

 

------END------

關注下方公眾號可獲得更多精彩


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM