拿到基因表達矩陣之后的那點事(一)

做轉錄組一般拿到基因表達矩陣之后工作即可開始做差異分析鲫趁,在此之前還有一步就是對矩陣做標準化确沸,常見的幾種RPKM丧凤、FPKM募闲、TMM等,雖然RPKM愿待、FPKM方法被吐槽的尤為厲害浩螺,但是大多數(shù)測序公司給出的結果依然還是很多在使用這種方法,這里我還是以RPKM作為演示

公式如下:
RPKM= read counts / (mapped reads (Millions) * exon length(KB))
其實標準化就是倆點 基因的長度和所有基因上計數(shù)后的reads總數(shù)
之前看到了一個帖子仍侥,感覺說的不錯要出,對基因長度和mapped reads做了介紹,并推薦了一種方法計算這個基因長度點Here

計算基因長度需要用到gtf文件,代碼如下:

# 根據(jù)gtf文件求基因長度农渊,載入GTF文件患蹂,其實和feature結果一致
library(GenomicFeatures)
txdb <- makeTxDbFromGFF("hg38.gtf",format="gtf")
#通過exonsBy獲取每個gene上的所有外顯子的起始位點和終止位點,然后用reduce去除掉重疊冗余的部分腿时,最后計算長度
exons_gene <- exonsBy(txdb, by = "gene")
exons_gene_lens <- lapply(exons_gene,function(x){sum(width(reduce(x)))})
#獲得每個基因下所有外顯子的總長度后况脆,就可以利用上述公式計算FPKM了饭宾。
exons_gene_lens <- as.matrix(exons_gene_lens)
write.table(exons_gene_lens, 'length.txt', sep = '\t', col.names = NA, quote = FALSE)
#通過exonsBy獲取每個gene上的所有外顯子的起始位點和終止位點批糟,然后用reduce去除掉重疊冗余的部分,最后計算長度

拿到長度之后我們就可以去做RPKM標準化了

#導入基因長度文件
leng <- read.delim('length.txt',header = T,stringsAsFactors = FALSE,check.names = FALSE)
#導入counts矩陣
count <- read.table('RPKM.txt',header = T,row.names = 1,stringsAsFactors = FALSE,check.names = FALSE)
#將其順序一致
count <- count[match(leng$Geneid,rownames(count)),]
length <- leng[,2]#提取長度
total_count<- colSums(count)#計算各樣本總數(shù)
#RPKM標準化
rpkm <- t(do.call( rbind,
                   lapply(1:length(total_count),
                          function(i){
                            10^9*count[,i]/length/total_count[i]
                          }) ))
dim(na.omit(rpkm))
colnames(rpkm) <- colnames(count)
rownames(rpkm) <- leng$Geneid
rpkm <- as.data.frame(rpkm)

OK,簡單做個熱圖瞅一瞅

#相關性熱圖  
library(RColorBrewer)
rpkm <- log2(rpkm+1) #log一下
cor_pearson <- cor(rpkm, method = 'pearson')
coul <- colorRampPalette(brewer.pal(8, "PiYG"))(25)
pheatmap::pheatmap(cor_pearson,display_numbers = T,color = coul)

圖片.png

箱線圖看一下表達量分布

#做各個樣本箱線圖
tiff('boxplot.tiff', width = 1000, height = 600)
#設置分組信息 方便作圖
group_list <- c(rep('T',2),rep('N',2),rep('a',2),rep('b',2),rep('c',2),rep('d',2))
group_list <- factor(group_list,levels = c('T','N','a','b','c','d'),ordered=TRUE) #設置一下分組看铆,因為我有12個樣品徽鼎,6個組.
boxplot(rpkm,outline = FALSE,border  = group_list,las =2,varwidth = T,
        main = 'RPKM counts',ylab = 'log(RPKM+1)')
dev.off()
圖片.png

接下來繪制兩兩樣本散點圖
之前都是一個個的去提取兩組畫圖,感覺頗為麻煩弹惦,然后看到了一個帖子get到了新方法否淤,還是用函數(shù)去解決,參照原貼

