Yanagida, A., Spindlow, D., Nichols, J., Dattani, A., Smith, A., and Guo, G. (2021). Naive stem cell blastocyst model captures human embryo lineage segregation. Cell Stem Cell 28, 1016–1022.e4.

  • BioProject Accession: PRJNA720968
  • GEO Accession: GSE171820



Load required packages.

library(tidyverse)
library(magrittr)
library(Matrix)
library(patchwork)
library(extrafont)
Sys.time()
## [1] "2021-06-12 15:54:05 CDT"

Data preparation

Functions loading

source(
    file = file.path(
        SCRIPT_DIR,
        "utilities.R"
    )
)

Data loading

PROJECT_DIR <- "/Users/jialei/Dropbox/Data/Projects/UTSW/Peri-implantation"

Matrix

ad <- reticulate::import(module = "anndata", convert = TRUE)
print(ad$`__version__`)
## [1] "0.7.5"
BACKED <- NULL
adata <- ad$read_h5ad(
    filename = file.path(
        PROJECT_DIR,
        "raw/public/PRJNA720968/",
        "matrix",
        "adata.h5ad"
    ),
    backed = BACKED
)

matrix_readcount_use <- adata |> convert_adata()
matrix_readcount_use |> dim()
## [1] 33538   495

Embedding

EMBEDDING_FILE <- "embedding_ncomponents12_ccc1_seed20200416.csv.gz"

embedding <- vroom::vroom(
    file = file.path(
        PROJECT_DIR,
        "raw/public/PRJNA720968/",
        "clustering/PRJNA720968/exploring/batch_1covariate/",
        EMBEDDING_FILE
    )
)

embedding |> head()

Metadata

cell_metadata_PRJNA720968 <- vroom::vroom(
    file = file.path(
        PROJECT_DIR,
        "raw/public/PRJNA720968/",
        "raw",
        "GSE171820_Sample_Assignments.csv.gz"
    )
) |>
    dplyr::rename_all(tolower) |>
    dplyr::rename(cell_name = name) |>
    dplyr::left_join(
        vroom::vroom(
            file = file.path(
                PROJECT_DIR,
                "raw/public/PRJNA720968/",
                "clustering",
                "PRJNA720968",
                "cell_metadata_GEO.csv"
            ),
            col_name = c("cell", "cell_name")
        )
    ) |>
    dplyr::rename(
        developmental_stage = time
    ) |>
    dplyr::left_join(
        adata$obs |>
            tibble::rownames_to_column(var = "cell") |>
            dplyr::select(-batch)
    )

cell_metadata_PRJNA720968 |>
    dplyr::count(origin, name = "num_cells") |>
    gt::gt() %>%
    gt::tab_options(table.font.size = "median")
origin num_cells
Blastocyst 228
Blastoid 267
purrr::walk(list(matrix_readcount_use, cell_metadata_PRJNA720968), function(x) {
    print(object.size(x), units = "auto", standard = "SI")
})
## 57.9 MB
## 105.2 kB

Single-cell transcriptome analysis

embedding <- embedding |>
    dplyr::left_join(
        cell_metadata_PRJNA720968,
        by = c("cell" = "cell")
    )
embedding |>
    dplyr::group_by(
        origin
    ) |>
    summarise(
        num_cells = n(),
        median_umis = median(num_umis),
        num_features = median(num_features),
        median_mt_percentage = median(mt_percentage)
    ) %>%
    gt::gt() %>%
    gt::tab_options(table.font.size = "median")
origin num_cells median_umis num_features median_mt_percentage
Blastocyst 228 7781726 9003 0.06319315
Blastoid 267 7579396 9576 0.03904364
embedding |>
    dplyr::group_by(
        leiden
    ) |>
    summarise(
        num_cells = n(),
        median_umis = median(num_umis),
        num_features = median(num_features),
        median_mt_percentage = median(mt_percentage)
    ) %>%
    gt::gt() %>%
    gt::tab_options(table.font.size = "median")
leiden num_cells median_umis num_features median_mt_percentage
0 83 6676351 8999 0.06627523
1 72 8036980 9678 0.03425774
2 69 5637674 7416 0.04448353
3 53 8096014 10089 0.03892195
4 53 7969080 10078 0.05799040
5 51 7452917 9544 0.04538753
6 50 7609314 9391 0.05459019
7 41 8255229 8814 0.07119083
8 23 8341361 10273 0.05194548

Embedding visualization

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 <- FALSE
# RASTERISED <- TRUE

