Setup knitr and load utility functions

knitr::opts_chunk$set(echo = TRUE)
knitr::opts_knit$set(root.dir="E:/DISC/reproducibility")
utilities_path = "./source/utilities.r"
source(utilities_path)

Load Data

CBMC original data can be found here.
We filter cells following the original study.

gene_bc_mat = as.matrix(read.csv("./data/CBMC/original_data/GSE100866_CBMC_8K_13AB_10X-RNA_umi.csv.gz", sep = ",", strip.white = T, row.names = 1))
save_h5("./data/CBMC/original.loom", t(gene_bc_mat))
[1] TRUE
After read alignment and cell filtering, we assigned the species to each cell barcode. If more than 90% of UMI counts were coming from human genes, the cell barcode was considered to be human. If it was less than 10% of UMI counts, the assigned species was mouse. Cell barcodes in between 10% and 90% human were considered mixed species. The resulting assignment was 8,005 human, 579 mouse, 33 mixed.
human_genes = grep("human", tolower(rownames(gene_bc_mat)))
mouse_genes = grep("mouse", tolower(rownames(gene_bc_mat)))
human_library = colSums(gene_bc_mat[human_genes, ])
all_library = colSums(gene_bc_mat)
human_rate = human_library / all_library
human_mask = human_rate > 0.9
sum(human_mask)
[1] 8005
sum(human_rate < 0.1)
[1] 579
sum(human_rate <= 0.9 & human_rate >= 0.1)
[1] 33
Unless stated otherwise, analysis was performed on only the human cells and genes from the human reference genome.
gene_bc_filt = gene_bc_mat[human_genes, human_mask]
save_h5("./data/CBMC/raw.loom", t(gene_bc_filt))
[1] TRUE

Reference

Stoeckius, M. et al. Simultaneous epitope and transcriptome measurement in single cells. Nature methods 14, 865-868 (2017).

