有了TPM,怎么做基因表達分析、相關性分析和主成分分析

TPM是RNAseq測序結果里很好的歸一化表達矩陣,以前都是FPKM,但目前TPM才是主流,很多測序公司也開始用TPM作為基因定量單位進行分析了,基因表達分布、相關性系數和主成分分析都可以用它。

tpm<-read.csv('\TPM.csv',row.names=1) #不要第一列的基因名
tpm=data.fream(tpm)  ## 最好是數據框
exp<-log2(tpm+1)  ## 最好進行l(wèi)og2+1的處理,數據可以整齊些

一、 樣本基因表達分布

## 新建一個分組
group_list=factor(c(rep('NC',3),rep('OE',3)))  # 設置成因子,每組3個樣本
##自帶boxplot函數看最簡單的分布,但圖丑無比
boxplot(exp,outline=FALSE, notch=T,col=group_list, las=2)
Boxplot

在這個看臉的年代,這個圖肯定是不行的(隨便給的數據,數據分布不齊,當然不齊的話可以用limma包內置normalizeBetweenArrays校正,代碼是:

library(limma) 
exp2=normalizeBetweenArrays(exp)

image.png

當然這個算是重復校正了,不過為了后面的圖好看,還是用這個exp2后續(xù)分析吧。。。。
為了好看,箱式圖當然是ggplot2來畫,首先就需要先把矩陣轉換一下下

library(ggplot2)
# 構造繪圖數據
 data <-data.frame(expression=c(exp2),sample=rep(colnames(exp2),each=nrow(exp2)))
## 這個數據包括了表達和樣本,但是沒有分組,我們可以這樣定義
library(stringr)
data$group=ifelse(str_detect(data$sample,"NC"),"NC","OE") # 檢驗如果樣本里包含了NC,就定義為NC組,否則就是OE組
## 開始畫圖
ggplot(data,aes(x=sample,y=expression,fill=group))+geom_boxplot() + theme_bw()+ xlab(NULL) + ylab("log2(TPM+1)")
Box

當然還可以分面

ggplot(data,aes(x=sample,y=expression,fill=group))+geom_boxplot() + theme_bw()+ xlab(NULL) + ylab("log2(TPM+1)")+facet_grid(~group,scales = 'free')
image.png

不過ggpubr會更簡單,而且還可以定義配色,比如lancet

library(ggpubr)
ggboxplot(data,"sample","expression",fill = "group",facet.by = "group",scale="free",palette = "lancet",legend="none",ggtheme = theme_bw())
image.png

當然如果你有強迫癥,覺得差距太大,也可以把Y軸的顯示范圍縮小一點

ggboxplot(data,"sample","expression",fill = "group",ylim=c(0,3),facet.by = "group",scale="free",palette = "lancet",legend="none",ggtheme = theme_bw())
image.png

然后是密度圖,還是用ggpubr,代碼簡單

ggdensity(data,"expression",fill = "sample",color = "sample",ggtheme = theme_bw())
密度分布

二、樣本間相關性

corr<-cor(exp) #一個代碼就計算完,默認是pearson法,當然你也可以設置為spearman,加一個method="spearman"就可以。
p.mat <- cor_pmat(exp) # 還可以計算下p值
##這個時候需要先安裝ggcorrplot這個包(不要問我怎么安裝),然后再加載它
library(ggcorrplot)
ggcorrplot(corr,
           outline.color = "white",
           ggtheme = ggplot2::theme_bw,
           colors = c("#6D9EC1", "white", "#E46726"),lab = T,title = "Corralation"
)
Pearson相關性

這個包的函數特別多,可以顯示圈圖,可以排序,可以只顯示上部分或下部分,還可以添加P值標簽,可以參考這個ggcorrplot: Visualization of a correlation matrix using ggplot2 - Easy Guides - Wiki - STHDA

主成分分析

主成分方法有很多種,很難說用哪個,有Dim表示的,也有PCA表示的,其實原理都差不多,這里用Dim

library(ggord) # 不要問我怎么安裝
library(FactoMineR) # 不要問我怎么安裝
dat <- as.data.frame(t(exp))
dat.pca <- PCA(dat, graph = FALSE)
ggord(dat.pca,group_list,coord_fix = FALSE,
      arrow = 0,vec_ext = 0,txt = NULL)
主成分分析

當然還有大佬小潔忘了分身tinnyarray神包其實也可以,而且還不用你去算結果,一步出圖的感覺很好,而且還可以添加配色和主題,很ggplot2,可惜就是樣本太少的畫,它沒法給你加個圈,其實它就是借用了factoextra這個包的函數,真是偷懶啊,所以你應該需要先安裝這個包才能用

library(tinyarray) # 不要問我怎么安裝
library(ggsci)
draw_pca(tpm,group_list)+theme_bw()+scale_color_lancet()
image.png

華麗麗的結束

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內容