Clustering & UMI & MT

p_embedding_leiden <- plot_embedding(
    embedding = embedding[, c(x_column, y_column)],
    color_values = embedding$leiden |> as.factor(),
    label = paste(EMBEDDING_TITLE_PREFIX, "Leiden", sep = "; "),
    label_position = NULL,
    show_color_value_labels = TRUE,
    show_color_legend = FALSE,
    geom_point_size = GEOM_POINT_SIZE,
    sort_values = FALSE,
    rasterise = RASTERISED
) +
    theme_customized()

CB_POSITION <- c(0.8, 0.995)
p_embedding_UMI <- plot_embedding(
    embedding = embedding[, c(x_column, y_column)],
    color_values = log10(embedding$num_umis),
    label = paste(EMBEDDING_TITLE_PREFIX, "UMI", sep = "; "),
    label_position = NULL,
    show_color_value_labels = FALSE,
    show_color_legend = TRUE,
    geom_point_size = GEOM_POINT_SIZE,
    sort_values = TRUE,
    shuffle_values = FALSE,
    rasterise = RASTERISED,
    legend_size = 2
) +
    theme_customized(
        x = CB_POSITION[1],
        legend_key_size = 2,
        legend_text_size = 5
    )

p_embedding_MT <- plot_embedding(
    embedding = embedding[, c(x_column, y_column)],
    color_values = embedding$mt_percentage,
    label = paste(EMBEDDING_TITLE_PREFIX, "MT%", sep = "; "),
    label_position = NULL,
    show_color_value_labels = FALSE,
    show_color_legend = TRUE,
    geom_point_size = GEOM_POINT_SIZE,
    sort_values = TRUE,
    shuffle_values = FALSE,
    rasterise = RASTERISED,
    legend_size = 2
) +
    theme_customized(
        x = CB_POSITION[1],
        legend_key_size = 2,
        legend_text_size = 5
    )
purrr::reduce(
    list(
        p_embedding_leiden,
        p_embedding_UMI,
        p_embedding_MT
    ),
    `+`
) +
    patchwork::plot_layout(ncol = 3) +
    patchwork::plot_annotation(
        theme = theme(plot.margin = margin())
    )

Lineage & origin & developmental stage

p_embedding_lineage <- plot_embedding(
    embedding = embedding[, c(x_column, y_column)],
    color_values = embedding$lineage |> as.factor(),
    label = paste(EMBEDDING_TITLE_PREFIX, "Lineage", sep = "; "),
    label_position = NULL,
    show_color_value_labels = FALSE,
    show_color_legend = TRUE,
    geom_point_size = GEOM_POINT_SIZE,
    sort_values = FALSE,
    rasterise = RASTERISED,
    legend_size = 2
) +
    theme_customized(
        x = CB_POSITION[1] - 0.3,
        legend_key_size = 2,
        legend_text_size = 5
    )

p_embedding_origin <- plot_embedding(
    embedding = embedding[, c(x_column, y_column)],
    color_values = embedding$origin |> as.factor(),
    label = paste(EMBEDDING_TITLE_PREFIX, "Origin", sep = "; "),
    label_position = NULL,
    show_color_value_labels = FALSE,
    show_color_legend = TRUE,
    geom_point_size = GEOM_POINT_SIZE,
    sort_values = FALSE,
    rasterise = RASTERISED,
    legend_size = 2
) +
    theme_customized(
        x = CB_POSITION[1] - 0.08,
        legend_key_size = 2,
        legend_text_size = 5
    )

p_embedding_developmental_stage <- plot_embedding(
    embedding = embedding[, c(x_column, y_column)],
    color_values = embedding$developmental_stage |> as.factor(),
    label = paste(EMBEDDING_TITLE_PREFIX, "Developmental stage", sep = "; "),
    label_position = NULL,
    show_color_value_labels = FALSE,
    show_color_legend = TRUE,
    geom_point_size = GEOM_POINT_SIZE,
    sort_values = FALSE,
    rasterise = RASTERISED,
    legend_size = 2
) +
    theme_customized(
        x = CB_POSITION[1],
        legend_key_size = 2,
        legend_text_size = 5
    )
purrr::reduce(
    list(
        p_embedding_leiden,
        p_embedding_lineage,
        p_embedding_origin,
        p_embedding_developmental_stage
    ), `+`
) +
    patchwork::plot_layout(ncol = 2) +
    patchwork::plot_annotation(
        theme = theme(plot.margin = margin())
    )

