# Working with aggregate functions

Giulia Pais1*

1San Raffaele Telethon Institute for Gene Therapy - SR-Tiget, Via Olgettina 60, 20132 Milano - Italia

*giuliapais1@gmail.com, calabria.andrea@hsr.it

#### 19 May 2021

#### Package

ISAnalytics 1.2.0

# 1 Introduction

In this vignette we’re going to explain in detail how to use functions of the aggregate family, namely:

1. `aggregate_metadata`
2. `aggregate_values_by_key`

## 1.1 How to install ISAnalytics

To install the package run the following code:

    ## For release version
    if (!requireNamespace("BiocManager", quietly = TRUE)) {
          install.packages("BiocManager")
      }
    BiocManager::install("ISAnalytics")

    ## For devel version
    if (!requireNamespace("BiocManager", quietly = TRUE)) {
          install.packages("BiocManager")
      }
    # The following initializes usage of Bioc devel
    BiocManager::install(version = "devel")
    BiocManager::install("ISAnalytics")

To install from GitHub:

    # For release version
    if (!require(devtools)) {
        install.packages("devtools")
    }
    devtools::install_github("calabrialab/ISAnalytics",
        ref = "RELEASE_3_12",
        dependencies = TRUE,
        build_vignettes = TRUE
    )

    ## Safer option for vignette building issue
    devtools::install_github("calabrialab/ISAnalytics",
        ref = "RELEASE_3_12"
    )

    # For devel version
    if (!require(devtools)) {
        install.packages("devtools")
    }
    devtools::install_github("calabrialab/ISAnalytics",
        ref = "master",
        dependencies = TRUE,
        build_vignettes = TRUE
    )

    ## Safer option for vignette building issue
    devtools::install_github("calabrialab/ISAnalytics",
        ref = "master"
    )

    library(ISAnalytics)
    #> Loading required package: magrittr

## 1.2 Setting options

`ISAnalytics` has a verbose option that allows some functions to print additional information to the console while they’re executing. To disable this feature do:

    # DISABLE
    options("ISAnalytics.verbose" = FALSE)

    # ENABLE
    options("ISAnalytics.verbose" = TRUE)

Some functions also produce report in a user-friendly HTML format, to set this feature:

    # DISABLE HTML REPORTS
    options("ISAnalytics.widgets" = FALSE)

    # ENABLE HTML REPORTS
    options("ISAnalytics.widgets" = TRUE)

# 2 Aggregating metadata

We refer to information contained in the association file as “metadata”: sometimes it’s useful to obtain collective information based on a certain group of variables we’re interested in. The function `aggregate_metadata` does just that: according to the grouping variables, meaning the names of the columns in the association file to perform a `group_by` operation with, creates a summary. You can fully customize the summary by providing a “function table” which tells the function which operation should be applied to which column and what name to give to the output column. A default is already supplied:

    knitr::kable(default_meta_agg())

Column | Function | Args | Output_colname
--- | --- | --- | ---
FusionPrimerPCRDate | ~suppressWarnings(min(.x, na.rm = TRUE)) | NA | {.col}_min
LinearPCRDate | ~suppressWarnings(min(.x, na.rm = TRUE)) | NA | {.col}_min
VCN | ~suppressWarnings(mean(.x, na.rm = TRUE)) | NA | {.col}_avg
ng DNA corrected | ~suppressWarnings(mean(.x, na.rm = TRUE)) | NA | {.col}_avg
Kapa | ~suppressWarnings(mean(.x, na.rm = TRUE)) | NA | {.col}_avg
ng DNA corrected | ~sum(.x, na.rm = TRUE) | NA | {.col}_sum
ulForPool | ~sum(.x, na.rm = TRUE) | NA | {.col}_sum
BARCODE_MUX | ~sum(.x, na.rm = TRUE) | NA | {.col}_sum
TRIMMING_FINAL_LTRLC | ~sum(.x, na.rm = TRUE) | NA | {.col}_sum
LV_MAPPED | ~sum(.x, na.rm = TRUE) | NA | {.col}_sum
BWA_MAPPED_OVERALL | ~sum(.x, na.rm = TRUE) | NA | {.col}_sum
ISS_MAPPED_PP | ~sum(.x, na.rm = TRUE) | NA | {.col}_sum

