Fan, Y., Min, Z., Alsolami, S., Ma, Z., Zhang, E., Chen, W., Zhong, K., Pei, W., Kang, X., Zhang, P., et al. (2021). Generation of human blastocyst-like structures from pluripotent stem cells. Cell Discovery 7, 1–14.
- BioProject Accession: PRJNA667174
 
- GEO Accession: GSE158971
 
Load required packages.
library(tidyverse)
library(Matrix)
library(patchwork)
library(extrafont)
# library(magrittr)
 
## [1] "2021-09-11 13:52:01 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/PRJNA667174",
        "matrix",
        "adata.h5ad"
    ),
    backed = BACKED
)
matrix_readcount_use <- adata |> convert_adata()
matrix_readcount_use |> dim()
 
## [1] 33538 30439
 
Embedding
EMBEDDING_FILE <- "embedding_ncomponents10_ccc1_seed20210719.csv.gz"
embedding <- vroom::vroom(
    file = file.path(
        PROJECT_DIR,
        "raw/public/PRJNA667174",
        "clustering/PRJNA667174/exploring",
        "Scanpy_Harmony",
        EMBEDDING_FILE
    )
)
embedding |> head()
 
 
 
 
Single-cell transcriptome analysis
embedding <- embedding |>
    dplyr::left_join(
        cell_metadata |>
            dplyr::select(-batch),
        by = c("cell" = "cell")
    ) |>
    dplyr::mutate(
        developmental_stage = factor(
            developmental_stage,
            levels = c("D6", "D8", "D10")
        ),
        lineage = factor(
            lineage,
            levels = c(
                c("EPI", "PE", "TE", "IM", "CTB", "STB")
            )
        )
    )
 
embedding |>
    dplyr::group_by(
        batch
    ) |>
    dplyr::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")
 
  
  
    
      | batch | 
      num_cells | 
      median_umis | 
      num_features | 
      median_mt_percentage | 
    
  
  
    | GSM4816780 | 
10933 | 
6203.0 | 
2240.0 | 
0.007092199 | 
    | GSM4816781 | 
11634 | 
12780.5 | 
3357.0 | 
0.052984867 | 
    | GSM4816782 | 
7872 | 
12238.0 | 
3778.5 | 
0.065663483 | 
  
  
  
 
embedding |>
    dplyr::group_by(
        developmental_stage
    ) |>
    dplyr::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 | 
    
  
  
    | D6 | 
10933 | 
6203.0 | 
2240.0 | 
0.007092199 | 
    | D8 | 
11634 | 
12780.5 | 
3357.0 | 
0.052984867 | 
    | D10 | 
7872 | 
12238.0 | 
3778.5 | 
0.065663483 | 
  
  
  
 
embedding |>
    dplyr::group_by(
        leiden
    ) |>
    dplyr::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 | 
4069 | 
1534.0 | 
831.0 | 
0.021715527 | 
    | 1 | 
3566 | 
4522.0 | 
1807.5 | 
0.008945333 | 
    | 2 | 
3539 | 
30389.0 | 
5452.0 | 
0.055672797 | 
    | 3 | 
3224 | 
23761.0 | 
4960.5 | 
0.058259888 | 
    | 4 | 
2780 | 
26048.0 | 
5237.5 | 
0.055429823 | 
    | 5 | 
2434 | 
23133.5 | 
4583.0 | 
0.041058811 | 
    | 6 | 
2396 | 
796.0 | 
514.5 | 
0.044039793 | 
    | 7 | 
2255 | 
1241.0 | 
710.0 | 
0.011739594 | 
    | 8 | 
1186 | 
3766.0 | 
1760.0 | 
0.082827767 | 
    | 9 | 
1106 | 
17752.0 | 
4222.5 | 
0.054710045 | 
    | 10 | 
1031 | 
24862.0 | 
4980.0 | 
0.044412686 | 
    | 11 | 
966 | 
3412.0 | 
1511.5 | 
0.004119256 | 
    | 12 | 
663 | 
13107.0 | 
3648.0 | 
0.060423344 | 
    | 13 | 
595 | 
31669.0 | 
5599.0 | 
0.053610239 | 
    | 14 | 
363 | 
25393.0 | 
5062.0 | 
0.053125720 | 
    | 15 | 
