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
華麗麗的結束