You can either provide purrr-style lambdas (as given in the example above), or simply specify the name of the function and additional parameters as a list in a separated column. If you choose to provide your own table you should maintain the column names for the function to work properly.

## 2.1 Typical workflow

Import the association file via `import_assocition_file`. If you need more information on import function please view the vignette “How to use import functions”.

    withr::with_options(list(ISAnalytics.widgets = FALSE), {
        path_AF <- system.file("extdata", "ex_association_file.tsv",
            package = "ISAnalytics"
        )

        root_correct <- system.file("extdata", "fs.zip",
            package = "ISAnalytics"
        )
        root_correct <- unzip_file_system(root_correct, "fs")
        association_file <- import_association_file(path_AF, root_correct)
    })
    #> *** Association file import summary ***
    #> ℹ For detailed report please set option 'ISAnalytics.widgets' to TRUE
    #> * Parsing problems detected: TRUE
    #> * Date parsing problems: TRUE
    #> * Column problems detected: TRUE
    #> * NAs found in important columns: TRUE
    #> * File system alignment: no problems detected
    #> *** Association file import summary ***
    #> ℹ For detailed report please set option 'ISAnalytics.widgets' to TRUE
    #> * Parsing problems detected: TRUE
    #> * Date parsing problems: TRUE
    #> * Column problems detected: TRUE
    #> * NAs found in important columns: TRUE
    #> * File system alignment: no problems detected

Perform aggregation:

    aggregated_meta <- aggregate_metadata(
      association_file,
        grouping_keys = c(
            "SubjectID",
            "CellMarker",
            "Tissue",
            "TimePoint"
        )
    )

SubjectID | CellMarker | Tissue | TimePoint | FusionPrimerPCRDate_min | LinearPCRDate_min | VCN_avg | Kapa_avg | ulForPool_sum
--- | --- | --- | --- | --- | --- | --- | --- | ---
VA2020-mix10 | NA | NA | 0000 | NA | NA | 0.70 | 26.54667 | 25.70
VA2020-mix11 | NA | NA | 0000 | NA | NA | 2.80 | 59.81000 | 12.29
VA2020-mix12 | NA | NA | 0000 | NA | NA | 4.30 | 79.80333 | 7.98
VA2020-mix13 | NA | NA | 0000 | NA | NA | 9.89 | 85.87000 | 7.46
VA2020-mix14 | NA | NA | 0000 | NA | NA | NaN | NaN | 0.00

# 3 Aggregation of values by key

`ISAnalytics` contains useful functions to aggregate the values contained in your imported matrices based on a key, aka a single column or a combination of columns contained in the association file that are related to the samples.

## 3.1 Typical workflow

