美文网首页
转录组分析---step1 counts分布检查

转录组分析---step1 counts分布检查

作者: 莎莉噢 | 来源:发表于2020-03-08 20:44 被阅读0次

    整理分享最近转录组下游分析用到的代码,包括差异基因、GO/KEGG富集、GSEA、GSVA和常用的作图,主要是在生信技能树Jimmy老师代码的基础上根据自己的习惯修改了一些,感谢Jimmy老师的海量资源和无私奉献,我的分享也是希望自己记录的同时能帮助到有需要的小伙伴。
    原始counts数据的检查,这一步主要是画各种图检查定量后样本counts分布,通过柱状图、小提琴图、PCA图多角度判断,数据的整体、组间、批次效应的情况。
    加载示例数据

    library(airway)
    data(airway)
    exprset <- assay(airway)
    group_list <- c(rep(‘tr’,4),rep('cont',4))
    

    数据变形

    me <- function(exprset,group){         ####melt expression####
      library(reshape2)
      exprsetl <- log2(exprset+1)          #####取log值归一化####
      exprsetl <- melt(exprsetl)
      colnames(exprsetl) <- c('probe','sample','value')
      exprsetl$group <- rep(group,each=nrow(exprset))
      return(exprsetl)
    }
    exprsetl <- me(exprset,group_list)
    

    柱状图等

    library(ggplot2)
    ggplot(exprsetl,aes(x=sample,y=value,fill=group))+geom_boxplot()
    #ggplot(exprsetl,aes(x=sample,y=value,fill=group))+geom_violin()
    ggplot(exprsetl,aes(value,col=group))+geom_density()
    ggplot(exprsetl,aes(value,col=sample))+geom_density()
    ggplot(exprsetl,aes(value,col=group))+geom_histogram()
    

    对比组间个别基因表达 如GAPDH等管家基因

    gene_boxplot <- function(exprn,gene){
      library(ggpubr)
      library(reshape2)
      exprt <- exprn[grep(gene,exprn$probe),]            ####前面取过log值######
      exprtg <- data.frame(exprt)
      rownames(exprtg) <- rownames(exprt)
      exprtg$group <- pd2$type
      colnames(exprtg)[1] <- gene
      ggboxplot(exprtg, x = "group", y = 'value',fill='group', 
                palette = "jco",color = 'black',
                add = "jitter") +
        stat_compare_means(method = 't.test')  + ggtitle('GAPDH')  ##加p值##
    }
    gene_boxplot(exprsetl,'GAPDH')  ###GAPDH####
    
    hcplot <- function(expr,group_list){
      exprt <- expr
      colnames(exprt) <- paste0(group_list,seq(1:ncol(exprt)),sep='')
      hc <- hclust(dist(t(exprt)))
      nodePar <- list(lab.cex=0.6,pch=c(NA,19),cex=1,col='blue')
      #plot(as.dendrogram(hc))
      plot(as.dendrogram(hc),nodePar=nodePar,horiz=T)
    }
    p <- hcplot(exprset,group_list)
    

    PCA 主成分分析,如检查批次或组别
    point PCA 简易版

    pcap <- function(expr,group_list){
      library(ggfortify)
      df <- as.data.frame(t(exprset))
      df$group <- as.character(group_list)
      autoplot(prcomp(df[,1:(ncol(df)-1)]),data=df,colour='group')
    }
    pcap(exprset,group_list)
    

    sample PCA 显示分组

    pcae <- function(expr,group_list,pdata){
      library("FactoMineR")
      library("factoextra")
      names(group_list) <- rownames(pdata)  ###or pdata$batch####
      df.pca <- PCA(t(exprset),graph = T)
      fviz_pca_ind(df.pca,addEllipses = T,col.ind =group_list)
      #fviz_pca_ind(df.pca,addEllipses = T,col.ind =factor(pdata$batch))
    }
    pcae(exprset,group_list,pdata)
    
    if(T){
      library(corrplot)
      library(pheatmap)
      corrplot(cor(log2(exprset+1))) 
      c <- cor(log2(exprset+1))                   
      pheatmap(scale(c))
      pheatmap(c,scale = 'none')
    }
    #######or filter top500 cpm#####
    if(T){
      library(pheatmap)
      exprset=exprset[apply(exprset,1, function(x) sum(x>1) > 1),] ##filter####
      dim(exprset)
      exprset=log(edgeR::cpm(exprset)+1)
      dim(exprset)
      exprset=exprset[names(sort(apply(exprset, 1,mad),decreasing = T)[1:500]),]
      dim(exprset)
      M=cor(log2(exprset+1))
      tmp=data.frame(g=group_list)
      rownames(tmp)=colnames(exprset)
      corf=pheatmap(M,annotation_col = tmp)
      exf=pheatmap(scale(cor(log2(exprset+1))))
      pic <- list(corf=corf,exf=exf)
    }
    

    相关文章

      网友评论

          本文标题:转录组分析---step1 counts分布检查

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