Single cell transcriptomes of human EPS-blastoids generated by Fan et al., 2021
2022-01-25
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.
Sys.time()
[1] "2022-01-25 02:49:54 CST"
Data preparation
Functions loading
Data loading
Raw fastq files of this dataset were downloaded and re-processed as described in Yu et al. 2021 to minimize platform and processing differences.
The expression matrix was re-generated from raw fastq files. To make this analysis comparable with the original publication, the same cell ids are retrieved.
PROJECT_DIR <- "/Users/jialei/Dropbox/Data/Projects/UTSW/Peri-implantation"
Matrix
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()
dim(matrix_readcount_use)
[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() |>
knitr::kable()
cell | batch | louvain | leiden | x_tsne | y_tsne | x_umap | y_umap | x_fitsne | y_fitsne | x_phate | y_phate | x_umap_min_dist=0.1 | y_umap_min_dist=0.1 | x_multicoretsne | y_multicoretsne |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
GSM4816780_AAACCCAAGTCACAGG | GSM4816780 | 0 | 0 | -59.61914 | -34.25100 | -2.434389 | 8.971638 | -68.549462 | 39.35378 | -0.0098444 | -0.0098271 | -2.276734 | 9.453928 | 1.7424585 | 0.0409331 |
GSM4816780_AAACCCAAGTTACTCG | GSM4816780 | 3 | 10 | 72.60726 | 81.89310 | 12.410583 | 2.235562 | 2.113421 | 109.57434 | 0.0452768 | 0.0093461 | 12.907623 | 2.995861 | 0.1721521 | 2.7968170 |
GSM4816780_AAACCCACATAATCGC | GSM4816780 | 5 | 8 | 10.69915 | 11.80464 | 2.457198 | 12.121967 | -18.971701 | 36.84989 | 0.0163275 | -0.0094425 | 3.231614 | 10.969112 | -0.0700925 | 0.1236116 |
GSM4816780_AAACCCACATCATCTT | GSM4816780 | 4 | 3 | -57.99653 | 95.91599 | 12.462027 | 11.089141 | 90.450377 | 15.79619 | 0.0314861 | -0.0030768 | 11.308686 | 10.344496 | -2.5766431 | 1.8918896 |
GSM4816780_AAACCCACATTCCTAT | GSM4816780 | 1 | 4 | -14.01938 | -142.56613 | -6.957992 | 10.141818 | -96.927817 | -53.61567 | -0.0092716 | -0.0123081 | -5.528971 | 11.530880 | 2.6173480 | -1.4231000 |
GSM4816780_AAACCCAGTGCCGTAC | GSM4816780 | 5 | 2 | -10.25328 | 14.79214 | 3.759502 | 11.010690 | -7.149860 | 32.01512 | 0.0171529 | -0.0095562 | 4.935977 | 10.719850 | -0.4245640 | 0.0006467 |
dim(embedding)
[1] 30439 16
Metadata
cell_metadata <- vroom::vroom(
file = file.path(
PROJECT_DIR,
"raw/public/PRJNA667174",
"matrix",
"cell_metadata.csv"
)
) |>
dplyr::left_join(
adata$obs |>
tibble::rownames_to_column(var = "cell")
)
cell_metadata |>
head() |>
knitr::kable()
cell | lineage | developmental_stage | batch | num_umis | num_features | mt_percentage |
---|---|---|---|---|---|---|
GSM4816780_AAACCCAAGTCACAGG | EPI | D6 | GSM4816780 | 54160 | 6368 | 0.0201440 |
GSM4816780_AAACCCAAGTTACTCG | TE | D6 | GSM4816780 | 1824 | 1041 | 0.0010965 |
GSM4816780_AAACCCACATAATCGC | TE | D6 | GSM4816780 | 5850 | 2212 | 0.0025641 |
GSM4816780_AAACCCACATCATCTT | IM | D6 | GSM4816780 | 898 | 571 | 0.0111359 |
GSM4816780_AAACCCACATTCCTAT | IM | D6 | GSM4816780 | 36394 | 6010 | 0.0125295 |
GSM4816780_AAACCCAGTGCCGTAC | TE | D6 | GSM4816780 | 4755 | 1953 | 0.0012618 |
Check memory usage.
purrr::walk(list(matrix_readcount_use, cell_metadata), function(x) {
print(object.size(x), units = "auto", standard = "SI")
})
1.2 GB
3.9 MB
Single-cell transcriptome analysis
embedding |>
dplyr::group_by(
batch
) |>
dplyr::summarise(
num_cells = 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_mt_percentage),
fns = list(
Mean = ~ mean(.)
),
decimals = c(2)
)
batch | num_cells | median_umis | median_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 | |
Sum | — | 30,439 | — | — | — |
Mean | — | — | 10,407.17 | 3,125.17 | 0.04 |
embedding |>
dplyr::group_by(
leiden
) |>
dplyr::summarise(
num_cells = 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_mt_percentage),
fns = list(
Mean = ~ mean(.)
),
decimals = 2
)
leiden | num_cells | median_umis | median_features | median_mt_percentage | |
---|---|---|---|---|---|
0 | 3766 | 30355.5 | 5476.0 | 0.055449145 | |
1 | 3391 | 24105.0 | 4961.0 | 0.057462115 | |
2 | 3028 | 2982.0 | 1323.0 | 0.013956873 | |
3 | 2957 | 841.0 | 534.0 | 0.030703625 | |
4 | 2655 | 24943.0 | 5121.0 | 0.055765976 | |
5 | 2272 | 23833.0 | 4629.5 | 0.043561692 | |
6 | 2050 | 1134.0 | 666.0 | 0.013907496 | |
7 | 1990 | 1399.0 | 778.0 | 0.020248509 | |
8 | 1304 | 8219.5 | 2591.5 | 0.006524399 | |
9 | 1207 | 2036.0 | 1107.0 | 0.054143646 | |
10 | 1160 | 3418.0 | 1493.0 | 0.003813516 | |
11 | 1029 | 24929.0 | 4990.0 | 0.044210168 | |
12 | 904 | 16867.0 | 4129.0 | 0.056618586 | |
13 | 717 | 5813.0 | 2375.0 | 0.093905032 | |
14 | 592 | 31812.0 | 5605.0 | 0.053662762 | |
15 | 410 | 17966.5 | 4359.0 | 0.070959755 | |
16 | 382 | 3411.5 | 1537.0 | 0.035595393 | |
17 | 367 | 24991.0 | 5047.0 | 0.053125720 | |
18 | 258 | 1479.0 | 758.5 | 0.039723450 | |
Sum | — | 30,439 | — | — | — |
Mean | — | — | 13,186.05 | 3,025.29 | 0.04 |
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.3
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 = TRUE,
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 * 1.25,
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 * 2,
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
)
Clustering of 30,439 cells (10,933 cells in Fig. 3a, 11,634 and 7,872 cells in Fig. 4cd).
purrr::reduce(
list(
p_embedding_leiden,
p_embedding_UMI,
p_embedding_MT
),
`+`
) +
patchwork::plot_layout(ncol = 3) +
patchwork::plot_annotation(
theme = ggplot2::theme(plot.margin = ggplot2::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 = ggplot2::theme(plot.margin = ggplot2::margin())
)
Developmental stage
embedding |>
dplyr::group_by(
developmental_stage
) |>
dplyr::summarise(
num_cells = 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_mt_percentage),
fns = list(
Mean = ~ mean(.)
),
decimals = c(2)
)
developmental_stage | num_cells | median_umis | median_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 | |
Sum | — | 30,439 | — | — | — |
Mean | — | — | 10,407.17 | 3,125.17 | 0.04 |
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 = ggplot2::theme(plot.margin = ggplot2::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") |>
gt::summary_rows(
columns = c(num_cells),
fns = list(
Sum = ~ sum(.)
),
decimals = 0
) |>
gt::summary_rows(
columns = c(median_umis:median_mt_percentage),
fns = list(
Mean = ~ mean(.)
),
decimals = c(2)
)
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 | |
Sum | — | 30,439 | — | — | — |
Mean | — | — | 14,004.83 | 3,187.92 | 0.02 |
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 = TRUE,
shuffle_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 = ggplot2::theme(plot.margin = ggplot2::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 = ggplot2::theme(plot.margin = ggplot2::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, byrow = FALSE) +
patchwork::plot_annotation(
theme = ggplot2::theme(plot.margin = ggplot2::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()
─ Session info ───────────────────────────────────────────────────────────────
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-25
pandoc 2.17.0.1 @ /opt/homebrew/bin/ (via rmarkdown)
─ Packages ───────────────────────────────────────────────────────────────────
package * version date (UTC) lib source
assertthat 0.2.1 2019-03-21 [1] CRAN (R 4.1.1)
backports 1.4.1 2021-12-13 [1] CRAN (R 4.1.2)
beeswarm 0.4.0 2021-06-01 [1] CRAN (R 4.1.2)
bit 4.0.4 2020-08-04 [1] CRAN (R 4.1.1)
bit64 4.0.5 2020-08-30 [1] CRAN (R 4.1.1)
brio 1.1.3 2021-11-30 [1] CRAN (R 4.1.2)
broom 0.7.11 2022-01-03 [1] CRAN (R 4.1.2)
cachem 1.0.6 2021-08-19 [1] CRAN (R 4.1.1)
callr 3.7.0 2021-04-20 [1] CRAN (R 4.1.1)
cellranger 1.1.0 2016-07-27 [1] CRAN (R 4.1.1)
checkmate 2.0.0 2020-02-06 [1] CRAN (R 4.1.1)
cli 3.1.1 2022-01-20 [1] CRAN (R 4.1.2)
colorspace 2.0-2 2021-06-24 [1] CRAN (R 4.1.1)
crayon 1.4.2 2021-10-29 [1] CRAN (R 4.1.1)
data.table 1.14.2 2021-09-27 [1] CRAN (R 4.1.1)
DBI 1.1.2 2021-12-20 [1] CRAN (R 4.1.2)
dbplyr 2.1.1 2021-04-06 [1] CRAN (R 4.1.1)
desc 1.4.0 2021-09-28 [1] CRAN (R 4.1.1)
devtools 2.4.3.9000 2022-01-22 [1] Github (r-lib/devtools@41280ac)
digest 0.6.29 2021-12-01 [1] CRAN (R 4.1.2)
dplyr * 1.0.7.9000 2022-01-12 [1] Github (tidyverse/dplyr@0501335)
dtplyr 1.2.1 2022-01-19 [1] CRAN (R 4.1.2)
ellipsis 0.3.2 2021-04-29 [1] CRAN (R 4.1.1)
evaluate 0.14 2019-05-28 [1] CRAN (R 4.1.1)
extrafont * 0.17 2014-12-08 [1] CRAN (R 4.1.1)
extrafontdb 1.0 2012-06-11 [1] CRAN (R 4.1.1)
fansi 1.0.2 2022-01-14 [1] CRAN (R 4.1.2)
farver 2.1.0 2021-02-28 [1] CRAN (R 4.1.1)
fastmap 1.1.0 2021-01-25 [1] CRAN (R 4.1.1)
forcats * 0.5.1.9000 2021-11-29 [1] Github (tidyverse/forcats@b4dade0)
fs 1.5.2.9000 2021-12-09 [1] Github (r-lib/fs@6d1182f)
gargle 1.2.0 2021-07-02 [1] CRAN (R 4.1.1)
generics 0.1.1 2021-10-25 [1] CRAN (R 4.1.1)
ggbeeswarm 0.6.0 2017-08-07 [1] CRAN (R 4.1.2)
ggplot2 * 3.3.5 2021-06-25 [1] CRAN (R 4.1.1)
ggrastr 1.0.1 2021-12-08 [1] Github (VPetukhov/ggrastr@7aed9af)
glue 1.6.1.9000 2022-01-23 [1] Github (tidyverse/glue@3da70df)
googledrive 2.0.0 2021-07-08 [1] CRAN (R 4.1.1)
googlesheets4 1.0.0 2021-07-21 [1] CRAN (R 4.1.1)
gt 0.3.1.9000 2022-01-17 [1] Github (rstudio/gt@fcabb41)
gtable 0.3.0.9000 2021-10-28 [1] Github (r-lib/gtable@a0bd272)
haven 2.4.3 2021-08-04 [1] CRAN (R 4.1.1)
highr 0.9 2021-04-16 [1] CRAN (R 4.1.1)
hms 1.1.1 2021-09-26 [1] CRAN (R 4.1.1)
htmltools 0.5.2 2021-08-25 [1] CRAN (R 4.1.1)
htmlwidgets 1.5.4 2021-09-08 [1] CRAN (R 4.1.1)
httr 1.4.2 2020-07-20 [1] CRAN (R 4.1.1)
jsonlite 1.7.3 2022-01-17 [1] CRAN (R 4.1.2)
knitr 1.37.1 2021-12-21 [1] https://yihui.r-universe.dev (R 4.1.2)
labeling 0.4.2 2020-10-20 [1] CRAN (R 4.1.1)
lattice 0.20-45 2021-09-22 [2] CRAN (R 4.1.2)
lifecycle 1.0.1 2021-09-24 [1] CRAN (R 4.1.1)
lubridate 1.8.0 2022-01-20 [1] Github (tidyverse/lubridate@566590f)
magrittr 2.0.1 2020-11-17 [1] CRAN (R 4.1.1)
Matrix * 1.4-0 2021-12-08 [2] CRAN (R 4.1.2)
memoise 2.0.1 2021-11-26 [1] CRAN (R 4.1.2)
modelr 0.1.8.9000 2021-10-27 [1] Github (tidyverse/modelr@16168e0)
munsell 0.5.0 2018-06-12 [1] CRAN (R 4.1.1)
patchwork * 1.1.0.9000 2021-10-27 [1] Github (thomasp85/patchwork@79223d3)
pillar 1.6.4 2021-10-18 [1] CRAN (R 4.1.1)
pkgbuild 1.3.1 2021-12-20 [1] CRAN (R 4.1.2)
pkgconfig 2.0.3 2019-09-22 [1] CRAN (R 4.1.1)
pkgload 1.2.4 2021-11-30 [1] CRAN (R 4.1.2)
png 0.1-7 2013-12-03 [1] CRAN (R 4.1.1)
prettyunits 1.1.1 2020-01-24 [1] CRAN (R 4.1.1)
processx 3.5.2 2021-04-30 [1] CRAN (R 4.1.1)
ps 1.6.0 2021-02-28 [1] CRAN (R 4.1.1)
purrr * 0.3.4 2020-04-17 [1] CRAN (R 4.1.1)
R.cache 0.15.0 2021-04-30 [1] CRAN (R 4.1.1)
R.methodsS3 1.8.1 2020-08-26 [1] CRAN (R 4.1.1)
R.oo 1.24.0 2020-08-26 [1] CRAN (R 4.1.1)
R.utils 2.11.0 2021-09-26 [1] CRAN (R 4.1.1)
R6 2.5.1.9000 2021-12-09 [1] Github (r-lib/R6@1b05b89)
ragg 1.2.1.9000 2021-12-08 [1] Github (r-lib/ragg@c68c666)
Rcpp 1.0.8 2022-01-13 [1] CRAN (R 4.1.2)
readr * 2.1.1 2021-11-30 [1] CRAN (R 4.1.2)
readxl 1.3.1.9000 2022-01-20 [1] Github (tidyverse/readxl@2ccb82c)
remotes 2.4.2 2022-01-24 [1] Github (r-lib/remotes@7b0ee01)
reprex 2.0.1 2021-08-05 [1] CRAN (R 4.1.1)
reticulate 1.23 2022-01-14 [1] CRAN (R 4.1.2)
rlang 1.0.0 2022-01-20 [1] Github (r-lib/rlang@f2fbaad)
rmarkdown 2.11.12 2022-01-24 [1] Github (rstudio/rmarkdown@b53a7ce)
rprojroot 2.0.2 2020-11-15 [1] CRAN (R 4.1.1)
rstudioapi 0.13.0-9000 2022-01-15 [1] Github (rstudio/rstudioapi@5d0f087)
Rttf2pt1 1.3.9 2021-07-22 [1] CRAN (R 4.1.1)
rvest 1.0.2 2021-10-16 [1] CRAN (R 4.1.1)
sass 0.4.0 2021-05-12 [1] CRAN (R 4.1.1)
scales 1.1.1 2020-05-11 [1] CRAN (R 4.1.1)
sessioninfo 1.2.2 2021-12-06 [1] CRAN (R 4.1.2)
stringi 1.7.6 2021-11-29 [1] CRAN (R 4.1.2)
stringr * 1.4.0.9000 2022-01-24 [1] Github (tidyverse/stringr@85f6140)
styler * 1.6.2.9000 2022-01-17 [1] Github (r-lib/styler@9274aed)
systemfonts 1.0.3.9000 2021-12-07 [1] Github (r-lib/systemfonts@414114e)
testthat 3.1.2.9000 2022-01-21 [1] Github (r-lib/testthat@54b9db2)
textshaping 0.3.6 2021-10-13 [1] CRAN (R 4.1.1)
tibble * 3.1.6.9000 2022-01-18 [1] Github (tidyverse/tibble@7aa54e6)
tidyr * 1.1.4 2021-09-27 [1] CRAN (R 4.1.1)
tidyselect 1.1.1 2021-04-30 [1] CRAN (R 4.1.1)
tidyverse * 1.3.1.9000 2021-12-08 [1] Github (tidyverse/tidyverse@6186fbf)
tzdb 0.2.0 2021-10-27 [1] CRAN (R 4.1.1)
usethis 2.1.5.9000 2022-01-20 [1] Github (r-lib/usethis@57b109a)
utf8 1.2.2 2021-07-24 [1] CRAN (R 4.1.1)
vctrs 0.3.8 2021-04-29 [1] CRAN (R 4.1.1)
vipor 0.4.5 2017-03-22 [1] CRAN (R 4.1.2)
viridisLite 0.4.0 2021-04-13 [1] CRAN (R 4.1.1)
vroom 1.5.7 2021-11-30 [1] CRAN (R 4.1.2)
withr 2.4.3 2021-11-30 [1] CRAN (R 4.1.2)
xfun 0.29 2021-12-14 [1] CRAN (R 4.1.2)
xml2 1.3.3 2021-11-30 [1] CRAN (R 4.1.2)
yaml 2.2.1 2020-02-01 [1] CRAN (R 4.1.1)
[1] /opt/homebrew/lib/R/4.1/site-library
[2] /opt/homebrew/Cellar/r/4.1.2/lib/R/library
─ Python configuration ───────────────────────────────────────────────────────
python: /Users/jialei/.pyenv/shims/python
libpython: /Users/jialei/.pyenv/versions/miniforge3-4.10.1-5/lib/libpython3.9.dylib
pythonhome: /Users/jialei/.pyenv/versions/miniforge3-4.10.1-5:/Users/jialei/.pyenv/versions/miniforge3-4.10.1-5
version: 3.9.5 | packaged by conda-forge | (default, Jun 19 2021, 00:24:55) [Clang 11.1.0 ]
numpy: /Users/jialei/.pyenv/versions/miniforge3-4.10.1-5/lib/python3.9/site-packages/numpy
numpy_version: 1.20.3
anndata: /Users/jialei/.pyenv/versions/miniforge3-4.10.1-5/lib/python3.9/site-packages/anndata
NOTE: Python version was forced by RETICULATE_PYTHON
──────────────────────────────────────────────────────────────────────────────