Import your association file (see previous section) and then import your matrices:

    withr::with_options(list(ISAnalytics.widgets = FALSE), {
        matrices <- import_parallel_Vispa2Matrices_auto(
            association_file = association_file, root = NULL,
            quantification_type = c("fragmentEstimate", "seqCount"),
            matrix_type = "annotated", workers = 2, patterns = NULL,
            matching_opt = "ANY", multi_quant_matrix = FALSE
        )
    })
    #> [1] "--- REPORT: FILES IMPORTED ---"
    #> # A tibble: 8 x 5
    #>   ProjectID   concatenatePoolIDSeqRun Quantification_type
    #>   <chr>       <chr>                   <chr>
    #> 1 CLOEXP      POOL6-1                 fragmentEstimate
    #> 2 PROJECT1100 ABX-LR-PL5-POOL14-1     fragmentEstimate
    #> 3 PROJECT1100 ABX-LR-PL6-POOL15-1     fragmentEstimate
    #> 4 PROJECT1101 ABY-LR-PL4-POOL54-2     fragmentEstimate
    #> 5 CLOEXP      POOL6-1                 seqCount
    #> 6 PROJECT1100 ABX-LR-PL5-POOL14-1     seqCount
    #> 7 PROJECT1100 ABX-LR-PL6-POOL15-1     seqCount
    #> 8 PROJECT1101 ABY-LR-PL4-POOL54-2     seqCount
    #>   Files_chosen
    #>   <fs::path>
    #> 1 /tmp/Rtmp1iQb16/fs/VA/CLOEXP/quantification/POOL6-1/VA-CLOEXP-POOL6-1_fragmen…
    #> 2 /tmp/Rtmp1iQb16/fs/PROJECT1100/quantification/ABX-LR-PL5-POOL14-1/PROJECT1100…
    #> 3 /tmp/Rtmp1iQb16/fs/PROJECT1100/quantification/ABX-LR-PL6-POOL15-1/PROJECT1100…
    #> 4 /tmp/Rtmp1iQb16/fs/PROJECT1101/quantification/ABY-LR-PL4-POOL54-2/PROJECT1101…
    #> 5 /tmp/Rtmp1iQb16/fs/VA/CLOEXP/quantification/POOL6-1/VA-CLOEXP-POOL6-1_seqCoun…
    #> 6 /tmp/Rtmp1iQb16/fs/PROJECT1100/quantification/ABX-LR-PL5-POOL14-1/PROJECT1100…
    #> 7 /tmp/Rtmp1iQb16/fs/PROJECT1100/quantification/ABX-LR-PL6-POOL15-1/PROJECT1100…
    #> 8 /tmp/Rtmp1iQb16/fs/PROJECT1101/quantification/ABY-LR-PL4-POOL54-2/PROJECT1101…
    #>   Imported
    #>   <lgl>
    #> 1 TRUE
    #> 2 TRUE
    #> 3 TRUE
    #> 4 TRUE
    #> 5 TRUE
    #> 6 TRUE
    #> 7 TRUE
    #> 8 TRUE
    #> [1] "--- SUMMARY OF FILES CHOSEN FOR IMPORT ---"
    #> # A tibble: 8 x 4
    #>   ProjectID   concatenatePoolIDSeqRun Quantification_type
    #>   <chr>       <chr>                   <chr>
    #> 1 CLOEXP      POOL6-1                 fragmentEstimate
    #> 2 CLOEXP      POOL6-1                 seqCount
    #> 3 PROJECT1100 ABX-LR-PL5-POOL14-1     fragmentEstimate
    #> 4 PROJECT1100 ABX-LR-PL5-POOL14-1     seqCount
    #> 5 PROJECT1100 ABX-LR-PL6-POOL15-1     fragmentEstimate
    #> 6 PROJECT1100 ABX-LR-PL6-POOL15-1     seqCount
    #> 7 PROJECT1101 ABY-LR-PL4-POOL54-2     fragmentEstimate
    #> 8 PROJECT1101 ABY-LR-PL4-POOL54-2     seqCount
    #>   Files_chosen
    #>   <fs::path>
    #> 1 /tmp/Rtmp1iQb16/fs/VA/CLOEXP/quantification/POOL6-1/VA-CLOEXP-POOL6-1_fragmen…
    #> 2 /tmp/Rtmp1iQb16/fs/VA/CLOEXP/quantification/POOL6-1/VA-CLOEXP-POOL6-1_seqCoun…
    #> 3 /tmp/Rtmp1iQb16/fs/PROJECT1100/quantification/ABX-LR-PL5-POOL14-1/PROJECT1100…
    #> 4 /tmp/Rtmp1iQb16/fs/PROJECT1100/quantification/ABX-LR-PL5-POOL14-1/PROJECT1100…
    #> 5 /tmp/Rtmp1iQb16/fs/PROJECT1100/quantification/ABX-LR-PL6-POOL15-1/PROJECT1100…
    #> 6 /tmp/Rtmp1iQb16/fs/PROJECT1100/quantification/ABX-LR-PL6-POOL15-1/PROJECT1100…
    #> 7 /tmp/Rtmp1iQb16/fs/PROJECT1101/quantification/ABY-LR-PL4-POOL54-2/PROJECT1101…
    #> 8 /tmp/Rtmp1iQb16/fs/PROJECT1101/quantification/ABY-LR-PL4-POOL54-2/PROJECT1101…
    #> [1] "--- INTEGRATION MATRICES FOUND REPORT ---"
    #> # A tibble: 8 x 5
    #>   ProjectID   concatenatePoolIDSeqRun Anomalies Quantification_type
    #>   <chr>       <chr>                   <lgl>     <chr>
    #> 1 CLOEXP      POOL6-1                 FALSE     fragmentEstimate
    #> 2 CLOEXP      POOL6-1                 FALSE     seqCount
    #> 3 PROJECT1100 ABX-LR-PL5-POOL14-1     FALSE     fragmentEstimate
    #> 4 PROJECT1100 ABX-LR-PL5-POOL14-1     FALSE     seqCount
    #> 5 PROJECT1100 ABX-LR-PL6-POOL15-1     FALSE     fragmentEstimate
    #> 6 PROJECT1100 ABX-LR-PL6-POOL15-1     FALSE     seqCount
    #> 7 PROJECT1101 ABY-LR-PL4-POOL54-2     FALSE     fragmentEstimate
    #> 8 PROJECT1101 ABY-LR-PL4-POOL54-2     FALSE     seqCount
    #>   Files_found
    #>   <fs::path>
    #> 1 /tmp/Rtmp1iQb16/fs/VA/CLOEXP/quantification/POOL6-1/VA-CLOEXP-POOL6-1_fragmen…
    #> 2 /tmp/Rtmp1iQb16/fs/VA/CLOEXP/quantification/POOL6-1/VA-CLOEXP-POOL6-1_seqCoun…
    #> 3 /tmp/Rtmp1iQb16/fs/PROJECT1100/quantification/ABX-LR-PL5-POOL14-1/PROJECT1100…
    #> 4 /tmp/Rtmp1iQb16/fs/PROJECT1100/quantification/ABX-LR-PL5-POOL14-1/PROJECT1100…
    #> 5 /tmp/Rtmp1iQb16/fs/PROJECT1100/quantification/ABX-LR-PL6-POOL15-1/PROJECT1100…
    #> 6 /tmp/Rtmp1iQb16/fs/PROJECT1100/quantification/ABX-LR-PL6-POOL15-1/PROJECT1100…
    #> 7 /tmp/Rtmp1iQb16/fs/PROJECT1101/quantification/ABY-LR-PL4-POOL54-2/PROJECT1101…
    #> 8 /tmp/Rtmp1iQb16/fs/PROJECT1101/quantification/ABY-LR-PL4-POOL54-2/PROJECT1101…

