Skip to content

Commit

Permalink
Merge pull request #66 from biomage-org/subset-experiment-flag
Browse files Browse the repository at this point in the history
[BIOMAGE-2253] Subset experiment flag
  • Loading branch information
saracastel committed Dec 2, 2022
2 parents 7af27e0 + c54800b commit cafd783
Show file tree
Hide file tree
Showing 6 changed files with 45 additions and 12 deletions.
1 change: 1 addition & 0 deletions pipeline-runner/R/gem2s-5-create_seurat.R
Expand Up @@ -38,6 +38,7 @@ create_seurat <- function(input, pipeline_config, prev_out) {


prev_out$scdata_list <- scdata_list
prev_out$disable_qc_filters <- FALSE
res <- list(
data = list(),
output = prev_out
Expand Down
14 changes: 8 additions & 6 deletions pipeline-runner/R/gem2s-6-construct_qc_config.R
Expand Up @@ -6,15 +6,17 @@
#'
#' @param scdata_list list of seurat objects
#' @param any_filtered bool indicating if barcodes were filtered by emptyDrops
#' @param disable_qc_filters bool indicating if the data derives from the
#' subsetting of another experiment
#'
#' @return list of QC configuration parameters
#'
construct_qc_config <- function(scdata_list, any_filtered) {
construct_qc_config <- function(scdata_list, any_filtered, disable_qc_filters) {
samples <- names(scdata_list)

# classifier
classifier_config_to_duplicate <- list(
enabled = !any_filtered,
enabled = !any_filtered && !disable_qc_filters,
prefiltered = any_filtered,
auto = TRUE,
filterSettings = list(FDR = 0.01)
Expand All @@ -34,7 +36,7 @@ construct_qc_config <- function(scdata_list, any_filtered) {

# mito
default_mitochondrialContent_config <- list(
enabled = TRUE,
enabled = !disable_qc_filters,
auto = TRUE,
filterSettings = list(
method = "absoluteThreshold",
Expand All @@ -51,7 +53,7 @@ construct_qc_config <- function(scdata_list, any_filtered) {

# ngenes vs umis
default_numGenesVsNumUmis_config <- list(
enabled = TRUE,
enabled = !disable_qc_filters,
auto = TRUE,
filterSettings = list(
regressionType = "linear",
Expand All @@ -67,7 +69,7 @@ construct_qc_config <- function(scdata_list, any_filtered) {

# doublet scores
default_doubletScores_config <- list(
enabled = TRUE,
enabled = !disable_qc_filters,
auto = TRUE,
filterSettings = list(
probabilityThreshold = 0.5,
Expand Down Expand Up @@ -140,7 +142,7 @@ get_cellsize_config <- function(scdata_list, config) {

get_sample_mitochondrial_config <- function(scdata_list.sample, config) {
config.sample <- list(
enabled = TRUE,
enabled = config$enabled,
auto = TRUE,
filterSettings = list(
method = "absoluteThreshold",
Expand Down
5 changes: 3 additions & 2 deletions pipeline-runner/R/gem2s-6-prepare_experiment.R
Expand Up @@ -15,10 +15,11 @@
prepare_experiment <- function(input, pipeline_config, prev_out) {
message("Preparing experiment ...")

check_names <- c("config", "counts_list", "annot", "doublet_scores", "scdata_list")
check_names <- c("config", "counts_list", "annot", "doublet_scores", "scdata_list", "disable_qc_filters")
check_prev_out(prev_out, check_names)

scdata_list <- prev_out$scdata_list
disable_qc_filters <- prev_out$disable_qc_filters
samples <- names(scdata_list)

message("Total cells:", sum(sapply(scdata_list, ncol)))
Expand All @@ -29,7 +30,7 @@ prepare_experiment <- function(input, pipeline_config, prev_out) {
# construct default QC config and update prev out
message("Constructing default QC configuration...")
any_filtered <- !(length(prev_out$edrops) == length(samples))
prev_out$qc_config <- construct_qc_config(scdata_list, any_filtered)
prev_out$qc_config <- construct_qc_config(scdata_list, any_filtered, disable_qc_filters)

res <- list(
data = list(),
Expand Down
3 changes: 2 additions & 1 deletion pipeline-runner/R/gem2s-7-upload_to_aws.R
Expand Up @@ -10,7 +10,7 @@
#'
upload_to_aws <- function(input, pipeline_config, prev_out) {
message("Uploading to AWS ...")
check_names <- c("config", "counts_list", "annot", "doublet_scores", "scdata_list", "qc_config")
check_names <- c("config", "counts_list", "annot", "doublet_scores", "scdata_list", "qc_config", "disable_qc_filters")
check_prev_out(prev_out, check_names)

experiment_id <- input$experimentId
Expand All @@ -20,6 +20,7 @@ upload_to_aws <- function(input, pipeline_config, prev_out) {
scdata_list <- prev_out$scdata_list
config <- prev_out$config
qc_config <- prev_out$qc_config
disable_qc_filters <- prev_out$disable_qc_filters

message("Constructing cell sets ...")
cell_sets <- get_cell_sets(scdata_list, input)
Expand Down
31 changes: 29 additions & 2 deletions pipeline-runner/tests/testthat/test-gem2s-6-construct_qc_config.R
Expand Up @@ -26,7 +26,7 @@ mock_scdata_list <- function() {

test_that("cellsize filter is disabled by default and classifier is pre-filtered", {
scdata_list <- mock_scdata_list()
qc_config <- construct_qc_config(scdata_list, any_filtered = TRUE)
qc_config <- construct_qc_config(scdata_list, any_filtered = TRUE, disable_qc_filters = FALSE)

for (sample in names(scdata_list)) {
expect_false(qc_config$classifier[[sample]]$enabled)
Expand All @@ -38,7 +38,7 @@ test_that("cellsize filter is disabled by default and classifier is pre-filtered

test_that("cellsize filter is disabled by default and classifier is not pre-filtered", {
scdata_list <- mock_scdata_list()
qc_config <- construct_qc_config(scdata_list, any_filtered = FALSE)
qc_config <- construct_qc_config(scdata_list, any_filtered = FALSE, disable_qc_filters = FALSE)

for (sample in names(scdata_list)) {
expect_false(qc_config$cellSizeDistribution[[sample]]$enabled)
Expand All @@ -47,3 +47,30 @@ test_that("cellsize filter is disabled by default and classifier is not pre-filt
}
})


test_that("all filters are disabled when disable_qc_filters = TRUE and classifier is pre-filtered", {
scdata_list <- mock_scdata_list()
qc_config <- construct_qc_config(scdata_list, any_filtered = TRUE, disable_qc_filters = TRUE)

for (sample in names(scdata_list)) {
expect_false(qc_config$cellSizeDistribution[[sample]]$enabled)
expect_false(qc_config$mitochondrialContent[[sample]]$enabled)
expect_false(qc_config$classifier[[sample]]$enabled)
expect_false(qc_config$numGenesVsNumUmis[[sample]]$enabled)
expect_false(qc_config$doubletScores[[sample]]$enabled)
}
})


test_that("all filters are disabled when disable_qc_filters = TRUE and classifier is not pre-filtered", {
scdata_list <- mock_scdata_list()
qc_config <- construct_qc_config(scdata_list, any_filtered = FALSE, disable_qc_filters = TRUE)

for (sample in names(scdata_list)) {
expect_false(qc_config$cellSizeDistribution[[sample]]$enabled)
expect_false(qc_config$mitochondrialContent[[sample]]$enabled)
expect_false(qc_config$classifier[[sample]]$enabled)
expect_false(qc_config$numGenesVsNumUmis[[sample]]$enabled)
expect_false(qc_config$doubletScores[[sample]]$enabled)
}
})
3 changes: 2 additions & 1 deletion pipeline-runner/tests/testthat/test-gem2s-7-upload_to_aws.R
Expand Up @@ -231,7 +231,8 @@ test_that("upload_to_aws tries to upload the correct files to aws", {
annot = list(),
doublet_scores = list(),
scdata_list = scdata_list,
qc_config = list("mock_qc_config"))
qc_config = list("mock_qc_config"),
disable_qc_filters = FALSE)

res <- stubbed_upload_to_aws(input, pipeline_config, prev_out)

Expand Down

0 comments on commit cafd783

Please sign in to comment.