#' FreecPlot
#'
#' Function to plot the corrected CN for Control Freec "ratio" files.
#' @param cnv_file File to plot. [Required]
#' @param chroms Chromosomes to plot
#' @param write Write plot to file? T/F
#' @import RColorBrewer
#' @import scales
#' @import dplyr
#' @keywords plot normalised CN for Control Freec ratio file
#' @export
#' @examples freecPlot(cnv_file = "data/freec/HUM-7.tagged.filt.SC.RG.bam_ratio.txt")
freecPlot <- function(cnv_file = 'data/freec/HUM-7.tagged.filt.SC.RG.bam_ratio.txt',
chroms=c('2L', '2R', '3L', '3R', 'X', "Y"),
write=F, sex="XY") {
cat("Processing", cnv_file, "\n")
base = basename(cnv_file)
parts <- strsplit(base, "[.]")[[1]]
sample <- parts[1]
ratio <- read.delim(cnv_file, header = T)
sex_chroms <- grep(pattern = "X|Y", chroms, value = T)
autosomes <- grep(pattern = "X|Y", chroms, value = T, invert = T)
green <- '#12A116FE'
sub_green <- '#9DD486FE'
grey <- '#7A8B8B'
red <- '#CC2121FE'
sub_red <- '#DBD828FE'
ratio$sex <- sex
ratio <- ratio %>%
dplyr::filter(Chromosome %in% chroms) %>%
dplyr::mutate(ploidy = ifelse(sex=="XY" & Chromosome %in% sex_chroms, 1, 2)) %>%
droplevels()
ratio$colour <- ifelse(ratio$Chromosome %in% autosomes & ratio$Subclone_CN>ratio$ploidy, sub_green, grey)
ratio$colour <- ifelse(ratio$Chromosome %in% sex_chroms & ratio$Subclone_CN>ratio$ploidy, sub_green, ratio$colour)
ratio$colour <- ifelse(ratio$Chromosome %in% autosomes & ratio$Subclone_CN<ratio$ploidy & ratio$Subclone_CN > 0, sub_red, ratio$colour)
ratio$colour <- ifelse(ratio$Chromosome %in% sex_chroms & ratio$Subclone_CN<ratio$ploidy & ratio$Subclone_CN > 0, sub_red, ratio$colour)
ratio$colour <- ifelse(ratio$Chromosome %in% autosomes & ratio$CopyNumber>ratio$ploidy, green, ratio$colour)
ratio$colour <- ifelse(ratio$Chromosome %in% sex_chroms & ratio$CopyNumber>ratio$ploidy, green, ratio$colour)
ratio$colour <- ifelse(ratio$Chromosome %in% autosomes & ratio$CopyNumber<ratio$ploidy, red, ratio$colour)
ratio$colour <- ifelse(ratio$Chromosome %in% sex_chroms & ratio$CopyNumber<ratio$ploidy, red, ratio$colour)
ratio$point_size <- ifelse(ratio$colour != grey, 0.9, 0.5)
p <- ggplot(ratio)
p <- p + geom_point(aes(Start, Ratio*ploidy, colour=colour),stat='identity', alpha =0.5, size = ratio$point_size)
p <- p + scale_y_continuous("Normalised copy number", limits = c(0,6), breaks = seq(0,6, by=1))
p <- p + facet_wrap(~Chromosome, ncol=2, scales='free_x')
p <- p + cleanTheme() +
theme( panel.grid.major.y = element_line(color="grey80", size = 0.5, linetype = "dotted"),
strip.text = element_text(size=20),
axis.text.y = element_text(size=15),
axis.title = element_text(size=20))
p <- p + scale_color_identity()
if(write){
dir.create(file.path("plots", "freec"), showWarnings = FALSE)
freecOut <- paste(sample, "freec_cn.png", sep='_')
cat("Writing file", freecOut, "\n")
ggsave(paste("plots/freec/", freecOut, sep=""), width = 20, height = 10)
}
p
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.