diff sleuth.R @ 1:d3e447dd52c8 draft

planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/sleuth commit 6fbf73689708cfbdf3d9d783af4988bad7137f93
author iuc
date Wed, 07 Jun 2023 11:47:30 +0000
parents 5f1cb4c28d73
children d6b5fc94062c
line wrap: on
line diff
--- a/sleuth.R	Thu Jun 01 07:56:00 2023 +0000
+++ b/sleuth.R	Wed Jun 07 11:47:30 2023 +0000
@@ -26,39 +26,67 @@
 # Collect arguments from command line
 parser <- ArgumentParser(description = "Sleuth R script")
 
-parser$add_argument("--factorLevel", action = "append", required = TRUE)
+parser$add_argument("--factorLevel", action = "append", required = FALSE)
 parser$add_argument("--factorLevel_counts",
                     action = "append",
-                    required = TRUE)
-parser$add_argument("--factorLevel_n", action = "append",  required = TRUE)
-parser$add_argument("--cores",  type = "integer", required = TRUE)
+                    required = FALSE)
+parser$add_argument("--factorLevel_n", action = "append",  required = FALSE)
+parser$add_argument("--cores",  type = "integer", required = FALSE)
 parser$add_argument("--normalize", action = "store_true", required = FALSE)
-parser$add_argument("--nbins", type = "integer", required = TRUE)
-parser$add_argument("--lwr", type = "numeric", required = TRUE)
-parser$add_argument("--upr", type = "numeric", required = TRUE)
+parser$add_argument("--nbins", type = "integer", required = FALSE)
+parser$add_argument("--lwr", type = "numeric", required = FALSE)
+parser$add_argument("--upr", type = "numeric", required = FALSE)
+parser$add_argument("--metadata_file",
+                    action = "append",
+                    required = FALSE)
+parser$add_argument("--experiment_design", required = FALSE)
 
 args <- parser$parse_args()
 
-all_files <- args$factorLevel_counts
+if (args$experiment_design == "complex") {
+  ## Complex experiment design
+  ############################
 
-conditions <- c()
-for (x in seq_along(args$factorLevel)) {
-  temp <- append(conditions, rep(args$factorLevel[[x]]))
-  conditions <- temp
-}
+  s2c  <-
+    read.table(file = args$metadata_file,
+               header = TRUE,
+               sep = "\t")
+  paths <- c()
+  for (x in s2c$data_filename) {
+    paths <- c(paths, paste("./kallisto_outputs/",  x, sep = ""))
+  }
+  for (f in paths) {
+    file.rename(f, gsub(".fastq.*", "", f))
+        file.rename(f, paste(gsub(".fastq.*", "", f), ".h5", sep = ""))
+  }
+  s2c$path <- paste(gsub(".fastq.*", ".h5", paths), ".h5", sep = "")
+
+  so <- sleuth_prep(s2c, full_model = ~ condition, num_cores = 1)
+  so <- sleuth_fit(so)
 
-sample_names <- all_files %>%
-  str_replace(pattern = "\\.tab", "")
+} else {
+  ## Simple experiment design
+  ###########################
+
+  conditions <- c()
+  for (x in seq_along(args$factorLevel)) {
+    temp <- append(conditions, rep(args$factorLevel[[x]]))
+    conditions <- temp
+  }
 
-design <-
-  data.frame(list(
-    sample = sample_names,
-    condition = conditions,
-    path = all_files
-  ))
-so <- sleuth_prep(design,
-                  cores = args$cores,
-                  normalize = args$normalize)
+  sample_names <-
+    gsub(".fastq.+", "", basename(args$factorLevel_counts))
+
+  design <-
+    data.frame(list(
+      sample = sample_names,
+      condition = conditions,
+      path = args$factorLevel_counts
+    ))
+  so <- sleuth_prep(design,
+                    cores = args$cores,
+                    normalize = args$normalize)
+}
 
 so <- sleuth_fit(
   so,