Last updated: 2021-02-10
Checks: 6 1
Knit directory: melanoma_publication_old_data/
This reproducible R Markdown analysis was created with workflowr (version 1.6.2). The Checks tab describes the reproducibility checks that were applied when the results were created. The Past versions tab lists the development history.
The R Markdown file has unstaged changes. To know which version of the R Markdown file created these results, you’ll want to first commit it to the Git repo. If you’re still working on the analysis, you can ignore this warning. When you’re finished, you can run wflow_publish
to commit the R Markdown file and build the HTML.
Great job! The global environment was empty. Objects defined in the global environment can affect the analysis in your R Markdown file in unknown ways. For reproduciblity it’s best to always run the code in an empty environment.
The command set.seed(20200728)
was run prior to running the code in the R Markdown file. Setting a seed ensures that any results that rely on randomness, e.g. subsampling or permutations, are reproducible.
Great job! Recording the operating system, R version, and package versions is critical for reproducibility.
Nice! There were no cached chunks for this analysis, so you can be confident that you successfully produced the results during this run.
Great job! Using relative paths to the files within your workflowr project makes it easier to run your code on other machines.
Great! You are using Git for version control. Tracking code development and connecting the code version to the results is critical for reproducibility.
The results in this page were generated with repository version 2e443a5. See the Past versions tab to see a history of the changes made to the R Markdown and HTML files.
Note that you need to be careful to ensure that all relevant files for the analysis have been committed to Git prior to generating the results (you can use wflow_publish
or wflow_git_commit
). workflowr only checks the R Markdown file, but you know if there are other scripts or data files that it depends on. Below is the status of the Git repository when the results were generated:
Ignored files:
Ignored: .DS_Store
Ignored: .Rhistory
Ignored: .Rproj.user/
Ignored: ._.DS_Store
Ignored: code/.DS_Store
Ignored: code/._.DS_Store
Ignored: code/helper_functions/._findCommunity.R
Ignored: data/.DS_Store
Ignored: data/._.DS_Store
Ignored: data/._layer_1_classification_rna.csv
Ignored: data/._survdat_for_modelling.csv
Ignored: data/12plex_validation/
Ignored: data/200323_TMA_256_Hot Cold_Clinical Data_Updated Response Data_For Collaborators_latest updated_Mar_2020_for_Coxph_modeling.csv
Ignored: data/layer_1_classification_protein.csv
Ignored: data/layer_1_classification_rna.csv
Ignored: data/manual_infiltration/
Ignored: data/protein/
Ignored: data/rna/
Ignored: data/safety_copy_SCE/
Ignored: data/sce_RNA.rds
Ignored: data/sce_protein.rds
Ignored: data/survdat_for_modelling.csv
Ignored: output/.DS_Store
Ignored: output/._.DS_Store
Ignored: output/._protein_neutrophil.png
Ignored: output/._rna_neutrophil.png
Ignored: output/PSOCKclusterOut/
Ignored: output/bcell_grouping.png
Ignored: output/dysfunction_correlation.pdf
Unstaged changes:
Modified: .gitignore
Modified: analysis/04_1_Protein_celltype_classification.rmd
Modified: analysis/04_1_RNA_celltype_classification.rmd
Modified: analysis/Summary_Statistics.rmd
Modified: analysis/Supp-Figure_2.rmd
Modified: analysis/Supp-Figure_4.rmd
Deleted: code/findPackages.R
Note that any generated files, e.g. HTML, png, CSS, etc., are not included in this status report because it is ok for generated content to have uncommitted changes.
These are the previous versions of the repository in which changes were made to the R Markdown (analysis/Summary_Statistics.rmd
) and HTML (docs/Summary_Statistics.html
) files. If you’ve configured a remote Git repository (see ?wflow_git_remote
), click on the hyperlinks in the table below to view the files as they were in that past version.
File | Version | Author | Date | Message |
---|---|---|---|---|
Rmd | 2e443a5 | toobiwankenobi | 2021-02-09 | remove files that are not needed |
html | 3f5af3f | toobiwankenobi | 2021-02-09 | add .html files |
Rmd | afa7957 | toobiwankenobi | 2021-02-08 | minor changes on figures and figure order |
Rmd | f9bb33a | toobiwankenobi | 2021-02-04 | new Figure 5 and minor changes in figure order |
Rmd | 0c52285 | toobiwankenobi | 2021-01-12 | new summary stats |
Rmd | 2ac1833 | toobiwankenobi | 2021-01-08 | changes to Figures |
Rmd | 9442cb9 | toobiwankenobi | 2020-12-22 | add all new files |
This script gives an overview over the clinical data and generates statistics used in the manuscript.
sapply(list.files("code/helper_functions", full.names = TRUE), source)
code/helper_functions/calculateSummary.R
value ?
visible FALSE
code/helper_functions/censor_dat.R
value ?
visible FALSE
code/helper_functions/detect_mRNA_expression.R
value ?
visible FALSE
code/helper_functions/DistanceToClusterCenter.R
value ?
visible FALSE
code/helper_functions/findClusters.R
value ?
visible FALSE
code/helper_functions/findCommunity.R
value ?
visible FALSE
code/helper_functions/getCellCount.R
value ?
visible FALSE
code/helper_functions/getInfoFromString.R
value ?
visible FALSE
code/helper_functions/getSpotnumber.R
value ?
visible FALSE
code/helper_functions/plotBarFracCluster.R
value ?
visible FALSE
code/helper_functions/plotCellCounts.R
value ?
visible FALSE
code/helper_functions/plotCellFrac.R
value ?
visible FALSE
code/helper_functions/plotCellFracGroups.R
value ?
visible FALSE
code/helper_functions/plotCellFracGroupsSubset.R
value ?
visible FALSE
code/helper_functions/plotCellFractions.R
value ?
visible FALSE
code/helper_functions/plotDist.R
value ?
visible FALSE
code/helper_functions/scatter_function.R
value ?
visible FALSE
code/helper_functions/sceChecks.R
value ?
visible FALSE
code/helper_functions/validityChecks.R
value ?
visible FALSE
library(data.table)
library(dplyr)
library(SingleCellExperiment)
library(readr)
# SCE object
sce_prot = readRDS(file = "data/sce_protein.rds")
sce_rna = readRDS(file = "data/sce_RNA.rds")
# image
image_mat_rna <- read.csv("data/rna/Image.csv")
image_mat_prot <- read.csv("data/protein/Image.csv")
# Number of Patients
data.frame(colData(sce_prot)) %>%
filter(Location != "CTRL") %>%
distinct(PatientID) %>%
summarise(n=n())
n
1 69
# Number of Samples without control samples
data.frame(colData(sce_prot)) %>%
filter(Location != "CTRL") %>%
distinct(Description) %>%
summarise(n=n())
n
1 159
# Number of Samples - Mutation
data.frame(colData(sce_prot)) %>%
filter(Location != "CTRL") %>%
distinct(Description, .keep_all = T) %>%
group_by(Mutation) %>%
summarise(n=n()) %>%
mutate(percentage = round(n/sum(n) *100,0))
# A tibble: 6 x 3
Mutation n percentage
<chr> <int> <dbl>
1 BRAF 71 45
2 GNAQ 2 1
3 KRAS 1 1
4 NRAS 50 31
5 unknown 7 4
6 wt 28 18
# Number of Samples - Location
data.frame(colData(sce_prot)) %>%
filter(Location != "CTRL") %>%
distinct(Description, .keep_all = T) %>%
group_by(MM_location_simplified) %>%
summarise(n=n()) %>%
mutate(percentage = round(n/sum(n) *100,0))
# A tibble: 3 x 3
MM_location_simplified n percentage
<chr> <int> <dbl>
1 LN 54 34
2 other 29 18
3 skin 76 48
# Number of Patients
data.frame(colData(sce_prot)) %>%
filter(Location != "CTRL") %>%
distinct(Description, .keep_all = T) %>%
group_by(PatientID) %>%
summarise(n=n()) %>%
group_by(n) %>%
summarise(group_sizes = n())
# A tibble: 7 x 2
n group_sizes
<int> <int>
1 1 14
2 2 39
3 3 7
4 4 4
5 5 1
6 6 3
7 7 1
# Number Controls
data.frame(colData(sce_prot)) %>%
filter(Location != "CTRL") %>%
distinct(Description, .keep_all = T) %>%
group_by(MM_location) %>%
summarise(n=n())
# A tibble: 11 x 2
MM_location n
<chr> <int>
1 brain 7
2 LN 49
3 LN or soft tissue 3
4 mucosal 4
5 parotis or LN 2
6 skin 4
7 skin_cutaneous 10
8 skin_subcutaneous 52
9 skin_undefine 10
10 soft tissue 9
11 visceral 9
# Number Controls
data.frame(colData(sce_prot)) %>%
filter(Location == "CTRL") %>%
distinct(Description, .keep_all = T) %>%
group_by(TissueType) %>%
summarise(n=n())
# A tibble: 3 x 2
TissueType n
<chr> <int>
1 Lymphnode 2
2 PSO 2
3 Skin 3
ncol(sce_rna)
[1] 864263
ncol(sce_prot)
[1] 989404
# diff in ablated area
area_prot <- data.frame(image_area = image_mat_prot$Height_FullStack * image_mat_prot$Width_FullStack)
area_prot$Description <- image_mat_prot$Metadata_Description
area_prot$data_set <- "Protein"
area_rna <- data.frame(image_area = image_mat_rna$Height_FullStack * image_mat_rna$Width_FullStack)
area_rna$Description <- image_mat_rna$Metadata_Description
area_rna$data_set <- "RNA"
image_area <- rbind(area_rna, area_prot)
# Ratio #Cells Protein/RNA
round(ncol(sce_prot) / ncol(sce_rna),2)
[1] 1.14
area <- image_area %>%
group_by(data_set) %>%
summarise(area_sum = sum(image_area))
# Ratio Area Protein/RNA
round(area[area$data_set == "Protein", ]$area_sum / area[area$data_set == "RNA", ]$area_sum,2)
[1] 1.07
# Protein data
data.frame(colData(sce_prot)) %>%
filter(Location != "CTRL") %>%
group_by(celltype) %>%
summarise(n=n()) %>%
mutate(percentage=round(n/sum(n)*100,1))
# A tibble: 11 x 3
celltype n percentage
<chr> <int> <dbl>
1 Bcell 39604 4.1
2 BnTcell 25921 2.7
3 Macrophage 62049 6.5
4 Neutrophil 10900 1.1
5 pDC 6850 0.7
6 Stroma 59246 6.2
7 Tcytotoxic 52567 5.5
8 Thelper 54306 5.6
9 Tregulatory 9226 1
10 Tumor 622114 64.7
11 unknown 18567 1.9
# RNA data
data.frame(colData(sce_rna)) %>%
filter(Location != "CTRL") %>%
group_by(celltype) %>%
summarise(n=n()) %>%
mutate(percentage=round(n/sum(n)*100,1))
# A tibble: 10 x 3
celltype n percentage
<chr> <int> <dbl>
1 CD38 10931 1.3
2 HLA-DR 29557 3.5
3 Macrophage 64405 7.7
4 Neutrophil 5018 0.6
5 Stroma 24574 2.9
6 Tcell 87858 10.5
7 Tcytotoxic 44630 5.3
8 Tumor 549153 65.3
9 unknown 2972 0.4
10 Vasculature 21297 2.5
# Percentage of Chemokine Producing Cells
data.frame(colData(sce_rna)) %>%
filter(Location != "CTRL") %>%
group_by(chemokine) %>%
summarise(n=n()) %>%
mutate(percentage = round((n / sum(n)) *100,1))
# A tibble: 2 x 3
chemokine n percentage
<lgl> <int> <dbl>
1 FALSE 782417 93.1
2 TRUE 57978 6.9
# Chemokines by Celltype
data.frame(colData(sce_rna)) %>%
filter(Location != "CTRL") %>%
filter(chemokine == 1) %>%
group_by(celltype) %>%
summarise(n=n()) %>%
mutate(percentage = round((n / sum(n)) *100,1))
# A tibble: 10 x 3
celltype n percentage
<chr> <int> <dbl>
1 CD38 920 1.6
2 HLA-DR 3202 5.5
3 Macrophage 12675 21.9
4 Neutrophil 1378 2.4
5 Stroma 3913 6.7
6 Tcell 12179 21
7 Tcytotoxic 9428 16.3
8 Tumor 12965 22.4
9 unknown 45 0.1
10 Vasculature 1273 2.2
# Sum of major expressing cell types
data.frame(colData(sce_rna)) %>%
filter(Location != "CTRL") %>%
filter(chemokine == 1) %>%
group_by(celltype) %>%
summarise(n=n()) %>%
mutate(percentage = round((n / sum(n)) *100,1)) %>%
filter(percentage > 15) %>%
summarise(sum <- sum(percentage))
# A tibble: 1 x 1
`sum <- sum(percentage)`
<dbl>
1 81.6
# CXCL13 experssion by Tcells
# Chemokines by Celltype
data.frame(colData(sce_rna)) %>%
filter(Location != "CTRL") %>%
filter(expressor == "CXCL13") %>%
group_by(celltype) %>%
summarise(n=n()) %>%
mutate(percentage = round((n / sum(n)) *100,1)) %>%
filter(percentage > 30) %>%
summarise(sum <- sum(percentage))
# A tibble: 1 x 1
`sum <- sum(percentage)`
<dbl>
1 71.1
data.frame(colData(sce_rna)) %>%
rowwise() %>%
mutate(number_of_chemokines = length(strsplit(expressor, "_")[[1]])) %>%
filter(Location != "CTRL") %>%
filter(chemokine == 1) %>%
group_by(number_of_chemokines) %>%
summarise(n=n()) %>%
mutate(percentage = round((n / sum(n)) *100,1))
# A tibble: 8 x 3
number_of_chemokines n percentage
<int> <int> <dbl>
1 1 45687 78.8
2 2 9479 16.3
3 3 2152 3.7
4 4 518 0.9
5 5 109 0.2
6 6 22 0
7 7 8 0
8 8 3 0
data.frame(colData(sce_rna)) %>%
filter(Location != "CTRL") %>%
filter(CCL8 == 1) %>%
summarise(n=n())
n
1 862
# Percentage of Tumor Cells that Express a Chemokine
data.frame(colData(sce_rna)) %>%
filter(Location != "CTRL") %>%
filter(celltype == "Tumor") %>%
group_by(chemokine) %>%
summarise(n=n()) %>%
mutate(percentage = round((n / sum(n)) *100,1))
# A tibble: 2 x 3
chemokine n percentage
<lgl> <int> <dbl>
1 FALSE 536188 97.6
2 TRUE 12965 2.4
# CXCL10 in Tumor cells
data.frame(colData(sce_rna)) %>%
filter(Location != "CTRL") %>%
filter(CXCL10 == 1) %>%
group_by(celltype) %>%
summarise(n=n()) %>%
mutate(percentage = round((n / sum(n)) *100,1))
# A tibble: 10 x 3
celltype n percentage
<chr> <int> <dbl>
1 CD38 71 0.6
2 HLA-DR 332 2.8
3 Macrophage 3624 30.3
4 Neutrophil 166 1.4
5 Stroma 212 1.8
6 Tcell 1275 10.7
7 Tcytotoxic 1364 11.4
8 Tumor 4778 40
9 unknown 3 0
10 Vasculature 117 1
data.frame(colData(sce_rna)) %>%
filter(Location != "CTRL") %>%
filter(celltype == "Tumor") %>%
group_by(CXCL10) %>%
summarise(n=n()) %>%
mutate(percentage = round((n / sum(n)) *100,1))
# A tibble: 2 x 3
CXCL10 n percentage
<dbl> <int> <dbl>
1 0 544375 99.1
2 1 4778 0.9
# CCL2 in Tumor cells
data.frame(colData(sce_rna)) %>%
filter(Location != "CTRL") %>%
filter(CCL2 == 1) %>%
group_by(celltype) %>%
summarise(n=n()) %>%
mutate(percentage = round((n / sum(n)) *100,1))
# A tibble: 10 x 3
celltype n percentage
<chr> <int> <dbl>
1 CD38 270 2.7
2 HLA-DR 327 3.3
3 Macrophage 3041 30.3
4 Neutrophil 89 0.9
5 Stroma 1182 11.8
6 Tcell 1198 11.9
7 Tcytotoxic 768 7.7
8 Tumor 2872 28.6
9 unknown 7 0.1
10 Vasculature 282 2.8
data.frame(colData(sce_rna)) %>%
filter(Location != "CTRL") %>%
filter(celltype == "Tumor") %>%
group_by(CCL2) %>%
summarise(n=n()) %>%
mutate(percentage = round((n / sum(n)) *100,1))
# A tibble: 2 x 3
CCL2 n percentage
<dbl> <int> <dbl>
1 0 546281 99.5
2 1 2872 0.5
# CXCL8 in Tumor cells
data.frame(colData(sce_rna)) %>%
filter(Location != "CTRL") %>%
filter(CXCL8 == 1) %>%
group_by(celltype) %>%
summarise(n=n()) %>%
mutate(percentage = round((n / sum(n)) *100,1))
# A tibble: 10 x 3
celltype n percentage
<chr> <int> <dbl>
1 CD38 18 0.4
2 HLA-DR 53 1.2
3 Macrophage 641 14.8
4 Neutrophil 1058 24.4
5 Stroma 69 1.6
6 Tcell 133 3.1
7 Tcytotoxic 95 2.2
8 Tumor 2214 51
9 unknown 13 0.3
10 Vasculature 46 1.1
data.frame(colData(sce_rna)) %>%
filter(Location != "CTRL") %>%
filter(celltype == "Tumor") %>%
group_by(CXCL8) %>%
summarise(n=n()) %>%
mutate(percentage = round((n / sum(n)) *100,1))
# A tibble: 2 x 3
CXCL8 n percentage
<dbl> <int> <dbl>
1 0 546939 99.6
2 1 2214 0.4
# CXCL12 in Tumor cells
data.frame(colData(sce_rna)) %>%
filter(Location != "CTRL") %>%
filter(CXCL12 == 1) %>%
group_by(celltype) %>%
summarise(n=n()) %>%
mutate(percentage = round((n / sum(n)) *100,1))
# A tibble: 10 x 3
celltype n percentage
<chr> <int> <dbl>
1 CD38 340 4.3
2 HLA-DR 255 3.2
3 Macrophage 1287 16.3
4 Neutrophil 14 0.2
5 Stroma 2373 30
6 Tcell 1445 18.3
7 Tcytotoxic 681 8.6
8 Tumor 1060 13.4
9 unknown 3 0
10 Vasculature 453 5.7
data.frame(colData(sce_rna)) %>%
filter(Location != "CTRL") %>%
filter(celltype == "Tumor") %>%
group_by(CXCL12) %>%
summarise(n=n()) %>%
mutate(percentage = round((n / sum(n)) *100,1))
# A tibble: 2 x 3
CXCL12 n percentage
<dbl> <int> <dbl>
1 0 548093 99.8
2 1 1060 0.2
# overall chemokine expression
data.frame(colData(sce_rna)) %>%
filter(Location == "CTRL") %>%
group_by(chemokine, TissueType) %>%
summarise(n=n()) %>%
reshape2::dcast(TissueType ~ chemokine, value.var = "n", fill = 0) %>%
mutate(percentage_expressing = round(`TRUE` / (`FALSE`+`TRUE`) * 100,1))
TissueType FALSE TRUE percentage_expressing
1 Lymphnode 16949 1001 5.6
2 PSO 2524 264 9.5
3 Skin 3097 33 1.1
# CXCL13 expression in control samples
data.frame(colData(sce_rna)) %>%
filter(Location == "CTRL") %>%
group_by(CXCL13, TissueType) %>%
summarise(n=n()) %>%
reshape2::dcast(TissueType ~ CXCL13, value.var = "n", fill = 0) %>%
mutate(percentage_expressing = round(`1` / (`0`+`1`) * 100,1))
TissueType 0 1 percentage_expressing
1 Lymphnode 17316 634 3.5
2 PSO 2787 1 0.0
3 Skin 3130 0 0.0
# CXCL13 expression in tumor samples
data.frame(colData(sce_rna)) %>%
filter(Location != "CTRL") %>%
group_by(CXCL13, MM_location) %>%
summarise(n=n()) %>%
reshape2::dcast(MM_location ~ CXCL13, value.var = "n", fill = 0) %>%
mutate(percentage_expressing = round(`1` / (`0`+`1`) * 100,1))
MM_location 0 1 percentage_expressing
1 brain 28923 922 3.1
2 LN 288382 5157 1.8
3 LN or soft tissue 21060 148 0.7
4 mucosal 20428 34 0.2
5 parotis or LN 12698 23 0.2
6 skin 9656 72 0.7
7 skin_cutaneous 64397 74 0.1
8 skin_subcutaneous 268021 1582 0.6
9 skin_undefine 38163 508 1.3
10 soft tissue 38483 159 0.4
11 visceral 41479 26 0.1
# CXCL10 expression in control samples
data.frame(colData(sce_rna)) %>%
filter(Location == "CTRL") %>%
group_by(CXCL10, TissueType) %>%
summarise(n=n()) %>%
reshape2::dcast(TissueType ~ CXCL10, value.var = "n", fill = 0) %>%
mutate(percentage_expressing = round(`1` / (`0`+`1`) * 100,1))
TissueType 0 1 percentage_expressing
1 Lymphnode 17916 34 0.2
2 PSO 2782 6 0.2
3 Skin 3130 0 0.0
# CXCL10 expression in tumor samples
data.frame(colData(sce_rna)) %>%
filter(Location != "CTRL") %>%
group_by(CXCL10, MM_location) %>%
summarise(n=n()) %>%
reshape2::dcast(MM_location ~ CXCL10, value.var = "n", fill = 0) %>%
mutate(percentage_expressing = round(`1` / (`0`+`1`) * 100,1))
MM_location 0 1 percentage_expressing
1 brain 29336 509 1.7
2 LN 289761 3778 1.3
3 LN or soft tissue 20929 279 1.3
4 mucosal 20405 57 0.3
5 parotis or LN 12714 7 0.1
6 skin 9681 47 0.5
7 skin_cutaneous 64227 244 0.4
8 skin_subcutaneous 264588 5015 1.9
9 skin_undefine 36915 1756 4.5
10 soft tissue 38399 243 0.6
11 visceral 41498 7 0.0
cont_table <- data.frame(colData(sce_prot)) %>%
distinct(Description,.keep_all = T) %>%
filter(is.na(dysfunction_score) == FALSE) %>%
group_by(bcell_patch_score, dysfunction_score) %>%
summarise(n=n()) %>%
filter(bcell_patch_score %in% c("small B cell patches", "TLS")) %>%
reshape2::dcast(bcell_patch_score ~ dysfunction_score, value.var = "n", fill = 0)
fisher.test(cont_table[,-1])
Fisher's Exact Test for Count Data
data: cont_table[, -1]
p-value = 0.04056
alternative hypothesis: true odds ratio is not equal to 1
95 percent confidence interval:
1.087594 1088.437009
sample estimates:
odds ratio
16.19942
sessionInfo()
R version 4.0.3 (2020-10-10)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Ubuntu 20.04 LTS
Matrix products: default
BLAS/LAPACK: /usr/lib/x86_64-linux-gnu/openblas-pthread/libopenblasp-r0.3.8.so
locale:
[1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C
[3] LC_TIME=en_US.UTF-8 LC_COLLATE=en_US.UTF-8
[5] LC_MONETARY=en_US.UTF-8 LC_MESSAGES=C
[7] LC_PAPER=en_US.UTF-8 LC_NAME=C
[9] LC_ADDRESS=C LC_TELEPHONE=C
[11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C
attached base packages:
[1] parallel stats4 stats graphics grDevices utils datasets
[8] methods base
other attached packages:
[1] readr_1.4.0 SingleCellExperiment_1.12.0
[3] SummarizedExperiment_1.20.0 Biobase_2.50.0
[5] GenomicRanges_1.42.0 GenomeInfoDb_1.26.2
[7] IRanges_2.24.1 S4Vectors_0.28.1
[9] BiocGenerics_0.36.0 MatrixGenerics_1.2.0
[11] matrixStats_0.57.0 dplyr_1.0.2
[13] data.table_1.13.6 workflowr_1.6.2
loaded via a namespace (and not attached):
[1] tidyselect_1.1.0 xfun_0.20 reshape2_1.4.4
[4] purrr_0.3.4 lattice_0.20-41 vctrs_0.3.6
[7] generics_0.1.0 htmltools_0.5.0 yaml_2.2.1
[10] utf8_1.1.4 rlang_0.4.10 later_1.1.0.1
[13] pillar_1.4.7 glue_1.4.2 plyr_1.8.6
[16] GenomeInfoDbData_1.2.4 lifecycle_0.2.0 stringr_1.4.0
[19] zlibbioc_1.36.0 evaluate_0.14 knitr_1.30
[22] httpuv_1.5.4 fansi_0.4.1 Rcpp_1.0.5
[25] promises_1.1.1 DelayedArray_0.16.0 XVector_0.30.0
[28] fs_1.5.0 hms_0.5.3 digest_0.6.27
[31] stringi_1.5.3 rprojroot_2.0.2 grid_4.0.3
[34] cli_2.2.0 tools_4.0.3 bitops_1.0-6
[37] magrittr_2.0.1 RCurl_1.98-1.2 tibble_3.0.4
[40] crayon_1.3.4 whisker_0.4 pkgconfig_2.0.3
[43] ellipsis_0.3.1 Matrix_1.3-2 assertthat_0.2.1
[46] rmarkdown_2.6 rstudioapi_0.13 R6_2.5.0
[49] git2r_0.28.0 compiler_4.0.3