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(Matrix)
library(patchwork)
library(extrafont)
Sys.time()
## [1] "2022-01-18 12:10:29 CST"

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.6"
adata_files <- purrr::map(c("PRJNA720968"), \(x) {
    file.path(
        PROJECT_DIR,
        "raw",
        "public",
        x,
        "matrix",
        "adata.h5ad"
    )
})
purrr::map_lgl(adata_files, file.exists)
## [1] TRUE
BACKED <- NULL
matrix_readcount_use <- purrr::map(adata_files, function(x) {
    ad$read_h5ad(
        filename = x, backed = BACKED
    ) |>
        convert_adata()
}) |>
    purrr::reduce(cbind)

matrix_readcount_use |> dim()
## [1] 33538   495

Embedding

EMBEDDING_FILE <- "embedding_ncomponents15_ccc1_seed20210719.csv.gz"

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

embedding |> head()

Metadata

BACKED <- "r"
cell_metadata <- purrr::map(adata_files, function(x) {
    ad$read_h5ad(
        filename = x, backed = BACKED
    )$obs |>
        tibble::rownames_to_column(var = "cell") |>
        dplyr::select(cell, everything())
}) |>
    dplyr::bind_rows() |>
    dplyr::select(-batch)

cell_metadata |> head()
cell_metadata_PRJNA720968 <- vroom::vroom(
    file = file.path(
        PROJECT_DIR,
        "raw",
        "public",
        "PRJNA720968",
        "matrix/cell_metadata.csv"
    )
) |>
    dplyr::mutate(
        lineage = factor(
            lineage,
        ),
        origin = factor(
            origin
        ),
        developmental_stage = factor(
            developmental_stage
        )
    )

cell_metadata_PRJNA720968 |>
    dplyr::count(origin, name = "num_cells") |>
    gt::gt() |>
    gt::tab_options(table.font.size = "median") |>
    gt::summary_rows(
        columns = c(num_cells),
        fns = list(
            Sum = ~ sum(.)
        ),
        decimals = 0
    )
origin num_cells
Blastocyst 228
Blastoid 267
Sum — 495


Check memory usage.

purrr::walk(list(matrix_readcount_use, cell_metadata_PRJNA720968), function(x) {
    print(object.size(x), units = "auto", standard = "SI")
})
## 57.9 MB
## 86.8 kB

Clustering of human blastoids

cell_metadata_PRJNA720968 <- cell_metadata_PRJNA720968 |>
    dplyr::mutate(
        annotated = paste(origin, lineage, sep = ": "),
        annotated = factor(
            annotated,
            levels = c(
                "Blastocyst: Epiblast",
                "Blastocyst: Hypoblast",
                "Blastocyst: Inner Cell Mass",
                "Blastocyst: Inner Cell Mass-Trophectoderm Transition",
                "Blastocyst: Early Trophectoderm",
                "Blastocyst: Trophectoderm",
                "Blastocyst: Unknown",
                "Blastoid: Epiblast",
                "Blastoid: Hypoblast",
                "Blastoid: Transitioning",
                "Blastoid: Trophectoderm"
            )
        )
    )
embedding |>
    dplyr::left_join(
        cell_metadata |>
            dplyr::select(cell, num_umis:mt_percentage)
    ) |>
    dplyr::left_join(
        cell_metadata_PRJNA720968
    ) |>
    dplyr::group_by(
        origin
    ) |>
    dplyr::summarise(
        num_cells = dplyr::n(),
        median_umis = median(num_umis),
        median_features = median(num_features),
        median_mt_percentage = median(mt_percentage)
    ) |>
    gt::gt() |>
    gt::tab_options(table.font.size = "median") |>
    gt::summary_rows(
        columns = c(num_cells),
        fns = list(
            Sum = ~ sum(.)
        ),
        decimals = 0
    ) |>
    gt::summary_rows(
        columns = c("median_umis", "median_features", "median_mt_percentage"),
        fns = list(
            Median = ~ median(.)
        ),
        decimals = 2
    )
origin num_cells median_umis median_features median_mt_percentage
Blastocyst 228 7781726 9003 0.06319315
Blastoid 267 7579396 9576 0.03904364
Sum — 495 — — —
Median — — 7,680,561.25 9,289.50 0.05

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 <- TRUE