The function `aggregate_values_by_key` can perform the aggregation both on the list of matrices and a single matrix.

    # Takes the whole list and produces a list in output
    aggregated_matrices <- aggregate_values_by_key(matrices, association_file)

    # Takes a single matrix and produces a single matrix as output
    aggregated_matrices_single <- aggregate_values_by_key(
        matrices$seqCount,
        association_file
    )

chr | integration_locus | strand | GeneName | GeneStrand | SubjectID | CellMarker | Tissue | TimePoint | Value_sum
--- | --- | --- | --- | --- | --- | --- | --- | --- | ---
1 | 4519734 | + | LINC01777 | + | VA2020-mix10 | NA | NA | 0000 | 8
1 | 8426336 | - | RERE | - | VA2020-mix10 | NA | NA | 0000 | 4
1 | 8884086 | - | RERE | - | VA2020-mix11 | NA | NA | 0000 | 4
1 | 11322005 | - | MTOR | - | VA2020-mix10 | NA | NA | 0000 | 4
1 | 11772847 | + | DRAXIN | + | VA2020-mix11 | NA | NA | 0000 | 52
1 | 22453532 | + | WNT4 | - | VA2020-mix10 | NA | NA | 0000 | 8

### 3.1.1 Changing parameters to obtain different results

The function has several different parameters that have default values that can be changed according to user preference.

1. Changing the `key` value
   You can change the value of the parameter key as you see fit. This parameter should contain one or multiple columns of the association file that you want to include in the grouping when performing the aggregation. The default value is set to `c("SubjectID", "CellMarker", "Tissue", "TimePoint")` (same default key as the `aggregate_metadata` function).

    agg1 <- aggregate_values_by_key(
        x = matrices$seqCount,
        association_file = association_file,
        key = c("SubjectID", "ProjectID")
    )

