Takashima, Y., Guo, G., Loos, R., Nichols, J., Ficz, G., Krueger, F., Oxley, D., Santos, F., Clarke, J., Mansfield, W., et al. (2014). Resetting transcription factor control circuitry toward ground-state pluripotency in human. Cell 158, 1254–1269.
Load required packages.
library(tidyverse)
library(magrittr)
library(Matrix)
library(extrafont)
library(ggrepel)
library(patchwork)
# library(tidylog)
Sys.time()
## [1] "2020-08-11 03:10:44 CDT"
SEED_USE <- 20200616
MINIMAL_NUM_COUNTS_REQUIRED_FOR_GENE <- 60
source(
file = file.path(
SCRIPT_DIR,
"utilities.R"
)
)
Prepare metadata for single cells.
cell_metadata <- read_delim(
file = "../SraRunTable.txt",
delim = ","
) %>%
select(-c("organism", "Sample Name")) %>%
rename_all(. %>% tolower()) %>%
`colnames<-`(str_replace(
string = colnames(.),
pattern = " ", replacement = "_"
)) %>%
filter(organism == "Homo sapiens") %>%
select(
sample_name,
run,
biosample,
alias,
cell_line,
organism,
title
) %>%
mutate(
sample_description = str_remove(
string = title,
pattern = "_R\\d$"
)
)
## Parsed with column specification:
## cols(
## .default = col_character(),
## AvgSpotLen = col_double(),
## Bases = col_double(),
## Bytes = col_double(),
## `ENA-FIRST-PUBLIC (run)` = col_date(format = ""),
## `ENA-LAST-UPDATE (run)` = col_date(format = ""),
## INSDC_first_public = col_datetime(format = ""),
## INSDC_last_update = col_datetime(format = ""),
## ReleaseDate = col_datetime(format = "")
## )
## See spec(...) for full column specifications.
cell_metadata
Load featureCounts output.
matrix_readcount_use <- read_delim(
file = "../matrix/xaa_Aligned.sortedByCoord.out_deduped_q10_gene_id_featureCounts.txt.gz",
delim = "\t",
col_names = TRUE,
skip = 1
) %>%
select(-(2:6))
## Parsed with column specification:
## cols(
## Geneid = col_character(),
## Chr = col_character(),
## Start = col_character(),
## End = col_character(),
## Strand = col_character(),
## Length = col_double(),
## `../aln/ERR590398_rnaseq/aln/Aligned.sortedByCoord.out_deduped.bam` = col_double(),
## `../aln/ERR590399_rnaseq/aln/Aligned.sortedByCoord.out_deduped.bam` = col_double(),
## `../aln/ERR590400_rnaseq/aln/Aligned.sortedByCoord.out_deduped.bam` = col_double(),
## `../aln/ERR590401_rnaseq/aln/Aligned.sortedByCoord.out_deduped.bam` = col_double(),
## `../aln/ERR590408_rnaseq/aln/Aligned.sortedByCoord.out_deduped.bam` = col_double(),
## `../aln/ERR590410_rnaseq/aln/Aligned.sortedByCoord.out_deduped.bam` = col_double()
## )
colnames(matrix_readcount_use) <- colnames(matrix_readcount_use) %>%
str_remove(
pattern = "_rnaseq/aln/Aligned.sortedByCoord.out_deduped.bam"
) %>%
str_remove(pattern = "../aln/")
matrix_readcount_use <- Matrix(
data = as.matrix(matrix_readcount_use[, -1]),
dimnames = list(
matrix_readcount_use$Geneid,
colnames(matrix_readcount_use)[-1]
),
sparse = TRUE
)
matrix_readcount_use <- matrix_readcount_use[, colnames(matrix_readcount_use)]
matrix_readcount_use %>%
dim()
## [1] 33538 6
stopifnot(
rownames(matrix_readcount_use) == gene_symbo_info$X1
)
rownames(matrix_readcount_use) <- paste(
rownames(matrix_readcount_use),
gene_symbo_info$X2,
sep = "_"
)
colnames(matrix_readcount_use) <- colnames(matrix_readcount_use) %>%
enframe(value = "run") %>%
left_join(cell_metadata, by = c("run" = "run")) %>%
pull("sample_name")
matrix_cpm_use <- calc_cpm(m = matrix_readcount_use)
Summarize sequencing statistics.
cell_metadata %>%
mutate(
num_umis = matrix_readcount_use[, .$sample_name] %>% colSums(),
num_genes = (matrix_readcount_use[, .$sample_name] > 0) %>% colSums()
) %>%
group_by(sample_description) %>%
summarise(
num_samples = n(),
num_umis = median(num_umis),
num_genes = median(num_genes)
) %>%
arrange(sample_description) %>%
as.data.frame() %>%
gt::gt() %>%
gt::tab_options(table.font.size = "median")
## `summarise()` ungrouping output (override with `.groups` argument)
sample_description | num_samples | num_umis | num_genes |
---|---|---|---|
H9 | 3 | 15202211 | 22575 |
H9_reset | 3 | 80337013 | 25986 |
Filter uninformative genes.
matrix_readcount_norm <- matrix_readcount_use
matrix_readcount_norm <- matrix_readcount_norm[
Matrix::rowSums(
matrix_readcount_norm
) >= MINIMAL_NUM_COUNTS_REQUIRED_FOR_GENE,
]
dim(matrix_readcount_norm)
## [1] 19546 6
Median normalize matrix.
matrix_readcount_norm@x <- median(colSums(matrix_readcount_norm)) *
(matrix_readcount_norm@x / rep.int(
colSums(matrix_readcount_norm),
diff(matrix_readcount_norm@p)
))
matrix_readcount_norm_log <- matrix_readcount_norm
matrix_readcount_norm_log@x <- log1p(matrix_readcount_norm_log@x)
# z-score
matrix_readcount_norm_log_scaled <- t(
scale(
t(
matrix_readcount_norm_log
),
center = TRUE, scale = TRUE
)
)
# features_var <- apply(matrix_readcount_norm_log_scaled, 1, var)
# features_use <- rownames(matrix_readcount_norm_log_scaled)[features_var > 0]
pca_out <- prcomp(
t(matrix_readcount_norm_log_scaled),
center = FALSE,
scale = FALSE
)
summary(pca_out)$imp %>%
t() %>%
as.data.frame() %>%
rownames_to_column(var = "component") %>%
mutate(
rank = 1:n()
) %>%
# slice(1:33) %>%
ggplot(
aes(
x = rank,
y = `Proportion of Variance`
)
) +
geom_point(size = 0.3) +
theme_bw() +
scale_x_continuous(
name = "Component",
breaks = c(1, seq(5, 30, 5))
) +
scale_y_continuous(
name = "Proportion of variance",
labels = scales::percent
) +
theme(
axis.title = ggplot2::element_text(family = "Arial", size = 6),
axis.text = ggplot2::element_text(family = "Arial", size = 6),
panel.grid.minor = ggplot2::element_blank()
)
file_name <- "Rplot_pca_variance_explained.pdf"
if (!file.exists(file_name)) {
ggsave(
filename = file_name,
useDingbats = FALSE,
plot = last_plot(),
device = NULL,
path = NULL,
scale = 1,
width = 55 * 1.5,
height = 55,
units = c("mm"),
)
}
embedding <- pca_out$x %>%
as.data.frame() %>%
rownames_to_column(var = "sample_name") %>%
select(sample_name:PC3) %>%
left_join(cell_metadata, by = "sample_name") %>%
dplyr::rename(
x_pca = PC1,
y_pca = PC2,
z_pca = PC3
) %>%
relocate(x_pca, y_pca, z_pca, .after = last_col())
p_embedding_pca1 <- embedding %>%
mutate(
category = "PCA"
) %>%
sample_frac() %>%
plot_pca(
x = x_pca,
y = y_pca,
color = sample_description,
shape = cell_line
) +
scale_color_manual(
values = ggthemes::tableau_color_pal("Tableau 10")(
length(unique(embedding$sample_description))
)
) +
scale_shape_manual(values = c(15)) + # seq(length(unique(embedding$cell_line)))) +
add_xy_label_pca()
p_embedding_pca2 <- embedding %>%
mutate(
category = "PCA"
) %>%
sample_frac() %>%
plot_pca(
x = x_pca,
y = z_pca,
color = sample_description,
shape = cell_line
) +
scale_color_manual(
values = ggthemes::tableau_color_pal("Tableau 10")(
length(unique(embedding$sample_description))
)
) +
scale_shape_manual(values = c(15)) +
add_xy_label_pca(y = "PC3")
p_embedding_pca1 +
p_embedding_pca2 +
plot_annotation(theme = theme(plot.margin = margin())) +
plot_layout(guides = "collect")
file_name <- "Rplot_embedding_pca.pdf"
if (!file.exists(file_name)) {
ggsave(
filename = file_name,
useDingbats = FALSE,
plot = last_plot(),
device = NULL,
path = NULL,
scale = 1,
width = 55 * 2.5,
height = 55,
units = c("mm"),
)
}
N_COMPONENTS <- 6
set.seed(seed = SEED_USE)
embedding_rtsne <- Rtsne::Rtsne(
X = pca_out$x[, 1:N_COMPONENTS],
perplexity = 1,
check_duplicates = FALSE,
pca = FALSE,
max_iter = 3000,
verbose = TRUE
)$Y
## Read the 6 x 6 data matrix successfully!
## Using no_dims = 2, perplexity = 1.000000, and theta = 0.500000
## Computing input similarities...
## Building tree...
## Done in 0.00 seconds (sparsity = 0.611111)!
## Learning embedding...
## Iteration 50: error is 57.270342 (50 iterations in 0.00 seconds)
## Iteration 100: error is 52.420417 (50 iterations in 0.00 seconds)
## Iteration 150: error is 65.648673 (50 iterations in 0.00 seconds)
## Iteration 200: error is 54.581777 (50 iterations in 0.00 seconds)
## Iteration 250: error is 79.670690 (50 iterations in 0.00 seconds)
## Iteration 300: error is 1.111540 (50 iterations in 0.00 seconds)
## Iteration 350: error is 0.409191 (50 iterations in 0.00 seconds)
## Iteration 400: error is 0.154047 (50 iterations in 0.00 seconds)
## Iteration 450: error is 0.127597 (50 iterations in 0.00 seconds)
## Iteration 500: error is 0.111444 (50 iterations in 0.00 seconds)
## Iteration 550: error is 0.094854 (50 iterations in 0.00 seconds)
## Iteration 600: error is 0.107957 (50 iterations in 0.00 seconds)
## Iteration 650: error is 0.107906 (50 iterations in 0.00 seconds)
## Iteration 700: error is 0.121028 (50 iterations in 0.00 seconds)
## Iteration 750: error is 0.111088 (50 iterations in 0.00 seconds)
## Iteration 800: error is 0.108210 (50 iterations in 0.00 seconds)
## Iteration 850: error is 0.108115 (50 iterations in 0.00 seconds)
## Iteration 900: error is 0.107947 (50 iterations in 0.00 seconds)
## Iteration 950: error is 0.107827 (50 iterations in 0.00 seconds)
## Iteration 1000: error is 0.116671 (50 iterations in 0.00 seconds)
## Iteration 1050: error is 0.107830 (50 iterations in 0.00 seconds)
## Iteration 1100: error is 0.107810 (50 iterations in 0.00 seconds)
## Iteration 1150: error is 0.096893 (50 iterations in 0.00 seconds)
## Iteration 1200: error is 0.107799 (50 iterations in 0.00 seconds)
## Iteration 1250: error is 0.107781 (50 iterations in 0.00 seconds)
## Iteration 1300: error is 0.109558 (50 iterations in 0.00 seconds)
## Iteration 1350: error is 0.107765 (50 iterations in 0.00 seconds)
## Iteration 1400: error is 0.107751 (50 iterations in 0.00 seconds)
## Iteration 1450: error is 0.845329 (50 iterations in 0.00 seconds)
## Iteration 1500: error is 0.332005 (50 iterations in 0.00 seconds)
## Iteration 1550: error is 0.139264 (50 iterations in 0.00 seconds)
## Iteration 1600: error is 0.126302 (50 iterations in 0.00 seconds)
## Iteration 1650: error is 0.113705 (50 iterations in 0.00 seconds)
## Iteration 1700: error is 0.111947 (50 iterations in 0.00 seconds)
## Iteration 1750: error is 0.108587 (50 iterations in 0.00 seconds)
## Iteration 1800: error is 0.107894 (50 iterations in 0.00 seconds)
## Iteration 1850: error is 0.107774 (50 iterations in 0.00 seconds)
## Iteration 1900: error is 0.108137 (50 iterations in 0.00 seconds)
## Iteration 1950: error is 0.107648 (50 iterations in 0.00 seconds)
## Iteration 2000: error is 0.107638 (50 iterations in 0.00 seconds)
## Iteration 2050: error is 0.107630 (50 iterations in 0.00 seconds)
## Iteration 2100: error is 0.107628 (50 iterations in 0.00 seconds)
## Iteration 2150: error is 0.107627 (50 iterations in 0.00 seconds)
## Iteration 2200: error is 0.072551 (50 iterations in 0.00 seconds)
## Iteration 2250: error is 0.447330 (50 iterations in 0.00 seconds)
## Iteration 2300: error is 0.411598 (50 iterations in 0.00 seconds)
## Iteration 2350: error is 0.222511 (50 iterations in 0.00 seconds)
## Iteration 2400: error is 0.158287 (50 iterations in 0.00 seconds)
## Iteration 2450: error is 0.138366 (50 iterations in 0.00 seconds)
## Iteration 2500: error is 0.122092 (50 iterations in 0.00 seconds)
## Iteration 2550: error is 0.112900 (50 iterations in 0.00 seconds)
## Iteration 2600: error is 0.101245 (50 iterations in 0.00 seconds)
## Iteration 2650: error is 2.014337 (50 iterations in 0.00 seconds)
## Iteration 2700: error is 0.650924 (50 iterations in 0.00 seconds)
## Iteration 2750: error is 0.172666 (50 iterations in 0.00 seconds)
## Iteration 2800: error is 0.146584 (50 iterations in 0.00 seconds)
## Iteration 2850: error is 0.113502 (50 iterations in 0.00 seconds)
## Iteration 2900: error is 0.095568 (50 iterations in 0.00 seconds)
## Iteration 2950: error is 0.108425 (50 iterations in 0.00 seconds)
## Iteration 3000: error is 0.107861 (50 iterations in 0.00 seconds)
## Fitting performed in 0.02 seconds.
embedding <- cbind(
embedding,
embedding_rtsne
) %>%
dplyr::rename(
x_tsne = "1",
y_tsne = "2"
)
p_embedding_tsne <- embedding %>%
mutate(
category = "t-SNE"
) %>%
sample_frac() %>%
plot_pca(
x = x_tsne,
y = y_tsne,
color = sample_description,
shape = cell_line
) +
labs(x = "Dim 1", y = "Dim 2") +
scale_color_manual(
values = ggthemes::tableau_color_pal("Tableau 10")(
length(unique(embedding$sample_description))
)
) +
scale_shape_manual(values = c(15))
Fig. 5A
p_embedding_pca1 +
add_point_labels(
x = x_pca,
y = y_pca,
z = title
) +
p_embedding_tsne +
add_point_labels(
x = x_tsne,
y = y_tsne,
z = title
) +
plot_annotation(theme = theme(plot.margin = margin())) +
plot_layout(nrow = 1, guides = "collect")
file_name <- "Rplot_embedding.pdf"
if (!file.exists(file_name)) {
ggsave(
filename = file_name,
useDingbats = FALSE,
plot = last_plot(),
device = NULL,
path = NULL,
scale = 1,
width = 55 * 2.5,
height = 55,
units = c("mm"),
)
}
FEATUES_SELECTED <- c(
"ENSG00000075388_FGF4",
"ENSG00000115112_TFCP2L1",
"ENSG00000084093_REST",
"ENSG00000134352_IL6ST",
"ENSG00000108821_COL1A1",
"ENSG00000148444_COMMD3",
"ENSG00000116833_NR5A2",
"ENSG00000111704_NANOG",
"ENSG00000115414_FN1",
"ENSG00000157404_KIT",
"ENSG00000187682_ERAS",
"ENSG00000174059_CD34",
"ENSG00000115457_IGFBP2",
"ENSG00000179059_ZFP42",
"ENSG00000152670_DDX4",
"ENSG00000113594_LIFR",
"ENSG00000168036_CTNNB1",
"ENSG00000241186_TDGF1",
"ENSG00000181449_SOX2",
"ENSG00000164362_TERT",
"ENSG00000162992_NEUROD1",
"ENSG00000010278_CD9",
"ENSG00000101680_LAMA1",
"ENSG00000184344_GDF3",
"ENSG00000136574_GATA4",
"ENSG00000168505_GBX2",
"ENSG00000156574_NODAL",
"ENSG00000141448_GATA6",
"ENSG00000137270_GCM1",
"ENSG00000179776_CDH5",
"ENSG00000171794_UTF1",
"ENSG00000091136_LAMB1",
"ENSG00000175084_DES",
"ENSG00000139219_COL2A1",
"ENSG00000164458_TBXT",
"ENSG00000125798_FOXA2",
"ENSG00000164736_SOX17",
"ENSG00000163508_EOMES",
"ENSG00000141738_GRB7",
"ENSG00000081051_AFP",
"ENSG00000148200_NR6A1",
"ENSG00000073792_IGF2BP2",
"ENSG00000187140_FOXD3",
"ENSG00000128567_PODXL",
"ENSG00000102755_FLT1",
"ENSG00000132688_NES",
"ENSG00000159251_ACTC1",
"ENSG00000075213_SEMA3A",
"ENSG00000143320_CRABP2",
"ENSG00000088305_DNMT3B",
"ENSG00000145423_SFRP2",
"ENSG00000069482_GAL"
)
SAMPLES_SELECTED <- c(
"ERS537884", "ERS537881", "ERS537876", "ERS537888", "ERS537890", "ERS537878"
)
Fig. 5B
calc_cpm(matrix_readcount_use[, SAMPLES_SELECTED])[FEATUES_SELECTED, ] %>%
as.matrix() %>%
as.data.frame() %>%
rownames_to_column(var = "feature") %>%
pivot_longer(
-c("feature"),
names_to = "sample"
) %>%
mutate(
group = case_when(
sample %in% c("ERS537884", "ERS537881", "ERS537876") ~ "H9_reset",
!sample %in% c("ERS537884", "ERS537881", "ERS537876") ~ "H9"
),
group = factor(
group,
levels = c("H9_reset", "H9")
),
feature = factor(
feature,
levels = FEATUES_SELECTED %>% rev(.)
),
sample = factor(
sample,
levels = SAMPLES_SELECTED
)
) %>%
plot_heatmap(
x = sample,
y = feature,
z = log10(value + 1),
y_order = rev(FEATUES_SELECTED)
) +
facet_grid(~group, scales = "free", space = "free")
devtools::session_info()$platform
## setting value
## version R version 4.0.2 (2020-06-22)
## os macOS Catalina 10.15.6
## system x86_64, darwin19.5.0
## ui unknown
## language (EN)
## collate en_US.UTF-8
## ctype en_US.UTF-8
## tz America/Chicago
## date 2020-08-11
devtools::session_info()$pack %>%
as_tibble() %>%
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.0.0) |
backports | 1.1.8 | 2020-06-17 | CRAN (R 4.0.1) |
blob | 1.2.1 | 2020-01-20 | CRAN (R 4.0.0) |
broom | 0.7.0.9001 | 2020-08-09 | Github (tidymodels/broom@a0bb105) |
callr | 3.4.3.9000 | 2020-07-31 | Github (r-lib/callr@b96da8f) |
cellranger | 1.1.0 | 2016-07-27 | CRAN (R 4.0.0) |
checkmate | 2.0.0 | 2020-02-06 | CRAN (R 4.0.0) |
cli | 2.0.2 | 2020-02-28 | CRAN (R 4.0.0) |
colorspace | 1.4-1 | 2019-03-18 | CRAN (R 4.0.0) |
crayon | 1.3.4 | 2017-09-16 | CRAN (R 4.0.0) |
DBI | 1.1.0 | 2019-12-15 | CRAN (R 4.0.0) |
dbplyr | 1.4.4.9000 | 2020-07-28 | Github (tidyverse/dbplyr@a6ed629) |
desc | 1.2.0 | 2018-05-01 | CRAN (R 4.0.0) |
devtools | 2.3.1.9000 | 2020-07-31 | Github (r-lib/devtools@df619ce) |
digest | 0.6.25 | 2020-02-23 | CRAN (R 4.0.0) |
dplyr | 1.0.1.9001 | 2020-08-10 | Github (tidyverse/dplyr@166aed1) |
ellipsis | 0.3.1.9000 | 2020-07-18 | Github (r-lib/ellipsis@57a5071) |
evaluate | 0.14 | 2019-05-28 | CRAN (R 4.0.0) |
extrafont | 0.17 | 2014-12-08 | CRAN (R 4.0.2) |
extrafontdb | 1.0 | 2012-06-11 | CRAN (R 4.0.0) |
fansi | 0.4.1 | 2020-01-08 | CRAN (R 4.0.0) |
farver | 2.0.3 | 2020-01-16 | CRAN (R 4.0.0) |
forcats | 0.5.0.9000 | 2020-05-28 | Github (tidyverse/forcats@ab81d1b) |
fs | 1.5.0.9000 | 2020-08-03 | Github (r-lib/fs@93e70a9) |
generics | 0.0.2 | 2018-11-29 | CRAN (R 4.0.0) |
ggplot2 | 3.3.2.9000 | 2020-08-04 | Github (tidyverse/ggplot2@6d91349) |
ggrepel | 0.9.0 | 2020-07-24 | Github (slowkow/ggrepel@4d0ef50) |
ggthemes | 4.2.0 | 2019-05-13 | CRAN (R 4.0.0) |
glue | 1.4.1.9000 | 2020-07-07 | Github (tidyverse/glue@205f18b) |
gt | 0.2.2 | 2020-08-06 | Github (rstudio/gt@c97cb4c) |
gtable | 0.3.0 | 2019-03-25 | CRAN (R 4.0.0) |
haven | 2.3.1 | 2020-06-01 | CRAN (R 4.0.0) |
hms | 0.5.3 | 2020-01-08 | CRAN (R 4.0.0) |
htmltools | 0.5.0 | 2020-06-16 | CRAN (R 4.0.1) |
httr | 1.4.2 | 2020-07-20 | CRAN (R 4.0.2) |
jsonlite | 1.7.0 | 2020-06-25 | CRAN (R 4.0.2) |
knitr | 1.29 | 2020-06-23 | CRAN (R 4.0.2) |
labeling | 0.3 | 2014-08-23 | CRAN (R 4.0.0) |
lattice | 0.20-41 | 2020-04-02 | CRAN (R 4.0.2) |
lifecycle | 0.2.0 | 2020-03-06 | CRAN (R 4.0.0) |
lubridate | 1.7.9 | 2020-07-11 | Github (tidyverse/lubridate@de2ee09) |
magrittr | 1.5.0.9000 | 2020-08-04 | Github (tidyverse/magrittr@ba52096) |
Matrix | 1.2-18 | 2019-11-27 | CRAN (R 4.0.2) |
memoise | 1.1.0 | 2017-04-21 | CRAN (R 4.0.0) |
modelr | 0.1.8.9000 | 2020-05-19 | Github (tidyverse/modelr@16168e0) |
munsell | 0.5.0 | 2018-06-12 | CRAN (R 4.0.0) |
patchwork | 1.0.1.9000 | 2020-06-22 | Github (thomasp85/patchwork@82a5e03) |
pillar | 1.4.6.9000 | 2020-07-21 | Github (r-lib/pillar@8aef8f2) |
pkgbuild | 1.1.0.9000 | 2020-07-14 | Github (r-lib/pkgbuild@3a87bd9) |
pkgconfig | 2.0.3 | 2019-09-22 | CRAN (R 4.0.0) |
pkgload | 1.1.0 | 2020-05-29 | CRAN (R 4.0.0) |
prettyunits | 1.1.1.9000 | 2020-08-10 | Github (r-lib/prettyunits@b1cdad8) |
processx | 3.4.3 | 2020-07-05 | CRAN (R 4.0.2) |
ps | 1.3.3 | 2020-05-08 | CRAN (R 4.0.0) |
purrr | 0.3.4.9000 | 2020-08-10 | Github (tidyverse/purrr@5de5ad2) |
R6 | 2.4.1.9000 | 2020-07-18 | Github (r-lib/R6@1415d11) |
Rcpp | 1.0.5 | 2020-07-06 | CRAN (R 4.0.2) |
readr | 1.3.1.9000 | 2020-07-16 | Github (tidyverse/readr@2ab51b2) |
readxl | 1.3.1.9000 | 2020-05-28 | Github (tidyverse/readxl@3815961) |
remotes | 2.2.0.9000 | 2020-08-06 | Github (r-lib/remotes@5a546ad) |
reprex | 0.3.0 | 2019-05-16 | CRAN (R 4.0.0) |
rlang | 0.4.7.9000 | 2020-07-31 | Github (r-lib/rlang@a144ac0) |
rmarkdown | 2.3.3 | 2020-07-25 | Github (rstudio/rmarkdown@204aa41) |
rprojroot | 1.3-2 | 2018-01-03 | CRAN (R 4.0.0) |
rstudioapi | 0.11.0-9000 | 2020-07-31 | Github (rstudio/rstudioapi@aa17630) |
Rtsne | 0.16 | 2020-07-03 | Github (jkrijthe/Rtsne@14b195f) |
Rttf2pt1 | 1.3.8 | 2020-01-10 | CRAN (R 4.0.0) |
rvest | 0.3.6 | 2020-07-25 | CRAN (R 4.0.2) |
sass | 0.2.0 | 2020-03-18 | CRAN (R 4.0.2) |
scales | 1.1.1.9000 | 2020-07-24 | Github (r-lib/scales@9ff4757) |
sessioninfo | 1.1.1.9000 | 2020-07-18 | Github (r-lib/sessioninfo@791705b) |
stringi | 1.4.6 | 2020-02-17 | CRAN (R 4.0.0) |
stringr | 1.4.0.9000 | 2020-06-01 | Github (tidyverse/stringr@f70c4ba) |
styler | 1.3.2.9000 | 2020-07-25 | Github (r-lib/styler@16d815e) |
testthat | 2.99.0.9000 | 2020-07-28 | Github (r-lib/testthat@0af11cd) |
tibble | 3.0.3.9000 | 2020-07-21 | Github (tidyverse/tibble@b4eec19) |
tidyr | 1.1.1.9000 | 2020-07-31 | Github (tidyverse/tidyr@61e9209) |
tidyselect | 1.1.0.9000 | 2020-07-11 | Github (tidyverse/tidyselect@69fdc96) |
tidyverse | 1.3.0.9000 | 2020-06-01 | Github (hadley/tidyverse@8a0bb99) |
usethis | 1.6.1.9001 | 2020-08-06 | Github (r-lib/usethis@51fcdb8) |
vctrs | 0.3.2.9000 | 2020-08-04 | Github (r-lib/vctrs@1b3cd7c) |
viridisLite | 0.3.0 | 2018-02-01 | CRAN (R 4.0.0) |
withr | 2.2.0 | 2020-04-20 | CRAN (R 4.0.0) |
xfun | 0.16 | 2020-07-24 | CRAN (R 4.0.2) |
xml2 | 1.3.2 | 2020-04-23 | CRAN (R 4.0.0) |
yaml | 2.2.1 | 2020-02-01 | CRAN (R 4.0.0) |