R/plotQualFilter.R

Defines functions .plotQualFilter plotQualFilter

.plotQualFilter <- function(data, xl, yl, title)
{
    tmp  <- data[data$LABEL == 'TP' | data$LABEL == 'FN',]
    size <- sum(as.numeric.factor(tmp$SIZE))
    print(paste('Sequin size', size))
    
    # Only false positives
    data <- data[data$LABEL == 'FP',]
    
    # Quality score
    score <- data$QUAL
    
    stopifnot(length(score) > 0)
    score <- as.numeric.factor(score)
    
    x1 <- min(score)
    x2 <- max(score)
    
    data <- NULL
    
    for (i in x1:x2)
    {
        data <- rbind(data, data.frame(QUAL = i, FP = sum(score >= i)))
    }
    
    data$QUAL <- as.numeric(data$QUAL)
    
    # False positives per KB    
    data$FPR <- data$FP / (size / 1000)
    
    p <- ggplot(data=data, aes_string(x='data$QUAL', y='data$FPR')) +
            xlab(xl) +
            ylab(yl) +
            ggtitle(title) +
            geom_point(size=1.0, alpha=0.5, color='red') +
            geom_smooth(color='black', linetype='dashed', size=0.5) +
            theme_bw() +
            theme(plot.title = element_text(hjust = 0.5))
    
    maxX <- max(data$QUAL)
    maxY <- max(data$FPR)
    
    p <- p + annotation_raster(AnaquinSupImage2, ymin=maxY-0.30, ymax=maxY, xmin=maxX-9, xmax=maxX)
    suppressWarnings(print(.transformPlot(p)))
}

plotQualFilter <- function(data, xl, yl, title)
{
    tryCatch({ .plotQualFilter(data, xl, yl, title) }, error=function(x) { emptyPlot('', yl, '') })
}
sequinstandards/RAnaquin documentation built on Aug. 9, 2019, 2:46 p.m.