chr | integration_locus | strand | GeneName | GeneStrand | SubjectID | ProjectID | Value_sum
--- | --- | --- | --- | --- | --- | --- | ---
1 | 4519734 | + | LINC01777 | + | VA2020-mix10 | CLOEXP | 2
1 | 4519734 | + | LINC01777 | + | VA2020-mix10 | PROJECT1100 | 4
1 | 4519734 | + | LINC01777 | + | VA2020-mix10 | PROJECT1101 | 2
1 | 8426336 | - | RERE | - | VA2020-mix10 | CLOEXP | 1
1 | 8426336 | - | RERE | - | VA2020-mix10 | PROJECT1100 | 2
1 | 8426336 | - | RERE | - | VA2020-mix10 | PROJECT1101 | 1

2. Changing the `lambda` value
   The `lambda` parameter indicates the function(s) to be applied to the values for aggregation. `lambda` must be a named list of either functions or purrr-style lambdas: if you would like to specify additional parameters to the function the second option is recommended. The only important note on functions is that they should perform some kind of aggregation on numeric values: this means in practical terms they need to accept a vector of numeric/integer values as input and produce a SINGLE value as output. Valid options for this purpose might be: `sum`, `mean`, `median`, `min`, `max` and so on.

    agg2 <- aggregate_values_by_key(
        x = matrices$seqCount,
        association_file = association_file,
        key = "SubjectID",
        lambda = list(mean = ~ mean(.x, na.rm = TRUE))
    )

chr | integration_locus | strand | GeneName | GeneStrand | SubjectID | Value_mean
--- | --- | --- | --- | --- | --- | ---
1 | 4519734 | + | LINC01777 | + | VA2020-mix10 | 2
1 | 8426336 | - | RERE | - | VA2020-mix10 | 1
1 | 8884086 | - | RERE | - | VA2020-mix11 | 1
1 | 11322005 | - | MTOR | - | VA2020-mix10 | 1
1 | 11772847 | + | DRAXIN | + | VA2020-mix11 | 13
1 | 22453532 | + | WNT4 | - | VA2020-mix10 | 2

Note that, when specifying purrr-style lambdas (formulas), the first parameter needs to be set to `.x`, other parameters can be set as usual.

You can also use in `lambda` functions that produce data frames or lists. In this case all variables from the produced data frame will be included in the final data frame. For example:

    agg3 <- aggregate_values_by_key(
        x = matrices$seqCount,
        association_file = association_file,
        key = "SubjectID",
        lambda = list(describe = psych::describe)
    )

    agg3
    #> # A tibble: 1,272 x 7
    #>    chr   integration_locus strand GeneName GeneStrand SubjectID Value_describe$…
    #>    <chr>             <int> <chr>  <chr>    <chr>      <chr>                <dbl>
    #>  1 1               4519734 +      LINC017… +          VA2020-m…                1
    #>  2 1               8426336 -      RERE     -          VA2020-m…                1
    #>  3 1               8884086 -      RERE     -          VA2020-m…                1
    #>  4 1              11322005 -      MTOR     -          VA2020-m…                1
    #>  5 1              11772847 +      DRAXIN   +          VA2020-m…                1
    #>  6 1              22453532 +      WNT4     -          VA2020-m…                1
    #>  7 1              25929388 -      MAN1C1   +          VA2020-m…                1
    #>  8 1              26950561 -      RPS6KA1  +          VA2020-m…                1
    #>  9 1              29116798 -      YTHDF2   +          VA2020-m…                1
    #> 10 1              30825358 -      LINC016… -          VA2020-m…                1
    #> # … with 1,262 more rows

3. Changing the `value_cols` value
   The `value_cols` parameter tells the function on which numeric columns of x the functions should be applied. NOte that every function contained in `lambda` will be applied to every column in `value_cols`: resulting columns will be named as “original name_function applied”.

    ## Obtaining multi-quantification matrix
    comp <- comparison_matrix(matrices)

    agg4 <- aggregate_values_by_key(
        x = comp,
        association_file = association_file,
        key = "SubjectID",
        lambda = list(sum = sum, mean = mean),
        value_cols = c("seqCount", "fragmentEstimate")
    )

