@@ -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
295302informative_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
335342if (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
441448name_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"))
504511A 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)
508515minimal_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
547554print( 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
0 commit comments