diff --git a/qhtcp-workflow/apps/r/calculate_interaction_zscores.R b/qhtcp-workflow/apps/r/calculate_interaction_zscores.R index aba05ad2..c1bf42e0 100644 --- a/qhtcp-workflow/apps/r/calculate_interaction_zscores.R +++ b/qhtcp-workflow/apps/r/calculate_interaction_zscores.R @@ -461,7 +461,7 @@ generate_scatter_plot <- function(plot, config, interactive = FALSE) { aes_params, shape = config$shape %||% 3, size = config$size %||% 0.2, position = if (!is.null(config$position) && config$position == "jitter") "jitter" else "identity") - + # Add smooth line if specified if (!is.null(config$add_smooth) && config$add_smooth) { plot <- if (!is.null(config$lm_line)) { @@ -471,6 +471,16 @@ generate_scatter_plot <- function(plot, config, interactive = FALSE) { } } + # Add error bars if specified + if (!is.null(config$error_bar) && config$error_bar) { + y_mean_col <- paste0("mean_", config$y_var) + y_sd_col <- paste0("sd_", config$y_var) + plot <- plot + geom_errorbar(aes( + ymin = !!sym(y_mean_col) - !!sym(y_sd_col), + ymax = !!sym(y_mean_col) + !!sym(y_sd_col) + ), alpha = 0.3) + } + # Add x-axis customization if specified if (!is.null(config$x_breaks) && !is.null(config$x_labels) && !is.null(config$x_label)) { plot <- plot + scale_x_continuous( @@ -615,10 +625,7 @@ generate_interaction_plot_configs <- function(df, variables) { ylim_vals = var_info$ylim, annotations = annotations, lm_line = lm_line, # Precomputed linear model - error_bar = list( - ymin = 0 - (2 * df[[var_info$sd_col]][1]), - ymax = 0 + (2 * df[[var_info$sd_col]][1]) - ), + error_bar = TRUE, x_breaks = unique(df$conc_num_factor), x_labels = unique(as.character(df$conc_num)), x_label = unique(df$Drug[1]), @@ -637,7 +644,7 @@ generate_interaction_plot_configs <- function(df, variables) { title = sprintf("%s %s (Boxplot)", df$OrfRep[1], df$Gene[1]), ylim_vals = var_info$ylim, annotations = annotations, - error_bar = FALSE, # Boxplots typically don't need error bars + error_bar = FALSE, x_breaks = unique(df$conc_num_factor), x_labels = unique(as.character(df$conc_num)), x_label = unique(df$Drug[1]),