tft每日頭條

 > 生活

 > 現在生信分析用什麼語言

現在生信分析用什麼語言

生活 更新时间:2024-12-25 14:17:21

火山今始見,突兀蒲昌東。——岑參《經火山》

大家好,我是阿琛。當我們通過分析得到基因在不同分組中的表達情況,以及顯著上調或下調的差異基因時,如何将該結果進行可視化展示随之出現。在生信分析中,火山圖和熱圖是兩種最為常見的展示方法。火山圖,Volcano Plot,因其形狀類似噴發的火山而得名。

現在生信分析用什麼語言(生信最重要的圖之一)1

1.R包的安裝與讀取

首先,自然是R包的選擇與安裝。經過多期内容的講解,相信大家對于R語言繪圖也基本有了一個基本的了解。作圖常用三大包,分别是base包,強大的ggplot2包,以及在ggplot2基礎上發展而來的ggpubr包。對于點圖的繪制,在此我們選擇ggpubr包來講講火山圖的繪制。

#install.packages("ggpubr") #install.packages("ggthemes") #加載ggpubr包 library(ggpubr) library(ggthemes)

2.數據集的加載與引用

rt <- read.table("TCGA.diff.txt", sep=" ",header=T) head(rt) #顯示前6行

結果顯示,在該數據集中,包括了基因名,正常組和對照組的表達平均值,以及差異分析得到的logFC,P 值,以及校正後的fdr值。

現在生信分析用什麼語言(生信最重要的圖之一)2

str(rt) #查看數據結構

通過str()函數簡單查看每個變量的數據類型。

現在生信分析用什麼語言(生信最重要的圖之一)3

3.數據内容的整理

#對fdr值進行取對數處理 rt$logP <- -log10(rt$fdr) #定義顯著上/下調基因 rt$Type <- "no" #新增一列Type rt$Type[which((rt$fdr < 0.05) & (rt$logFC > 1))] <- "up-regulated" rt$Type[which((rt$fdr < 0.05) & (rt$logFC < -1))] <- "down-regulated" table(rt$Type) #對Type中的數量進行統計

到此,整個數據的準備工作就基本完成了,其中顯著上調的基因共23個,顯著下調的基因共468個。

現在生信分析用什麼語言(生信最重要的圖之一)4

4.繪制火山圖

接下來,我們一起來看下如何一步步由淺入深,逐步繪制火山圖逐步為火山圖添磚加瓦,增加各種信息。

ggscatter(rt, x = "logFC", y = "logP") theme_base() ylim(-0.2, 17)

首先,在ggscatter()函數中對數據集和圖形的x軸、y軸進行定義,得到整個火山圖的初步框架。

現在生信分析用什麼語言(生信最重要的圖之一)5

ggscatter(rt, x = "logFC", y = "logP", color = "Type", palette = c("blue", "black", "red"), size = 1) theme_base() ylim(-0.2, 17)

随後,對基因中顯著上調或者下調的基因顔色進行定義,賦予上調的基因紅色,以及下調的基因藍色,進行可視化的區分。

現在生信分析用什麼語言(生信最重要的圖之一)6

ggscatter(rt, x = "logFC", y = "logP", color = "Type", palette = c("blue", "black", "red"), size = 1) theme_base() ylim(-0.2, 17) geom_hline(yintercept = -log10(0.05), linetype = "dashed") geom_vline(xintercept = c(-1, 1), linetype = "dashed")

通過geomhline()和geomvline()兩個函數,分别在x軸和y軸方向上添加三條輔助性的虛線,将顯著改變的基因與其他基因進行區分開來。

現在生信分析用什麼語言(生信最重要的圖之一)7

到此為止,火山圖也就基本繪制完成了。當然,有些小夥伴可能還在文章中見過帶基因名字标簽的高級版火山圖。接下來,我們就來看下如何對顯著上調或下調的5個點添加基因标簽。

rt$Name = "" #新加一列Name rt<-rt[order(rt$fdr),]#對差異基因的p值進行從小到大的排序 #高表達的基因中,選擇fdr值最小的5個 up.genes <- head(rt$gene[which(rt$Type == "up-regulated")], 5) #低表達的基因中,選擇fdr值最小的5個 down.genes <- head(rt$gene[which(rt$Type == "down-regulated")], 5) #将up.genes和down.genes合并,并加入到Name中 rt.top.genes <- c(as.character(up.genes), as.character(down.genes)) rt$Name[match(rt.top.genes, rt$gene)] <- rt.top.genes

新增一個名為Name的列,通過排序,分别篩選出fdr值最小的顯著上調和下調基因,并将他們的基因名賦予給Name列。

#繪制火山圖 ggscatter(rt, x = "logFC", y = "logP", color = "Type", palette = c("blue", "black", "red"), size = 1, label = rt$Label, font.label = 8, repel = T, xlab = "log2FoldChange", ylab = "-log10(Adjust P-value)") theme_base() ylim(-0.2, 17) geom_hline(yintercept = -log10(0.05), linetype = "dashed") geom_vline(xintercept = c(-1, 1), linetype = "dashed")

這樣,一張精美的高級版火山圖就繪制完成了。

現在生信分析用什麼語言(生信最重要的圖之一)8

差異分析搭配火山圖來展示,是不是十分完美呢?好了,今天的分享就到此為止了,大家根據講解自己進行相關的練習~~~

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved