From 71d1f93e67571a46a5a49f05e0bf21db89d37357 Mon Sep 17 00:00:00 2001
From: Cedric Midoux <cedric.midoux@inra.fr>
Date: Thu, 13 Sep 2018 15:29:39 +0200
Subject: [PATCH] richnessBScript

---
 server.R | 67 ++++++++++++++++++++++++++++++++++++++++++++++++--------
 1 file changed, 58 insertions(+), 9 deletions(-)

diff --git a/server.R b/server.R
index 1b68bbd..790eb91 100644
--- a/server.R
+++ b/server.R
@@ -578,13 +578,8 @@ shinyServer
     script <- c(script, "", "# Tables")
     script <- c(
       script,
-      glue(
-        "t <- estimate_richness({glue_collapse(c(\"data\", measures), sep=', ')})"
-      )
-    )
-    script <-
-      c(script,
-        "write.table(t, file = \"richness.tsv\", sep = \"\\t\", col.names = NA)")
+      glue("t <- estimate_richness({glue_collapse(c(\"data\", measures), sep=', ')})"),
+      "write.table(t, file = \"richness.tsv\", sep = \"\\t\", col.names = NA)")
     
     return(glue_collapse(script, sep = "\n"))
   })
@@ -632,10 +627,64 @@ shinyServer
       ),
       textInput("richnessBTitle",
                 label = "Title : ",
-                value = "Beta diversity heatmap")
+                value = "Beta diversity heatmap"),
+      collapsedBox(verbatimTextOutput("richnessBScript"), title = "RCode")
     )
   })
   
+  output$richnessBScript <- renderText({
+    script <- c(
+      scriptHead,
+      "# Plot heatmap of beta diversity",
+      glue(
+        "beta <- melt(as(distance(data, method = \"{input$richnessBDist}\"), \"matrix\"))"
+      ),
+      "colnames(beta) <- c(\"x\", \"y\", \"distance\")"
+    )
+    if (!is.null(checkNull(input$richnessBOrder))) {
+      script <- c(
+        script,
+        glue(
+          "new_factor = as.factor(get_variable(data, \"{input$richnessBOrder}\"))"
+        ),
+        glue(
+          "variable_sort <- as.factor(get_variable(data, \"{input$richnessBOrder}\")[order(new_factor)])"
+        ),
+        "L = levels(reorder(sample_names(data), as.numeric(new_factor)))",
+        "beta$x <- factor(beta$x, levels = L)",
+        "beta$y <- factor(beta$y, levels = L)",
+        "palette <- hue_pal()(length(levels(new_factor)))",
+        "tipColor <- col_factor(palette, levels = levels(new_factor))(variable_sort)"
+      )
+    } else {
+      script <- c(script, "tipColor <- NULL")
+    }
+    script <-
+      c(script,
+        "",
+        "p1 <- ggplot(beta, aes(x = x, y = y, fill = distance))",
+        "p1 <- p1 + geom_tile()")
+    if (!is.null(checkNull(input$richnessBTitle))) {
+      script <- c(script,
+                  glue("p1 <- p1 + ggtitle(\"{input$richnessBTitle}\")"))
+    }
+    script <- c(
+      script,
+      glue(
+        "p1 <- p1 + theme(axis.text.x = element_text(angle = 90, hjust = 1, color = tipColor), axis.text.y = element_text(color = tipColor), axis.title.x = element_blank(), axis.title.y = element_blank())"
+      )
+    )
+    script <- c(script, "", "plot(p1 + scale_fill_gradient2())")
+    script <- c(script, "", "# Tables")
+    script <- c(
+      script,
+      glue("t <- distance(data, method = \"{input$richnessBDist}\")"),
+      "write.table(t, file = \"distance.tsv\", sep = \"\\t\", col.names = NA)"
+    )
+    
+    return(glue_collapse(script, sep = "\n"))
+  })
+  
   output$richnessB <- renderPlot({
     validate(need(data16S(),
                   "Requires an abundance dataset"))
@@ -816,7 +865,7 @@ shinyServer
     }
     script <- c(
       scriptHead,
-      "# Plot filtered barplot",
+      "# Plot rarefaction curves",
       glue("p <- ggrare({glue_collapse(scriptArgs, sep=', ')})")
     )
     if (!is.null(checkNull(input$rarefactionGrid))) {
-- 
GitLab