266 | 
1410.0 | 
735.5 | 
0.038481308 | 
  
  
  
 
Embedding visualization
x_column <- "x_umap_min_dist=0.1"
y_column <- "y_umap_min_dist=0.1"
# GEOM_POINT_SIZE <- 1.25
GEOM_POINT_SIZE <- 0.2
EMBEDDING_TITLE_PREFIX <- "UMAP"
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,
    shuffle_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 = TRUE,
    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 * 2,
    sort_values = TRUE,
    shuffle_values = TRUE,
    rasterise = RASTERISED,
    legend_size = 2
) +
    theme_customized(
        x = CB_POSITION[1],
        legend_key_size = 2,
        legend_text_size = 5
    )
 
 Clustering of 30,439 cells.
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,
    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,
    shuffle_values = TRUE,
    rasterise = RASTERISED,
    legend_size = 2
) +
    theme_customized(
        x = CB_POSITION[1],
        legend_key_size = 2,
        legend_text_size = 5
    )
p_embedding_batch <- plot_embedding(
    embedding = embedding[, c(x_column, y_column)],
    color_values = embedding$batch |> as.factor(),
    label = paste(EMBEDDING_TITLE_PREFIX, "Batch", sep = "; "),
    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(
        x = CB_POSITION[1] - 0.1,
        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,
    shuffle_values = TRUE,
    rasterise = RASTERISED,
    legend_size = 2
) +
    theme_customized(
        x = CB_POSITION[1],
        legend_key_size = 2,
        legend_text_size = 5
    )
 
purrr::reduce(
    list(
        p_embedding_lineage,
        p_embedding_batch,
        p_embedding_developmental_stage
    ),
    `+`
) +
    patchwork::plot_layout(ncol = 3) +
    patchwork::plot_annotation(
        theme = theme(plot.margin = margin())
    )
 

 
Developmental stage
embedding |>
    dplyr::group_by(
        developmental_stage
    ) |>
    dplyr::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 | 
    
  
  
    | D6 | 
10933 | 
6203.0 | 
2240.0 | 
0.007092199 | 
    | D8 | 
11634 | 
12780.5 | 
3357.0 | 
0.052984867 | 
    | D10 | 
7872 | 
12238.0 | 
3778.5 | 
0.065663483 | 
  
  
  
 
purrr::map(levels(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
    ) |>
    dplyr::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 | 
    
  
  
    | EPI | 
1340 | 
28910.0 | 
5194.0 | 
0.018937359 | 
    | PE | 
2083 | 
23615.0 | 
4849.0 | 
0.020250376 | 
    | TE | 
2472 | 
2253.5 | 
1112.5 | 
0.003417852 | 
    | IM | 
6478 | 
4360.5 | 
1841.0 | 
0.008306207 | 
    | CTB | 
9438 | 
22634.5 | 
4912.0 | 
0.066582772 | 
    | STB | 
8628 | 
2255.5 | 
1219.0 | 
0.030517943 | 
  
  
  
 
purrr::map(levels(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 = FALSE,
        rasterise = RASTERISED,
        legend_size = 2
    ) +
        theme_customized(
            x = CB_POSITION[1] - 0.3,
            legend_key_size = 2,
            legend_text_size = 5
        ) +
        scale_color_manual(
            values = c("grey70", "salmon")
        )
}) |>
    purrr::reduce(`+`) +
    patchwork::plot_layout(ncol = 3) +
    patchwork::plot_annotation(
        theme = theme(plot.margin = margin())
    )
 

 
Composition
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_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_combined <- list(
    p_barplot_composition_lineage,
    p_barplot_composition_developmental_stage
) |>
    purrr::reduce(`+`) +
    patchwork::plot_layout(nrow = 2, guides = "collect") +
    patchwork::plot_annotation(
        theme = theme(plot.margin = margin())
    )
p_barplot_combined
 

calc_group_composition(
    data = embedding,
    x = "lineage",
    group = "developmental_stage"
) |>
    plot_barplot(
        x = "lineage",
        y = "percentage",
        z = "developmental_stage",
        legend_ncol = 1
    )
 

calc_group_composition(
    data = embedding,
    x = "developmental_stage",
    group = "lineage"
) |>
    plot_barplot(
        x = "developmental_stage",
        y = "percentage",
        z = "lineage",
        legend_ncol = 1
    )
 

 
 
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)
    p1 <- plot_embedding(
        embedding = embedding[, c(x_column, y_column)],
        color_values = values,
        label = paste(
            EMBEDDING_TITLE_PREFIX,
            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 * 2,
        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(p1)
}) |>
    # unlist(recursive = FALSE) |>
    purrr::reduce(`+`) +
    patchwork::plot_layout(ncol = 3) +
    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.1 (2021-08-10)
