Tyser, R.C.V., Mahammadov, E., Nakanoh, S., Vallier, L., Scialdone, A., and Srinivas, S. (2021). Single-cell transcriptomic characterization of a gastrulating human embryo. Nature 600, 285–289.
Load required packages.
library(tidyverse)
library(Matrix)
library(patchwork)
library(extrafont)Sys.time()## [1] "2022-01-20 22:34:30 CST"
source(
file = file.path(
SCRIPT_DIR,
"utilities.R"
)
)plot_embedding_highlight <- function(embedding, x, y, label, n_cols = 3) {
cell_metadata_selected <- x
selected_column <- y
purrr::map(levels(cell_metadata_selected[[selected_column]]), \(x) {
values <- embedding |>
dplyr::left_join(cell_metadata_selected) |>
dplyr::mutate(
value = case_when(
.data[[selected_column]] == x ~ "1",
.data[[selected_column]] != x ~ "0"
)
) |>
dplyr::pull(value) |>
as.integer() |>
as.factor()
plot_embedding(
embedding = embedding[, c(x_column, y_column)],
color_values = values,
label = glue::glue(
"{label}; ",
"{x}: {sum(as.integer(as.character(values)), na.rm = TRUE)}"
),
label_position = NULL,
show_color_value_labels = FALSE,
show_color_legend = FALSE,
geom_point_size = GEOM_POINT_SIZE,
sort_values = TRUE,
shuffle_values = FALSE,
rasterise = RASTERISED,
legend_size = 2
) +
theme_customized(
legend_key_size = 2,
legend_text_size = 5
) +
scale_color_manual(
na.translate = TRUE,
values = c("grey70", "salmon"),
na.value = "#7F7F7F"
) +
ggplot2::annotate(
geom = "text",
x = Inf,
y = Inf,
label = sum(as.integer(as.character(values)), na.rm = TRUE),
size = 5 / ggplot2::.pt,
hjust = 1,
vjust = 1,
na.rm = FALSE
)
}) |>
purrr::reduce(`+`) +
patchwork::plot_layout(ncol = n_cols) +
patchwork::plot_annotation(
theme = ggplot2::theme(plot.margin = ggplot2::margin())
)
}PROJECT_DIR <- "/Users/jialei/Dropbox/Data/Projects/UTSW/Peri-implantation"ad <- reticulate::import(module = "anndata", convert = TRUE)
print(ad$`__version__`)## [1] "0.7.6"
adata_files <- purrr::map(c("", "_salmon", "_kallisto"), \(x) {
file.path(
PROJECT_DIR,
"raw",
"public",
"PRJEB40781",
paste0("matrix", x),
"adata.h5ad"
)
})
purrr::map_lgl(adata_files, file.exists)## [1] TRUE TRUE TRUE
BACKED <- NULL
matrix_readcount_use <- purrr::map(adata_files, function(x) {
ad$read_h5ad(
filename = x, backed = BACKED
) |>
convert_adata()
})
names(matrix_readcount_use) <- c("star", "salmon", "kallisto")
purrr::map_int(matrix_readcount_use, ncol)## star salmon kallisto
## 1195 1195 1195
BACKED <- "r"
cell_metadata <- purrr::map(adata_files, function(x) {
if (stringr::str_detect(x, pattern = "kallisto")) {
y <- "kallisto"
} else if (stringr::str_detect(x, pattern = "salmon")) {
y <- "salmon"
} else {
y <- "star"
}
ad$read_h5ad(
filename = x, backed = BACKED
)$obs |>
tibble::rownames_to_column(var = "cell") |>
dplyr::select(cell, everything()) |>
dplyr::mutate(method = y)
})
names(cell_metadata) <- c("star", "salmon", "kallisto")
purrr::map_int(cell_metadata, nrow)## star salmon kallisto
## 1195 1195 1195
Check memory usage.
purrr::walk(list(matrix_readcount_use, cell_metadata), function(x) {
print(object.size(x), units = "auto", standard = "SI")
})## 203.6 MB
## 381.5 kB
cell_metadata_PRJEB40781 <- vroom::vroom(
file = file.path(
PROJECT_DIR,
"raw",
"public",
"PRJEB40781",
"matrix",
"cell_metadata.csv"
)
) |>
dplyr::mutate(
lineage = factor(lineage)
)## Rows: 1195 Columns: 9
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr (9): cell, run, source_name, developmental_stage, individual, sex, sampl...
##
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
EMBEDDING_FILE <- "embedding_ncomponents15_ccc1_seed20210719.csv.gz"
embedding_1195 <- purrr::map(c("star", "salmon", "kallisto"), \(x) {
vroom::vroom(
file = file.path(
PROJECT_DIR,
"raw/public/PRJEB40781",
"clustering/PRJEB40781/",
x,
"/exploring",
"Scanpy_Harmony",
EMBEDDING_FILE
)
) |>
dplyr::mutate(method = x)
}) |>
dplyr::bind_rows()
embedding_1195 |> head()x_column <- "x_umap_min_dist=0.1"
y_column <- "y_umap_min_dist=0.1"
GEOM_POINT_SIZE <- 1.25
EMBEDDING_TITLE_PREFIX <- "UMAP"
RASTERISED <- TRUEcell_metadata |>
dplyr::bind_rows() |>
dplyr::group_by(method) |>
dplyr::summarise(
num_cells = dplyr::n(),
median_umis = median(num_umis),
median_features = median(num_features),
median_mt_percentage = median(mt_percentage)
) |>
dplyr::mutate(
method = factor(
method,
levels = c("star", "salmon", "kallisto")
)
) |>
dplyr::arrange(method) |>
gt::gt()| method | num_cells | median_umis | median_features | median_mt_percentage |
|---|---|---|---|---|
| star | 1195 | 899241 | 4379 | 8.164051e-03 |
| salmon | 1195 | 531492 | 4500 | 7.394771e-03 |
| kallisto | 1195 | 553929 | 4949 | 4.271283e-06 |
purrr::map(c("star", "salmon", "kallisto"), \(x) {
plot_embedding(
embedding = embedding_1195[, c(x_column, y_column, "method")] |>
dplyr::filter(method == x),
color_values = embedding_1195$leiden[embedding_1195$method == x]
|> as.factor(),
label = paste(
EMBEDDING_TITLE_PREFIX,
paste(x, "embedding"),
paste(x, "clustering"),
sep = "; "
),
label_position = NULL,
show_color_value_labels = TRUE,
show_color_legend = FALSE,
geom_point_size = GEOM_POINT_SIZE,
sort_values = FALSE,
shuffle_values = TRUE,
rasterise = RASTERISED
) +
theme_customized()
}) |>
purrr::reduce(`+`) +
patchwork::plot_layout(ncol = 3) +
patchwork::plot_annotation(
theme = ggplot2::theme(plot.margin = ggplot2::margin())
)purrr::map(c("star", "salmon", "kallisto"), \(x) {
embedding_star <- embedding_1195[, c(
x_column, y_column,
"method", "cell", "leiden"
)] |>
dplyr::filter(method == "star")
values <- embedding_1195[, c(
x_column, y_column,
"method", "leiden", "cell"
)] |>
dplyr::filter(method == x) |>
dplyr::left_join(
embedding_star |> dplyr::select(cell, leiden_star = leiden)
) |>
dplyr::pull(leiden_star)
plot_embedding(
embedding = embedding_1195[, c(x_column, y_column, "method")] |>
dplyr::filter(method == x),
color_values = values
|> as.factor(),
label = paste(
EMBEDDING_TITLE_PREFIX,
paste(x, "embedding"),
"star clustering",
sep = "; "
),
label_position = NULL,
show_color_value_labels = TRUE,
show_color_legend = FALSE,
geom_point_size = GEOM_POINT_SIZE,
sort_values = FALSE,
shuffle_values = TRUE,
rasterise = RASTERISED
) +
theme_customized()
}) |>
purrr::reduce(`+`) +
patchwork::plot_layout(ncol = 3) +
patchwork::plot_annotation(
theme = theme(plot.margin = margin())
)purrr::map(c("star", "salmon", "kallisto"), \(x) {
plot_embedding(
embedding = embedding_1195[, c(x_column, y_column, "method")] |>
dplyr::filter(method == x),
color_values = embedding_1195[, c("method", "cell")] |>
dplyr::filter(method == x) |>
dplyr::left_join(
cell_metadata[[x]]
) |>
dplyr::pull(num_umis) |>
{
\(x) log10(x)
}(),
label = paste(EMBEDDING_TITLE_PREFIX, paste(x, "embedding"), "UMI", sep = "; "),
label_position = NULL,
show_color_value_labels = FALSE,
show_color_legend = TRUE,
geom_point_size = GEOM_POINT_SIZE / 1.5,
sort_values = TRUE,
shuffle_values = FALSE,
rasterise = RASTERISED,
legend_size = 2
) +
theme_customized(
legend_key_size = 2,
legend_text_size = 5
)
}) |>
purrr::reduce(`+`) +
patchwork::plot_layout(ncol = 3) +
patchwork::plot_annotation(
theme = ggplot2::theme(plot.margin = ggplot2::margin())
)FEATURES_SELECTED <- c(
"ENSG00000204531_POU5F1",
#
"ENSG00000164736_SOX17",
#
"ENSG00000179348_GATA2"
)purrr::map(FEATURES_SELECTED, \(y) {
selected_feature <- y
purrr::map(c("star", "salmon", "kallisto"), \(x) {
values <- log10(
calc_cpm(
matrix_readcount_use[[x]][, embedding_1195$cell[embedding_1195$method == x]]
)[selected_feature, ] + 1
)
plot_embedding(
embedding = embedding_1195[, c(x_column, y_column, "method")] |>
dplyr::filter(method == x),
color_values = values,
label = paste(
EMBEDDING_TITLE_PREFIX,
paste(x, "embedding"),
x,
selected_feature |> stringr::str_remove(pattern = "^.+_"),
sep = "; "
),
label_position = NULL,
show_color_value_labels = FALSE,
show_color_legend = TRUE,
geom_point_size = GEOM_POINT_SIZE / 1.5,
sort_values = TRUE,
shuffle_values = FALSE,
rasterise = RASTERISED,
legend_size = 2
) +
theme_customized(
legend_key_size = 2,
legend_text_size = 5
)
})
}) |>
unlist(recursive = FALSE) |>
purrr::reduce(`+`) +
patchwork::plot_layout(ncol = 3) +
patchwork::plot_annotation(
theme = ggplot2::theme(plot.margin = ggplot2::margin())
)purrr::map(FEATURES_SELECTED, \(y) {
selected_feature <- y
embedding_star <- embedding_1195[, c(
x_column, y_column,
"method", "cell", "leiden"
)] |>
dplyr::filter(method == "star")
purrr::map(c("star", "salmon", "kallisto"), \(x) {
values <- log10(
calc_cpm(
matrix_readcount_use[[x]][, embedding_star$cell]
)[selected_feature, ] + 1
)
plot_embedding(
embedding = embedding_star,
color_values = values,
label = paste(
EMBEDDING_TITLE_PREFIX,
"star embedding",
x,
selected_feature |> stringr::str_remove(pattern = "^.+_"),
sep = "; "
),
label_position = NULL,
show_color_value_labels = FALSE,
show_color_legend = TRUE,
geom_point_size = GEOM_POINT_SIZE / 1.5,
sort_values = TRUE,
shuffle_values = FALSE,
rasterise = RASTERISED,
legend_size = 2
) +
theme_customized(
legend_key_size = 2,
legend_text_size = 5
)
})
}) |>
unlist(recursive = FALSE) |>
purrr::reduce(`+`) +
patchwork::plot_layout(ncol = 3) +
patchwork::plot_annotation(
theme = ggplot2::theme(plot.margin = ggplot2::margin())
)FEATURES_SELECTED <- c(
"ENSG00000204531_POU5F1",
"ENSG00000111704_NANOG",
"ENSG00000171872_KLF17",
"ENSG00000186103_ARGFX",
#
"ENSG00000164736_SOX17",
"ENSG00000125798_FOXA2",
"ENSG00000136574_GATA4",
"ENSG00000134853_PDGFRA",
#
"ENSG00000179348_GATA2",
"ENSG00000070915_SLC12A3",
"ENSG00000165556_CDX2",
"ENSG00000007866_TEAD3"
)
plot_violin(
cells = embedding_1195 |>
split(~method) |>
purrr::map(
\(x) {
x |> dplyr::mutate(cell = paste(method, cell, sep = "_"))
} |>
dplyr::pull(cell)
) |>
{
\(x) x[c("star", "salmon", "kallisto")]
}(),
features = FEATURES_SELECTED,
matrix_cpm = calc_cpm(purrr::map(names(matrix_readcount_use), \(x) {
colnames(matrix_readcount_use[[x]]) <-
paste(x,
colnames(matrix_readcount_use[[x]]),
sep = "_"
)
return(matrix_readcount_use[[x]])
}) |>
purrr::reduce(cbind)),
y_title = "Aligner/Mapper",
strip_text_size = 6
) +
theme_grey(base_size = 6) %+replace%
ggplot2::theme(
axis.title.y = ggplot2::element_text(
family = "Arial",
size = 6,
angle = 90,
margin = ggplot2::margin(
t = 0, r = 1, b = 0, l = 0,
unit = "mm"
)
),
)pairs <- combn(c("star", "salmon", "kallisto"), 2)
purrr::map(seq_len(ncol(pairs)), \(x) {
aa <- pairs[, x, drop = TRUE][1]
bb <- pairs[, x, drop = TRUE][2]
a <- rowMeans(calc_cpm(matrix_readcount_use[[aa]]))
b <- rowMeans(calc_cpm(matrix_readcount_use[[bb]]))
a <- log10(a + 1)
b <- log10(b + 1)
corr <- cor(a, b, method = "spearman")
ggplot2::ggplot(
data = NULL,
ggplot2::aes(
x = a,
y = b
)
) +
# geom_point() +
ggpointdensity::geom_pointdensity(alpha = 0.3, na.rm = TRUE) +
ggplot2::scale_x_continuous(
name = glue::glue(
"<span style='color:red'>**{aa}**</span>; ",
"log<sub>10</sub> CPM + 1"
)
) +
ggplot2::scale_y_continuous(
name = glue::glue(
"<span style='color:red'>**{bb}**</span>; ",
"log<sub>10</sub> CPM + 1"
)
) +
ggplot2::coord_fixed() +
ggplot2::geom_abline(color = "salmon") +
ggplot2::labs(color = "Density") +
ggplot2::theme_bw(base_size = 6) %+replace%
ggplot2::theme(
axis.title.x = ggtext::element_markdown(
# axis.title = ggtext::element_textbox(
family = "Arial",
size = 7,
margin = ggplot2::margin(
t = 1, r = 0, b = 0, l = 0,
unit = "mm"
)
),
axis.title.y = ggtext::element_markdown(
family = "Arial",
size = 7,
angle = 90,
margin = ggplot2::margin(
t = 0, r = 1, b = 0, l = 0,
unit = "mm"
)
),
#
legend.background = ggplot2::element_blank(),
legend.margin = ggplot2::margin(
t = 0, r = 0, b = 0, l = 0, unit = "mm"
),
legend.key = ggplot2::element_blank(),
legend.key.size = grid::unit(2, "mm"),
legend.text = ggplot2::element_text(
family = "Arial",
size = 5,
margin = ggplot2::margin(
t = 0, r = 0, b = 0, l = -0.5,
unit = "mm"
)
),
#
legend.position = c(0.825, 0.3),
legend.justification = c(0, 1)
) +
ggtext::geom_richtext(
ggplot2::aes(
x = 0,
y = 4
),
label = paste("***ρ*** =", round(corr, 3)),
fill = NA,
family = "Arial",
size = 5 / ggplot2::.pt,
hjust = 0,
vjust = 1
)
}) |>
purrr::reduce(`+`) +
patchwork::plot_layout(nrow = 1) +
patchwork::plot_annotation(
theme = ggplot2::theme(plot.margin = ggplot2::margin())
)devtools::session_info()$platform## setting value
## version R version 4.1.2 (2021-11-01)
## os macOS Monterey 12.1
## system aarch64, darwin20.6.0
## ui unknown
## language (EN)
## collate en_US.UTF-8
## ctype en_US.UTF-8
## tz America/Chicago
## date 2022-01-20
## pandoc 2.14.0.3 @ /Applications/RStudio.app/Contents/MacOS/pandoc/ (via rmarkdown)
devtools::session_info()$pack |>
as_tibble() |>
dplyr::select(
package,
loadedversion,
date,
`source`
) |>
# print(n = nrow(.))
gt::gt() |>
gt::tab_options(table.font.size = "median")| package | loadedversion | date | source |
|---|---|---|---|
| assertthat | 0.2.1 | 2019-03-21 | CRAN (R 4.1.1) |
| backports | 1.4.1 | 2021-12-13 | CRAN (R 4.1.2) |
| bit | 4.0.4 | 2020-08-04 | CRAN (R 4.1.1) |
| bit64 | 4.0.5 | 2020-08-30 | CRAN (R 4.1.1) |
| brio | 1.1.3 | 2021-11-30 | CRAN (R 4.1.2) |
| broom | 0.7.11 | 2022-01-03 | CRAN (R 4.1.2) |
| bslib | 0.3.1 | 2021-10-06 | CRAN (R 4.1.1) |
| cachem | 1.0.6 | 2021-08-19 | CRAN (R 4.1.1) |
| callr | 3.7.0 | 2021-04-20 | CRAN (R 4.1.1) |
| cellranger | 1.1.0 | 2016-07-27 | CRAN (R 4.1.1) |
| checkmate | 2.0.0 | 2020-02-06 | CRAN (R 4.1.1) |
| cli | 3.1.1 | 2022-01-20 | CRAN (R 4.1.2) |
| codetools | 0.2-18 | 2020-11-04 | CRAN (R 4.1.2) |
| colorspace | 2.0-2 | 2021-06-24 | CRAN (R 4.1.1) |
| crayon | 1.4.2 | 2021-10-29 | CRAN (R 4.1.1) |
| data.table | 1.14.2 | 2021-09-27 | CRAN (R 4.1.1) |
| DBI | 1.1.2 | 2021-12-20 | CRAN (R 4.1.2) |
| dbplyr | 2.1.1 | 2021-04-06 | CRAN (R 4.1.1) |
| desc | 1.4.0 | 2021-09-28 | CRAN (R 4.1.1) |
| devtools | 2.4.3.9000 | 2022-01-15 | Github (r-lib/devtools@e2f25cd69031c8d2099106baed894df4109cb7a4) |
| digest | 0.6.29 | 2021-12-01 | CRAN (R 4.1.2) |
| dplyr | 1.0.7.9000 | 2022-01-12 | Github (tidyverse/dplyr@05013358ace44fe17a51395d49d384232d18d6c1) |
| dtplyr | 1.2.1 | 2022-01-19 | CRAN (R 4.1.2) |
| ellipsis | 0.3.2 | 2021-04-29 | CRAN (R 4.1.1) |
| evaluate | 0.14 | 2019-05-28 | CRAN (R 4.1.1) |
| extrafont | 0.17 | 2014-12-08 | CRAN (R 4.1.1) |
| extrafontdb | 1.0 | 2012-06-11 | CRAN (R 4.1.1) |
| fansi | 1.0.2 | 2022-01-14 | CRAN (R 4.1.2) |
| farver | 2.1.0 | 2021-02-28 | CRAN (R 4.1.1) |
| fastmap | 1.1.0 | 2021-01-25 | CRAN (R 4.1.1) |
| forcats | 0.5.1.9000 | 2021-11-29 | Github (tidyverse/forcats@b4dade0636a46543c30b0b647d97c3ce697c0ada) |
| fs | 1.5.2.9000 | 2021-12-09 | Github (r-lib/fs@6d1182fea7e1c1ddbef3b0bba37c0b0a2e09749c) |
| gargle | 1.2.0 | 2021-07-02 | CRAN (R 4.1.1) |
| generics | 0.1.1 | 2021-10-25 | CRAN (R 4.1.1) |
| ggplot2 | 3.3.5 | 2021-06-25 | CRAN (R 4.1.1) |
| ggpointdensity | 0.1.0 | 2021-11-14 | Github (LKremer/ggpointdensity@02f3ab24eb22e3e34294baeca23a8998db43be70) |
| glue | 1.6.0.9000 | 2021-12-21 | Github (tidyverse/glue@76793ef2c376140350c0e1909e66fd404a52b1ef) |
| googledrive | 2.0.0 | 2021-07-08 | CRAN (R 4.1.1) |
| googlesheets4 | 1.0.0 | 2021-07-21 | CRAN (R 4.1.1) |
| gt | 0.3.1.9000 | 2022-01-17 | Github (rstudio/gt@fcabb414c55b70c9e445fbedfb24d52fe394ba61) |
| gtable | 0.3.0.9000 | 2021-10-28 | Github (r-lib/gtable@a0bd2721a0a31c8b4391b84aabe98f8c85881140) |
| haven | 2.4.3 | 2021-08-04 | CRAN (R 4.1.1) |
| highr | 0.9 | 2021-04-16 | CRAN (R 4.1.1) |
| hms | 1.1.1 | 2021-09-26 | CRAN (R 4.1.1) |
| htmltools | 0.5.2 | 2021-08-25 | CRAN (R 4.1.1) |
| httr | 1.4.2 | 2020-07-20 | CRAN (R 4.1.1) |
| jquerylib | 0.1.4 | 2021-04-26 | CRAN (R 4.1.1) |
| jsonlite | 1.7.3 | 2022-01-17 | CRAN (R 4.1.2) |
| knitr | 1.37.1 | 2021-12-21 | https://yihui.r-universe.dev (R 4.1.2) |
| labeling | 0.4.2 | 2020-10-20 | CRAN (R 4.1.1) |
| lattice | 0.20-45 | 2021-09-22 | CRAN (R 4.1.2) |
| lifecycle | 1.0.1 | 2021-09-24 | CRAN (R 4.1.1) |
| lubridate | 1.8.0 | 2022-01-20 | Github (tidyverse/lubridate@566590f51364e6c42251cc1721f37c314ddf7e5f) |
| magrittr | 2.0.1 | 2020-11-17 | CRAN (R 4.1.1) |
| MASS | 7.3-55 | 2022-01-13 | CRAN (R 4.1.2) |
| Matrix | 1.4-0 | 2021-12-08 | CRAN (R 4.1.2) |
| memoise | 2.0.1 | 2021-11-26 | CRAN (R 4.1.2) |
| modelr | 0.1.8.9000 | 2021-10-27 | Github (tidyverse/modelr@16168e0624215d9d1a008f3a85de30aeb75302f6) |
| munsell | 0.5.0 | 2018-06-12 | CRAN (R 4.1.1) |
| patchwork | 1.1.0.9000 | 2021-10-27 | Github (thomasp85/patchwork@79223d3002e7bd7e715a270685c6507d684b2622) |
| pillar | 1.6.4 | 2021-10-18 | CRAN (R 4.1.1) |
| pkgbuild | 1.3.1 | 2021-12-20 | CRAN (R 4.1.2) |
| pkgconfig | 2.0.3 | 2019-09-22 | CRAN (R 4.1.1) |
| pkgload | 1.2.4 | 2021-11-30 | CRAN (R 4.1.2) |
| png | 0.1-7 | 2013-12-03 | CRAN (R 4.1.1) |
| prettyunits | 1.1.1 | 2020-01-24 | CRAN (R 4.1.1) |
| processx | 3.5.2 | 2021-04-30 | CRAN (R 4.1.1) |
| ps | 1.6.0 | 2021-02-28 | CRAN (R 4.1.1) |
| purrr | 0.3.4 | 2020-04-17 | CRAN (R 4.1.1) |
| R.cache | 0.15.0 | 2021-04-30 | CRAN (R 4.1.1) |
| R.methodsS3 | 1.8.1 | 2020-08-26 | CRAN (R 4.1.1) |
| R.oo | 1.24.0 | 2020-08-26 | CRAN (R 4.1.1) |
| R.utils | 2.11.0 | 2021-09-26 | CRAN (R 4.1.1) |
| R6 | 2.5.1.9000 | 2021-12-09 | Github (r-lib/R6@1b05b89f30fe6713cb9ff51d91fc56bd3016e4b2) |
| ragg | 1.2.1.9000 | 2021-12-08 | Github (r-lib/ragg@c68c6665ef894f16c006333658b32bf25d2e9d19) |
| Rcpp | 1.0.8 | 2022-01-13 | CRAN (R 4.1.2) |
| readr | 2.1.1 | 2021-11-30 | CRAN (R 4.1.2) |
| readxl | 1.3.1.9000 | 2022-01-20 | Github (tidyverse/readxl@2ccb82c2b37e7960d28e8b2a09d2bb2b1d351105) |
| remotes | 2.4.2 | 2021-12-02 | Github (r-lib/remotes@fcad17b68b7a19d5363d64adfb0a0426a3a5b3db) |
| reprex | 2.0.1 | 2021-08-05 | CRAN (R 4.1.1) |
| reticulate | 1.23 | 2022-01-14 | CRAN (R 4.1.2) |
| rlang | 1.0.0 | 2022-01-20 | Github (r-lib/rlang@f2fbaad5005f77b99237c9b0ce5e01a44f9cb4f9) |
| rmarkdown | 2.11.10 | 2022-01-20 | Github (rstudio/rmarkdown@0ab9bc59646241b4b9252da513769295299c5e4b) |
| rprojroot | 2.0.2 | 2020-11-15 | CRAN (R 4.1.1) |
| rstudioapi | 0.13.0-9000 | 2022-01-15 | Github (rstudio/rstudioapi@5d0f0873dc160779c71bf4b00d8b016b898f6fb5) |
| Rttf2pt1 | 1.3.9 | 2021-07-22 | CRAN (R 4.1.1) |
| rvest | 1.0.2 | 2021-10-16 | CRAN (R 4.1.1) |
| sass | 0.4.0 | 2021-05-12 | CRAN (R 4.1.1) |
| scales | 1.1.1 | 2020-05-11 | CRAN (R 4.1.1) |
| sessioninfo | 1.2.2 | 2021-12-06 | CRAN (R 4.1.2) |
| stringi | 1.7.6 | 2021-11-29 | CRAN (R 4.1.2) |
| stringr | 1.4.0.9000 | 2022-01-20 | Github (tidyverse/stringr@ea4a9278401d5d7e9a06fbaa7bcfb2e5720f2730) |
| styler | 1.6.2.9000 | 2022-01-17 | Github (r-lib/styler@9274aed613282eca01909ae8c341224055d9c928) |
| systemfonts | 1.0.3.9000 | 2021-12-07 | Github (r-lib/systemfonts@414114e645efb316def3d8de1056d855f92d588e) |
| testthat | 3.1.1.9000 | 2022-01-13 | Github (r-lib/testthat@f09df60dd881530332b252474e9f35c97f8640be) |
| textshaping | 0.3.6 | 2021-10-13 | CRAN (R 4.1.1) |
| tibble | 3.1.6.9000 | 2022-01-18 | Github (tidyverse/tibble@7aa54e67d6ceb31c81172c7d18d28ea9ce088888) |
| tidyr | 1.1.4 | 2021-09-27 | CRAN (R 4.1.1) |
| tidyselect | 1.1.1 | 2021-04-30 | CRAN (R 4.1.1) |
| tidyverse | 1.3.1.9000 | 2021-12-08 | Github (tidyverse/tidyverse@6186fbf09bf359110f8800ff989cbbdd40485eb0) |
| tzdb | 0.2.0 | 2021-10-27 | CRAN (R 4.1.1) |
| usethis | 2.1.5.9000 | 2022-01-20 | Github (r-lib/usethis@57b109ab1e376d8fbf560e7e6adc19e0a04c5edd) |
| utf8 | 1.2.2 | 2021-07-24 | CRAN (R 4.1.1) |
| vctrs | 0.3.8 | 2021-04-29 | CRAN (R 4.1.1) |
| vroom | 1.5.7 | 2021-11-30 | CRAN (R 4.1.2) |
| withr | 2.4.3 | 2021-11-30 | CRAN (R 4.1.2) |
| xfun | 0.29 | 2021-12-14 | CRAN (R 4.1.2) |
| xml2 | 1.3.3 | 2021-11-30 | CRAN (R 4.1.2) |
| yaml | 2.2.1 | 2020-02-01 | CRAN (R 4.1.1) |