237 lines
No EOL
7 KiB
R
Executable file
237 lines
No EOL
7 KiB
R
Executable file
#!/usr/bin/env Rscript
|
|
getwd()
|
|
setwd("~/git/LSHTM_analysis/scripts/plotting")
|
|
getwd()
|
|
source("Header_TT.R")
|
|
|
|
drug = 'streptomycin'
|
|
gene = 'gid'
|
|
|
|
spec = matrix(c(
|
|
"drug" , "d", 1, "character",
|
|
"gene" , "g", 1, "character",
|
|
"data_file1" , "fa", 2, "character",
|
|
"data_file2" , "fb", 2, "character"
|
|
), byrow = TRUE, ncol = 4)
|
|
|
|
opt = getopt(spec)
|
|
|
|
drug = opt$drug
|
|
gene = opt$gene
|
|
infile_params = opt$data_file1
|
|
infile_metadata = opt$data_file2
|
|
|
|
if(is.null(drug)|is.null(gene)) {
|
|
stop("Missing arguments: --drug and --gene must both be specified (case-sensitive)")
|
|
}
|
|
|
|
#===========
|
|
# Input
|
|
#===========
|
|
source("../functions/barplot_colour_function.R")
|
|
|
|
source("get_plotting_dfs.R")
|
|
|
|
#===========
|
|
# output
|
|
#===========
|
|
# PS
|
|
bp_subcols_duet = "barplot_coloured_PS.svg"
|
|
plot_bp_subcols_duet = paste0(plotdir, "/", bp_subcols_duet)
|
|
|
|
# LIG
|
|
bp_subcols_lig = "barplot_coloured_LIG.svg"
|
|
plot_bp_subcols_lig = paste0(plotdir, "/", bp_subcols_lig)
|
|
|
|
##############################################################################
|
|
#====================
|
|
# Data for plots: PS
|
|
#====================
|
|
# sanity checks
|
|
str(my_df_u)
|
|
upos = unique(my_df_u$position)
|
|
|
|
# should be a factor
|
|
if (is.factor(my_df_u$duet_outcome)){
|
|
print("duet_outcome is factor")
|
|
}else{
|
|
print("convert duet_outcome to factor")
|
|
my_df_u$duet_outcome = as.factor(my_df_u$duet_outcome)
|
|
}
|
|
|
|
is.factor(my_df_u$duet_outcome)
|
|
table(my_df_u$duet_outcome)
|
|
|
|
# should be -1 and 1
|
|
min(my_df_u$duet_scaled)
|
|
max(my_df_u$duet_scaled)
|
|
|
|
tapply(my_df_u$duet_scaled, my_df_u$duet_outcome, min)
|
|
tapply(my_df_u$duet_scaled, my_df_u$duet_outcome, max)
|
|
|
|
#=======================================================
|
|
# Barplot (unordered) colour each nsSNP by stability
|
|
## My colour FUNCTION: based on group and subgroup
|
|
# in my case;
|
|
# df = df
|
|
# group = duet_outcome
|
|
# subgroup = normalised score i.e duet_scaled
|
|
#========================================================
|
|
# check unique values in normalised data
|
|
u = unique(my_df_u$duet_scaled)
|
|
my_grp = my_df_u$duet_scaled #no rounding
|
|
|
|
#-------------------------------------------------
|
|
# Run this section if rounding is to be used
|
|
#n = 3
|
|
#my_df_u$duet_scaledR = round(my_df_u$duet_scaled, n)
|
|
#ur = unique(my_df_u$duet_scaledR)
|
|
#my_grp = my_df_u$duet_scaledR # rounding
|
|
#---------------------------------------------------
|
|
|
|
my_df_u$group <- paste0(my_df_u$duet_outcome, "_", my_grp, sep = "")
|
|
|
|
# Call the function to create the palette based on the group defined above
|
|
colours <- ColourPalleteMulti(my_df_u, "duet_outcome", "my_grp")
|
|
print(paste0("Colour palette generated for: ", length(colours), " colours"))
|
|
my_title = "Protein stability (DUET)"
|
|
|
|
# axis label size
|
|
my_xaxls = 12
|
|
my_yaxls = 20
|
|
|
|
# axes text size
|
|
my_xaxts = 18
|
|
my_yaxts = 20
|
|
|
|
#********************
|
|
# generate plot: PS
|
|
# NO axis colours
|
|
#********************
|
|
print(paste0("plot name:", plot_bp_subcols_duet))
|
|
svg(plot_bp_subcols_duet, width = 26, height = 4)
|
|
|
|
g = ggplot(my_df_u, aes(factor(position, ordered = T)))
|
|
outPlot_bp_ps = g +
|
|
geom_bar(aes(fill = group), colour = "grey") +
|
|
scale_fill_manual( values = colours
|
|
, guide = "none") +
|
|
theme( axis.text.x = element_text(size = my_xaxls
|
|
, angle = 90
|
|
, hjust = 1
|
|
, vjust = 0.4)
|
|
, axis.text.y = element_text(size = my_yaxls
|
|
, angle = 0
|
|
, hjust = 1
|
|
, vjust = 0)
|
|
, axis.title.x = element_text(size = my_xaxts)
|
|
, axis.title.y = element_text(size = my_yaxts ) ) +
|
|
labs(title = ""
|
|
#title = my_title
|
|
, x = "Position"
|
|
, y = "Frequency")
|
|
|
|
print(outPlot_bp_ps)
|
|
dev.off()
|
|
|
|
####################################################
|
|
#====================
|
|
# Data for plots: LIG
|
|
#====================
|
|
# sanity checks
|
|
str(my_df_u_lig)
|
|
upos = unique(my_df_u_lig$position)
|
|
|
|
# should be a factor
|
|
if (is.factor(my_df_u_lig$ligand_outcome)){
|
|
print("ligand_outcome is factor")
|
|
}else{
|
|
print("convert ligand_outcome to factor")
|
|
my_df_u_lig$ligand_outcome = as.factor(my_df_u_lig$ligand_outcome)
|
|
}
|
|
|
|
is.factor(my_df_u_lig$ligand_outcome)
|
|
table(my_df_u_lig$ligand_outcome)
|
|
|
|
# should be -1 and 1
|
|
min(my_df_u_lig$affinity_scaled)
|
|
max(my_df_u_lig$affinity_scaled)
|
|
|
|
tapply(my_df_u_lig$affinity_scaled, my_df_u_lig$ligand_outcome, min)
|
|
tapply(my_df_u_lig$affinity_scaled, my_df_u_lig$ligand_outcome, max)
|
|
|
|
#=======================================================
|
|
# Barplot (unordered) colour each nsSNP by stability
|
|
## My colour FUNCTION: based on group and subgroup
|
|
# in my case;
|
|
# df = my_df_u_lig
|
|
# group = ligand_outcome
|
|
# subgroup = normalised score i.e affinity_scaled
|
|
#========================================================
|
|
# check unique values in normalised data
|
|
u_lig = unique(my_df_u_lig$affinity_scaled)
|
|
my_grp_lig = my_df_u_lig$affinity_scaled #no rounding
|
|
|
|
#-------------------------------------------------
|
|
# Run this section if rounding is to be used
|
|
#n = 3
|
|
#my_df_u_lig$affinity_scaledR = round(my_df_u_lig$affinity_scaled, n)
|
|
#ur_lig = unique(my_df_u_lig$affinity_scaledR)
|
|
#my_grp_lig = my_df_u_lig$affinity_scaledR # rounding
|
|
#---------------------------------------------------
|
|
|
|
my_df_u_lig$group_lig <- paste0(my_df_u_lig$ligand_outcome, "_"
|
|
, my_grp_lig
|
|
, sep = "")
|
|
|
|
# Call the function to create the palette based on the group defined above
|
|
colours_lig <- ColourPalleteMulti(my_df_u_lig
|
|
, "ligand_outcome"
|
|
, "my_grp_lig")
|
|
|
|
print(paste0("Colour palette generated for: "
|
|
, length(colours_lig)
|
|
, " colours_lig"))
|
|
|
|
my_title_lig = "Ligand Affinity"
|
|
|
|
# axis label size
|
|
my_xaxls = 12
|
|
my_yaxls = 20
|
|
|
|
# axes text size
|
|
my_xaxts = 18
|
|
my_yaxts = 20
|
|
|
|
#******************
|
|
# generate plot: LIG
|
|
# NO axis colours
|
|
#******************
|
|
print(paste0("plot name:", plot_bp_subcols_lig))
|
|
svg(plot_bp_subcols_lig, width = 26, height = 4)
|
|
|
|
g2 = ggplot(my_df_u_lig, aes(factor(position, ordered = T)))
|
|
outPlot_bp_lig = g2 +
|
|
geom_bar(aes(fill = group_lig), colour = "grey") +
|
|
scale_fill_manual( values = colours_lig
|
|
, guide = "none") +
|
|
theme( axis.text.x = element_text(size = my_xaxls
|
|
, angle = 90
|
|
, hjust = 1
|
|
, vjust = 0.4)
|
|
, axis.text.y = element_text(size = my_yaxls
|
|
, angle = 0
|
|
, hjust = 1
|
|
, vjust = 0)
|
|
, axis.title.x = element_text(size = my_xaxts)
|
|
, axis.title.y = element_text(size = my_yaxts ) ) +
|
|
labs(title = ""
|
|
#title = my_title_lig
|
|
, x = "Position"
|
|
, y = "Frequency")
|
|
|
|
print(outPlot_bp_lig)
|
|
dev.off()
|
|
######################################################################=
|
|
# End of script
|
|
######################################################################= |