## ----setup, include = FALSE---------------------------------------------------
knitr::opts_chunk$set(
  collapse = TRUE
)
library(easylabel)

## ----eval = FALSE-------------------------------------------------------------
#  install.packages("easylabel")
#  library(easylabel)

## ----eval = FALSE-------------------------------------------------------------
#  devtools::install_github("myles-lewis/easylabel")
#  library(easylabel)

## ----eval = FALSE-------------------------------------------------------------
#  if (!requireNamespace("BiocManager", quietly = TRUE))
#    install.packages("BiocManager")
#  BiocManager::install("qvalue")

## ----eval = FALSE-------------------------------------------------------------
#  BiocManager::install("AnnotationDbi")
#  BiocManager::install("org.Hs.eg.db")

## ----eval = FALSE-------------------------------------------------------------
#  data(mtcars)
#  easylabel(mtcars, x = 'mpg', y = 'wt',
#            colScheme = 'royalblue')

## ----scatter1, echo = FALSE, message=FALSE, fig.align='center', out.width='80%', out.extra='style="border: 0;"'----
knitr::include_graphics("scatter1.png")

## ----eval=FALSE---------------------------------------------------------------
#  data(mtcars)
#  
#  p1 <- easylabel(mtcars, x = 'mpg', y = 'wt', col = 'cyl',
#                  startLabels = rownames(mtcars)[mtcars$gear == 5],
#                  output_shiny = FALSE) %>%
#    layout(yaxis = list(zeroline = FALSE))
#  
#  p2 <- easylabel(mtcars, x = 'mpg', y = 'drat', col = 'vs',
#                  colScheme = c("dodgerblue", "orange"),
#                  startLabels = rownames(mtcars)[mtcars$gear == 5],
#                  output_shiny = FALSE) %>%
#    layout(xaxis = list(zeroline = FALSE))
#  
#  plotly::subplot(p1, p2, nrows = 2, shareY = TRUE, titleX = TRUE, margin = 0.05)

## ----plotlyOutput, echo = FALSE, message=FALSE, fig.align='center', out.width='80%', out.extra='style="border: 0;"'----
knitr::include_graphics("plotly_output.png")

## ----eval = FALSE-------------------------------------------------------------
#  easylabel(mtcars, x = 'mpg', y = 'wt',
#            col = 'cyl')

## ----eval = FALSE-------------------------------------------------------------
#  # gapminder data set
#  if(!require(gapminder)) {install.packages("gapminder")}
#  library(gapminder)
#  easylabel(gapminder[gapminder$year == 2007, ], x = 'gdpPercap', y = 'lifeExp',
#            col = 'continent', shape = 'continent',
#            size = 10,
#            labs = 'country',
#            zeroline = FALSE)

## ----scatter3, echo = FALSE, message=FALSE, fig.align='center', out.width='80%', out.extra='style="border: 0;"'----
knitr::include_graphics("scatter3.png")

## ----eval = FALSE-------------------------------------------------------------
#  library(gapminder)
#  easylabel(gapminder[gapminder$year == 2007, ], x = 'gdpPercap', y = 'lifeExp',
#            col = 'continent', labs = 'country',
#            size = 'pop',
#            alpha = 0.6,
#            zeroline = FALSE)

## ----bubble, echo = FALSE, message=FALSE, fig.align='center', out.width='80%', out.extra='style="border: 0;"'----
knitr::include_graphics("bubble.png")

## ----eval = FALSE-------------------------------------------------------------
#  easylabel(xymatrix, x = 'x', y = 'y', col = 'col',
#            colScheme = c('darkgrey', 'green3', 'gold3', 'blue'),
#            xlab = expression("log"[2] ~ " fold change post-Rituximab"),
#            ylab = expression("log"[2] ~ " fold change post-Tocilizumab"),
#            showgrid = TRUE)

## ----plot1, echo = FALSE, message=FALSE, fig.align='center', out.width='80%', out.extra='style="border: 0;"'----
knitr::include_graphics("plot1.png")

## ----eval = FALSE-------------------------------------------------------------
#  # example axis ticks
#  if(!require(gapminder)) {install.packages("gapminder")}
#  library(gapminder)
#  easylabel(gapminder[gapminder$year == 2007, ], x = 'gdpPercap', y = 'lifeExp',
#            col = 'continent', shape = 'continent',
#            size = 10,
#            labs = 'country',
#            zeroline = FALSE,
#            xaxp = c(0, 50000, 10),
#            yaxp = c(40, 85, 9),
#            showgrid = TRUE)

