## ----include = FALSE----------------------------------------------------------
knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>"
)

knitr::opts_chunk$set(echo = FALSE)
options(repos = c(CRAN = "http://cran.rstudio.com"))

# utility functions
head <- function(df) {
  knitr::kable(utils::head(df))
}

quiet_load_all_CRAN <- function(...) {
  for (pkg in list(...)) {
    if (require(pkg, quietly = TRUE, character.only = TRUE)) next
    invisible(install.packages(
      pkg, quiet = TRUE, verbose = FALSE, character.only = TRUE
    ))
    suppressPackageStartupMessages(invisible(
      require(pkg, quietly = TRUE, character.only = TRUE)
    ))
  }
}

# load packages
quiet_load_all_CRAN("ggplot2", "cowplot", "Seurat")

## ----setup--------------------------------------------------------------------
suppressPackageStartupMessages(library(APackOfTheClones))

## ----combineTCR, eval = FALSE, echo = TRUE------------------------------------
#  library(scRepertoire)
#  
#  # load in the corresponding 6-sample TCR contigs from scRepertoire
#  contig_list <- get(data("contig_list", package = "scRepertoire"))
#  
#  # combine the TCR contigs into clones with custom samples
#  combined_contig_list <- scRepertoire::combineTCR(
#    contig_list,
#    samples = c("P17B", "P17L", "P18B", "P18L", "P19B", "P19L", "P20B", "P20L"),
#    removeNA = FALSE,
#    removeMulti = FALSE,
#    filterMulti = FALSE
#  )

## ----combining, eval = FALSE, echo = TRUE-------------------------------------
#  # a seurat object corresponding to combined_contig_list named `pbmc` is loaded
#  pbmc <- scRepertoire::combineExpression(
#    combined_contig_list,
#    pbmc,
#    cloneCall = "gene",
#    proportion = TRUE
#  )

## ----actual_print_pbmc, eval = TRUE, echo = FALSE, include = FALSE------------
pbmc <- get(data("combined_pbmc"))

## ----umap, echo = TRUE--------------------------------------------------------
library(Seurat)
library(ggplot2)

pbmc_umap_plot <- UMAPPlot(pbmc)
pbmc_umap_plot + coord_fixed()

## ----initial_vizapotc, echo = TRUE--------------------------------------------
default_apotc_plot <- vizAPOTC(pbmc, verbose = FALSE)
default_apotc_plot

## ----echo = TRUE, eval = FALSE------------------------------------------------
#  reduction_base = "umap",
#  clonecall = "strict",
#  alt_ident = NULL

## ----echo = TRUE, eval = FALSE------------------------------------------------
#  ...,
#  extra_filter = NULL

## ----subsetting, echo = TRUE, fig.dim = c(6, 6)-------------------------------
# `orig.ident` is a custom column in the example data with levels corresponding to sample ids:
# ("P17B" "P17L" "P18B" "P18L" "P19B" "P19L" "P20B" "P20L"). Here, it is subsetted
# by the keyword argument approach
subset_sample_17_plot <- vizAPOTC(
  pbmc,
  orig.ident = c("P17B", "P17L"),
  retain_axis_scales = TRUE,
  add_size_legend = FALSE,
  verbose = FALSE
)

# here, it is subsetted with `extra_filter` for sample 18 with dplyr syntax:
subset_sample_18_plot <- vizAPOTC(
  pbmc,
  extra_filter = "substr(orig.ident, 1, 3) == 'P18'",
  retain_axis_scales = TRUE,
  add_size_legend = FALSE,
  verbose = FALSE
)

# here, sample 19 is subsetted with both arguments to show that they work in conjunction
subset_sample_19_plot <- vizAPOTC(
  pbmc,
  orig.ident = "P19B",
  extra_filter = "orig.ident == 'P19L' | orig.ident == 'P19B'",
  retain_axis_scales = TRUE,
  add_size_legend = FALSE,
  verbose = FALSE
)

cowplot::plot_grid(
  vizAPOTC(combined_pbmc, add_size_legend = FALSE, verbose = FALSE),
  subset_sample_17_plot,
  subset_sample_18_plot,
  subset_sample_19_plot,
  labels = c("all", "17", "18", "19")
)

## ----echo = TRUE, eval = FALSE------------------------------------------------
#  repulse = TRUE,
#  repulsion_threshold = 1,
#  repulsion_strength = 1,
#  max_repulsion_iter = 10

## ----legend_params, echo = TRUE, eval = FALSE---------------------------------
#  add_size_legend = TRUE,
#  legend_sizes = "auto",
#  legend_position = "auto",
#  legend_buffer = 0.2,
#  legend_color = "#808080",
#  legend_spacing = "auto",
#  legend_label = "Clone sizes",
#  legend_text_size = 5,
#  add_legend_background = TRUE,

## ----other_params, echo = TRUE, eval = FALSE----------------------------------
#  order_clones = TRUE,
#  try_place = FALSE,
#  res = 360L,
#  linetype = "blank",
#  use_default_theme = TRUE,
#  retain_axis_scales = FALSE,
#  show_labels = FALSE,
#  label_size = 5,

## ----void_labelled_plot, echo = TRUE------------------------------------------
vizAPOTC(
  pbmc,
  repulsion_threshold = 0.9,
  show_labels = TRUE,
  label_size = 3,
  legend_text_size = 3.5,
  add_legend_background = FALSE,
  use_default_theme = FALSE,
  verbose = FALSE
)