模仿的是 https://github.com/sk-sahu/sig-bio-shiny
基本功能是用户输入
gene idpvalueqvalue然后分别把
BPCCMF以表格输出,
汇总结果下载(压缩文件)go富集结果的dotplot代码代码中 cc和mf结果表格输出的逻辑没有写,和bp是完全一样的
library(shiny) ui<-navbarPage("Pomegranate", tabPanel("Gene Ontology", sidebarLayout(sidebarPanel(width=2, textAreaInput("text_area_list", label = "Please input protein id, one per line", height = "200px", width="180px", value="Pg00001nPg00002"), selectInput("id_type",label = "Input gene-id Type", selected = "ensembl", choices = c('ensembl','refseq','entrezid')), helpText("Please"), numericInput('pval_cutoff',label="pvalue-Cutoff", value = 1,min=0.001,max=1,step=0.001), numericInput("qval_cutoff",label="qvalue-Cutoff", value=1,min=0.001,max=1,step=0.001), actionButton('submit',label = 'Submit', icon=icon('angle-double-right')), tags$hr()), mainPanel(helpText("ABC"), downloadButton('download_plot',label = "Download results plot"), downloadButton('download_table',label="Download result table"), textOutput("gene_number_info"), tags$br(), tags$br(), tabsetPanel( tabPanel("Biological Process",DT::dataTableOutput(outputId="table_go_bp")), tabPanel("Cellular Component",DT::dataTableOutput(outputId = "table_go_cc")), tabPanel("Molecular Functions",DT::dataTableOutput(outputId = 'table_go_mf')), tabPanel("dotplot",plotOutput('dot_plot_go')) ))))) server<-function(input,output){ observeEvent(input$submit,{ withProgress(message = 'Steps:',value=0,{ incProgress(1/7,detail = "A") text_area_input<-input$text_area_list print(text_area_input) df<-as.data.frame(matrix(unlist(stringr::str_split(text_area_input,"n")),ncol=1)) colnames(df)<-"protein_id" print(dim(df)) input_gene_number<-dim(df)[1] output$gene_number_info<-renderText({ paste("Done!","Total Number of Input genes:",input_gene_number,sep="n") }) incProgress(2/7,detail = "B") library(clusterProfiler) enrichGO_res<-enrichGO(gene=df$protein_id, OrgDb = 'org.Hs.eg.db', ont="all", pvalueCutoff = input$pval_cutoff, qvalueCutoff = input$qval_cutoff) go_enricher_res<-enrichGO_res@result go_bp<-go_enricher_res[go_enricher_res$ONTOLOGY == "BP",] output$table_go_bp<-DT::renderDataTable({ go_bp }) incProgress(3/7,detail="plot") output$dot_plot_go<-renderPlot({ p1<-dotplot(enrichGO_res) print(p1) }) incProgress(4/7,detail = "OK") go_plot_download<-reactive({ dotplot(enrichGO_res) } ) output$download_plot<-downloadHandler( filename = function(){ paste("go_dot_plot.png",sep='') }, content = function(file){ ggplot2::ggsave(file,plot=go_plot_download(),device = 'png',width=12,height = 10) } ) output$download_table<-downloadHandler( filename = function(){ paste0("ABC.zip") }, content = function(file){ fs<-c('go_results.tsv') write.table(go_enricher_res,file="go_results.tsv",sep="t",row.names = F) zip(zipfile = file,files=fs) }, contentType = "application/zip" ) }) }) } shinyApp(ui,server)界面是这样子的image.png
用于做测试的 id (人)4312 8318 10874 55143 55388 991 6280 2305 9493 1062 3868 4605 9833 9133 6279 10403 8685 597 7153 23397 6278 79733 259266 1381 3627 27074 6241 55165 9787 7368 11065 55355 9582 220134 55872 51203 3669 83461 22974 10460 10563 4751 6373 8140 79019 820 10635 1844 4283 27299结果image.png
---来自腾讯云社区的---用户7010445
微信扫一扫打赏
支付宝扫一扫打赏