## ----eval = FALSE-------------------------------------------------------------
#  # example adding a trend line using panel.last
#  fit <- lm(xymatrix$y ~ xymatrix$x)
#  easylabel(xymatrix, x = 'x', y = 'y', col = 'col',
#            colScheme = c('darkgrey', 'green3', 'gold3', 'blue'),
#            xlab = expression("log"[2] ~ " fold change post-Rituximab"),
#            ylab = expression("log"[2] ~ " fold change post-Tocilizumab"),
#            showgrid = TRUE, fullGeneNames = TRUE,
#            panel.last = {
#              abline(fit, col='red')
#            })

## -----------------------------------------------------------------------------
# Example DESeq2 object
head(volc1)

# Example limma object
head(volc2)

## ----eval = FALSE-------------------------------------------------------------
#  # Typical DESeq2 workflow
#  volc1 <- results(dds)
#  easyVolcano(volc1, useQ = TRUE)

## ----eval = FALSE-------------------------------------------------------------
#  # Manually specify columns
#  easyVolcano(volc1, x = 'log2FoldChange', y = 'pvalue', padj = 'padj')
#  
#  # To use nominal unadjusted p value for significant genes
#  easyVolcano(volc1, x = 'log2FoldChange', y = 'pvalue')

## ----eval = FALSE-------------------------------------------------------------
#  easyMAplot(volc2, useQ = TRUE)

## ----easyMAplot1, echo = FALSE, message=FALSE, fig.align='center', out.width='80%', out.extra='style="border: 0;"'----
knitr::include_graphics("MAplot1.png")

## ----eval = FALSE-------------------------------------------------------------
#  BiocManager::install("AnnotationDbi")
#  BiocManager::install("org.Hs.eg.db")
#  easyVolcano(volc1, useQ = TRUE, fullGeneNames = TRUE)

## ----table1, echo = FALSE, message=FALSE, fig.align='center', out.width='100%', out.extra='style="border: 0;"'----
knitr::include_graphics("table1.png")

## ----eval = FALSE-------------------------------------------------------------
#  BiocManager::install("org.Mm.eg.db")
#  library(org.Mm.eg.db)
#  easyVolcano(volc1,
#              fullGeneNames = TRUE,
#              AnnotationDb = org.Mm.eg.db)

## ----eval = FALSE-------------------------------------------------------------
#  easyVolcano(volc2,
#              useQ = TRUE,
#              fccut = 0,
#              main = "Volcano title")

## ----plot7, echo = FALSE, message=FALSE, fig.align='center', out.width='80%', out.extra='style="border: 0;"'----
knitr::include_graphics("plot7.png")

## ----eval = FALSE-------------------------------------------------------------
#  easyVolcano(volc1,
#              useQ = TRUE, fullGeneNames = TRUE,
#              Ltitle = expression(symbol("\254") ~ "Non-responder"),
#              Rtitle = expression("Responder" ~ symbol("\256")),
#              LRtitle_side = 1,
#              cex.lab = 0.9, cex.axis = 0.8,
#              fccut = c(1, 2), fdrcutoff = 0.2,
#              ylim = c(0, 6), xlim = c(-5, 5),
#              colScheme = c('darkgrey', 'blue', 'orange', 'red'))

## ----plot3, echo = FALSE, message=FALSE, fig.align='center', out.width='80%', out.extra='style="border: 0;"'----
knitr::include_graphics("plot3.png")

## ----eval = FALSE-------------------------------------------------------------
#  easyVolcano(volc1, y = 'pvalue', padj = 'pvalue', fdrcutoff = 0.01)

## ----eval = FALSE-------------------------------------------------------------
#  colScheme <- c('darkgrey', 'blue', 'lightblue', 'orange', 'red')
#  easyVolcano(volc1, fccut = 1, fdrcutoff = 0.2,
#              ylim = c(0, 6), xlim = c(-5, 5),
#              colScheme = colScheme,
#              vline = c(-1, 1))