LS0tDQp0aXRsZTogIkRhdGEgcHJlcGFyYXRpb24gZm9yIENCTUMiDQpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sNCi0tLQ0KIyMjIFNldHVwIGtuaXRyIGFuZCBsb2FkIHV0aWxpdHkgZnVuY3Rpb25zDQpgYGB7ciBzZXR1cH0NCmtuaXRyOjpvcHRzX2NodW5rJHNldChlY2hvID0gVFJVRSkNCmtuaXRyOjpvcHRzX2tuaXQkc2V0KHJvb3QuZGlyPSJFOi9ESVNDL3JlcHJvZHVjaWJpbGl0eSIpDQpgYGANCmBgYHtyfQ0KdXRpbGl0aWVzX3BhdGggPSAiLi9zb3VyY2UvdXRpbGl0aWVzLnIiDQpzb3VyY2UodXRpbGl0aWVzX3BhdGgpDQpgYGANCiMjIyBMb2FkIERhdGENCkNCTUMgb3JpZ2luYWwgZGF0YSBjYW4gYmUgZm91bmQgPGEgaHJlZj0iaHR0cHM6Ly93d3cubmNiaS5ubG0ubmloLmdvdi9nZW8vcXVlcnkvYWNjLmNnaT9hY2M9R1NFMTAwODY2Ij5oZXJlPC9hPi48L2JyPg0KV2UgZmlsdGVyIGNlbGxzIGZvbGxvd2luZyA8YSBocmVmPSJodHRwczovL3d3dy5uYXR1cmUuY29tL2FydGljbGVzL25tZXRoLjQzODAiPnRoZSBvcmlnaW5hbCBzdHVkeTwvYT4uDQpgYGB7cn0NCmdlbmVfYmNfbWF0ID0gYXMubWF0cml4KHJlYWQuY3N2KCIuL2RhdGEvQ0JNQy9vcmlnaW5hbF9kYXRhL0dTRTEwMDg2Nl9DQk1DXzhLXzEzQUJfMTBYLVJOQV91bWkuY3N2Lmd6Iiwgc2VwID0gIiwiLCBzdHJpcC53aGl0ZSA9IFQsIHJvdy5uYW1lcyA9IDEpKQ0Kc2F2ZV9oNSgiLi9kYXRhL0NCTUMvb3JpZ2luYWwubG9vbSIsIHQoZ2VuZV9iY19tYXQpKQ0KYGBgDQo8YmxvY2txdW90ZSBjaXRlPSJodHRwczovL3d3dy5uYXR1cmUuY29tL2FydGljbGVzL25tZXRoLjQzODAiPg0KQWZ0ZXIgcmVhZCBhbGlnbm1lbnQgYW5kIGNlbGwgZmlsdGVyaW5nLCB3ZSBhc3NpZ25lZCB0aGUgc3BlY2llcyB0byBlYWNoIGNlbGwgYmFyY29kZS4gSWYgbW9yZSB0aGFuIDkwJSBvZiBVTUkgY291bnRzIHdlcmUgY29taW5nIGZyb20gaHVtYW4gZ2VuZXMsIHRoZSBjZWxsIGJhcmNvZGUgd2FzIGNvbnNpZGVyZWQgdG8gYmUgaHVtYW4uIElmIGl0IHdhcyBsZXNzIHRoYW4gMTAlIG9mIFVNSSBjb3VudHMsIHRoZSBhc3NpZ25lZCBzcGVjaWVzIHdhcyBtb3VzZS4gQ2VsbCBiYXJjb2RlcyBpbiBiZXR3ZWVuIDEwJSBhbmQgOTAlIGh1bWFuIHdlcmUgY29uc2lkZXJlZCBtaXhlZCBzcGVjaWVzLiBUaGUgcmVzdWx0aW5nIGFzc2lnbm1lbnQgd2FzIDgsMDA1IGh1bWFuLCA1NzkgbW91c2UsIDMzIG1peGVkLjwvYmxvY2txdW90ZT4NCmBgYHtyfQ0KaHVtYW5fZ2VuZXMgPSBncmVwKCJodW1hbiIsIHRvbG93ZXIocm93bmFtZXMoZ2VuZV9iY19tYXQpKSkNCm1vdXNlX2dlbmVzID0gZ3JlcCgibW91c2UiLCB0b2xvd2VyKHJvd25hbWVzKGdlbmVfYmNfbWF0KSkpDQpodW1hbl9saWJyYXJ5ID0gY29sU3VtcyhnZW5lX2JjX21hdFtodW1hbl9nZW5lcywgXSkNCmFsbF9saWJyYXJ5ID0gY29sU3VtcyhnZW5lX2JjX21hdCkNCmh1bWFuX3JhdGUgPSBodW1hbl9saWJyYXJ5IC8gYWxsX2xpYnJhcnkNCmh1bWFuX21hc2sgPSBodW1hbl9yYXRlID4gMC45DQpzdW0oaHVtYW5fbWFzaykNCnN1bShodW1hbl9yYXRlIDwgMC4xKQ0Kc3VtKGh1bWFuX3JhdGUgPD0gMC45ICYgaHVtYW5fcmF0ZSA+PSAwLjEpDQpgYGANCjxibG9ja3F1b3RlIGNpdGU9Imh0dHBzOi8vd3d3Lm5hdHVyZS5jb20vYXJ0aWNsZXMvbm1ldGguNDM4MCI+DQpVbmxlc3Mgc3RhdGVkIG90aGVyd2lzZSwgYW5hbHlzaXMgd2FzIHBlcmZvcm1lZCBvbiBvbmx5IHRoZSBodW1hbiBjZWxscyBhbmQgZ2VuZXMgZnJvbSB0aGUgaHVtYW4gcmVmZXJlbmNlIGdlbm9tZS4NCjwvYmxvY2txdW90ZT4NCmBgYHtyfQ0KZ2VuZV9iY19maWx0ID0gZ2VuZV9iY19tYXRbaHVtYW5fZ2VuZXMsIGh1bWFuX21hc2tdDQpzYXZlX2g1KCIuL2RhdGEvQ0JNQy9yYXcubG9vbSIsIHQoZ2VuZV9iY19maWx0KSkNCmBgYA0KIyMjIFJlZmVyZW5jZQ0KU3RvZWNraXVzLCBNLiBldCBhbC4gU2ltdWx0YW5lb3VzIGVwaXRvcGUgYW5kIHRyYW5zY3JpcHRvbWUgbWVhc3VyZW1lbnQgaW4gc2luZ2xlIGNlbGxzLiBOYXR1cmUgbWV0aG9kcyAxNCwgODY1LTg2OCAoMjAxNyku