Developmental stage

embedding |>
    dplyr::group_by(
        developmental_stage
    ) |>
    summarise(
        num_cells = n(),
        median_umis = median(num_umis),
        num_features = median(num_features),
        median_mt_percentage = median(mt_percentage)
    ) %>%
    gt::gt() %>%
    gt::tab_options(table.font.size = "median")
developmental_stage num_cells median_umis num_features median_mt_percentage
Day3 159 7329571 9462.0 0.03540585
Day4 108 7685250 9759.0 0.04054943
Day5 68 7692114 8909.0 0.07377675
Day6 80 6475820 8393.5 0.05267877
Day7 80 8645422 9454.0 0.06118594
purrr::map(sort(unique(embedding$developmental_stage)), function(x) {
    plot_embedding(
        embedding = embedding[, c(x_column, y_column)],
        color_values = as.numeric(
            embedding$developmental_stage == x
        ) |> as.factor(),
        label = paste(EMBEDDING_TITLE_PREFIX, x, sep = "; "),
        label_position = NULL,
        show_color_value_labels = FALSE,
        show_color_legend = FALSE,
        geom_point_size = GEOM_POINT_SIZE,
        sort_values = TRUE,
        rasterise = RASTERISED
    ) +
        theme_customized() +
        scale_color_manual(
            values = c("grey70", "salmon")
        )
}) |>
    purrr::reduce(`+`) +
    patchwork::plot_layout(ncol = 3) +
    patchwork::plot_annotation(
        theme = theme(plot.margin = margin())
    )

Lineage

embedding |>
    dplyr::group_by(
        lineage
    ) |>
    summarise(
        num_cells = n(),
        median_umis = median(num_umis),
        num_features = median(num_features),
        median_mt_percentage = median(mt_percentage)
    ) %>%
    gt::gt() %>%
    gt::tab_options(table.font.size = "median")
lineage num_cells median_umis num_features median_mt_percentage
Early Trophectoderm 18 8361592 8773.0 0.072238465
Epiblast 104 7924372 9801.0 0.039743530
Hypoblast 27 8720780 9573.0 0.036048865
Inner Cell Mass 22 7335337 9136.5 0.071956141
Inner Cell Mass-Trophectoderm Transition 23 8187758 8853.0 0.079507155
Transitioning 7 4276121 8903.0 0.001258322
Trophectoderm 291 7489586 9338.0 0.050840133
Unknown 3 4890522 10178.0 0.060837473
purrr::map(sort(unique(embedding$lineage)), function(x) {
    plot_embedding(
        embedding = embedding[, c(x_column, y_column)],
        color_values = as.numeric(
            embedding$lineage == x
        ) |> as.factor(),
        label = paste(EMBEDDING_TITLE_PREFIX, x, sep = "; "),
        label_position = NULL,
        show_color_value_labels = FALSE,
        show_color_legend = FALSE,
        geom_point_size = GEOM_POINT_SIZE,
        sort_values = TRUE,
        rasterise = RASTERISED
    ) +
        theme_customized() +
        scale_color_manual(
            values = c("grey70", "salmon")
        )
}) |>
    purrr::reduce(`+`) +
    patchwork::plot_layout(ncol = 3) +
    patchwork::plot_annotation(
        theme = theme(plot.margin = margin())
    )

(scales_x_range <- ggplot_build(p_embedding_leiden)$layout$panel_scales_x[[1]]$range$range)
## [1] -3.495266 13.718596
(scales_y_range <- ggplot_build(p_embedding_leiden)$layout$panel_scales_y[[1]]$range$range)
## [1]  3.382117 13.710159
purrr::map(sort(unique(embedding$lineage)), function(x) {
    purrr::map(c("Blastocyst", "Blastoid"), function(y) {
        plot_embedding(
            embedding = embedding[, c(x_column, y_column, "origin")] |>
                dplyr::filter(origin == y),
            color_values = embedding |>
                dplyr::filter(origin == y) |>
                dplyr::mutate(
                    value = case_when(
                        lineage == x ~ 1,
                        TRUE ~ 0
                    )
                ) |>
                dplyr::pull(value) |>
                as.numeric() |>
                as.factor(),
            label = paste(
                paste(EMBEDDING_TITLE_PREFIX, y, sep = "; "),
                x,
                sep = "\n"
            ),
            label_position = NULL,
            show_color_value_labels = FALSE,
            show_color_legend = FALSE,
            geom_point_size = GEOM_POINT_SIZE,
            sort_values = TRUE,
            rasterise = RASTERISED
        ) +
            scale_x_continuous(limits = scales_x_range) +
            scale_y_continuous(limits = scales_y_range) +
            theme_customized() +
            scale_color_manual(
                values = c("grey70", "salmon"),
                na.value = "grey80"
            )
    })
}) |>
    unlist(recursive = FALSE) |>
    purrr::reduce(`+`) +
    patchwork::plot_layout(ncol = 4) +
    patchwork::plot_annotation(
        theme = theme(plot.margin = margin())
    )

