### Author: Franck Soubès ### Bioinformatics Master Degree - University of Bordeaux, France ### Link: https://github.com/GeT-TRiX/MA_Trix_App/ ### Where: GET-TRiX's facility ### Application: MATRiX is a shiny application for Mining and functional Analysis of TRanscriptomics data ### Licence: GPL-3.0 #' myreorderwk is a reactive function that sort the workingset by names #' #' @param csvf a list of reactive dataframes #' #' @return A reactive sorted dataframe #' #' @export myreorderwk <- reactive({ req(csvf()) wkingsetclean <- csvf()[[1]] samplesgroup <- factor(csvf()[[2]]$Grp) # samplesnum <- parse_number(as.character(csvf()[[2]]$X)) samplesnum <- as.character(csvf()[[2]]$X) message("samplesnum: ",samplesnum) #if(any(duplicated(samplesnum))) samplesnum <- as.character(csvf()[[2]]$X) colnames(wkingsetclean)[-1] <- paste(samplesgroup, samplesnum , sep = ".") wkingsetclean$GeneName <- csvf()[[3]]$GeneName return(wkingsetclean) }) #' filenamestrip is a reactive function that return a character #' #' @param projectname a character vector (project MA0xxx or date) #' #' @return A reactive character #' #' @export filenamestrip <- reactive({ req(projectname()) return( paste0( basename(tools::file_path_sans_ext(projectname())), '_strip_chart', sep = '' )) }) #' filterwkingset is a reactive function that return a character #' #' @param projectname a character vector (project MA0xxx or date) #' #' @return A reactive character #' #' @export filterwkingset <- reactive({ req(myreorderwk()) # myreorderwk() %>% select(dataid() ,GeneName, sort(names(.[-1]))) %>% slice(., getDegenestrip()[[1]]) %>% mutate_if(is.numeric, funs(format(., digits = 3))) myreorderwk() %>% select(dataid() ,GeneName, sort(names(.[-1]))) %>% slice(., getDegenestrip()[[1]]) %>% mutate_if(is.numeric, list(~format(., digits = 3))) }) selectedrow <- callModule(stylishTables, "orderedwk", data = filterwkingset , lengthpage= c('5', '10', '15'), pageLength=10, scrollX = T, scrollY=T, dom = 'Bfrtip', filter = c("none"), extensions = 'Buttons', ordering= TRUE, server = TRUE, list( list(extend = 'csv', filename = filenamestrip()[1]), list(extend = 'pdf', filename = filenamestrip()[1], title = "My Title", header = FALSE) ), selection = 'single', case = 2 ) ##selectedrow <- callModule(stylishTables, "orderedwk", data = filterwkingset , ## scrollX = TRUE, ## pageLength = 150, ## scrollY=550, ## stateSave = T, ## dom = 'Bfrtip', ## server = F , ## buttons = list( ## list(extend = 'csv', ## filename = filenamestrip()[1]), ## list(extend = 'pdf', ## filename = filenamestrip()[1], ## title = "My Title", ## header = FALSE) ## ), ## selection = 'single', case = 2 ) getDegenestrip <- callModule(getDegenes, "degstrip", data = subsetstat , meth = reactive(input$decidemethodstrip), case = 1 , maxDe = reactive(NULL) ) #' callstripgenes is a reactive function that plot distribution of a specific gene for all samples #' #' @param filterwkingset A reactive character #' @param selectedrow A character vector #' #' @return a ggplot object #' #' @export callstripgenes <- reactive({ validate(need(selectedrow(), 'Search your gene and select the corresponding row')) req(filterwkingset()) message("colnames(filterwkingset()[-(1:2)]): ",colnames(filterwkingset()[-(1:2)])) # grps <- gsub("[.][0-9]*","",colnames(filterwkingset()[-(1:2)]), perl=T) grps <- gsub("[.].*","",colnames(filterwkingset()[-(1:2)])) message("grps: ",grps) ggp=ggstrip_groups(grps=grps , wSet= filterwkingset() , probesID= selectedrow() ) }) output$renderstripgenes <- renderPlot({ req(callstripgenes()) plotOutput(callstripgenes()) }) callModule(downoutputfiles, "savestrip", projectname = projectname , suffix=paste0( '_', selectedstripgene(), "_strip_chart.", sep='' ), data = callstripgenes , w =16, h = 7 ) #' selectedstripgene is a reactive function that return the genename selected #' #' @param filterwkingset A reactive character #' @param selectedrow A character vector #' #' @return A reactive character value #' #' @export selectedstripgene <- reactive({ req(selectedrow()) return(filterwkingset()[selectedrow(),"GeneName"] ) }) output$selected_stripgene <- renderText({ paste("You have selected", selectedstripgene(), "gene.") })