##  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-09-11
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.2.1 | 
2020-12-09 | 
CRAN (R 4.1.1) | 
    | beeswarm | 
0.4.0 | 
2021-06-01 | 
CRAN (R 4.1.1) | 
    | bit | 
4.0.4 | 
2020-08-04 | 
CRAN (R 4.1.1) | 
    | bit64 | 
4.0.5 | 
2020-08-30 | 
CRAN (R 4.1.1) | 
    | broom | 
0.7.9 | 
2021-07-27 | 
CRAN (R 4.1.1) | 
    | bslib | 
0.3.0 | 
2021-09-02 | 
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.0.1 | 
2021-07-17 | 
CRAN (R 4.1.1) | 
    | colorspace | 
2.0-2 | 
2021-06-24 | 
CRAN (R 4.1.1) | 
    | crayon | 
1.4.1 | 
2021-02-08 | 
CRAN (R 4.1.1) | 
    | DBI | 
1.1.1 | 
2021-01-15 | 
CRAN (R 4.1.1) | 
    | dbplyr | 
2.1.1 | 
2021-04-06 | 
CRAN (R 4.1.1) | 
    | desc | 
1.3.0 | 
2021-03-05 | 
CRAN (R 4.1.1) | 
    | devtools | 
2.4.2 | 
2021-08-19 | 
Github (r-lib/devtools@e10658f) | 
    | digest | 
0.6.27 | 
2020-10-24 | 
CRAN (R 4.1.1) | 
    | dplyr | 
1.0.7.9000 | 
2021-09-08 | 
Github (tidyverse/dplyr@47b3fdf) | 
    | 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 | 
0.5.0 | 
2021-05-25 | 
CRAN (R 4.1.1) | 
    | 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-08-15 | 
Github (tidyverse/forcats@b5fce89) | 
    | fs | 
1.5.0.9000 | 
2021-08-15 | 
Github (r-lib/fs@10e38dd) | 
    | generics | 
0.1.0 | 
2020-10-31 | 
CRAN (R 4.1.1) | 
    | ggbeeswarm | 
0.6.0 | 
2017-08-07 | 
CRAN (R 4.1.1) | 
    | ggplot2 | 
3.3.5.9000 | 
2021-09-07 | 
Github (tidyverse/ggplot2@ffcfaf7) | 
    | ggrastr | 
0.2.3 | 
2021-08-15 | 
Github (VPetukhov/ggrastr@1ef0ff5) | 
    | glue | 
1.4.2 | 
2020-08-27 | 
CRAN (R 4.1.1) | 
    | gt | 
0.3.1 | 
2021-08-07 | 
CRAN (R 4.1.1) | 
    | gtable | 
0.3.0.9000 | 
2021-08-15 | 
Github (r-lib/gtable@0fc53e0) | 
    | 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.0 | 
2021-05-17 | 
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.2 | 
2020-12-09 | 
CRAN (R 4.1.1) | 
    | knitr | 
1.34 | 
2021-09-09 | 
CRAN (R 4.1.1) | 
    | labeling | 
0.4.2 | 
2020-10-20 | 
CRAN (R 4.1.1) | 
    | lattice | 
0.20-44 | 
2021-05-02 | 
CRAN (R 4.1.1) | 
    | lifecycle | 
1.0.0 | 
2021-02-15 | 
CRAN (R 4.1.1) | 
    | lubridate | 
1.7.10 | 
2021-02-26 | 
CRAN (R 4.1.1) | 
    | magrittr | 
2.0.1 | 
2020-11-17 | 
CRAN (R 4.1.1) | 
    | Matrix | 
1.3-4 | 
2021-06-01 | 
CRAN (R 4.1.1) | 
    | memoise | 
2.0.0 | 
2021-01-26 | 
CRAN (R 4.1.1) | 
    | modelr | 
0.1.8 | 
2020-05-19 | 
CRAN (R 4.1.1) | 
    | munsell | 
0.5.0 | 
2018-06-12 | 
CRAN (R 4.1.1) | 
    | patchwork | 
1.1.0.9000 | 
2021-08-15 | 
Github (thomasp85/patchwork@79223d3) | 
    | pillar | 
1.6.2 | 
2021-08-26 | 
Github (r-lib/pillar@1058bda) | 
    | pkgbuild | 
1.2.0 | 
2020-12-15 | 
CRAN (R 4.1.1) | 
    | pkgconfig | 
