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

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

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", "dplyr")

## ----setup--------------------------------------------------------------------
suppressPackageStartupMessages(library(APackOfTheClones))
# load data
pbmc <- get(data("combined_pbmc"))

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

## ----setup_seurat, echo = TRUE, eval = FALSE----------------------------------
# library(scRepertoire)
# 
# # A seurat object named `pbmc` is loaded with a corresponding `contig_list`
# pbmc <- scRepertoire::combineExpression(
#   scRepertoire::combineTCR(
#     contig_list,
#     samples = c("P17B", "P17L", "P18B", "P18L", "P19B", "P19L", "P20B", "P20L"),
#     removeNA = FALSE,
#     removeMulti = FALSE,
#     filterMulti = FALSE
#   ),
#   pbmc,
#   cloneCall = "gene",
#   proportion = TRUE
# )

## ----actual_print_pbmc, eval = TRUE, echo = TRUE------------------------------
print(pbmc)

## ----echo = TRUE, eval = FALSE------------------------------------------------
# # Here is the function ran with its default parameters
# pbmc <- RunAPOTC(pbmc)
# 
# #> Initializing APOTC run...
# #> * Setting `clone_scale_factor` to 0.3
# #> * id for this run: umap;CTstrict;_;_
# #>
# #> Packing clones into clusters
# #> [==================================================] 100%
# #>
# #> repulsing all clusters | max iterations = 20
# #> [==================================================] 100%
# #>
# #> Completed successfully, time elapsed: 0.155 seconds
# #>

## ----runapotc_default, include = FALSE----------------------------------------
pbmc <- RunAPOTC(pbmc, verbose = FALSE)

## ----runapotc2, echo = TRUE---------------------------------------------------
pbmc <- RunAPOTC(
    pbmc, run_id = "sample17", orig.ident = c("P17B", "P17L"), verbose = FALSE
)

## ----apotcplot_subset_params, eval = FALSE------------------------------------
# reduction_base = NULL,
# clonecall = NULL,
# ...,
# extra_filter = NULL,
# alt_ident = NULL

## ----apotcplot, echo = TRUE---------------------------------------------------
# Here, plots for samples 17 - 20 as seen in the previous vignette are made, where
# `orig.ident` is a custom column in the example data with levels corresponding to sample ids:
# ("P17B" "P17L" "P18B" "P18L" "P19B" "P19L" "P20B" "P20L").

pbmc <- RunAPOTC(
  pbmc, run_id = "P17", orig.ident = c("P17B", "P17L"), verbose = FALSE
)

pbmc <- RunAPOTC(
  pbmc, run_id = "P18", orig.ident = c("P18B", "P18L"), verbose = FALSE
)

pbmc <- RunAPOTC(
  pbmc, run_id = "P19", orig.ident = c("P19B", "P19L"), verbose = FALSE
)

pbmc <- RunAPOTC(
  pbmc, run_id = "P20", orig.ident = c("P20B", "P20L"), verbose = FALSE
)

cowplot::plot_grid(
  APOTCPlot(pbmc, run_id = "P17", retain_axis_scales = TRUE, add_size_legend = FALSE),
  APOTCPlot(pbmc, run_id = "P18", retain_axis_scales = TRUE, add_size_legend = FALSE),
  APOTCPlot(pbmc, run_id = "P19", retain_axis_scales = TRUE, add_size_legend = FALSE),
  APOTCPlot(pbmc, retain_axis_scales = TRUE, add_size_legend = FALSE), # defaults to latest
  labels = c("17", "18", "19", "20")
)

## ----echo = TRUE, eval = FALSE------------------------------------------------
# new_rad_scale_factor = NULL,
# new_clone_scale_factor = NULL,
# relocate_cluster = NULL,
# relocation_coord = NULL,
# nudge_cluster = NULL,
# nudge_vector = NULL,
# recolor_cluster = NULL,
# new_color = NULL,
# rename_label = NULL,
# new_label = NULL,
# relocate_label = NULL,
# label_relocation_coord = NULL,
# nudge_label = NULL,
# label_nudge_vector = NULL,
# verbose = TRUE

## ----first_four_labeled, echo = TRUE------------------------------------------
# Do a run with just the first 4 seurat clusters, and rename labels
pbmc <- RunAPOTC(
    pbmc,
    run_id = "first_four",
    seurat_clusters = 1:4,
    verbose = FALSE
)

pbmc <- AdjustAPOTC(
    pbmc,
    run_id = "first_four",
    rename_label = 1:4,
    new_label = letters[1:4],
    verbose = FALSE
)

APOTCPlot(
    pbmc,
    run_id = "first_four",
    show_labels = TRUE,
    retain_axis_scales = TRUE
)

## ----repulse_again, echo = TRUE-----------------------------------------------
pbmc <- pbmc %>%
    RunAPOTC(run_id = "foo", verbose = FALSE) %>%
    AdjustAPOTC(
        run_id = "foo",
        repulse = TRUE,
        repulsion_threshold = 0.5,
        verbose = FALSE
    )

APOTCPlot(
    pbmc,
    show_labels = TRUE,
    retain_axis_scales = TRUE,
    add_size_legend = FALSE
)

