R/freecPlot.R

Defines functions freecPlot

Documented in freecPlot

#' 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

}
nriddiford/cnvPlotteR documentation built on Aug. 28, 2020, 5:31 a.m.