chr | integration_locus | strand | GeneName | GeneStrand | SubjectID | seqCount_sum | seqCount_mean | fragmentEstimate_sum | fragmentEstimate_mean
--- | --- | --- | --- | --- | --- | --- | --- | --- | ---
1 | 4519734 | + | LINC01777 | + | VA2020-mix10 | 8 | 2 | 8.010711 | 2.002678
1 | 8426336 | - | RERE | - | VA2020-mix10 | 4 | 1 | 4.002137 | 1.000534
1 | 8884086 | - | RERE | - | VA2020-mix11 | 4 | 1 | 4.004477 | 1.001119
1 | 11322005 | - | MTOR | - | VA2020-mix10 | 4 | 1 | 4.002002 | 1.000501
1 | 11772847 | + | DRAXIN | + | VA2020-mix11 | 52 | 13 | 4.000695 | 1.000174
1 | 22453532 | + | WNT4 | - | VA2020-mix10 | 8 | 2 | 4.005724 | 1.001431

4. Changing the `group` value
   The `group` parameter should contain all other variables to include in the grouping besides `key`. By default this contains `c("chr", "integration_locus", "strand", "GeneName", "GeneStrand")`. You can change this grouping as you see fit, if you don’t want to add any other variable to the key, just set it to NULL.

    agg5 <- aggregate_values_by_key(
        x = matrices$seqCount,
        association_file = association_file,
        key = "SubjectID",
        lambda = list(sum = sum, mean = mean),
        group = c(mandatory_IS_vars())
    )

chr | integration_locus | strand | SubjectID | Value_sum | Value_mean
--- | --- | --- | --- | --- | ---
1 | 4519734 | + | VA2020-mix10 | 8 | 2
1 | 8426336 | - | VA2020-mix10 | 4 | 1
1 | 8884086 | - | VA2020-mix11 | 4 | 1
1 | 11322005 | - | VA2020-mix10 | 4 | 1
1 | 11772847 | + | VA2020-mix11 | 52 | 13
1 | 22453532 | + | VA2020-mix10 | 8 | 2

# 4 Reproducibility

The ISAnalytics package (calabrialab, 2021) was made possible thanks to:

- R (R Core Team, 2021)
- BiocStyle (Oleś, 2021)
- knitcitations (Boettiger, 2021)
- knitr (Xie, 2021)
- rmarkdown (Allaire, Xie, McPherson, Luraschi, et al., 2021)
- sessioninfo (Csárdi, core, Wickham, Chang, et al., 2018)
- testthat (Wickham, 2011)

This package was developed using biocthis.