Composition

p_barplot_composition_batch <- calc_group_composition(
    data = embedding,
    x = "leiden",
    group = "origin"
) |>
    dplyr::mutate(
        leiden = factor(leiden)
    ) |>
    plot_barplot(
        x = "leiden",
        y = "percentage",
        z = "origin",
        legend_ncol = 1
    )

p_barplot_composition_lineage <- calc_group_composition(
    data = embedding,
    x = "leiden",
    group = "lineage"
) |>
    dplyr::mutate(
        leiden = factor(leiden)
    ) |>
    plot_barplot(
        x = "leiden",
        y = "percentage",
        z = "lineage",
        legend_ncol = 1
    )

p_barplot_composition_developmental_stage <- calc_group_composition(
    data = embedding,
    x = "leiden",
    group = "developmental_stage"
) |>
    dplyr::mutate(
        leiden = factor(leiden)
    ) |>
    plot_barplot(
        x = "leiden",
        y = "percentage",
        z = "developmental_stage",
        legend_ncol = 1
    )


p_barplot_combined <- list(
    p_barplot_composition_batch,
    p_barplot_composition_lineage,
    p_barplot_composition_developmental_stage
) |>
    purrr::reduce(`+`) +
    patchwork::plot_layout(nrow = 3, guides = "collect") +
    patchwork::plot_annotation(
        theme = theme(plot.margin = margin())
    )
p_barplot_combined

Expression

Embedding

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"
)
purrr::map(FEATURES_SELECTED, function(x) {
    selected_feature <- x

    cat(selected_feature, "\n")
    values <- log10(calc_cpm(matrix_readcount_use[, embedding$cell])[selected_feature, ] + 1)
    values[embedding$origin == "Blastocyst"] <- NA

    p1 <- plot_embedding(
        embedding = embedding[, c(x_column, y_column)],
        color_values = values,
        # label = paste(EMBEDDING_TITLE_PREFIX, selected_feature, sep = "; "),
        label = paste(
            EMBEDDING_TITLE_PREFIX,
            "Blastocyst",
            selected_feature |> stringr::str_remove(pattern = "^E.+_"),
            sep = "; "
        ),
        label_position = NULL,
        show_color_value_labels = FALSE,
        show_color_legend = TRUE,
        geom_point_size = GEOM_POINT_SIZE,
        sort_values = TRUE,
        shuffle_values = FALSE,
        rasterise = RASTERISED,
        legend_size = 2
    ) +
        scale_color_viridis_c(
            na.value = "grey80"
        ) +
        theme_customized(
            x = CB_POSITION[1] + 0.05,
            legend_key_size = 2,
            legend_text_size = 5
        )

    values <- log10(calc_cpm(matrix_readcount_use[, embedding$cell])[selected_feature, ] + 1)
    values[embedding$origin == "Blastoid"] <- NA

    p2 <- plot_embedding(
        embedding = embedding[, c(x_column, y_column)],
        color_values = values,
        label = paste(
            EMBEDDING_TITLE_PREFIX,
            "Blastoid",
            selected_feature |> stringr::str_remove(pattern = "^E.+_"),
            sep = "; "
        ),
        label_position = NULL,
        show_color_value_labels = FALSE,
        show_color_legend = TRUE,
        geom_point_size = GEOM_POINT_SIZE,
        sort_values = TRUE,
        shuffle_values = FALSE,
        rasterise = RASTERISED,
        legend_size = 2
    ) +
        scale_color_viridis_c(
            na.value = "grey80"
        ) +
        theme_customized(
            x = CB_POSITION[1] + 0.05,
            legend_key_size = 2,
            legend_text_size = 5
        )
    return(list(p1, p2))
}) |>
    unlist(recursive = FALSE) |>
    purrr::reduce(`+`) +
    patchwork::plot_layout(ncol = 4) +
    patchwork::plot_annotation(
        theme = theme(plot.margin = margin())
    )
