Create rank plots by SD band

This commit is contained in:
2024-09-15 21:07:50 -04:00
parent e00df4be45
commit 534c570335

View File

@@ -707,7 +707,8 @@ generate_interaction_plot_configs <- function(df, variables) {
)) ))
} }
generate_rank_plot_configs <- function(df, interaction_vars, rank_vars, is_lm = FALSE) { generate_rank_plot_configs <- function(df, interaction_vars, rank_vars = c("L", "K"), is_lm = FALSE) {
# Adjust missing values and compute ranks for each interaction variable # Adjust missing values and compute ranks for each interaction variable
for (var in interaction_vars) { for (var in interaction_vars) {
avg_zscore_col <- paste0("Avg_Zscore_", var) avg_zscore_col <- paste0("Avg_Zscore_", var)
@@ -731,7 +732,7 @@ generate_rank_plot_configs <- function(df, interaction_vars, rank_vars, is_lm =
# Initialize list to store plot configurations # Initialize list to store plot configurations
configs <- list() configs <- list()
# Generate plot configurations for rank variables # Generate plot configurations for rank variables (L and K) with sd bands
for (var in rank_vars) { for (var in rank_vars) {
if (is_lm) { if (is_lm) {
rank_var <- paste0("Rank_lm_", var) rank_var <- paste0("Rank_lm_", var)
@@ -743,48 +744,45 @@ generate_rank_plot_configs <- function(df, interaction_vars, rank_vars, is_lm =
plot_title_prefix <- "Average Z score vs. Rank for" plot_title_prefix <- "Average Z score vs. Rank for"
} }
enhancers_count <- nrow(df[df[[zscore_var]] >= 1, ]) # Create plot configurations for each SD band
suppressors_count <- nrow(df[df[[zscore_var]] <= -1, ]) for (sd_band in c(1, 2, 3)) {
# Annotated version
configs[[length(configs) + 1]] <- list(
df = df,
x_var = rank_var,
y_var = zscore_var,
plot_type = "scatter",
title = paste(plot_title_prefix, var, "above", sd_band, "SD"),
sd_band = sd_band,
enhancer_label = list(
x = nrow(df) / 2,
y = 10,
label = paste("Deletion Enhancers =", nrow(df[df[[zscore_var]] >= sd_band, ]))
),
suppressor_label = list(
x = nrow(df) / 2,
y = -10,
label = paste("Deletion Suppressors =", nrow(df[df[[zscore_var]] <= -sd_band, ]))
),
shape = 3,
size = 0.1
)
# Create Annotated Plot Configuration for rank variables # Non-annotated version (_notext)
config_annotated <- list( configs[[length(configs) + 1]] <- list(
df = df, df = df,
x_var = rank_var, x_var = rank_var,
y_var = zscore_var, y_var = zscore_var,
plot_type = "scatter", plot_type = "scatter",
title = paste(plot_title_prefix, var, "Rank Plot"), title = paste(plot_title_prefix, var, "above", sd_band, "SD No Annotations"),
sd_band = c(1, 2, 3), sd_band = sd_band,
enhancer_label = list( enhancer_label = NULL,
x = nrow(df) / 2, suppressor_label = NULL,
y = 10, shape = 3,
label = paste("Deletion Enhancers =", enhancers_count) size = 0.1,
), position = "jitter"
suppressor_label = list( )
x = nrow(df) / 2, }
y = -10,
label = paste("Deletion Suppressors =", suppressors_count)
),
shape = 3,
size = 0.1
)
# Create Non-Annotated Plot Configuration for rank variables
config_no_annotated <- list(
df = df,
x_var = rank_var,
y_var = zscore_var,
plot_type = "scatter",
title = paste(plot_title_prefix, var, "Rank Plot No Annotations"),
sd_band = c(1, 2, 3),
enhancer_label = NULL,
suppressor_label = NULL,
shape = 3,
size = 0.1
)
# Append configurations to the list
configs[[length(configs) + 1]] <- config_annotated
configs[[length(configs) + 1]] <- config_no_annotated
} }
return(list( return(list(
@@ -1228,41 +1226,36 @@ main <- function() {
file = file.path(out_dir, "ZScores_Interaction_Deletion_Suppressors_K_lm.csv"), row.names = FALSE) file = file.path(out_dir, "ZScores_Interaction_Deletion_Suppressors_K_lm.csv"), row.names = FALSE)
message("Generating rank plots") message("Generating rank plots")
rank_vars <- c("L", "K")
# Generate rank plot configurations and adjust the dataframe # Generate rank plot configurations and adjust the dataframe
rank_plot_results <- generate_rank_plot_configs( zscores_interactions_adjusted <- generate_rank_plot_configs(
df = zscores_interactions, df = zscores_interactions,
interaction_vars = interaction_vars, interaction_vars = interaction_vars,
rank_vars = rank_vars,
is_lm = FALSE is_lm = FALSE
) )$adjusted_df
zscores_interactions_adjusted <- rank_plot_results$adjusted_df
# Generate and save standard rank plots # Generate rank plots for L and K using standard ranks
generate_and_save_plots( rank_plot_configs <- generate_rank_plot_configs(
output_dir = out_dir, df = zscores_interactions_adjusted,
file_name = "RankPlots", interaction_vars = interaction_vars,
plot_configs = rank_plot_results$plot_configs, is_lm = FALSE
grid_layout = list(ncol = 3, nrow = 2) )$plot_configs
)
# Save the generated rank plots for L and K
# Generate rank plot configurations for lm variables generate_and_save_plots(output_dir = out_dir, file_name = "RankPlots",
rank_lm_plot_results <- generate_rank_plot_configs( plot_configs = rank_plot_configs, grid_layout = list(ncol = 3, nrow = 2))
# Generate rank plots for L and K using linear model (`lm`) ranks
rank_lm_plot_configs <- generate_rank_plot_configs(
df = zscores_interactions_adjusted, df = zscores_interactions_adjusted,
interaction_vars = interaction_vars, interaction_vars = interaction_vars,
rank_vars = rank_vars,
is_lm = TRUE is_lm = TRUE
) )$plot_configs
# Generate and save lm rank plots # Save the linear model based rank plots for L and K
generate_and_save_plots( generate_and_save_plots(output_dir = out_dir, file_name = "RankPlots_lm",
output_dir = out_dir, plot_configs = rank_lm_plot_configs, grid_layout = list(ncol = 3, nrow = 2))
file_name = "RankPlots_lm",
plot_configs = rank_lm_plot_results$plot_configs,
grid_layout = list(ncol = 3, nrow = 2)
)
message("Filtering and regenerating rank plots")
# Formerly X_NArm # Formerly X_NArm
zscores_interactions_filtered <- zscores_interactions %>% zscores_interactions_filtered <- zscores_interactions %>%
group_by(across(all_of(orf_group_vars))) %>% group_by(across(all_of(orf_group_vars))) %>%
@@ -1306,6 +1299,7 @@ main <- function() {
generate_and_save_plots(output_dir = out_dir, file_name = "RankPlots_lm", generate_and_save_plots(output_dir = out_dir, file_name = "RankPlots_lm",
plot_configs = rank_lm_plot_configs, grid_layout = list(ncol = 3, nrow = 2)) plot_configs = rank_lm_plot_configs, grid_layout = list(ncol = 3, nrow = 2))
message("Generating correlation plots")
correlation_plot_configs <- generate_correlation_plot_configs(zscores_interactions_filtered, interaction_vars) correlation_plot_configs <- generate_correlation_plot_configs(zscores_interactions_filtered, interaction_vars)
generate_and_save_plots(output_dir = out_dir, file_name = "Avg_Zscore_vs_lm_NA_rm", generate_and_save_plots(output_dir = out_dir, file_name = "Avg_Zscore_vs_lm_NA_rm",
plot_configs = correlation_plot_configs, grid_layout = list(ncol = 2, nrow = 2)) plot_configs = correlation_plot_configs, grid_layout = list(ncol = 2, nrow = 2))