Source file: notebooks/low_quality_cells/validation_bmmc1.Rmd
Last updated: 2018-05-29
Code version: 33e615d
library(ggplot2)
library(ggrastr)
library(ggpubr)
library(dplyr)
library(parallel)
library(Seurat)
library(dropestr)
library(dropEstAnalysis)
theme_set(theme_base)
set.seed(42)
kOutputFolder <- '../../output/'
kDataPath <- '../../data/'
kEstDataPath <- paste0(kDataPath, 'dropest/10x/frozen_bmmc_healthy_donor1/')
kAnnotationDataPath <- paste0(kDataPath, 'annotation/')
kEstFolder <- paste0(kEstDataPath, 'est_11_10_umi_quality/')
k10xFolder <- paste0(kEstDataPath, 'filtered_matrices_mex/hg19/')
holder <- readRDS(paste0(kEstFolder, 'bmmc_no_umi.rds'))
cm_10x <- Read10xMatrix(k10xFolder)
cm_10x <- cm_10x[, order(Matrix::colSums(cm_10x), decreasing=F)]
umis_per_cell <- sort(Matrix::colSums(holder$cm_raw), decreasing=T)
est_cell_num <- EstimateCellsNumber(umis_per_cell)
drop_est_cbs <- names(umis_per_cell)[1:est_cell_num$expected]
Here we compare threshold selection, so we can set quality score threshold to 0.5.
intersect_cbs <- intersect(colnames(cm_10x), drop_est_cbs)
rescued_cbs <- setdiff(drop_est_cbs, colnames(cm_10x))
c(Unchanged=length(intersect_cbs), Rescued=length(rescued_cbs))
Unchanged Rescued
1985 1105
r_cm_rescued <- holder$cm_raw[, c(drop_est_cbs, colnames(cm_10x)) %>% unique()]
r_cm_rescued <- r_cm_rescued[grep("^[^;]+$", rownames(r_cm_rescued)),]
if (!all(colnames(cm_10x) %in% colnames(r_cm_rescued)))
stop("All 10x cells must be presented")
r_rescued <- GetPagoda(r_cm_rescued, n.cores=30)
3090 cells, 8112 genes; normalizing ... using plain model winsorizing ... log scale ... done.
calculating variance fit ... using gam 146 overdispersed genes ... 146 persisting ... done.
running PCA using 1000 OD genes .... done
calculating distance ... pearson ...running tSNE using 30 cores:
# You need to run "annotation/annotation_bmmc1.Rmd" first
clusters_annotated <- paste0(kAnnotationDataPath, 'bmmc1_clusters_annotated.csv') %>%
read.csv() %>% (function(x) setNames(as.character(x$Type), x$Barcode))
notannotated_cells <- setdiff(colnames(r_cm_rescued), names(clusters_annotated))
clusters_annotated_resc <- AnnotateClustersByGraph(r_rescued$graphs$PCA,
clusters_annotated,
notannotated_cells, mc.cores=10)
rescued_clusters <- clusters_annotated_resc[rescued_cbs]
intersect_clusters <- clusters_annotated[intersect_cbs]
unchanged_clusters <- names(clusters_annotated) %>% setdiff(rescued_cbs)
long_type_names <- c("CD14+ Monocytes", "Non-dividing Pro B cells", "Monocyte progenitors",
"Epithelial cells", "Cytotoxic T cells", "Immature B cells",
"Dendritic cells", "Pre-pro B cells")
plot_clusters <- clusters_annotated[unchanged_clusters]
plot_rescued_clusters <- rescued_clusters
for (type in long_type_names) {
plot_clusters[plot_clusters == type] <- sub(" ", "\n", type)
plot_rescued_clusters[plot_rescued_clusters == type] <- sub(" ", "\n", type)
}
gg_tsne <- PlotFiltrationResults(r_rescued, plot_clusters, filtered.cbs=NULL,
rescued.clusters=plot_rescued_clusters,
raster.width=4.28, raster.height=4.16,
rescued.alpha=0.5, rescued.size=1.5, lineheight=0.8) +
theme_pdf(legend.pos=c(0, 1), show.ticks=F)
gg_tsne
rescued_table <- TableOfRescuedCells(clusters_annotated_resc[c(intersect_cbs, rescued_cbs)],
rescued_cbs)
write.csv(rescued_table, paste0(kOutputFolder, "tables/rescued_cbc_bmmc1.csv"), row.names=F)
rescued_table
Cell type | Total num. of cells | Num. of rescued | Fraction of rescued, % |
---|---|---|---|
CD14+ Monocytes | 305 | 164 | 53.77 |
Cytotoxic T cells | 105 | 37 | 35.24 |
Dendritic cells | 90 | 16 | 17.78 |
Epithelial cells | 136 | 23 | 16.91 |
Erythroblasts | 509 | 263 | 51.67 |
Immature B cells | 277 | 133 | 48.01 |
Monocyte progenitors | 157 | 33 | 21.02 |
NK cells | 179 | 47 | 26.26 |
Non-dividing Pre B cells | 93 | 82 | 88.17 |
Pre B cells | 76 | 8 | 10.53 |
Pre-pro B cells | 65 | 30 | 46.15 |
T cells | 1098 | 269 | 24.50 |
Parameters are the same as in the demonstration.
presented_cbs <- intersect(colnames(r_cm_rescued), names(clusters_annotated))
seurat_cm <- r_cm_rescued[, presented_cbs]
seurat_cm <- seurat_cm[Matrix::rowSums(seurat_cm) > 200, ]
srt <- CreateSeuratObject(raw.data = seurat_cm, project = "bmmc1", display.progress=F)
srt <- NormalizeData(object = srt, normalization.method = "LogNormalize",
scale.factor = 10000, display.progress=F)
srt <- FindVariableGenes(object = srt, mean.function = ExpMean,
dispersion.function = LogVMR, x.low.cutoff = 0.0125,
x.high.cutoff = 3, y.cutoff = 1, do.plot=F, display.progress=F)
srt <- ScaleData(object = srt, vars.to.regress = "nUMI", display.progress=F)
Find genes to compare cell types:
srt@ident <- as.factor(clusters_annotated[colnames(srt@raw.data)])
names(srt@ident) <- colnames(srt@raw.data)
compared_clusters <- unique(srt@ident) %>% as.character()
cluster_markers <- mclapply(compared_clusters, function(i)
mclapply(setdiff(compared_clusters, i), FindClusterMarkers, i, srt, mc.cores=4),
mc.cores=11)
de_genes <- GetOverexpressedGenes(srt, compared_clusters, cluster_markers)
321 differentially expressed genes found.
10x CellRanger used wrong threshold:
scores <- ScorePipelineCells(holder, mit.chromosome.name='MT',
predict.all=T)[names(umis_per_cell)]
smoothScatter(scores[1:6000], bandwidth=c(60, 0.015), xlab='Cell rank',
ylab='Quality score')
abline(v=ncol(cm_10x), col='#bc2727', lty=2, lw=2.5)
abline(v=est_cell_num$expected, col='#0a6607', lty=2, lw=2.5)
arrows(x0=c(1000, 4000), y0=c(0.6, 0.7),
x1=c(ncol(cm_10x) - 100, est_cell_num$expected + 100), y1=c(0.42, 0.52),
lw=2)
text(x=c(900, 4100), y=c(0.67, 0.75),
labels=c("10x threshold", "dropEst threshold"), cex=1.3)
tested_clusts <- clusters_annotated[presented_cbs]
separation <- c(setNames(rep('rescued', length(rescued_cbs)), rescued_cbs),
setNames(rep('real', length(intersect_cbs)), intersect_cbs))
umis_per_cb_subset <- log10(Matrix::colSums(r_cm_rescued[, names(tested_clusts)]))
tested_clusts <- tested_clusts[order(tested_clusts, -umis_per_cb_subset)]
Prepare heatmaps:
plot_df <- ExpressionMatrixToDataFrame(r_rescued$counts[names(tested_clusts), de_genes],
umis_per_cb_subset, tested_clusts,
filtration.type=separation)
plot_df$Cluster <- as.character(plot_df$Cluster)
plot_df$Cluster[plot_df$Cluster == "Non-dividing Pro B cells"] <- "Non-dividing\nPro B cells"
plot_df <- plot_df %>% filter(UmisPerCb < 3.4)
plot_dfs <- split(plot_df, plot_df$FiltrationType)
ggs <- lapply(plot_dfs, HeatmapAnnotGG, umi.per.cell.limits=range(plot_df$UmisPerCb),
raster.width=3, raster.height=3, raster.dpi=100)
legend_guides <- list(HeatmapLegendGuide('Expression'),
HeatmapLegendGuide('Cell type', guide=guide_legend, ncol=3),
HeatmapLegendGuide('log10(#molecules)'))
gg_legends <- mapply(`+`, ggs$real, legend_guides, SIMPLIFY=F) %>%
lapply(`+`, theme(legend.margin=margin(l=4, r=4, unit='pt'))) %>% lapply(get_legend)
ggs$real$heatmap <- ggs$real$heatmap + rremove('xlab') + ylab('Cells')
ggs$rescued$heatmap <- ggs$rescued$heatmap + labs(x = 'Genes', y = 'Cells')
ggs_annot <- lapply(ggs, function(gg) cowplot::plot_grid(
plotlist=lapply(gg, `+`, theme(legend.position="none", plot.margin=margin())),
nrow=1, rel_widths=c(1.5, 0.1, 0.1), align='h'))
gg_legends_plot <- cowplot::plot_grid(plotlist=gg_legends, nrow=3, align='v')
Compile plot parts:
gg_left <- cowplot::plot_grid(ggs_annot$real, ggs_annot$rescued, nrow=2,
labels=c('B', 'C'))
gg_right <- gg_tsne + theme(plot.margin=margin(l=0.1, unit='in'),
axis.text=element_blank(), axis.ticks=element_blank())
gg_bottom <- cowplot::plot_grid(plotlist=gg_legends[c(1, 3, 2)], ncol=3,
rel_widths=c(1, 1, 2.6))
gg_filtration <- cowplot::plot_grid(gg_left, gg_right, labels=c('', 'D'), ncol=2) %>%
cowplot::plot_grid(gg_bottom, nrow=2, rel_heights=c(1, 0.27), align='v')
coords <- list(optimal=list(x_l=est_cell_num$expected,
x_t=4000, y_l=3.2e5, y_t=5e5),
`10x`=list(x_l=ncol(cm_10x),
x_t=1300, y_l=2.5e5, y_t=4e5))
gg_repel <- function(coords, label) {
coords$label <- label
gg <- ggrepel::geom_label_repel(
data=as.data.frame(coords),
mapping=aes(x=x_l, y=y_l, label=label), nudge_x=coords$x_t - coords$x_l,
nudge_y=coords$y_t - coords$y_l, size=5.5, segment.size=0.7, force=0,
arrow=ggplot2::arrow(length = unit(0.03, 'npc')), fill=alpha("white", 0.7)
)
return(gg)
}
gg_cell_number <- PlotCellsNumberLine(Matrix::colSums(holder$cm_raw)) +
geom_vline(aes(xintercept=coords$`10x`$x_l), linetype='dashed',
color='#bc2727', size=1) +
geom_vline(aes(xintercept=coords$optimal$x_l), linetype='dashed',
color='#0a6607', size=1) +
gg_repel(coords$`10x`, label="10x threshold") +
gg_repel(coords$optimal, label="dropEst threshold") +
scale_x_continuous(limits=c(0, 5750), expand=c(0, 0)) +
theme_pdf() +
theme(axis.ticks=element_blank(), axis.text.y=element_blank(),
panel.grid.major.y=element_blank(), panel.grid.minor.y=element_blank())
gg_fig <- cowplot::plot_grid(gg_cell_number + theme(plot.margin=margin(b=0.1, unit="in")),
gg_filtration, nrow=2, rel_heights=c(1.2, 3),
labels=c('A', '')) +
theme(plot.margin=margin(1, 1, 1, 1))
ggsave(paste0(kOutputFolder, 'figures/fig_bmmc_filtration.pdf'), gg_fig, width=7.5, height=7)
gg_fig
value | |
---|---|
version | R version 3.4.1 (2017-06-30) |
os | Ubuntu 14.04.5 LTS |
system | x86_64, linux-gnu |
ui | X11 |
language | (EN) |
collate | en_US.UTF-8 |
tz | America/New_York |
date | 2018-05-29 |
package | loadedversion | date | source | |
---|---|---|---|---|
1 | acepack | 1.4.1 | 2016-10-29 | CRAN (R 3.4.1) |
2 | AnnotationDbi | 1.32.3 | 2016-01-28 | Bioconductor |
3 | ape | 5.0 | 2017-10-30 | CRAN (R 3.4.1) |
4 | assertthat | 0.2.0 | 2017-04-11 | CRAN (R 3.4.1) |
5 | backports | 1.1.2 | 2017-12-13 | CRAN (R 3.4.1) |
7 | base64enc | 0.1-3 | 2015-07-28 | cran (@0.1-3) |
8 | bindr | 0.1 | 2016-11-13 | CRAN (R 3.4.1) |
9 | bindrcpp | 0.2 | 2017-06-17 | CRAN (R 3.4.1) |
10 | Biobase | 2.30.0 | 2016-01-28 | Bioconductor |
11 | BiocGenerics | 0.16.1 | 2016-01-28 | Bioconductor |
12 | bit | 1.1-12 | 2014-04-09 | CRAN (R 3.4.1) |
13 | bit64 | 0.9-7 | 2017-05-08 | CRAN (R 3.4.1) |
14 | bitops | 1.0-6 | 2013-08-17 | CRAN (R 3.4.1) |
15 | blob | 1.1.0 | 2017-06-17 | CRAN (R 3.4.1) |
16 | brew | 1.0-6 | 2011-04-13 | CRAN (R 3.4.1) |
17 | broom | 0.4.3 | 2017-11-20 | CRAN (R 3.4.1) |
18 | Cairo | 1.5-9 | 2015-09-26 | CRAN (R 3.4.1) |
19 | caret | 6.0-78 | 2017-12-10 | CRAN (R 3.4.1) |
20 | caTools | 1.17.1 | 2014-09-10 | CRAN (R 3.4.1) |
21 | checkmate | 1.8.5 | 2017-10-24 | CRAN (R 3.4.1) |
22 | class | 7.3-14 | 2015-08-30 | CRAN (R 3.4.0) |
23 | clisymbols | 1.2.0 | 2017-05-21 | CRAN (R 3.4.1) |
24 | cluster | 2.0.6 | 2017-03-16 | CRAN (R 3.4.0) |
25 | codetools | 0.2-15 | 2016-10-05 | CRAN (R 3.4.1) |
26 | colorspace | 1.3-2 | 2016-12-14 | CRAN (R 3.4.1) |
28 | cowplot | 0.9.2 | 2017-12-17 | CRAN (R 3.4.1) |
29 | CVST | 0.2-1 | 2013-12-10 | CRAN (R 3.4.1) |
30 | data.table | 1.10.4-3 | 2017-10-27 | CRAN (R 3.4.1) |
32 | DBI | 1.0.0 | 2018-05-02 | CRAN (R 3.4.1) |
33 | ddalpha | 1.3.1 | 2017-09-27 | CRAN (R 3.4.1) |
34 | dendsort | 0.3.3 | 2015-12-14 | cran (@0.3.3) |
35 | DEoptimR | 1.0-8 | 2016-11-19 | CRAN (R 3.4.1) |
36 | diffusionMap | 1.1-0 | 2014-02-20 | CRAN (R 3.4.1) |
37 | digest | 0.6.15 | 2018-01-28 | cran (@0.6.15) |
38 | dimRed | 0.1.0 | 2017-05-04 | CRAN (R 3.4.1) |
39 | diptest | 0.75-7 | 2016-12-05 | CRAN (R 3.4.1) |
40 | doParallel | 1.0.11 | 2017-09-28 | CRAN (R 3.4.1) |
41 | dplyr | 0.7.4 | 2017-09-28 | CRAN (R 3.4.1) |
42 | dropEstAnalysis | 0.6.0 | 2018-05-16 | local (VPetukhov/dropEstAnalysis@NA) |
43 | dropestr | 0.7.7 | 2018-03-17 | local (@0.7.7) |
44 | DRR | 0.0.2 | 2016-09-15 | CRAN (R 3.4.1) |
45 | dtw | 1.18-1 | 2015-09-01 | CRAN (R 3.4.1) |
46 | evaluate | 0.10.1 | 2017-06-24 | CRAN (R 3.4.1) |
47 | flexmix | 2.3-14 | 2017-04-28 | CRAN (R 3.4.1) |
48 | FNN | 1.1 | 2013-07-31 | CRAN (R 3.4.1) |
49 | foreach | 1.4.4 | 2017-12-12 | CRAN (R 3.4.1) |
50 | foreign | 0.8-69 | 2017-06-21 | CRAN (R 3.4.0) |
51 | Formula | 1.2-2 | 2017-07-10 | CRAN (R 3.4.1) |
52 | fpc | 2.1-10 | 2015-08-14 | CRAN (R 3.4.1) |
53 | gdata | 2.18.0 | 2017-06-06 | CRAN (R 3.4.1) |
54 | ggjoy | 0.4.0 | 2017-09-15 | CRAN (R 3.4.1) |
55 | ggplot2 | 2.2.1 | 2016-12-30 | CRAN (R 3.4.1) |
56 | ggpubr | 0.1.6 | 2017-11-14 | CRAN (R 3.4.1) |
57 | ggrastr | 0.1.5 | 2017-12-28 | Github (VPetukhov/ggrastr@cc56b45) |
58 | ggrepel | 0.7.0 | 2017-09-29 | CRAN (R 3.4.1) |
59 | ggridges | 0.4.1 | 2017-09-15 | CRAN (R 3.4.1) |
60 | git2r | 0.21.0 | 2018-01-04 | cran (@0.21.0) |
61 | glue | 1.2.0 | 2017-10-29 | CRAN (R 3.4.1) |
62 | GO.db | 3.2.2 | 2017-11-12 | Bioconductor |
63 | gower | 0.1.2 | 2017-02-23 | CRAN (R 3.4.1) |
64 | gplots | 3.0.1 | 2016-03-30 | CRAN (R 3.4.1) |
68 | gridBase | 0.4-7 | 2014-02-24 | CRAN (R 3.4.1) |
69 | gridExtra | 2.3 | 2017-09-09 | CRAN (R 3.4.1) |
70 | gtable | 0.2.0 | 2016-02-26 | CRAN (R 3.4.1) |
71 | gtools | 3.5.0 | 2015-05-29 | CRAN (R 3.4.1) |
72 | highr | 0.6 | 2016-05-09 | CRAN (R 3.4.1) |
73 | Hmisc | 4.0-3 | 2017-05-02 | CRAN (R 3.4.1) |
74 | htmlTable | 1.11.0 | 2017-12-01 | CRAN (R 3.4.1) |
75 | htmltools | 0.3.6 | 2017-04-28 | CRAN (R 3.4.1) |
76 | htmlwidgets | 1.0 | 2018-01-20 | cran (@1.0) |
77 | ica | 1.0-1 | 2015-08-25 | CRAN (R 3.4.1) |
78 | igraph | 1.2.1 | 2018-03-10 | cran (@1.2.1) |
79 | ipred | 0.9-6 | 2017-03-01 | CRAN (R 3.4.1) |
80 | IRanges | 2.4.8 | 2016-09-15 | Bioconductor |
81 | irlba | 2.3.2 | 2018-01-11 | cran (@2.3.2) |
82 | iterators | 1.0.9 | 2017-12-12 | CRAN (R 3.4.1) |
83 | kernlab | 0.9-25 | 2016-10-03 | CRAN (R 3.4.1) |
84 | KernSmooth | 2.23-15 | 2015-06-29 | CRAN (R 3.4.0) |
85 | knitr | 1.20 | 2018-02-20 | cran (@1.20) |
86 | ks | 1.11.0 | 2018-01-16 | local (VPetukhov/ks@NA) |
87 | labeling | 0.3 | 2014-08-23 | CRAN (R 3.4.1) |
88 | lars | 1.2 | 2013-04-24 | CRAN (R 3.4.1) |
89 | lattice | 0.20-35 | 2017-03-25 | CRAN (R 3.4.1) |
90 | latticeExtra | 0.6-28 | 2016-02-09 | CRAN (R 3.4.1) |
91 | lava | 1.5.1 | 2017-09-27 | CRAN (R 3.4.1) |
92 | lazyeval | 0.2.1 | 2017-10-29 | CRAN (R 3.4.1) |
93 | lubridate | 1.7.1 | 2017-11-03 | CRAN (R 3.4.1) |
94 | magrittr | 1.5 | 2014-11-22 | CRAN (R 3.4.1) |
95 | MASS | 7.3-47 | 2017-04-21 | CRAN (R 3.4.0) |
96 | Matrix | 1.2-12 | 2017-11-16 | CRAN (R 3.4.1) |
97 | mclust | 5.4 | 2017-11-22 | CRAN (R 3.4.1) |
98 | memoise | 1.1.0 | 2017-04-21 | CRAN (R 3.4.1) |
100 | mgcv | 1.8-22 | 2017-09-19 | CRAN (R 3.4.1) |
101 | mixtools | 1.1.0 | 2017-03-10 | CRAN (R 3.4.1) |
102 | mnormt | 1.5-5 | 2016-10-15 | CRAN (R 3.4.1) |
103 | ModelMetrics | 1.1.0 | 2016-08-26 | CRAN (R 3.4.1) |
104 | modeltools | 0.2-21 | 2013-09-02 | CRAN (R 3.4.1) |
105 | munsell | 0.4.3 | 2016-02-13 | CRAN (R 3.4.1) |
106 | mvtnorm | 1.0-7 | 2018-01-26 | cran (@1.0-7) |
107 | nlme | 3.1-131 | 2017-02-06 | CRAN (R 3.4.0) |
108 | NMF | 0.20.6 | 2015-05-26 | CRAN (R 3.4.1) |
109 | nnet | 7.3-12 | 2016-02-02 | CRAN (R 3.4.0) |
110 | numDeriv | 2016.8-1 | 2016-08-27 | CRAN (R 3.4.1) |
111 | pagoda2 | 0.0.0.9002 | 2018-04-08 | local (hms-dbmi/pagoda2@NA) |
113 | pbapply | 1.3-3 | 2017-07-04 | CRAN (R 3.4.1) |
114 | pcaMethods | 1.60.0 | 2017-11-12 | Bioconductor |
115 | pcaPP | 1.9-73 | 2018-01-14 | cran (@1.9-73) |
116 | pkgconfig | 2.0.1 | 2017-03-21 | CRAN (R 3.4.1) |
117 | pkgmaker | 0.22 | 2014-05-14 | CRAN (R 3.4.1) |
118 | plyr | 1.8.4 | 2016-06-08 | CRAN (R 3.4.1) |
119 | prabclus | 2.2-6 | 2015-01-14 | CRAN (R 3.4.1) |
120 | prodlim | 1.6.1 | 2017-03-06 | CRAN (R 3.4.1) |
121 | proxy | 0.4-20 | 2017-12-12 | CRAN (R 3.4.1) |
122 | psych | 1.7.8 | 2017-09-09 | CRAN (R 3.4.1) |
123 | purrr | 0.2.4 | 2017-10-18 | CRAN (R 3.4.1) |
124 | R.methodsS3 | 1.7.1 | 2016-02-16 | CRAN (R 3.4.1) |
125 | R.oo | 1.21.0 | 2016-11-01 | CRAN (R 3.4.1) |
126 | R.utils | 2.6.0 | 2017-11-05 | CRAN (R 3.4.1) |
127 | R6 | 2.2.2 | 2017-06-17 | CRAN (R 3.4.1) |
128 | ranger | 0.8.0 | 2017-06-20 | CRAN (R 3.4.1) |
129 | RColorBrewer | 1.1-2 | 2014-12-07 | CRAN (R 3.4.1) |
130 | Rcpp | 0.12.17 | 2018-05-18 | cran (@0.12.17) |
131 | RcppRoll | 0.2.2 | 2015-04-05 | CRAN (R 3.4.1) |
132 | recipes | 0.1.1 | 2017-11-20 | CRAN (R 3.4.1) |
133 | registry | 0.5 | 2017-12-03 | CRAN (R 3.4.1) |
134 | reshape2 | 1.4.3 | 2017-12-11 | CRAN (R 3.4.1) |
135 | rjson | 0.2.19 | 2018-05-18 | cran (@0.2.19) |
136 | rlang | 0.1.4 | 2017-11-05 | CRAN (R 3.4.1) |
137 | rmarkdown | 1.9 | 2018-03-01 | CRAN (R 3.4.1) |
138 | rngtools | 1.2.4 | 2014-03-06 | CRAN (R 3.4.1) |
139 | robustbase | 0.92-8 | 2017-11-01 | CRAN (R 3.4.1) |
140 | ROCR | 1.0-7 | 2015-03-26 | CRAN (R 3.4.1) |
141 | Rook | 1.1-1 | 2014-10-20 | CRAN (R 3.4.1) |
142 | rpart | 4.1-11 | 2017-04-21 | CRAN (R 3.4.0) |
143 | rprojroot | 1.3-2 | 2018-01-03 | cran (@1.3-2) |
144 | RSQLite | 2.0 | 2017-06-19 | CRAN (R 3.4.1) |
145 | rstudioapi | 0.7 | 2017-09-07 | CRAN (R 3.4.1) |
146 | Rtsne | 0.14 | 2017-11-12 | Github (jkrijthe/Rtsne@1d0f926) |
147 | S4Vectors | 0.8.11 | 2016-01-30 | Bioconductor |
148 | scales | 0.5.0 | 2017-08-24 | CRAN (R 3.4.1) |
149 | scatterplot3d | 0.3-40 | 2017-04-22 | CRAN (R 3.4.1) |
150 | SDMTools | 1.1-221 | 2014-08-05 | CRAN (R 3.4.1) |
151 | segmented | 0.5-3.0 | 2017-11-30 | CRAN (R 3.4.1) |
152 | sessioninfo | 1.0.0 | 2017-06-21 | CRAN (R 3.4.1) |
153 | Seurat | 2.1.0 | 2017-10-12 | CRAN (R 3.4.1) |
154 | sfsmisc | 1.1-1 | 2017-06-08 | CRAN (R 3.4.1) |
155 | sn | 1.5-1 | 2017-11-23 | CRAN (R 3.4.1) |
159 | stringi | 1.1.7 | 2018-03-12 | cran (@1.1.7) |
160 | stringr | 1.3.0 | 2018-02-19 | cran (@1.3.0) |
161 | survival | 2.41-3 | 2017-04-04 | CRAN (R 3.4.0) |
162 | tclust | 1.3-1 | 2017-08-24 | CRAN (R 3.4.1) |
163 | tibble | 1.3.4 | 2017-08-22 | CRAN (R 3.4.1) |
164 | tidyr | 0.7.2 | 2017-10-16 | CRAN (R 3.4.1) |
165 | tidyselect | 0.2.3 | 2017-11-06 | CRAN (R 3.4.1) |
166 | timeDate | 3042.101 | 2017-11-16 | CRAN (R 3.4.1) |
168 | triebeard | 0.3.0 | 2016-08-04 | cran (@0.3.0) |
169 | trimcluster | 0.1-2 | 2012-10-29 | CRAN (R 3.4.1) |
170 | tsne | 0.1-3 | 2016-07-15 | CRAN (R 3.4.1) |
171 | urltools | 1.7.0 | 2018-01-20 | cran (@1.7.0) |
173 | VGAM | 1.0-4 | 2017-07-25 | CRAN (R 3.4.1) |
174 | withr | 2.1.2 | 2018-03-15 | cran (@2.1.2) |
175 | xtable | 1.8-2 | 2016-02-05 | CRAN (R 3.4.1) |
176 | yaml | 2.1.18 | 2018-03-08 | cran (@2.1.18) |
This R Markdown site was created with workflowr