富集分析结果不理想:如何从上千个term中找到自己想要所有term?

大家好,我们经常会发现GO、kegg、gsea等富集分析的结果会产生很多term,如果top10之内有我们的目的term,那很好!但是如果我们想要研究的term不在top10里面怎么办呢?


甚至我们想要研究的term在top200之后,这时候咋办啊

其实我们在进行富集分析之前,可能已经对自己想要研究的方向有了大概了解。

那么问题就变成了:如何实现 从富集分析的结果里找到支撑我们想法的所有term?

  • 1 比如我们有了这样的富集结果,总共有2000多条:

  • 2 假如我对纤维化感兴趣,那我可以用这几个词去检索:coll  matrix  fibro

如果你想研究其他的通路,换个关键词就行了

#代码
selected_lung_terms=xx.all  %>%
  dplyr::filter(stringr::str_detect(pattern = "coll|matrix|fibro",Description))  %>%
  group_by(Description) %>%
  add_count()  %>%
  dplyr::arrange(dplyr::desc(n),dplyr::desc(Description)) %>%
  mutate(Description =forcats:: fct_inorder(Description))

这样找到的都是和纤维化相关的term

图片

  • 3 对这些富集分析结果进行可视化

ggplot(xx.all  %>%
         dplyr::filter(stringr::str_detect(pattern = "coll|matrix",Description))  %>%
         group_by(Description) %>%
         add_count()  %>%
         dplyr::arrange(dplyr::desc(n),dplyr::desc(Description)) %>%
         mutate(Description =forcats:: fct_inorder(Description))

       , #fibri|matrix|colla
         aes(Cluster, Description)) +
  geom_point(aes(fill=p.adjust, size=Count), shape=21)+
  theme_bw()+
  theme(axis.text.x=element_text(angle=90,hjust = 1,vjust=0.5),
        axis.text.y=element_text(size = 12),
        axis.text = element_text(color = 'black', size = 12)
  )+
  scale_fill_gradient(low="red",high="blue")+
  labs(x=NULL,y=NULL)
# coord_flip()

图片

  • 4 如果你想把目的term的所有基因都取出来:

图片

代码如下:

stringr::str_split(string = selected_lung_terms$geneID,pattern = "/",simplify = TRUE) %>%as.vector()

所有的基因:

  • 5 如果你想看基因在这些term中出现的频率:

stringr::str_split(string = selected_lung_terms$geneID,pattern = "/",simplify = TRUE) %>%as.vector() %>%table() %>%sort()

可以看到col1a1出现的次数最多

最后其实对结果的可视化有很多种,我上述展示的有点丑,如果大家感兴趣,下次写写可视化的方法

图片

最后,祝各位都能得偿所愿 

猜你喜欢

转载自blog.csdn.net/qq_52813185/article/details/134959622