Clustering

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 = embedding |>
        dplyr::left_join(
            cell_metadata
        ) |>
        dplyr::pull(num_umis) |>
        {
            \(x) log10(x)
        }(),
    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(
        legend_key_size = 2,
        legend_text_size = 5
    )

p_embedding_MT <- plot_embedding(
    embedding = embedding[, c(x_column, y_column)],
    color_values = embedding |>
        dplyr::left_join(cell_metadata) |>
        dplyr::pull(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(
        legend_key_size = 2,
        legend_text_size = 5
    )

selected_feature <- "ENSG00000204531_POU5F1"
p_embedding_POU5F1 <- plot_embedding(
    embedding = embedding[, c(x_column, y_column)],
    color_values = log10(calc_cpm(matrix_readcount_use)[selected_feature, embedding$cell] + 1),
    label = glue::glue("{EMBEDDING_TITLE_PREFIX}; {selected_feature}"),
    label_position = NULL,
    show_color_value_labels = FALSE,
    show_color_legend = TRUE,
    geom_point_size = GEOM_POINT_SIZE,
    geom_point_alpha = 1,
    sort_values = TRUE,
    shuffle_values = FALSE,
    label_size = 2.5,
    label_hjust = 0,
    label_vjust = 0,
    rasterise = FALSE,
    legend_size = 2,
    legend_ncol = 1
) +
    theme_customized(
        legend_key_size = 2,
        legend_text_size = 5
    )


Clustering of 495 Smart-seq2 single cells.

purrr::reduce(
    list(
        p_embedding_leiden,
        p_embedding_UMI,
        p_embedding_MT,
        p_embedding_POU5F1
    ),
    `+`
) +
    patchwork::plot_layout(ncol = 2) +
    patchwork::plot_annotation(
        theme = theme(plot.margin = margin())
    )

Origin & developmental stage

p_embedding_origin <- plot_embedding(
    embedding = embedding[, c(x_column, y_column)],
    color_values = embedding |>
        dplyr::left_join(cell_metadata_PRJNA720968) |>
        dplyr::pull(origin),
    label = glue::glue("{EMBEDDING_TITLE_PREFIX}; Origin"),
    label_position = NULL,
    show_color_value_labels = FALSE,
    show_color_legend = TRUE,
    geom_point_size = GEOM_POINT_SIZE,
    sort_values = FALSE,
    shuffle_values = TRUE,
    rasterise = RASTERISED,
    legend_size = 2
) +
    theme_customized(
        legend_key_size = 2,
        legend_text_size = 5
    )

p_embedding_developmental_stage <- plot_embedding(
    embedding = embedding[, c(x_column, y_column)],
    color_values = embedding |>
        dplyr::left_join(cell_metadata_PRJNA720968) |>
        dplyr::pull(developmental_stage),
    label = glue::glue("{EMBEDDING_TITLE_PREFIX}; Developmental stage"),
    label_position = NULL,
    show_color_value_labels = FALSE,
    show_color_legend = TRUE,
    geom_point_size = GEOM_POINT_SIZE,
    sort_values = FALSE,
    shuffle_values = TRUE,
    rasterise = RASTERISED,
    legend_size = 2
) +
    theme_customized(
        legend_key_size = 2,
        legend_text_size = 5
    )
purrr::reduce(
    list(
        p_embedding_origin,
        p_embedding_developmental_stage
    ),
    `+`
) +
    patchwork::plot_layout(ncol = 2) +
    patchwork::plot_annotation(
        theme = theme(plot.margin = margin())
    )

Developmental stage

embedding |>
    dplyr::left_join(
        cell_metadata
    ) |>
    dplyr::left_join(cell_metadata_PRJNA720968) |>
    dplyr::group_by(developmental_stage, origin) |>
    dplyr::summarise(
        num_cells = dplyr::n(),
        median_umis = median(num_umis),
        median_features = median(num_features),
        median_mt_percentage = median(mt_percentage)
    ) |>
    gt::gt() |>
    gt::tab_options(table.font.size = "median") |>
    gt::summary_rows(
        columns = c(num_cells),
        fns = list(
            Sum = ~ sum(.)
        ),
        decimals = 0
    ) |>
    gt::summary_rows(
        columns = c("median_umis", "median_features", "median_mt_percentage"),
        fns = list(
            Median = ~ median(.)
        ),
        decimals = 2
    )
origin num_cells median_umis median_features median_mt_percentage
Day3
Blastoid 159 7329571 9462.0 0.03540585
Day4
Blastoid 108 7685250 9759.0 0.04054943
Day5
Blastocyst 68 7692114 8909.0 0.07377675
Day6
Blastocyst 80 6475820 8393.5 0.05267877
Day7
Blastocyst 80 8645422 9454.0 0.06118594
Sum — 495 — — —
Median — — 7,685,250.00 9,454.00 0.05


purrr::map(levels(cell_metadata_PRJNA720968$developmental_stage), \(x) {
    plot_embedding(
        embedding = embedding[, c(x_column, y_column)],
        color_values = embedding |>
            dplyr::left_join(cell_metadata_PRJNA720968) |>
            dplyr::mutate(
                value = dplyr::case_when(
                    developmental_stage == x ~ "1",
                    TRUE ~ "0"
                ),
                value = factor(value)
            ) |>
            dplyr::pull(value),
        label = glue::glue("{EMBEDDING_TITLE_PREFIX}; {x}"),
        label_position = NULL,
        show_color_value_labels = FALSE,
        show_color_legend = FALSE,
        geom_point_size = GEOM_POINT_SIZE,
        sort_values = TRUE,
        rasterise = RASTERISED,
        legend_size = 2
    ) +
        theme_customized(
            legend_key_size = 2,
            legend_text_size = 5
        ) +
        scale_color_manual(
            values = c("grey70", "salmon")
        )
}) |>
    purrr::reduce(`+`) +
    patchwork::plot_layout(ncol = 2) +
    patchwork::plot_annotation(
        theme = theme(plot.margin = margin())
    )

Lineage

embedding |>
    dplyr::left_join(
        cell_metadata
    ) |>
    dplyr::left_join(cell_metadata_PRJNA720968) |>
    dplyr::group_by(annotated) |>
    dplyr::summarise(
        num_cells = dplyr::n(),
        median_umis = median(num_umis),
        median_features = median(num_features),
        median_mt_percentage = median(mt_percentage)
    ) |>
    dplyr::rename(lineage = annotated) |>
    gt::gt() |>
    gt::tab_options(table.font.size = "median") |>
    gt::summary_rows(
        columns = c(num_cells),
        fns = list(
            Sum = ~ sum(.)
        ),
        decimals = 0
    ) |>
    gt::summary_rows(
        columns = c("median_umis", "median_features", "median_mt_percentage"),
        fns = list(
            Median = ~ median(.)
        ),
        decimals = 2
    )
lineage num_cells median_umis median_features median_mt_percentage
Blastocyst: Epiblast 31 8126430 9951.0 0.052335040
Blastocyst: Hypoblast 14 9776420 9619.5 0.049162825
Blastocyst: Inner Cell Mass 22 7335337 9136.5 0.071956141
Blastocyst: Inner Cell Mass-Trophectoderm Transition 23 8187758 8853.0 0.079507155
Blastocyst: Early Trophectoderm 18 8361592 8773.0 0.072238465
Blastocyst: Trophectoderm 117 7541800 8597.0 0.060103082
Blastocyst: Unknown 3 4890522 10178.0 0.060837473
Blastoid: Epiblast 73 7916385 9707.0 0.034658941
Blastoid: Hypoblast 13 8166701 9573.0 0.009467274
Blastoid: Transitioning 7 4276121 8903.0 0.001258322
Blastoid: Trophectoderm 174 7467628 9562.5 0.043218885
Sum — 495 — — —
Median — — 7,916,385.00 9,562.50 0.05


purrr::map(levels(cell_metadata_PRJNA720968$annotated), \(x) {
    plot_embedding(
        embedding = embedding[, c(x_column, y_column)],
        color_values = embedding |>
            dplyr::left_join(cell_metadata_PRJNA720968) |>
            dplyr::mutate(
                value = dplyr::case_when(
                    annotated == x ~ "1",
                    TRUE ~ "0"
                ),
                value = factor(value)
            ) |>
            dplyr::pull(value),
        label = glue::glue("{EMBEDDING_TITLE_PREFIX}; {x}"),
        label_position = NULL,
        show_color_value_labels = FALSE,
        show_color_legend = FALSE,
        geom_point_size = GEOM_POINT_SIZE,
        sort_values = TRUE,
        rasterise = RASTERISED,
        legend_size = 2
    ) +
        theme_customized(
            legend_key_size = 2,
            legend_text_size = 5
        ) +
        scale_color_manual(
            values = c("grey70", "salmon")
        )
}) |>
    purrr::reduce(`+`) +
    patchwork::plot_layout(ncol = 2) +
    patchwork::plot_annotation(
        theme = theme(plot.margin = margin())
    )

Composition

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

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


p_barplot_composition_lineage <- calc_group_composition(
    data = embedding |>
        dplyr::left_join(
            cell_metadata_PRJNA720968
        ),
    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 |>
        dplyr::left_join(
            cell_metadata_PRJNA720968
        ),
    x = "leiden",
    group = "developmental_stage"
) |>
    dplyr::mutate(
        leiden = factor(leiden)
    ) |>
    plot_barplot(
        x = "leiden",
        y = "percentage",
        z = "developmental_stage",
        legend_ncol = 1
    )

list(
    p_barplot_composition_batch,
    p_barplot_composition_annotated,
    p_barplot_composition_lineage,
    p_barplot_composition_developmental_stage
) |>
    purrr::reduce(`+`) +
    patchwork::plot_layout(ncol = 1, guides = "collect") +
    patchwork::plot_annotation(
        theme = theme(plot.margin = margin())
    )

Expression


Genes used in Fig. 2C.

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 |>
        dplyr::left_join(cell_metadata_PRJNA720968) |>
        dplyr::pull(origin) == "Blastocyst"] <- NA

    p1 <- 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(
            legend_key_size = 2,
            legend_text_size = 5
        )

    values <- log10(calc_cpm(matrix_readcount_use[, embedding$cell])[selected_feature, ] + 1)
    values[embedding |>
        dplyr::left_join(cell_metadata_PRJNA720968) |>
        dplyr::pull(origin) == "Blastoid"] <- NA

    p2 <- plot_embedding(
        embedding = embedding[, c(x_column, y_column)],
        color_values = values,
        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(
            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.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-18
##  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)
beeswarm 0.4.0 2021-06-01 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.0 2021-10-27 CRAN (R 4.1.1)
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.0 2021-12-05 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)
ggbeeswarm 0.6.0 2017-08-07 CRAN (R 4.1.2)
ggplot2 3.3.5 2021-06-25 CRAN (R 4.1.1)
ggrastr 1.0.1 2021-12-08 Github (VPetukhov/ggrastr@7aed9af2b9cffabda86e6d2af2fa10d4e60cc63d)
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-15 Github (tidyverse/lubridate@53e5892a548b3425d6c3bf887542aa105341ab73)
magrittr 2.0.1 2020-11-17 CRAN (R 4.1.1)
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-18 Github (tidyverse/readxl@03258a3b2341ce600ee0af56851c80c35d6245ef)
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 0.99.0.9003 2022-01-18 Github (r-lib/rlang@d79ab3a1ab1ce8ca5bb0ebc6ab0454cb10fa4dd1)
rmarkdown 2.11.9 2022-01-18 Github (rstudio/rmarkdown@d0d3b08bf78b6cd900d0505fb7141037e117c6b2)
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-17 Github (tidyverse/stringr@3848cd70b1e331e6c20401e4da518ff4c3725324)
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-18 Github (r-lib/usethis@3c4ab669481ab4a11b6426dbc583f05077a4c6db)
utf8 1.2.2 2021-07-24 CRAN (R 4.1.1)
vctrs 0.3.8 2021-04-29 CRAN (R 4.1.1)
vipor 0.4.5 2017-03-22 CRAN (R 4.1.2)
viridisLite 0.4.0 2021-04-13 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)