美文网首页microbiomeggplot2绘图基因组数据绘图
R可视化:组间微生物代谢通路

R可视化:组间微生物代谢通路

作者: 生信学习者2 | 来源:发表于2021-08-18 22:24 被阅读0次

    前言

    组间微生物富集代谢通路常用reporter score表示,在得到reporter score结果后,我们常需要可视化其结果。更多知识分享请到 https://zouhua.top/

    Importing data

    library(dplyr)
    library(tibble)
    library(ggplot2)
    library(xlsx)
    
    grp <- c("ET_B", "ET_P")
    grp.col <- c("#FF6000", "#0080C0")
    stg <- c("Before", "After")
    stg.col <- c("#6288BA", "#C25D97")
    
    phen <- read.csv("phenotype.csv") 
    stg.path <- read.xlsx("reporter_score.20181114.xlsx", sheetIndex = 1)
    bp.path <- read.xlsx("reporter_score.20181114.xlsx", sheetIndex = 3)
    

    Function

    ScoreVisuStage <- function(x, cfg, num=1){
      idx <- c("Pathway", "Level2", "Description")
      
      if (num==1) {
        level <- c("Amino_Acid_Metabolism","Carbohydrate_Metabolism",
                   "Energy_Metabolism", 
                   "Membrane_Transport","Xenobiotics_Biodegradation_and_Metabolism",
                   "Metabolism_of_Cofactors_and_Vitamins")
      } else {
        level <- c("Amino_Acid_Metabolism","Carbohydrate_Metabolism",
                   "PTS","Xenobiotics_Biodegradation_and_Metabolism",
                   "Membrane_Transport",
                   "Metabolism_of_Cofactors_and_Vitamins", "Energy_Metabolism")
      }
      
      if (cfg=="Before"){
        tmp <- x[ ,c(1:4)] %>% setNames(c(idx, "Reportscore"))
        
      } else {
        tmp <- x[ ,c(1:3, 5)] %>% setNames(c(idx, "Reportscore"))
      }
      
      dat <- tmp %>% filter(Level2 %in% level) %>% 
                   filter(Reportscore < -1.96 | Reportscore > 1.96)
      dat.z <- dat %>% select(c(idx, grep("score", colnames(dat)))) %>%
               setNames(c(idx, "ET_B vs ET_P")) %>%
               tidyr::gather(Group, Reporter, -idx) %>%
               mutate(newdir=ifelse(Reporter < 0, grp[2], grp[1])) %>%
               mutate(Group=factor(Group, 
                 levels = c("ET_B vs ET_P"))) 
      
      ord_aa <- dat.z %>% filter(Group %in% "ET_B vs ET_P") %>%
                arrange(Reporter, Level2) 
      
      dat.z$Description <- factor(dat.z$Description, levels = ord_aa$Description)
      dat.z$Level2 <- factor(dat.z$Level2, levels = level)
      dat.z$newdir <- factor(dat.z$newdir, levels=grp)  
      return(
        ggplot(dat.z, aes(y=Description, x=Reporter, color=newdir))+ 
        geom_segment(xend=0, aes(yend=Description), size=3)+
        geom_vline(xintercept = 0)+
        geom_vline(xintercept = c(-1.96,1.96), linetype="dashed", color="grey50")+
        facet_grid(Level2 ~ Group, scales = "free", space = "free_y")+
        theme_bw()+
        scale_color_manual(values = rev(grp.col),
                           labels = grp)+
        labs(x="Reporter score", y="")+
        scale_x_continuous(breaks=seq(-6, 6, 2),
                           limits=c(-6.1, 6.1))+
        theme(panel.grid.major = element_blank(),
              panel.grid.minor.x = element_blank(),
              legend.position = "NA",
              strip.text.y = element_blank(),
              axis.title = element_text(size=9, color="black", face="bold"),
              strip.text = element_text(size=10, color="black", face="bold"),
              axis.text = element_text(size=8, color="black"))
      )
    }
    
    # groups 
    ScoreVisuBP <- function(x, cfg, num=1){
      idx <- c("Pathway", "Level2", "Description")
      
      if (num==1) {
        level <- c("Amino_Acid_Metabolism","Carbohydrate_Metabolism",
                   "Energy_Metabolism", 
                   "Membrane_Transport","Xenobiotics_Biodegradation_and_Metabolism",
                   "Metabolism_of_Cofactors_and_Vitamins")
      } else {
        level <- c("Amino_Acid_Metabolism","Carbohydrate_Metabolism",
                   "PTS","Xenobiotics_Biodegradation_and_Metabolism",
                   "Membrane_Transport",
                   "Metabolism_of_Cofactors_and_Vitamins", "Energy_Metabolism")
      }
      
      if (cfg=="B"){
        tmp <- x[ ,c(1:4)] %>% setNames(c(idx, "Reportscore"))
        
      } else {
        tmp <- x[ ,c(1:3, 5)] %>% setNames(c(idx, "Reportscore"))
      }
      
      dat <- tmp %>% filter(Level2 %in% level) %>% 
                   filter(Reportscore < -1.96 | Reportscore > 1.96)
      dat.z <- dat %>% select(c(idx, grep("score", colnames(dat)))) %>%
               setNames(c(idx, "Baseline vs After")) %>%
               tidyr::gather(Group, Reporter, -idx) %>%
               mutate(newdir=ifelse(Reporter < 0, stg[1], stg[2])) %>%
               mutate(Group=factor(Group, 
                 levels = c("Baseline vs After"))) 
      
      ord_aa <- dat.z %>% filter(Group %in% "Baseline vs After") %>%
                arrange(Reporter, Level2) 
      
      dat.z$Description <- factor(dat.z$Description, levels = ord_aa$Description)
      dat.z$Level2 <- factor(dat.z$Level2, levels = level)
      dat.z$newdir <- factor(dat.z$newdir, levels=stg)
      return(
        ggplot(dat.z, aes(y=Description, x=Reporter, color=newdir))+ 
        geom_segment(aes(yend=Description),xend=0, size=3)+
        geom_vline(xintercept = 0)+
        geom_vline(xintercept = c(-1.96,1.96), linetype="dashed", color="grey50")+
        facet_grid(Level2 ~ Group, scales = "free", space = "free_y")+
        theme_bw()+
        labs(x="Reporter score",
             y="")+
        scale_x_continuous(breaks=seq(-6, 6, 2),
                           limits=c(-6.1, 6.1))+
        scale_color_manual(values = stg.col,
                           labels = stg)+  
        theme(panel.grid.major = element_blank(),
              panel.grid.minor.x = element_blank(),
              legend.position = "NA",
              strip.text.y = element_blank(),
              axis.title = element_text(size=9, color="black", face="bold"),
              strip.text = element_text(size=10, color="black", face="bold"),
              axis.text = element_text(size=8, color="black"))
      )
    }
    

    Run

    • Pathway in Stage
    ScoreVisuStage(stg.path, "Before", 1)
    
    • Pathway in Group
    ScoreVisuBP(bp.path, "B", 1)
    

    参考

    参考文章如引起任何侵权问题,可以与我联系,谢谢。

    相关文章

      网友评论

        本文标题:R可视化:组间微生物代谢通路

        本文链接:https://www.haomeiwen.com/subject/fbmnbltx.html