From 40bd1fd16f1537116692462053478dfcd1a5b59a Mon Sep 17 00:00:00 2001 From: jvfe Date: Tue, 18 Feb 2025 15:33:20 -0300 Subject: [PATCH 1/2] feat: Add subset flag to script --- bin/{seurat_subset.R => seurat_append_and_subset.R} | 8 +++++--- modules/local/helpers/subset/main.nf | 2 +- .../bin/{seurat_subset.R => seurat_append_and_subset.R} | 8 +++++--- 3 files changed, 11 insertions(+), 7 deletions(-) rename bin/{seurat_subset.R => seurat_append_and_subset.R} (88%) rename modules/local/helpers/subset/resources/usr/bin/{seurat_subset.R => seurat_append_and_subset.R} (88%) diff --git a/bin/seurat_subset.R b/bin/seurat_append_and_subset.R similarity index 88% rename from bin/seurat_subset.R rename to bin/seurat_append_and_subset.R index 7708aa5..9f576e0 100644 --- a/bin/seurat_subset.R +++ b/bin/seurat_append_and_subset.R @@ -16,7 +16,9 @@ option_list <- list( make_option(c("-m", "--metadata"), type = "character", help = "Metadata with cell status (TME/Malignant)", metavar = "character"), make_option(c("-o", "--outdir"), type = "character", default = './', - help = "Output directory path", metavar = "character") + help = "Output directory path", metavar = "character"), + make_option(c("-s", "--subset"), action = "store_true", default = FALSE, + help = "Whether to save a subset of the original object") ) opt_parser <- OptionParser(option_list = option_list) @@ -42,11 +44,11 @@ seurat_object <- Seurat::AddMetaData( seurat_object, metadata = metadata ) +if (opt$subset) { seurat_object <- subset( seurat_object, subset = cell_status == "TME" ) - -# +} saveRDS( seurat_object, file = file.path(opt$outdir, gsub(".RDS", "_filtered.RDS", basename(opt$file)))) diff --git a/modules/local/helpers/subset/main.nf b/modules/local/helpers/subset/main.nf index b51982b..9e10e20 100644 --- a/modules/local/helpers/subset/main.nf +++ b/modules/local/helpers/subset/main.nf @@ -18,7 +18,7 @@ process HELPER_SEURAT_SUBSET { script: """ - seurat_subset.R -f ${seurat_object} -m ${cell_malignancy} + seurat_append_and_subset.R -f ${seurat_object} -m ${cell_malignancy} --subset """ stub: """ diff --git a/modules/local/helpers/subset/resources/usr/bin/seurat_subset.R b/modules/local/helpers/subset/resources/usr/bin/seurat_append_and_subset.R similarity index 88% rename from modules/local/helpers/subset/resources/usr/bin/seurat_subset.R rename to modules/local/helpers/subset/resources/usr/bin/seurat_append_and_subset.R index 7708aa5..9f576e0 100755 --- a/modules/local/helpers/subset/resources/usr/bin/seurat_subset.R +++ b/modules/local/helpers/subset/resources/usr/bin/seurat_append_and_subset.R @@ -16,7 +16,9 @@ option_list <- list( make_option(c("-m", "--metadata"), type = "character", help = "Metadata with cell status (TME/Malignant)", metavar = "character"), make_option(c("-o", "--outdir"), type = "character", default = './', - help = "Output directory path", metavar = "character") + help = "Output directory path", metavar = "character"), + make_option(c("-s", "--subset"), action = "store_true", default = FALSE, + help = "Whether to save a subset of the original object") ) opt_parser <- OptionParser(option_list = option_list) @@ -42,11 +44,11 @@ seurat_object <- Seurat::AddMetaData( seurat_object, metadata = metadata ) +if (opt$subset) { seurat_object <- subset( seurat_object, subset = cell_status == "TME" ) - -# +} saveRDS( seurat_object, file = file.path(opt$outdir, gsub(".RDS", "_filtered.RDS", basename(opt$file)))) From 51481553fac8280ec958bf7704828a9860442852 Mon Sep 17 00:00:00 2001 From: jvfe Date: Tue, 18 Feb 2025 15:38:59 -0300 Subject: [PATCH 2/2] feat: Add draft append module --- modules/local/helpers/append/main.nf | 27 ++++++++++ modules/local/helpers/append/meta.yml | 1 + .../usr/bin/seurat_append_and_subset.R | 54 +++++++++++++++++++ 3 files changed, 82 insertions(+) create mode 100644 modules/local/helpers/append/main.nf create mode 100644 modules/local/helpers/append/meta.yml create mode 100755 modules/local/helpers/append/resources/usr/bin/seurat_append_and_subset.R diff --git a/modules/local/helpers/append/main.nf b/modules/local/helpers/append/main.nf new file mode 100644 index 0000000..a73bf8a --- /dev/null +++ b/modules/local/helpers/append/main.nf @@ -0,0 +1,27 @@ + +process HELPER_SEURAT_APPEND { + tag "Adding metadata" + label 'process_medium' + container 'oandrefonseca/scratch-annotation:main' + publishDir "${params.outdir}/data/${task.process}", mode: 'copy', overwrite: true + + input: + path seurat_object + path metadata + + output: + path ("${seurat_object.baseName}_filtered.RDS"), emit: project_rds + + when: + task.ext.when == null || task.ext.when + + script: + """ + seurat_append_and_subset.R -f ${seurat_object} -m ${metadata} + """ + + stub: + """ + touch ${seurat_object.baseName}_filtered.RDS + """ +} diff --git a/modules/local/helpers/append/meta.yml b/modules/local/helpers/append/meta.yml new file mode 100644 index 0000000..00231c8 --- /dev/null +++ b/modules/local/helpers/append/meta.yml @@ -0,0 +1 @@ +// TO BE DONE \ No newline at end of file diff --git a/modules/local/helpers/append/resources/usr/bin/seurat_append_and_subset.R b/modules/local/helpers/append/resources/usr/bin/seurat_append_and_subset.R new file mode 100755 index 0000000..9f576e0 --- /dev/null +++ b/modules/local/helpers/append/resources/usr/bin/seurat_append_and_subset.R @@ -0,0 +1,54 @@ +#!/usr/bin/env Rscript + +library(Seurat) +library(dplyr) +library(readr) +library(tibble) +library(optparse) + +#Sys.setenv(KMP_DUPLICATE_LIB_OK = "TRUE") + +# + +option_list <- list( + make_option(c("-f", "--file"), type = "character", default = NULL, + help = "Input dump name", metavar = "character"), + make_option(c("-m", "--metadata"), type = "character", + help = "Metadata with cell status (TME/Malignant)", metavar = "character"), + make_option(c("-o", "--outdir"), type = "character", default = './', + help = "Output directory path", metavar = "character"), + make_option(c("-s", "--subset"), action = "store_true", default = FALSE, + help = "Whether to save a subset of the original object") +) + +opt_parser <- OptionParser(option_list = option_list) +opt <- parse_args(opt_parser) + +# + +if (length(opt) == 3) { + print_help(opt_parser) + stop("At least one argument must be supplied (input file).n", call. = FALSE) +} + +# + +seurat_object <- readRDS(file = opt$file) +metadata <- readr::read_csv(opt$metadata) + +metadata <- metadata %>% + tibble::column_to_rownames(var = "barcode") %>% + as.data.frame() + +seurat_object <- Seurat::AddMetaData( + seurat_object, metadata = metadata + ) + +if (opt$subset) { +seurat_object <- subset( + seurat_object, subset = cell_status == "TME" +) +} + +saveRDS( + seurat_object, file = file.path(opt$outdir, gsub(".RDS", "_filtered.RDS", basename(opt$file))))