## ----plot4, echo = FALSE, message=FALSE, fig.align='center', out.width='80%', out.extra='style="border: 0;"'----
knitr::include_graphics("plot4.png")

## ----eval = FALSE-------------------------------------------------------------
#  library(RColorBrewer)
#  colScheme <- c('darkgrey', brewer.pal(9, 'RdYlBu')[c(9:7, 3:1)])
#  easyVolcano(volc1, fccut = c(1, 2), fdrcutoff = 0.2,
#              ylim = c(0, 6), xlim = c(-5, 5),
#              colScheme = colScheme,
#              alpha = 0.75, outline_col = NA)

## ----plot5, echo = FALSE, message=FALSE, fig.align='center', out.width='80%', out.extra='style="border: 0;"'----
knitr::include_graphics("plot5.png")

## ----eval = FALSE-------------------------------------------------------------
#  colScheme <- c('darkgrey', brewer.pal(9, 'RdYlBu')[c(7:9, 3:1)])
#  easyMAplot(volc2, fdrcutoff = c(0.05, 0.01, 0.001), size = 6, useQ = TRUE,
#             alpha = 0.75, outline_col = NA,
#             colScheme = colScheme)

## ----easyMAplot2, echo = FALSE, message=FALSE, fig.align='center', out.width='80%', out.extra='style="border: 0;"'----
knitr::include_graphics("MAplot2.png")

## ----eval = FALSE-------------------------------------------------------------
#  easyVolcano(volc1, labelDir = "horiz")
#  easyMAplot(volc1, labelDir = "vert")

## ----labdirs1, echo = FALSE, message=FALSE, fig.show='hold', out.width='48%', out.extra='style="border: 0;"'----
knitr::include_graphics(c("labdir_horiz.png", "labdir_vert.png"))

## ----eval = FALSE-------------------------------------------------------------
#  # Simple outlines
#  easyVolcano(volc2, useQ = TRUE, fccut = 0,
#              rectangles = TRUE)
#  
#  # Red outlined labels, rounded ends
#  easyVolcano(volc2, useQ = TRUE, fullGeneNames = TRUE,
#              rectangles = TRUE,
#              padding = 5,
#              border_radius = 10,
#              line_col = 'red',
#              border_col = 'red',
#              text_col = 'red')

## ----labrect2, echo = FALSE, message=FALSE, fig.show='hold', out.width='80%', out.extra='style="border: 0;"'----
knitr::include_graphics("rect_red_outline.png")

## ----eval = FALSE-------------------------------------------------------------
#  # Transparent grey rectangles, rounded ends
#  easyMAplot(volc2, fdrcut = c(0.05, 0.01, 0.001), size = 6, useQ = TRUE,
#             alpha = 0.75, outline_col = NA,
#             fullGeneNames = TRUE,
#             colScheme = c('darkgrey', brewer.pal(9, 'RdYlBu')[c(7:9, 3:1)]),
#             rectangles = TRUE,
#             border_col = NA,
#             padding = 5,
#             rect_col = adjustcolor('grey', alpha.f = 0.6),
#             border_radius = 20)
#  
#  # White text on black background, no rounding
#  easyVolcano(volc2, useQ = TRUE, fullGeneNames = TRUE,
#              fccut = 0,
#              rectangles = TRUE,
#              padding = 4,
#              border_radius = 0,
#              rect_col = 'black',
#              text_col = 'white',
#              border_col = NA)

## ----labrect4, echo = FALSE, message=FALSE, fig.show='hold', out.width='80%', out.extra='style="border: 0;"'----
knitr::include_graphics("rect_invert.png")

## ----eval = FALSE-------------------------------------------------------------
#  # Label text and label lines match point colours
#  easylabel(gapminder[gapminder$year == 2007, ], x = 'gdpPercap', y = 'lifeExp',
#            col = 'continent', labs = 'country',
#            size = 'pop',
#            alpha = 0.6,
#            line_col = "match", text_col = "match",
#            zeroline = FALSE, showgrid = "y")

## ----labmatch1, echo = FALSE, message=FALSE, fig.show='hold', out.width='80%', out.extra='style="border: 0;"'----
knitr::include_graphics("match1.png")