scaplot_r2 <- function(indata,inx,iny){
  nms <- names(indata)
  x <- nms[inx]
  y <- nms[iny]
  regression <- paste0(x,"~",y)
  dat.lm <- lm(as.formula(regression),data = indata)
  r2 <- sprintf("italic(r) == %.4f",sqrt(summary(dat.lm)$r.squared)) 
  labels <-  data.frame(r = r2,stringsAsFactors = FALSE)
  #注意此處需要加上 !!ensym 函數(shù)才可以
  p3 <- ggplot(indata, aes(x = !!ensym(x), y = !!ensym(y))) +
    geom_point(colour = "black", size = 1) +
    theme_light() +
    stat_smooth(method = lm, se = FALSE,colour = 'pink') +
    labs(x=paste0(x," (log2 intensity)"),y=paste0(y," (log2 intensity)"))+
    geom_text(data=labels,mapping=aes(x = 6,y=1,label=r2),parse = TRUE,inherit.aes = FALSE,size = 6)
  #  annotate("text", label = r2, x = 5.0, y = 1)
  ggsave(paste(x,'vs',y,'.tiff',sep = ''),p3, width = 6, height = 5)
}
scaplot_r2(rpkm,3,7)#指定兩組
圖片.png

除了!!ensym 函數(shù)這種形式棠隐,帖子中還介紹了另一種方法用到everything函數(shù)石抡,大家可以去看原貼學習~~

其實轉錄組還有很多方法直接用原始矩陣去做差異分析,Deseq2,edgeR等等都有自己的標準化方法助泽,大家也可學習浮!今天就先介紹到這吧~

下面是剛創(chuàng)建個人公眾號嗡贺,會定時更新R隐解、linux良风、python檬洞,組學方面的學習內容,請多多支持呦~~


image
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末噩茄,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子续徽,更是在濱河造成了極大的恐慌蚓曼,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,039評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件炸宵,死亡現(xiàn)場離奇詭異辟躏,居然都是意外死亡,警方通過查閱死者的電腦和手機土全,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評論 3 395
  • 文/潘曉璐 我一進店門捎琐,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人裹匙,你說我怎么就攤上這事瑞凑。” “怎么了概页?”我有些...
    開封第一講書人閱讀 165,417評論 0 356
  • 文/不壞的土叔 我叫張陵籽御,是天一觀的道長。 經(jīng)常有香客問我惰匙,道長技掏,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,868評論 1 295
  • 正文 為了忘掉前任项鬼,我火速辦了婚禮哑梳,結果婚禮上,老公的妹妹穿的比我還像新娘绘盟。我一直安慰自己鸠真,他們只是感情好,可當我...
    茶點故事閱讀 67,892評論 6 392
  • 文/花漫 我一把揭開白布龄毡。 她就那樣靜靜地躺著吠卷,像睡著了一般。 火紅的嫁衣襯著肌膚如雪沦零。 梳的紋絲不亂的頭發(fā)上祭隔,一...
    開封第一講書人閱讀 51,692評論 1 305
  • 那天,我揣著相機與錄音路操,去河邊找鬼疾渴。 笑死,一個胖子當著我的面吹牛寻拂,可吹牛的內容都是我干的程奠。 我是一名探鬼主播,決...
    沈念sama閱讀 40,416評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼祭钉,長吁一口氣:“原來是場噩夢啊……” “哼瞄沙!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,326評論 0 276
  • 序言:老撾萬榮一對情侶失蹤距境,失蹤者是張志新(化名)和其女友劉穎申尼,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體垫桂,經(jīng)...
    沈念sama閱讀 45,782評論 1 316
  • 正文 獨居荒郊野嶺守林人離奇死亡师幕,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,957評論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了诬滩。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片霹粥。...
    茶點故事閱讀 40,102評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖疼鸟,靈堂內的尸體忽然破棺而出后控,到底是詐尸還是另有隱情,我是刑警寧澤空镜,帶...
    沈念sama閱讀 35,790評論 5 346
  • 正文 年R本政府宣布浩淘,位于F島的核電站,受9級特大地震影響吴攒,放射性物質發(fā)生泄漏张抄。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,442評論 3 331
  • 文/蒙蒙 一洼怔、第九天 我趴在偏房一處隱蔽的房頂上張望署惯。 院中可真熱鬧,春花似錦茴厉、人聲如沸泽台。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,996評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至稻爬,卻和暖如春嗜闻,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背桅锄。 一陣腳步聲響...
    開封第一講書人閱讀 33,113評論 1 272
  • 我被黑心中介騙來泰國打工琉雳, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人友瘤。 一個月前我還...
    沈念sama閱讀 48,332評論 3 373
  • 正文 我出身青樓翠肘,卻偏偏與公主長得像,于是被迫代替她去往敵國和親辫秧。 傳聞我的和親對象是個殘疾皇子束倍,可洞房花燭夜當晚...
    茶點故事閱讀 45,044評論 2 355