annotate phyloseq_plot_bar.R @ 0:5ce47c1b1499 draft

planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/phyloseq commit d905841a8c8eff6a2006492ef52b31f969e8206a
author iuc
date Tue, 07 Jan 2025 17:58:24 +0000
parents
children e51700388188
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
5ce47c1b1499 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/phyloseq commit d905841a8c8eff6a2006492ef52b31f969e8206a
iuc
parents:
diff changeset
1 #!/usr/bin/env Rscript
5ce47c1b1499 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/phyloseq commit d905841a8c8eff6a2006492ef52b31f969e8206a
iuc
parents:
diff changeset
2
5ce47c1b1499 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/phyloseq commit d905841a8c8eff6a2006492ef52b31f969e8206a
iuc
parents:
diff changeset
3 # Load libraries
5ce47c1b1499 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/phyloseq commit d905841a8c8eff6a2006492ef52b31f969e8206a
iuc
parents:
diff changeset
4 suppressPackageStartupMessages(library("optparse"))
5ce47c1b1499 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/phyloseq commit d905841a8c8eff6a2006492ef52b31f969e8206a
iuc
parents:
diff changeset
5 suppressPackageStartupMessages(library("phyloseq"))
5ce47c1b1499 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/phyloseq commit d905841a8c8eff6a2006492ef52b31f969e8206a
iuc
parents:
diff changeset
6 suppressPackageStartupMessages(library("ggplot2"))
5ce47c1b1499 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/phyloseq commit d905841a8c8eff6a2006492ef52b31f969e8206a
iuc
parents:
diff changeset
7
5ce47c1b1499 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/phyloseq commit d905841a8c8eff6a2006492ef52b31f969e8206a
iuc
parents:
diff changeset
8 # Define options
5ce47c1b1499 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/phyloseq commit d905841a8c8eff6a2006492ef52b31f969e8206a
iuc
parents:
diff changeset
9 option_list <- list(
5ce47c1b1499 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/phyloseq commit d905841a8c8eff6a2006492ef52b31f969e8206a
iuc
parents:
diff changeset
10 make_option(c("--input"),
5ce47c1b1499 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/phyloseq commit d905841a8c8eff6a2006492ef52b31f969e8206a
iuc
parents:
diff changeset
11 action = "store", dest = "input",
5ce47c1b1499 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/phyloseq commit d905841a8c8eff6a2006492ef52b31f969e8206a
iuc
parents:
diff changeset
12 help = "Input file containing a phyloseq object"
5ce47c1b1499 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/phyloseq commit d905841a8c8eff6a2006492ef52b31f969e8206a
iuc
parents:
diff changeset
13 ),
5ce47c1b1499 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/phyloseq commit d905841a8c8eff6a2006492ef52b31f969e8206a
iuc
parents:
diff changeset
14 make_option(c("--x"),
5ce47c1b1499 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/phyloseq commit d905841a8c8eff6a2006492ef52b31f969e8206a
iuc
parents:
diff changeset
15 action = "store", dest = "x",
5ce47c1b1499 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/phyloseq commit d905841a8c8eff6a2006492ef52b31f969e8206a
iuc
parents:
diff changeset
16 help = "Variable for x-axis (e.g., 'Sample', 'Phylum')"
5ce47c1b1499 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/phyloseq commit d905841a8c8eff6a2006492ef52b31f969e8206a
iuc
parents:
diff changeset
17 ),
5ce47c1b1499 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/phyloseq commit d905841a8c8eff6a2006492ef52b31f969e8206a
iuc
parents:
diff changeset
18 make_option(c("--fill"),
5ce47c1b1499 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/phyloseq commit d905841a8c8eff6a2006492ef52b31f969e8206a
iuc
parents:
diff changeset
19 action = "store", dest = "fill", default = NULL,
5ce47c1b1499 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/phyloseq commit d905841a8c8eff6a2006492ef52b31f969e8206a
iuc
parents:
diff changeset
20 help = "Variable for fill color (e.g., 'Genus', 'Order') (optional)"
5ce47c1b1499 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/phyloseq commit d905841a8c8eff6a2006492ef52b31f969e8206a
iuc
parents:
diff changeset
21 ),
5ce47c1b1499 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/phyloseq commit d905841a8c8eff6a2006492ef52b31f969e8206a
iuc
parents:
diff changeset
22 make_option(c("--facet"),
5ce47c1b1499 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/phyloseq commit d905841a8c8eff6a2006492ef52b31f969e8206a
iuc
parents:
diff changeset
23 action = "store", dest = "facet", default = NULL,
5ce47c1b1499 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/phyloseq commit d905841a8c8eff6a2006492ef52b31f969e8206a
iuc
parents:
diff changeset
24 help = "Facet by variable (optional)"
5ce47c1b1499 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/phyloseq commit d905841a8c8eff6a2006492ef52b31f969e8206a
iuc
parents:
diff changeset
25 ),
5ce47c1b1499 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/phyloseq commit d905841a8c8eff6a2006492ef52b31f969e8206a
iuc
parents:
diff changeset
26 make_option(c("--output"),
5ce47c1b1499 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/phyloseq commit d905841a8c8eff6a2006492ef52b31f969e8206a
iuc
parents:
diff changeset
27 action = "store", dest = "output",
5ce47c1b1499 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/phyloseq commit d905841a8c8eff6a2006492ef52b31f969e8206a
iuc
parents:
diff changeset
28 help = "Output file (PDF)"
5ce47c1b1499 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/phyloseq commit d905841a8c8eff6a2006492ef52b31f969e8206a
iuc
parents:
diff changeset
29 )
5ce47c1b1499 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/phyloseq commit d905841a8c8eff6a2006492ef52b31f969e8206a
iuc
parents:
diff changeset
30 )
5ce47c1b1499 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/phyloseq commit d905841a8c8eff6a2006492ef52b31f969e8206a
iuc
parents:
diff changeset
31
5ce47c1b1499 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/phyloseq commit d905841a8c8eff6a2006492ef52b31f969e8206a
iuc
parents:
diff changeset
32 # Parse arguments
5ce47c1b1499 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/phyloseq commit d905841a8c8eff6a2006492ef52b31f969e8206a
iuc
parents:
diff changeset
33 parser <- OptionParser(usage = "%prog [options] file", option_list = option_list)
5ce47c1b1499 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/phyloseq commit d905841a8c8eff6a2006492ef52b31f969e8206a
iuc
parents:
diff changeset
34 args <- parse_args(parser, positional_arguments = TRUE)
5ce47c1b1499 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/phyloseq commit d905841a8c8eff6a2006492ef52b31f969e8206a
iuc
parents:
diff changeset
35 opt <- args$options
5ce47c1b1499 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/phyloseq commit d905841a8c8eff6a2006492ef52b31f969e8206a
iuc
parents:
diff changeset
36
5ce47c1b1499 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/phyloseq commit d905841a8c8eff6a2006492ef52b31f969e8206a
iuc
parents:
diff changeset
37 # Validate required options
5ce47c1b1499 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/phyloseq commit d905841a8c8eff6a2006492ef52b31f969e8206a
iuc
parents:
diff changeset
38 if (is.null(opt$input) || opt$input == "") {
5ce47c1b1499 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/phyloseq commit d905841a8c8eff6a2006492ef52b31f969e8206a
iuc
parents:
diff changeset
39 stop("Error: Input file is required.")
5ce47c1b1499 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/phyloseq commit d905841a8c8eff6a2006492ef52b31f969e8206a
iuc
parents:
diff changeset
40 }
5ce47c1b1499 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/phyloseq commit d905841a8c8eff6a2006492ef52b31f969e8206a
iuc
parents:
diff changeset
41 if (is.null(opt$x) || opt$x == "") {
5ce47c1b1499 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/phyloseq commit d905841a8c8eff6a2006492ef52b31f969e8206a
iuc
parents:
diff changeset
42 stop("Error: X-axis variable is required.")
5ce47c1b1499 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/phyloseq commit d905841a8c8eff6a2006492ef52b31f969e8206a
iuc
parents:
diff changeset
43 }
5ce47c1b1499 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/phyloseq commit d905841a8c8eff6a2006492ef52b31f969e8206a
iuc
parents:
diff changeset
44 if (is.null(opt$output) || opt$output == "") {
5ce47c1b1499 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/phyloseq commit d905841a8c8eff6a2006492ef52b31f969e8206a
iuc
parents:
diff changeset
45 stop("Error: Output file is required.")
5ce47c1b1499 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/phyloseq commit d905841a8c8eff6a2006492ef52b31f969e8206a
iuc
parents:
diff changeset
46 }
5ce47c1b1499 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/phyloseq commit d905841a8c8eff6a2006492ef52b31f969e8206a
iuc
parents:
diff changeset
47
5ce47c1b1499 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/phyloseq commit d905841a8c8eff6a2006492ef52b31f969e8206a
iuc
parents:
diff changeset
48 # Load phyloseq object
5ce47c1b1499 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/phyloseq commit d905841a8c8eff6a2006492ef52b31f969e8206a
iuc
parents:
diff changeset
49 print(paste("Trying to read:", opt$input))
5ce47c1b1499 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/phyloseq commit d905841a8c8eff6a2006492ef52b31f969e8206a
iuc
parents:
diff changeset
50 physeq <- readRDS(opt$input)
5ce47c1b1499 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/phyloseq commit d905841a8c8eff6a2006492ef52b31f969e8206a
iuc
parents:
diff changeset
51
5ce47c1b1499 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/phyloseq commit d905841a8c8eff6a2006492ef52b31f969e8206a
iuc
parents:
diff changeset
52 # Check if the 'x' and 'fill' variables are valid
5ce47c1b1499 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/phyloseq commit d905841a8c8eff6a2006492ef52b31f969e8206a
iuc
parents:
diff changeset
53 sample_vars <- colnames(sample_data(physeq))
5ce47c1b1499 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/phyloseq commit d905841a8c8eff6a2006492ef52b31f969e8206a
iuc
parents:
diff changeset
54 if (!opt$x %in% sample_vars) {
5ce47c1b1499 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/phyloseq commit d905841a8c8eff6a2006492ef52b31f969e8206a
iuc
parents:
diff changeset
55 stop(paste("Error: X-axis variable", opt$x, "does not exist in the sample data."))
5ce47c1b1499 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/phyloseq commit d905841a8c8eff6a2006492ef52b31f969e8206a
iuc
parents:
diff changeset
56 }
5ce47c1b1499 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/phyloseq commit d905841a8c8eff6a2006492ef52b31f969e8206a
iuc
parents:
diff changeset
57
5ce47c1b1499 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/phyloseq commit d905841a8c8eff6a2006492ef52b31f969e8206a
iuc
parents:
diff changeset
58 # Generate bar plot
5ce47c1b1499 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/phyloseq commit d905841a8c8eff6a2006492ef52b31f969e8206a
iuc
parents:
diff changeset
59 p <- plot_bar(physeq, x = opt$x, fill = opt$fill)
5ce47c1b1499 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/phyloseq commit d905841a8c8eff6a2006492ef52b31f969e8206a
iuc
parents:
diff changeset
60
5ce47c1b1499 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/phyloseq commit d905841a8c8eff6a2006492ef52b31f969e8206a
iuc
parents:
diff changeset
61 # Only facet if the facet variable is provided and exists in the sample data
5ce47c1b1499 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/phyloseq commit d905841a8c8eff6a2006492ef52b31f969e8206a
iuc
parents:
diff changeset
62 if (!is.null(opt$facet) && opt$facet != "") {
5ce47c1b1499 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/phyloseq commit d905841a8c8eff6a2006492ef52b31f969e8206a
iuc
parents:
diff changeset
63 if (opt$facet %in% sample_vars) {
5ce47c1b1499 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/phyloseq commit d905841a8c8eff6a2006492ef52b31f969e8206a
iuc
parents:
diff changeset
64 p <- p + facet_wrap(as.formula(paste("~", opt$facet)))
5ce47c1b1499 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/phyloseq commit d905841a8c8eff6a2006492ef52b31f969e8206a
iuc
parents:
diff changeset
65 } else {
5ce47c1b1499 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/phyloseq commit d905841a8c8eff6a2006492ef52b31f969e8206a
iuc
parents:
diff changeset
66 warning(paste("Facet variable", opt$facet, "does not exist in the sample data. Faceting will be skipped."))
5ce47c1b1499 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/phyloseq commit d905841a8c8eff6a2006492ef52b31f969e8206a
iuc
parents:
diff changeset
67 }
5ce47c1b1499 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/phyloseq commit d905841a8c8eff6a2006492ef52b31f969e8206a
iuc
parents:
diff changeset
68 }
5ce47c1b1499 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/phyloseq commit d905841a8c8eff6a2006492ef52b31f969e8206a
iuc
parents:
diff changeset
69
5ce47c1b1499 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/phyloseq commit d905841a8c8eff6a2006492ef52b31f969e8206a
iuc
parents:
diff changeset
70 # Save to output file using PDF device
5ce47c1b1499 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/phyloseq commit d905841a8c8eff6a2006492ef52b31f969e8206a
iuc
parents:
diff changeset
71 print(paste("Saving plot to:", opt$output))
5ce47c1b1499 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/phyloseq commit d905841a8c8eff6a2006492ef52b31f969e8206a
iuc
parents:
diff changeset
72 pdf(file = opt$output, width = 10, height = 8)
5ce47c1b1499 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/phyloseq commit d905841a8c8eff6a2006492ef52b31f969e8206a
iuc
parents:
diff changeset
73 print(p)
5ce47c1b1499 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/phyloseq commit d905841a8c8eff6a2006492ef52b31f969e8206a
iuc
parents:
diff changeset
74 dev.off()