## ----eval = FALSE-------------------------------------------------------------
#  # Rectangle fill colour and label line match point colours, rounded rectangles
#  easylabel(gapminder[gapminder$year == 2007, ], x = 'gdpPercap', y = 'lifeExp',
#            col = 'continent', labs = 'country',
#            size = 'pop',
#            alpha = 0.6,
#            line_col = "match", text_col = "white",
#            rectangles = TRUE, border_col = NA,
#            rect_col = "match", border_radius = 20, padding = 5,
#            zeroline = FALSE, showgrid = "y")

## ----labmatch2, echo = FALSE, message=FALSE, fig.show='hold', out.width='80%', out.extra='style="border: 0;"'----
knitr::include_graphics("match2.png")

## ----eval = FALSE-------------------------------------------------------------
#  # Manhattan plot using SLE GWAS data from Bentham et al 2015
#  # FTP download full summary statistics from
#  # https://www.ebi.ac.uk/gwas/studies/GCST003156
#  library(data.table)
#  SLE_gwas <- fread('../bentham_2015_26502338_sle_efo0002690_1_gwas.sumstats.tsv')
#  # Simple Manhattan plot
#  easyManhattan(SLE_gwas)
#  
#  # 4 colours for chromosomes
#  easyManhattan(SLE_gwas, chromCols = RColorBrewer::brewer.pal(4, 'Paired'))

## ----manhat, echo = FALSE, message=FALSE, fig.show='hold', out.width='80%', out.extra='style="border: 0;"'----
knitr::include_graphics("manhattan.png")

## ----eval = FALSE-------------------------------------------------------------
#  # Examples
#  # 12 colours for chromosomes, no separate colour for significant points
#  easyManhattan(SLE_gwas, chromCols = RColorBrewer::brewer.pal(12, 'Paired'),
#                sigCol = NA)
#  
#  # Label peaks automatically, add horizontal gridlines
#  easyManhattan(SLE_gwas, npeaks = 20, showgrid = "y")
#  
#  # Vertical version
#  easyManhattan(SLE_gwas, transpose = TRUE, height = 1000, width = 600)
#  
#  # Chr1 only
#  easyManhattan(SLE_gwas[SLE_gwas$chrom == 1, ])
#  
#  # Add symbols for the significant SNPs
#  easyManhattan(SLE_gwas, chromCols = RColorBrewer::brewer.pal(4, 'Paired'),
#                size = 8,
#                shape = 'col',
#                shapeScheme = c(rep(20, 4), 18))

## ----eval=FALSE---------------------------------------------------------------
#  # Create a locus plot over one chromosomal region
#  library(plotly)
#  p1 = easyManhattan(SLE_gwas[SLE_gwas$chrom == 6 &
#                                SLE_gwas$pos >= 28e6 &
#                                SLE_gwas$pos <= 34e6, ],
#                     output_shiny = FALSE, labs = "rsid",
#                     startLabels=c("rs115466242", "rs2853999"),
#                     npeaks = 3)
#  
#  
#  
#  # To annotate genes in that region
#  source("https://raw.githubusercontent.com/KatrionaGoldmann/BioOutputs/master/R/bio_gene_locations.R")
#  library(ggbio)
#  library(gginnards)
#  library(ggrepel)
#  if (! "EnsDb.Hsapiens.v75" %in% rownames(installed.packages()))
#    BiocManager::install("EnsDb.Hsapiens.v75")
#  
#  p2 = bio_gene_locations(6, c(28e6, 34e6),
#                          subset_genes = c('HLA-F', 'HLA-G', 'HLA-A', 'HLA-E',
#                                           'HLA-C', 'HLA-B', 'HLA-DRA',
#                                           'HLA-DRB5', 'HLA-DRB1', 'HLA-DQA1',
#                                           'HLA-DQB1', 'HLA-DQA2', 'HLA-DQB2',
#                                           'HLA-DOB', 'HLA-DMB', 'HLA-DMA',
#                                           'HLA-DOA', 'HLA-DPA1', 'HLA-DPB1'))
#  
#  plotly::subplot(p1, p2$plotly_location %>% layout(yaxis=list(range=c(0.25, 2))),
#                  shareY = T, titleX = T, margin=0.05,
#                  nrows=2, heights=c(0.7, 0.3))
#  

## ----locusOutput, echo = FALSE, message=FALSE, fig.align='center', out.width='80%', out.extra='style="border: 0;"'----
knitr::include_graphics("locus.png")

