近期在看文献找图的时候,看到一篇文章,一个词走进我的眼帘,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)
image.png
觉得我们分享有些用的,点个赞再走呗!
网友评论