Skip to content

Commit 5834f5e

Browse files
committed
refact: change the column as grouping
1 parent 6605d67 commit 5834f5e

File tree

2 files changed

+16
-8
lines changed

2 files changed

+16
-8
lines changed

assets/differentialabundance_report.Rmd

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -285,11 +285,18 @@ if (! 'id' %in% colnames(contrasts)){
285285
contrasts$id <- apply(contrasts, 1, paste, collapse='_')
286286
}
287287
288+
# If 'variable' is empty, then use 'grouping' column
289+
contrasts$variable_or_grouping <- ifelse(
290+
is.na(contrasts$variable) | contrasts$variable == "",
291+
contrasts$grouping,
292+
contrasts$variable
293+
)
294+
288295
# Identify informative variables- those with a number of values greater than 1
289296
# but less than N, with N being the number of observations. Make sure contrast
290297
# variables are first in the list
291298
292-
informative_variables <- unique(c(contrasts$variable, chooseGroupingVariables(observations)))
299+
informative_variables <- unique(c(contrasts$variable_or_grouping, chooseGroupingVariables(observations)))
293300
294301
# Remove any informative variables that group observations the same way
295302
informative_variables <- informative_variables[ ! duplicated(lapply(structure(informative_variables, names= informative_variables), function(x) as.numeric(factor(observations[[x]], levels=unique(observations[[x]])))))]
@@ -333,7 +340,7 @@ informative_variables <- rownames(pca_vs_meta)[order(pca_vs_meta[,1])]
333340
334341
# Pick the variable used for coloring purposes etc
335342
if (params$exploratory_main_variable == 'contrasts'){
336-
main_grouping_variable <- contrasts$variable[1]
343+
main_grouping_variable <- contrasts$variable_or_grouping[1]
337344
}else if (params$exploratory_main_variable == 'auto_pca'){
338345
main_grouping_variable <- informative_variables[1]
339346
}else{
@@ -439,7 +446,7 @@ names(differential_results) <- differential_names
439446
# Function to make friendly contrast name from contrast components, including optional bits
440447
441448
name_contrast <- function(i){
442-
contrast_name <- paste(contrasts$target[i], 'versus', contrasts$reference[i], 'in', contrasts$variable[i])
449+
contrast_name <- paste(contrasts$target[i], 'versus', contrasts$reference[i], 'in', contrasts$variable_or_grouping[i])
443450
contrast_vals <- contrasts[i,]
444451
populated <- colnames(contrasts)[! (is.na(contrast_vals) | contrast_vals == '' | is.null(contrast_vals))]
445452
optional <- setdiff(populated, c('id', 'target', 'reference', 'variable'))
@@ -504,7 +511,7 @@ cat(paste0("\n## ", ucfirst(params$observations_type), "s\n"))
504511
A summary of `r params$observations_type` metadata is below:
505512

506513
```{r, echo=FALSE, results='asis'}
507-
display_columns <- union(c(params$observations_id_col, unique(contrasts$variable)), informative_variables)
514+
display_columns <- union(c(params$observations_id_col, unique(contrasts$variable_or_grouping)), informative_variables)
508515
minimal_fetchngs_cols <- c('sample', 'sample_title', 'strandedness', 'library_strategy', 'scientific_name')
509516
510517
# If the data came via fetchngs then we can infer a couple of things about the most useful columns
@@ -546,7 +553,7 @@ contrasts_to_print$model <- sapply(contrasts_to_print$Id, function(id) {
546553
547554
print( htmltools::tagList(datatable(contrasts_to_print, caption = paste0("Table of contrasts"), rownames = FALSE, options = list(dom = ifelse(nrow(contrasts_to_print) > 10, 'tp', 't'))) ))
548555
```
549-
Note: For formula-based contrasts without a 'variable', the column was automatically filled with `params$report_grouping_variable` to support grouping in plots and reports.
556+
Note: For formula-based contrasts without a 'variable', the column 'grouping' was automatically filled with `params$report_grouping_variable` to support grouping in plots and reports.
550557

551558
# Results
552559

workflows/differentialabundance.nf

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -796,16 +796,17 @@ workflow DIFFERENTIALABUNDANCE {
796796
.map { meta, row ->
797797
def variable = row.variable?.trim()
798798
if (!variable || variable == 'NA') {
799-
row.variable = params.report_grouping_variable
799+
row.grouping = (!variable || variable == 'NA') ? params.report_grouping_variable : ''
800800
}
801+
if (!row.containsKey('grouping')) row.grouping = ''
801802
[meta, row]
802803
}
803804
.groupTuple()
804805
.map { meta, rows ->
805-
def header = rows[0].keySet().join('\t')
806+
def header = (rows[0].keySet() + 'grouping').unique().join('\t')
806807
def lines = rows.collect { it.values().join('\t') }
807808
def content = ([header] + lines).join('\n')
808-
def outFile = file("${workflow.workDir}/${meta.id ?: meta.paramset_name}_contrast_variable_filled.tsv")
809+
def outFile = file("${workflow.workDir}/${meta.id ?: meta.paramset_name}_contrast_variable_grouping.tsv")
809810
outFile.text = content
810811
[meta, outFile]
811812
}

0 commit comments

Comments
 (0)