220 lines
No EOL
6.6 KiB
R
220 lines
No EOL
6.6 KiB
R
#!/usr/bin/env Rscript
|
|
#########################################################
|
|
# TASK: Bubble plot of OR for PS and Lig
|
|
|
|
# Output: 1 svg
|
|
|
|
#=======================================================================
|
|
# working dir and loading libraries
|
|
getwd()
|
|
setwd("~/git/LSHTM_analysis/scripts/plotting/")
|
|
getwd()
|
|
|
|
|
|
source("Header_TT.R")
|
|
require(cowplot)
|
|
source("combining_dfs_plotting.R")
|
|
# should return the following dfs, directories and variables
|
|
|
|
# PS combined:
|
|
# 1) merged_df2
|
|
# 2) merged_df2_comp
|
|
# 3) merged_df3
|
|
# 4) merged_df3_comp
|
|
|
|
# LIG combined:
|
|
# 5) merged_df2_lig
|
|
# 6) merged_df2_comp_lig
|
|
# 7) merged_df3_lig
|
|
# 8) merged_df3_comp_lig
|
|
|
|
# 9) my_df_u
|
|
# 10) my_df_u_lig
|
|
|
|
cat(paste0("Directories imported:"
|
|
, "\ndatadir:", datadir
|
|
, "\nindir:", indir
|
|
, "\noutdir:", outdir
|
|
, "\nplotdir:", plotdir))
|
|
|
|
cat(paste0("Variables imported:"
|
|
, "\ndrug:", drug
|
|
, "\ngene:", gene
|
|
, "\ngene_match:", gene_match
|
|
, "\nAngstrom symbol:", angstroms_symbol
|
|
, "\nNo. of duplicated muts:", dup_muts_nu
|
|
, "\nNA count for ORs:", na_count
|
|
, "\nNA count in df2:", na_count_df2
|
|
, "\nNA count in df3:", na_count_df3))
|
|
|
|
#=========================
|
|
#=======
|
|
# output
|
|
#=======
|
|
or_combined = "or_combined_PS_LIG.svg"
|
|
plot_or_combined = paste0(plotdir,"/", or_combined)
|
|
|
|
or_combined_labelled = "or_combined_PS_LIG_labelled.svg"
|
|
plot_or_combined_labelled = paste0(plotdir,"/", or_combined_labelled)
|
|
|
|
#or_kin_combined = "or_kin_combined_PS_LIG.svg"
|
|
#plot_or_kin_combined = paste0(plotdir,"/", or_kin_combined)
|
|
#=======================================================================
|
|
|
|
###########################
|
|
# Data for OR and stability plots
|
|
# you need merged_df3_comp
|
|
# since these are matched
|
|
# to allow pairwise corr
|
|
###########################
|
|
|
|
ps_df = merged_df3_comp
|
|
lig_df = merged_df3_comp_lig
|
|
|
|
# Ensure correct data type in columns to plot: should be TRUE
|
|
is.numeric(ps_df$or_mychisq)
|
|
is.numeric(lig_df$or_mychisq)
|
|
|
|
# delete variables not required
|
|
rm(merged_df2, merged_df2_comp, merged_df2_lig, merged_df2_comp_lig, my_df_u, my_df_u_lig)
|
|
#%% end of section 1
|
|
|
|
# sanity check: should be <10
|
|
if (max(lig_df$ligand_distance) < 10){
|
|
print ("Sanity check passed: lig data is <10Ang")
|
|
}else{
|
|
print ("Error: data should be filtered to be within 10Ang")
|
|
}
|
|
|
|
#############
|
|
# Plots: Bubble plot
|
|
# x = Position, Y = stability
|
|
# size of dots = OR
|
|
# col: stability
|
|
#############
|
|
|
|
#-----------------
|
|
# Plot 1: DUET vs OR by position as geom_points
|
|
#-------------------
|
|
|
|
my_ats = 20 # axis text size
|
|
my_als = 22 # axis label size
|
|
|
|
# Spelling Correction: made redundant as already corrected at the source
|
|
#ps_df$duet_outcome[ps_df$duet_outcome=='Stabilizing'] <- 'Stabilising'
|
|
#ps_df$duet_outcome[ps_df$duet_outcome=='Destabilizing'] <- 'Destabilising'
|
|
|
|
table(ps_df$duet_outcome) ; sum(table(ps_df$duet_outcome))
|
|
|
|
g1 = ggplot(ps_df, aes(x = factor(position)
|
|
, y = duet_scaled))
|
|
|
|
p1 = g1 +
|
|
geom_point(aes(col = duet_outcome
|
|
, size = or_mychisq))+
|
|
#, size = or_kin)) + # not good, almost like log(or)
|
|
theme(axis.text.x = element_text(size = my_ats
|
|
, angle = 90
|
|
, hjust = 1
|
|
, vjust = 0.4)
|
|
, axis.text.y = element_text(size = my_ats
|
|
, angle = 0
|
|
, hjust = 1
|
|
, vjust = 0)
|
|
, axis.title.x = element_text(size = my_als)
|
|
, axis.title.y = element_text(size = my_als)
|
|
, legend.text = element_text(size = my_als)
|
|
, legend.title = element_text(size = my_als) ) +
|
|
#, legend.key.size = unit(1, "cm")) +
|
|
labs(title = ""
|
|
, x = "Position"
|
|
, y = "DUET(PS)"
|
|
, size = "Odds Ratio"
|
|
, colour = "DUET Outcome") +
|
|
guides(colour = guide_legend(override.aes = list(size=4)))
|
|
|
|
p1
|
|
|
|
#=============
|
|
#ggplotly
|
|
# *so COOL*
|
|
fig <- ggplotly(p1)
|
|
fig
|
|
#==============
|
|
#-------------------
|
|
# generate plot 2: Lig vs OR by position as geom_points
|
|
#-------------------
|
|
|
|
# Spelling Correction: made redundant as already corrected at the source
|
|
|
|
#lig_df$ligand_outcome[lig_df$ligand_outcome=='Stabilizing'] <- 'Stabilising'
|
|
#lig_df$ligand_outcome[lig_df$ligand_outcome=='Destabilizing'] <- 'Destabilising'
|
|
|
|
table(lig_df$ligand_outcome)
|
|
|
|
g2 = ggplot(lig_df, aes(x = factor(position)
|
|
, y = affinity_scaled))
|
|
|
|
p2 = g2 +
|
|
geom_point(aes(col = ligand_outcome
|
|
, size = or_mychisq))+
|
|
#, size = or_kin)) + # not good! almost like log(or)
|
|
theme(axis.text.x = element_text(size = my_ats
|
|
, angle = 90
|
|
, hjust = 1
|
|
, vjust = 0.4)
|
|
, axis.text.y = element_text(size = my_ats
|
|
, angle = 0
|
|
, hjust = 1
|
|
, vjust = 0)
|
|
, axis.title.x = element_text(size = my_als)
|
|
, axis.title.y = element_text(size = my_als)
|
|
, legend.text = element_text(size = my_als)
|
|
, legend.title = element_text(size = my_als) ) +
|
|
#, legend.key.size = unit(1, "cm")) +
|
|
labs(title = ""
|
|
, x = "Position"
|
|
, y = "Ligand Affinity"
|
|
, size = "Odds Ratio"
|
|
, colour = "Ligand Outcome"
|
|
) +
|
|
guides(colour = guide_legend(override.aes = list(size=4)))
|
|
|
|
p2
|
|
|
|
#======================
|
|
# combine using cowplot
|
|
#======================
|
|
#---------------
|
|
# no labels
|
|
#---------------
|
|
|
|
svg(plot_or_combined, width = 32, height = 12)
|
|
#svg(plot_or_kin_combined, width = 32, height = 12)
|
|
|
|
theme_set(theme_gray()) # to preserve default theme
|
|
|
|
Outplot_or_combined = cowplot::plot_grid(plot_grid(p1, p2
|
|
, ncol = 1
|
|
, align = 'v'
|
|
, labels = c("", "")
|
|
, label_size = my_als+5))
|
|
print(Outplot_or_combined)
|
|
dev.off()
|
|
|
|
#---------------
|
|
# labels
|
|
#---------------
|
|
svg(plot_or_combined_labelled, width = 32, height = 12)
|
|
#svg(plot_or_kin_combined, width = 32, height = 12)
|
|
|
|
theme_set(theme_gray()) # to preserve default theme
|
|
|
|
Outplot_or_combined_labelled = cowplot::plot_grid(plot_grid(p1, p2
|
|
, ncol = 1
|
|
, align = 'v'
|
|
#, labels = c("(a)", "(b)")
|
|
, labels = "AUTO"
|
|
, label_size = 26))
|
|
print(Outplot_or_combined_labelled)
|
|
dev.off() |