`R` session information.

    #> ─ Session info ───────────────────────────────────────────────────────────────────────────────────────────────────────
    #>  setting  value
    #>  version  R version 4.1.0 (2021-05-18)
    #>  os       Ubuntu 20.04.2 LTS
    #>  system   x86_64, linux-gnu
    #>  ui       X11
    #>  language (EN)
    #>  collate  C
    #>  ctype    en_US.UTF-8
    #>  tz       America/New_York
    #>  date     2021-05-19
    #>
    #> ─ Packages ───────────────────────────────────────────────────────────────────────────────────────────────────────────
    #>  package       * version date       lib source
    #>  assertthat      0.2.1   2019-03-21 [2] CRAN (R 4.1.0)
    #>  BiocManager     1.30.15 2021-05-11 [2] CRAN (R 4.1.0)
    #>  BiocParallel    1.26.0  2021-05-19 [2] Bioconductor
    #>  BiocStyle     * 2.20.0  2021-05-19 [2] Bioconductor
    #>  bookdown        0.22    2021-04-22 [2] CRAN (R 4.1.0)
    #>  bslib           0.2.5.1 2021-05-18 [2] CRAN (R 4.1.0)
    #>  cellranger      1.1.0   2016-07-27 [2] CRAN (R 4.1.0)
    #>  cli             2.5.0   2021-04-26 [2] CRAN (R 4.1.0)
    #>  colorspace      2.0-1   2021-05-04 [2] CRAN (R 4.1.0)
    #>  crayon          1.4.1   2021-02-08 [2] CRAN (R 4.1.0)
    #>  data.table      1.14.0  2021-02-21 [2] CRAN (R 4.1.0)
    #>  DBI             1.1.1   2021-01-15 [2] CRAN (R 4.1.0)
    #>  digest          0.6.27  2020-10-24 [2] CRAN (R 4.1.0)
    #>  dplyr           1.0.6   2021-05-05 [2] CRAN (R 4.1.0)
    #>  ellipsis        0.3.2   2021-04-29 [2] CRAN (R 4.1.0)
    #>  evaluate        0.14    2019-05-28 [2] CRAN (R 4.1.0)
    #>  fansi           0.4.2   2021-01-15 [2] CRAN (R 4.1.0)
    #>  fs              1.5.0   2020-07-31 [2] CRAN (R 4.1.0)
    #>  generics        0.1.0   2020-10-31 [2] CRAN (R 4.1.0)
    #>  ggplot2         3.3.3   2020-12-30 [2] CRAN (R 4.1.0)
    #>  ggrepel         0.9.1   2021-01-15 [2] CRAN (R 4.1.0)
    #>  glue            1.4.2   2020-08-27 [2] CRAN (R 4.1.0)
    #>  gtable          0.3.0   2019-03-25 [2] CRAN (R 4.1.0)
    #>  highr           0.9     2021-04-16 [2] CRAN (R 4.1.0)
    #>  hms             1.1.0   2021-05-17 [2] CRAN (R 4.1.0)
    #>  htmltools       0.5.1.1 2021-01-22 [2] CRAN (R 4.1.0)
    #>  htmlwidgets     1.5.3   2020-12-10 [2] CRAN (R 4.1.0)
    #>  httr            1.4.2   2020-07-20 [2] CRAN (R 4.1.0)
    #>  ISAnalytics   * 1.2.0   2021-05-19 [1] Bioconductor
    #>  jquerylib       0.1.4   2021-04-26 [2] CRAN (R 4.1.0)
    #>  jsonlite        1.7.2   2020-12-09 [2] CRAN (R 4.1.0)
    #>  knitcitations * 1.0.12  2021-01-10 [2] CRAN (R 4.1.0)
    #>  knitr           1.33    2021-04-24 [2] CRAN (R 4.1.0)
    #>  lattice         0.20-44 2021-05-02 [2] CRAN (R 4.1.0)
    #>  lazyeval        0.2.2   2019-03-15 [2] CRAN (R 4.1.0)
    #>  lifecycle       1.0.0   2021-02-15 [2] CRAN (R 4.1.0)
    #>  lubridate       1.7.10  2021-02-26 [2] CRAN (R 4.1.0)
    #>  magrittr      * 2.0.1   2020-11-17 [2] CRAN (R 4.1.0)
    #>  mnormt          2.0.2   2020-09-01 [2] CRAN (R 4.1.0)
    #>  munsell         0.5.0   2018-06-12 [2] CRAN (R 4.1.0)
    #>  nlme            3.1-152 2021-02-04 [2] CRAN (R 4.1.0)
    #>  pillar          1.6.1   2021-05-16 [2] CRAN (R 4.1.0)
    #>  pkgconfig       2.0.3   2019-09-22 [2] CRAN (R 4.1.0)
    #>  plotly          4.9.3   2021-01-10 [2] CRAN (R 4.1.0)
    #>  plyr            1.8.6   2020-03-03 [2] CRAN (R 4.1.0)
    #>  ps              1.6.0   2021-02-28 [2] CRAN (R 4.1.0)
    #>  psych           2.1.3   2021-03-27 [2] CRAN (R 4.1.0)
    #>  purrr           0.3.4   2020-04-17 [2] CRAN (R 4.1.0)
    #>  R6              2.5.0   2020-10-28 [2] CRAN (R 4.1.0)
    #>  Rcapture        1.4-3   2019-12-16 [2] CRAN (R 4.1.0)
    #>  Rcpp            1.0.6   2021-01-15 [2] CRAN (R 4.1.0)
    #>  reactable       0.2.3   2020-10-04 [2] CRAN (R 4.1.0)
    #>  readr           1.4.0   2020-10-05 [2] CRAN (R 4.1.0)
    #>  readxl          1.3.1   2019-03-13 [2] CRAN (R 4.1.0)
    #>  RefManageR      1.3.0   2020-11-13 [2] CRAN (R 4.1.0)
    #>  rlang           0.4.11  2021-04-30 [2] CRAN (R 4.1.0)
    #>  rmarkdown       2.8     2021-05-07 [2] CRAN (R 4.1.0)
    #>  rstudioapi      0.13    2020-11-12 [2] CRAN (R 4.1.0)
    #>  sass            0.4.0   2021-05-12 [2] CRAN (R 4.1.0)
    #>  scales          1.1.1   2020-05-11 [2] CRAN (R 4.1.0)
    #>  sessioninfo   * 1.1.1   2018-11-05 [2] CRAN (R 4.1.0)
    #>  stringi         1.6.2   2021-05-17 [2] CRAN (R 4.1.0)
    #>  stringr         1.4.0   2019-02-10 [2] CRAN (R 4.1.0)
    #>  tibble          3.1.2   2021-05-16 [2] CRAN (R 4.1.0)
    #>  tidyr           1.1.3   2021-03-03 [2] CRAN (R 4.1.0)
    #>  tidyselect      1.1.1   2021-04-30 [2] CRAN (R 4.1.0)
    #>  tmvnsim         1.0-2   2016-12-15 [2] CRAN (R 4.1.0)
    #>  upsetjs         1.9.0   2021-02-15 [2] CRAN (R 4.1.0)
    #>  utf8            1.2.1   2021-03-12 [2] CRAN (R 4.1.0)
    #>  vctrs           0.3.8   2021-04-29 [2] CRAN (R 4.1.0)
    #>  viridisLite     0.4.0   2021-04-13 [2] CRAN (R 4.1.0)
    #>  withr           2.4.2   2021-04-18 [2] CRAN (R 4.1.0)
    #>  xfun            0.23    2021-05-15 [2] CRAN (R 4.1.0)
    #>  xml2            1.3.2   2020-04-23 [2] CRAN (R 4.1.0)
    #>  yaml            2.2.1   2020-02-01 [2] CRAN (R 4.1.0)
    #>  zip             2.1.1   2020-08-27 [2] CRAN (R 4.1.0)
    #>
    #> [1] /tmp/Rtmpxb65TG/Rinst5bff6471148ea
    #> [2] /home/biocbuild/bbs-3.13-bioc/R/library

