近期在看文獻找圖的時候竹海,看到一篇文章斋配,一個詞走進我的眼簾灌闺,Ingenuity Pathway Analysis(IPA),很熟悉甩卓,又很陌生逾柿。熟悉是因為我知道有這么個東西宅此,我也利用它做過數據分析并進行過結果可視化;陌生是因為分析部分并不是我親自做的毡熏,而是委托別人做的。2年前就有小伙伴問我可不可以出IPA分析的教程狱窘,我的回答是不能蘸炸。IPA是一個付費軟件,我沒有那么大本事搭儒,這也就是我所說的“陌生‘提茁,大樹底下好乘涼馁菜,之前是因為合作的課題組購買了,才能幫做峭火。大概率你會在文獻中見過這樣的圖智嚷,就是IPA的杰作:
However,IPA的應用很廣泛稍浆,功能強大(普通轉錄組猜嘱,miRNA等小RNA泉坐,蛋白組,藥物分析等等)孤钦,很可能你的分析會用得上偏形,而且這就有點高級了觉鼻。分析的內容也是平常我們非常想解決的坠陈,一下子思路打開:
經典通路富集分析,差異基因富集情況
非定向相互作用網絡分析(Networks)
上游調控分析庸蔼,即基因上游調控因子預測
下游效應分析贮匕,即預測分子變化對疾病和生物學功能等的影響
調控效應分析,即下游疾病或者功能如何收到上游分子調控
比較分析,與相似數據匹配進行多組學掏膏、多時間點等比較分析
特定基因-分子-疾病網絡調控構建
參考資料:
https://mp.weixin.qq.com/s/yu8hz2BZPePO22OMAPp6xQ
https://mp.weixin.qq.com/s/y0dS_8S7tOWKKzuHp_DCkA
我們是從一篇NC文章(Single-cell analysis identifies conserved features of immune dysfunction in simulated microgravity and spaceflight)上看到的劳翰,不過這篇文章中做了富集分析,這個不是重點馒疹,重點是這個文章提供了代碼(https://github.com/FEI38750/Immune_Dysfunction_in_Microgravity/blob/main/7_IPA_comparison_dotplot.r)⌒斜可視化這個富集結果的代碼我認為值得分享,雖然很簡單悼做,但是涉及到我們每次做富集可視化的過程疯特,算是一個集成,所以我們詳細注釋了代碼進行學習肛走,注釋代碼已上傳群!
復現圖如下:文章中提供了作圖的數據朽色,我們直接使用邻吞,處理一下:
setwd('D:\\KS項目\\公眾號文章\\學習SCI論文代碼-富集氣泡圖展示')
library(stringi)
library(tidyr)
library(colorspace)
library(ggplot2)
library(stringr)
#read data
IPA_Z <- read_excel("ipa.xls",skip=1, sheet = 1, col_names=F)
IPA_P <- read_excel("ipa.xls",skip=1, sheet = 2, col_names=F)
# 替換字符:replace Greek symbols,把希臘字母換成英文
#其實替換與否都不重要,主要是學習一下代碼
Greek <- c("α","β","γ","κ","θ")
English <- c("a","b","r","k","th")
IPA_Z$Canonical.Pathways <- stri_replace_all_regex(IPA_Z$Canonical.Pathways,
pattern=Greek,
replacement = English,
vectorize=F)
IPA_P$Canonical.Pathways <- stri_replace_all_regex(IPA_P$Canonical.Pathways,
pattern=Greek,
replacement = English,
vectorize=F)
下面就是很多人總是問的問題了葫男,例如調整通路,細胞順序了梢褐,字符處理了旺遮,數據替換過濾等等問題:
IPA_P<-IPA_P[match(IPA_Z$Canonical.Pathways,IPA_P$Canonical.Pathways),]
IPA_Z <- pivot_longer(IPA_Z, cols= 2:21,names_to = "Cell_types",values_to = "Zscore")
IPA_P <- pivot_longer(IPA_P, cols= 2:21,names_to = "Cell_types",values_to = "-log(P)")
IPA_Z <- cbind(IPA_Z,`-log(P)`=IPA_P$`-log(P)`)
#字符處理
# trim the name of cell types
IPA_Z$Cell_types<- gsub("_uGvs1G.*","",IPA_Z$Cell_types)
IPA_Z$Cell_types<-factor(IPA_Z$Cell_types, levels = unique(IPA_Z$Cell_types)) # order the x axis
# Replacing character values with NA in a data frame
IPA_Z[ IPA_Z == "N/A" ] <- NA
IPA_Z$Zscore <- as.numeric(IPA_Z$Zscore)
data = IPA_Z %>% filter(`-log(P)`>1.3)
ggplot作圖耿眉,ggsave保存圖片:
#plot
ggplot(data=data, aes(x=Cell_types, y = Canonical.Pathways,
color = Zscore, size = `-log(P)`)) +
geom_point() +
scale_y_discrete(labels=function(y) str_wrap(y, width=80)) +
ylab('Canonical Pathways') +
cowplot::theme_cowplot() +
theme(axis.text.x = element_text(size=9.5, angle=45, vjust = 1, hjust = 1),
axis.text.y = element_text(size=7.5))
theme(axis.line = element_blank()) +
theme(axis.ticks = element_blank()) +
scale_color_continuous_divergingx('RdBu',rev=T,limits = c(-3,3),
oob = scales::squish, name = 'z-score',
na.value="transparent")+
labs(size="-log10(adj.P)")
#最后保存圖片丈积,設置長寬
ggsave("IPA.pdf", width = 10, height = 9,limitsize = FALSE)
覺得我們分享有些用的筐骇,點個贊再走唄!