2.0.3 | 
2019-09-22 | 
CRAN (R 4.1.1) | 
    | pkgload | 
1.2.1 | 
2021-04-06 | 
CRAN (R 4.1.1) | 
    | png | 
0.1-7 | 
2013-12-03 | 
CRAN (R 4.1.1) | 
    | prettyunits | 
1.1.1.9000 | 
2021-08-15 | 
Github (r-lib/prettyunits@8706d89) | 
    | 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.9000 | 
2021-08-15 | 
Github (tidyverse/purrr@5aca9df) | 
    | R6 | 
2.5.0.9000 | 
2021-08-15 | 
Github (r-lib/R6@1d70936) | 
    | ragg | 
1.1.3.9000 | 
2021-08-15 | 
Github (r-lib/ragg@adf5f06) | 
    | Rcpp | 
1.0.7 | 
2021-07-07 | 
CRAN (R 4.1.1) | 
    | readr | 
2.0.1.9000 | 
2021-09-07 | 
Github (tidyverse/readr@397a59a) | 
    | readxl | 
1.3.1.9000 | 
2021-08-19 | 
Github (tidyverse/readxl@649982a) | 
    | remotes | 
2.4.0.9001 | 
2021-09-02 | 
Github (r-lib/remotes@6a0e560) | 
    | reprex | 
2.0.1 | 
2021-08-05 | 
CRAN (R 4.1.1) | 
    | reticulate | 
1.20 | 
2021-05-03 | 
CRAN (R 4.1.1) | 
    | rlang | 
0.4.11.9001 | 
2021-09-08 | 
Github (r-lib/rlang@9c6291f) | 
    | rmarkdown | 
2.10.6 | 
2021-09-02 | 
Github (rstudio/rmarkdown@eaf6efc) | 
    | rprojroot | 
2.0.2 | 
2020-11-15 | 
CRAN (R 4.1.1) | 
    | rstudioapi | 
0.13.0-9000 | 
2021-08-15 | 
Github (rstudio/rstudioapi@96fad1d) | 
    | Rttf2pt1 | 
1.3.9 | 
2021-07-22 | 
CRAN (R 4.1.1) | 
    | rvest | 
1.0.1 | 
2021-07-26 | 
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.1.1 | 
2018-11-05 | 
CRAN (R 4.1.1) | 
    | stringi | 
1.7.4 | 
2021-08-25 | 
CRAN (R 4.1.1) | 
    | stringr | 
1.4.0 | 
2019-02-10 | 
CRAN (R 4.1.1) | 
    | styler | 
1.5.1.9001 | 
2021-08-21 | 
Github (r-lib/styler@2b1eeac) | 
    | systemfonts | 
1.0.2 | 
2021-05-11 | 
CRAN (R 4.1.1) | 
    | testthat | 
3.0.4.9000 | 
2021-09-11 | 
Github (r-lib/testthat@2dc496c) | 
    | textshaping | 
0.3.5 | 
2021-06-09 | 
CRAN (R 4.1.1) | 
    | tibble | 
3.1.4.9000 | 
2021-08-26 | 
Github (tidyverse/tibble@e3e40af) | 
    | tidyr | 
1.1.3.9000 | 
2021-08-27 | 
Github (tidyverse/tidyr@7947507) | 
    | tidyselect | 
1.1.1 | 
2021-04-30 | 
CRAN (R 4.1.1) | 
    | tidyverse | 
1.3.1.9000 | 
2021-08-16 | 
Github (tidyverse/tidyverse@195d8a4) | 
    | tzdb | 
0.1.2 | 
2021-07-20 | 
CRAN (R 4.1.1) | 
    | usethis | 
2.0.1.9000 | 
2021-08-30 | 
Github (r-lib/usethis@3385e14) | 
    | 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.1) | 
    | viridisLite | 
0.4.0 | 
2021-04-13 | 
CRAN (R 4.1.1) | 
    | vroom | 
1.5.4.9000 | 
2021-09-11 | 
Github (r-lib/vroom@c546abe) | 
    | withr | 
2.4.2 | 
2021-04-18 | 
CRAN (R 4.1.1) | 
    | xfun | 
0.25 | 
2021-08-06 | 
CRAN (R 4.1.1) | 
    | xml2 | 
1.3.2 | 
2020-04-23 | 
CRAN (R 4.1.1) | 
    | yaml | 
2.2.1 | 
2020-02-01 | 
CRAN (R 4.1.1) |