# 5 Bibliography

This vignette was generated using BiocStyle (Oleś, 2021) with knitr (Xie, 2021) and rmarkdown (Allaire, Xie, McPherson, Luraschi, et al., 2021) running behind the scenes.

Citations made with knitcitations (Boettiger, 2021).

[1] J. Allaire, Y. Xie, J. McPherson, J. Luraschi, et al. rmarkdown: Dynamic Documents for R. R package version 2.8. 2021. <URL: https://github.com/rstudio/rmarkdown>.

[2] C. Boettiger. knitcitations: Citations for ‘Knitr’ Markdown Files. R package version 1.0.12. 2021. <URL: https://CRAN.R-project.org/package=knitcitations>.

[3] G. Csárdi, R. core, H. Wickham, W. Chang, et al. sessioninfo: R Session Information. R package version 1.1.1. 2018. <URL: https://CRAN.R-project.org/package=sessioninfo>.

[4] A. Oleś. BiocStyle: Standard styles for vignettes and other Bioconductor documents. R package version 2.20.0. 2021. <URL: https://github.com/Bioconductor/BiocStyle>.

[5] R Core Team. R: A Language and Environment for Statistical Computing. R Foundation for Statistical Computing. Vienna, Austria, 2021. <URL: https://www.R-project.org/>.

[6] H. Wickham. “testthat: Get Started with Testing”. In: The R Journal 3 (2011), pp. 5-10. <URL: https://journal.r-project.org/archive/2011-1/RJournal_2011-1_Wickham.pdf>.

[7] Y. Xie. knitr: A General-Purpose Package for Dynamic Report Generation in R. R package version 1.33. 2021. <URL: https://yihui.org/knitr/>.

[8] calabrialab. Analyze gene therapy vector insertion sites data identified from genomics next generation sequencing reads for clonal tracking studies. https://github.com/calabrialab/ISAnalytics - R package version 1.2.0. 2021. DOI: 10.18129/B9.bioc.ISAnalytics. <URL: http://www.bioconductor.org/packages/ISAnalytics>.