## ENSG00000204531_POU5F1 
## ENSG00000111704_NANOG 
## ENSG00000171872_KLF17 
## ENSG00000186103_ARGFX 
## ENSG00000164736_SOX17 
## ENSG00000125798_FOXA2 
## ENSG00000136574_GATA4 
## ENSG00000134853_PDGFRA 
## ENSG00000179348_GATA2 
## ENSG00000070915_SLC12A3 
## ENSG00000165556_CDX2 
## ENSG00000007866_TEAD3




R session info

devtools::session_info()$platform
##  setting  value                       
##  version  R version 4.1.0 (2021-05-18)
##  os       macOS Big Sur 10.16         
##  system   x86_64, darwin20.4.0        
##  ui       unknown                     
##  language (EN)                        
##  collate  en_US.UTF-8                 
##  ctype    en_US.UTF-8                 
##  tz       America/Chicago             
##  date     2021-06-12
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.0)
backports 1.2.1 2020-12-09 CRAN (R 4.1.0)
bit 4.0.4 2020-08-04 CRAN (R 4.1.0)
bit64 4.0.5 2020-08-30 CRAN (R 4.1.0)
broom 0.7.6 2021-04-05 CRAN (R 4.1.0)
bslib 0.2.5.1 2021-05-18 CRAN (R 4.1.0)
cachem 1.0.5 2021-05-15 CRAN (R 4.1.0)
callr 3.7.0 2021-04-20 CRAN (R 4.1.0)
cellranger 1.1.0 2016-07-27 CRAN (R 4.1.0)
checkmate 2.0.0 2020-02-06 CRAN (R 4.1.0)
cli 2.5.0 2021-04-26 CRAN (R 4.1.0)
colorspace 2.0-1 2021-05-04 CRAN (R 4.1.0)
crayon 1.4.1 2021-02-08 CRAN (R 4.1.0)
DBI 1.1.1 2021-01-15 CRAN (R 4.1.0)
dbplyr 2.1.1 2021-04-06 CRAN (R 4.1.0)
desc 1.3.0 2021-03-05 CRAN (R 4.1.0)
devtools 2.4.1.9000 2021-06-04 Github (r-lib/devtools@0dcdc9a)
digest 0.6.27 2020-10-24 CRAN (R 4.1.0)
dplyr 1.0.6.9000 2021-06-10 Github (tidyverse/dplyr@55917b6)
ellipsis 0.3.2 2021-04-29 CRAN (R 4.1.0)
evaluate 0.14 2019-05-28 CRAN (R 4.1.0)
extrafont 0.17 2014-12-08 CRAN (R 4.1.0)
extrafontdb 1.0 2012-06-11 CRAN (R 4.1.0)
fansi 0.5.0 2021-05-25 CRAN (R 4.1.0)
farver 2.1.0 2021-02-28 CRAN (R 4.1.0)
fastmap 1.1.0 2021-01-25 CRAN (R 4.1.0)
forcats 0.5.1.9000 2021-06-08 Github (tidyverse/forcats@b5fce89)
fs 1.5.0 2020-07-31 CRAN (R 4.1.0)
generics 0.1.0 2020-10-31 CRAN (R 4.1.0)
ggplot2 3.3.3.9000 2021-06-09 Github (tidyverse/ggplot2@01fe5de)
glue 1.4.1.9000 2021-05-19 Github (tidyverse/glue@f0a7b2a)
gt 0.3.0.9000 2021-06-12 Github (rstudio/gt@bf1fba0)
gtable 0.3.0 2019-03-25 CRAN (R 4.1.0)
haven 2.4.1 2021-04-23 CRAN (R 4.1.0)
highr 0.9 2021-04-16 CRAN (R 4.1.0)
hms 1.1.0 2021-05-17 CRAN (R 4.1.0)
htmltools 0.5.1.1 2021-01-22 CRAN (R 4.1.0)
httr 1.4.2 2020-07-20 CRAN (R 4.1.0)
jquerylib 0.1.4 2021-04-26 CRAN (R 4.1.0)
jsonlite 1.7.2 2020-12-09 CRAN (R 4.1.0)
knitr 1.33 2021-04-24 CRAN (R 4.1.0)
labeling 0.4.2 2020-10-20 CRAN (R 4.1.0)
lattice 0.20-44 2021-05-02 CRAN (R 4.1.0)
lifecycle 1.0.0 2021-02-15 CRAN (R 4.1.0)
lubridate 1.7.10 2021-02-26 CRAN (R 4.1.0)
magrittr 2.0.1.9000 2021-05-19 Github (tidyverse/magrittr@bb1c86a)
Matrix 1.3-4 2021-05-29 R-Forge (R 4.1.0)
memoise 2.0.0 2021-01-26 CRAN (R 4.1.0)
modelr 0.1.8 2020-05-19 CRAN (R 4.1.0)
munsell 0.5.0 2018-06-12 CRAN (R 4.1.0)
patchwork 1.1.1 2020-12-17 CRAN (R 4.1.0)
pillar 1.6.1 2021-05-16 CRAN (R 4.1.0)
pkgbuild 1.2.0 2020-12-15 CRAN (R 4.1.0)
pkgconfig 2.0.3 2019-09-22 CRAN (R 4.1.0)
pkgload 1.2.1 2021-04-06 CRAN (R 4.1.0)
png 0.1-7 2013-12-03 CRAN (R 4.1.0)
prettyunits 1.1.1 2020-01-24 CRAN (R 4.1.0)
processx 3.5.2 2021-04-30 CRAN (R 4.1.0)
ps 1.6.0 2021-02-28 CRAN (R 4.1.0)
purrr 0.3.4.9000 2021-05-19 Github (tidyverse/purrr@5aca9df)
R6 2.5.0 2020-10-28 CRAN (R 4.1.0)
ragg 1.1.3.9000 2021-06-10 Github (r-lib/ragg@adf5f06)
Rcpp 1.0.6 2021-01-15 CRAN (R 4.1.0)
readr 1.9.9.9000 2021-06-04 Github (tidyverse/readr@a6b737a)
readxl 1.3.1.9000 2021-05-19 Github (tidyverse/readxl@9f85fa5)
remotes 2.4.0 2021-06-02 CRAN (R 4.1.0)
reprex 2.0.0 2021-04-02 CRAN (R 4.1.0)
reticulate 1.20 2021-05-03 CRAN (R 4.1.0)
rlang 0.4.11 2021-04-30 CRAN (R 4.1.0)
rmarkdown 2.8.6 2021-06-07 Github (rstudio/rmarkdown@53e45de)
rprojroot 2.0.2 2020-11-15 CRAN (R 4.1.0)
rstudioapi 0.13.0-9000 2021-05-27 Github (rstudio/rstudioapi@5c8f296)
Rttf2pt1 1.3.8 2020-01-10 CRAN (R 4.1.0)
rvest 1.0.0 2021-03-09 CRAN (R 4.1.0)
sass 0.4.0 2021-05-12 CRAN (R 4.1.0)
scales 1.1.1 2020-05-11 CRAN (R 4.1.0)
sessioninfo 1.1.1 2018-11-05 CRAN (R 4.1.0)
stringi 1.6.2 2021-05-17 CRAN (R 4.1.0)
stringr 1.4.0.9000 2021-05-19 Github (tidyverse/stringr@f030ae0)
styler 1.4.1.9003 2021-06-10 Github (r-lib/styler@14aebe0)
systemfonts 1.0.2 2021-05-11 CRAN (R 4.1.0)
testthat 3.0.2 2021-02-14 CRAN (R 4.1.0)
textshaping 0.3.5 2021-06-09 CRAN (R 4.1.0)
tibble 3.1.2.9000 2021-05-24 Github (tidyverse/tibble@e78b695)
tidyr 1.1.3.9000 2021-05-19 Github (tidyverse/tidyr@2fd80d5)
tidyselect 1.1.1 2021-04-30 CRAN (R 4.1.0)
tidyverse 1.3.1.9000 2021-05-19 Github (tidyverse/tidyverse@195d8a4)
tzdb 0.1.1 2021-04-22 CRAN (R 4.1.0)
usethis 2.0.1 2021-02-10 CRAN (R 4.1.0)
utf8 1.2.1 2021-03-12 CRAN (R 4.1.0)
vctrs 0.3.8 2021-04-29 CRAN (R 4.1.0)
viridisLite 0.4.0 2021-04-13 CRAN (R 4.1.0)
vroom 1.5.0.9000 2021-06-09 Github (r-lib/vroom@96b18fd)
withr 2.4.2 2021-04-18 CRAN (R 4.1.0)
xfun 0.23 2021-05-15 CRAN (R 4.1.0)
xml2 1.3.2 2020-04-23 CRAN (R 4.1.0)
yaml 2.2.1 2020-02-01 CRAN (R 4.1.0)