HIPPO is under review for Bioconductor and CRAN submission. You can download the developer version as below. Please allow up to 5 minutes to completely compile the vignette.
::install_github("tk382/HIPPO", build_vignettes = TRUE)devtools
The data set is available in the following link, where the detailed explanation is available here. Note that the file is very large (3.3GB). We use a subset of Zheng 2017 data set saved as a toydata within this package. Also, we load a reference data that matches ENSG ID to HGNC gene names.
Alternatively, you can start from a matrix object.
# X = readRDS("zhengmix4eq_counts.rds") # toydata = SingleCellExperiment(assays = list(counts = X))
This plot shows the zero inflation compared to the expected Poisson line. If most genes don’t align with the black line, it shows that there is cell heterogeneity driving the zero inflation.
hippo_diagnostic_plot(toydata, show_outliers = TRUE, zvalue_thresh = 2)
HIPPO assumes that the count matrix is placed in toydata@assays@data$counts. Some objects that we found online have the count matrix in toydata@assays$data$counts. In this case, HIPPO will throw an error because it cannot found a count matrix. In this case, you have to create another SingleCellExperiment object to assign the count matrix in the correct slot.
Next, you can run hippo function to do the pre-processing that simutlaneously conducts feature selection and hierarchcial clustering. There are three arguments that help you decide the stopping criterion of clustering procedure.
K is the maximum number of clusters that you want. HIPPO will return the clustering results for all k = 2, 3, …, K, so you can overestimate the number of potential clusters. The default is 10, but users are highly recommended to adjust this.
z_threshold is the feature selection criterion. For each round of hierarchical clustering, hippo will find outlier genes where the z-value of significance is greater than the threshold. For example, if you would like to select genes with p-values less than 0.05, z_threshold would be 1.96. The default threshold is 2, but users can use their discretion to change this value.
outlier_proportion is the number of outlier genes to allow. The default is 0.01 (1%) which means the clustering procedure will automatically stop if there are less than 1% of genes remain as important features. With the example data set, the default choice has empirically worked well.
set.seed(20200321) hippo(toydata, K = 10, toydata =z_threshold = 2, outlier_proportion = 0.00001)
We offer two dimension reduction methods: umap and tsne. And we offer two separate visualization functions.
hippo_dimension_reduction(toydata, method="umap") toydata =hippo_umap_plot(toydata)
hippo_dimension_reduction(toydata, method="tsne") toydata =hippo_tsne_plot(toydata)
This function shows how the zero-inflation decreases as HIPPO proceeds in the clustering. This function has arguments called switch_to_hgnc and ref. These aim to provide the users an option to change the gene names from ENSG IDs to HGNC symbols for ease of understanding. Many SingleCellExperiment objects have such data embedded in rowData(toydata). Users can create a data frame with ensg and hgnc columns for the genes, and HIPPO will automatically switch the row names of the count matrix from ENSG IDs to HGNC symbols. The default is set to FALSE, assuming that the row names are already HGNC symbols.
data(ensg_hgnc) zero_proportion_plot(toydata, switch_to_hgnc = TRUE, ref = ensg_hgnc)
hippo_feature_heatmap(toydata, k = 3, switch_to_hgnc = TRUE, ref = ensg_hgnc, top.n = 20)
We also offer a differential expression analysis tool.
This function also has an option to switch the gene names to HGNC symbols. top.n argument lets users choose how many top genes to show in the box plot. The default is 5.
The labels of boxplots are aligned with the t-SNE or UMAP plots above. When K is equal to 2, the color codes match with the cell groups as separated in the dimension reduction plot.
hippo_diffexp(toydata, toydata =top.n = 5, switch_to_hgnc = TRUE, ref = ensg_hgnc)
Each round of differential expression test results are also saved in the list of data frames.
genes meandiff sd z 21 ENSG00000087086 16.087318 0.9591965 16.771661 100 ENSG00000101439 8.384615 0.5678778 14.764823 32 ENSG00000011600 5.038462 0.4402124 11.445523 97 ENSG00000196126 4.308732 0.5546155 7.768864 52 ENSG00000204482 2.253638 0.2991452 7.533593 87 ENSG00000158869 2.022869 0.2839227 7.124717
R Under development (unstable) (2022-10-25 r83175) Platform: x86_64-pc-linux-gnu (64-bit) Running under: Ubuntu 22.04.1 LTS Matrix products: default BLAS: /home/biocbuild/bbs-3.17-bioc/R/lib/libRblas.so LAPACK: /usr/lib/x86_64-linux-gnu/lapack/liblapack.so.3.10.0 locale:  LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C  LC_TIME=en_GB LC_COLLATE=C  LC_MONETARY=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8  LC_PAPER=en_US.UTF-8 LC_NAME=C  LC_ADDRESS=C LC_TELEPHONE=C  LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C attached base packages:  stats4 stats graphics grDevices utils datasets methods  base other attached packages:  SingleCellExperiment_1.21.0 SummarizedExperiment_1.29.0  Biobase_2.59.0 GenomicRanges_1.51.0  GenomeInfoDb_1.35.0 IRanges_2.33.0  S4Vectors_0.37.0 BiocGenerics_0.45.0  MatrixGenerics_1.11.0 matrixStats_0.62.0  HIPPO_1.11.0 loaded via a namespace (and not attached):  gtable_0.3.1 xfun_0.34 bslib_0.4.0  ggplot2_3.3.6 ggrepel_0.9.1 lattice_0.20-45  vctrs_0.5.0 tools_4.3.0 bitops_1.0-7  generics_0.1.3 tibble_3.1.8 fansi_1.0.3  highr_0.9 pkgconfig_2.0.3 Matrix_1.5-1  assertthat_0.2.1 lifecycle_1.0.3 GenomeInfoDbData_1.2.9  compiler_4.3.0 farver_2.1.1 stringr_1.4.1  munsell_0.5.0 htmltools_0.5.3 sass_0.4.2  RCurl_1.98-1.9 yaml_2.3.6 pillar_1.8.1  jquerylib_0.1.4 openssl_2.0.4 cachem_1.0.6  DelayedArray_0.25.0 RSpectra_0.16-1 tidyselect_1.2.0  digest_0.6.30 Rtsne_0.16 stringi_1.7.8  dplyr_1.0.10 reshape2_1.4.4 labeling_0.4.2  fastmap_1.1.0 grid_4.3.0 colorspace_2.0-3  cli_3.4.1 magrittr_2.0.3 utf8_1.2.2  scales_1.2.1 rmarkdown_2.17 XVector_0.39.0  umap_0.2.9.0 reticulate_1.26 gridExtra_2.3  png_0.1-7 askpass_1.1 evaluate_0.17  knitr_1.40 irlba_18.104.22.168 rlang_1.0.6  Rcpp_1.0.9 glue_1.6.2 DBI_1.1.3  jsonlite_1.8.3 R6_2.5.1 plyr_1.8.7  zlibbioc_1.45.0