Chapter 41 Messmer human ESC (Smart-seq2)

41.1 Introduction

This performs an analysis of the human embryonic stem cell (hESC) dataset generated with Smart-seq2 (Messmer et al. 2019), which contains several plates of naive and primed hESCs. The chapter’s code is based on the steps in the paper’s GitHub repository, with some additional steps for cell cycle effect removal contributed by Philippe Boileau.

41.7 Batch correction

We eliminate the obvious batch effect between batches with linear regression, which is possible due to the replicated nature of the experimental design. We set keep=1:2 to retain the effect of the first two coefficients in design corresponding to our phenotype of interest.

41.8 Dimensionality Reduction

We could have set d= and subset.row= in correctExperiments() to automatically perform a PCA on the the residual matrix with the subset of HVGs, but we’ll just explicitly call runPCA() here to keep things simple.

From a naive PCA, the cell cycle appears to be a major source of biological variation within each phenotype.

Obligatory $t$-SNE plots of the Messmer hESC dataset, where each point is a cell and is colored by various attributes.

Figure 41.5: Obligatory \(t\)-SNE plots of the Messmer hESC dataset, where each point is a cell and is colored by various attributes.

We perform contrastive PCA (cPCA) and sparse cPCA (scPCA) on the corrected log-expression data to obtain the same number of PCs. Given that the naive hESCs are actually reprogrammed primed hESCs, we will use the single batch of primed-only hESCs as the “background” dataset to remove the cell cycle effect.

We see greater intermingling between phases within both the naive and primed cells after cPCA and scPCA.

More $t$-SNE plots of the Messmer hESC dataset after cPCA and scPCA, where each point is a cell and is colored by its assigned cell cycle phase.

Figure 41.6: More \(t\)-SNE plots of the Messmer hESC dataset after cPCA and scPCA, where each point is a cell and is colored by its assigned cell cycle phase.

We can quantify the change in the separation between phases within each phenotype using the silhouette coefficient.

##   naive  primed 
## 0.02032 0.03025
##    naive   primed 
## 0.007696 0.011941
##    naive   primed 
## 0.006614 0.014601

Session Info

R version 4.0.3 (2020-10-10)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Ubuntu 20.04.1 LTS

Matrix products: default
BLAS:   /home/biocbuild/bbs-3.12-bioc/R/lib/
LAPACK: /home/biocbuild/bbs-3.12-bioc/R/lib/

 [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C              
 [3] LC_TIME=en_US.UTF-8        LC_COLLATE=C              
 [7] LC_PAPER=en_US.UTF-8       LC_NAME=C                 
 [9] LC_ADDRESS=C               LC_TELEPHONE=C            

attached base packages:
[1] parallel  stats4    stats     graphics  grDevices utils     datasets 
[8] methods   base     

other attached packages:
 [1] bluster_1.0.0               scPCA_1.4.0                
 [3] batchelor_1.6.0             scran_1.18.0               
 [5] scater_1.18.0               ggplot2_3.3.2              
 [7] AnnotationHub_2.22.0        BiocFileCache_1.14.0       
 [9] dbplyr_1.4.4                ensembldb_2.14.0           
[11] AnnotationFilter_1.14.0     GenomicFeatures_1.42.0     
[13] AnnotationDbi_1.52.0        scRNAseq_2.4.0             
[15] SingleCellExperiment_1.12.0 SummarizedExperiment_1.20.0
[17] Biobase_2.50.0              GenomicRanges_1.42.0       
[19] GenomeInfoDb_1.26.0         IRanges_2.24.0             
[21] S4Vectors_0.28.0            BiocGenerics_0.36.0        
[23] MatrixGenerics_1.2.0        matrixStats_0.57.0         
[25] BiocStyle_2.18.0            rebook_1.0.0               

loaded via a namespace (and not attached):
  [1] igraph_1.2.6                  lazyeval_0.2.2               
  [3] listenv_0.8.0                 BiocParallel_1.24.0          
  [5] digest_0.6.27                 htmltools_0.5.0              
  [7] viridis_0.5.1                 magrittr_1.5                 
  [9] memoise_1.1.0                 cluster_2.1.0                
 [11] limma_3.46.0                  globals_0.13.1               
 [13] Biostrings_2.58.0             askpass_1.1                  
 [15] prettyunits_1.1.1             colorspace_1.4-1             
 [17] blob_1.2.1                    rappdirs_0.3.1               
 [19] rbibutils_1.3                 xfun_0.19                    
 [21] dplyr_1.0.2                   callr_3.5.1                  
 [23] crayon_1.3.4                  RCurl_1.98-1.2               
 [25] graph_1.68.0                  glue_1.4.2                   
 [27] gtable_0.3.0                  zlibbioc_1.36.0              
 [29] XVector_0.30.0                DelayedArray_0.16.0          
 [31] coop_0.6-2                    kernlab_0.9-29               
 [33] BiocSingular_1.6.0            future.apply_1.6.0           
 [35] abind_1.4-5                   scales_1.1.1                 
 [37] DBI_1.1.0                     edgeR_3.32.0                 
 [39] Rcpp_1.0.5                    viridisLite_0.3.0            
 [41] xtable_1.8-4                  progress_1.2.2               
 [43] dqrng_0.2.1                   bit_4.0.4                    
 [45] rsvd_1.0.3                    ResidualMatrix_1.0.0         
 [47] httr_1.4.2                    ellipsis_0.3.1               
 [49] pkgconfig_2.0.3               XML_3.99-0.5                 
 [51] farver_2.0.3                  scuttle_1.0.0                
 [53] CodeDepends_0.6.5             locfit_1.5-9.4               
 [55] tidyselect_1.1.0              labeling_0.4.2               
 [57] rlang_0.4.8                   later_1.1.0.1                
 [59] munsell_0.5.0                 BiocVersion_3.12.0           
 [61] tools_4.0.3                   generics_0.1.0               
 [63] RSQLite_2.2.1                 ExperimentHub_1.16.0         
 [65] evaluate_0.14                 stringr_1.4.0                
 [67] fastmap_1.0.1                 yaml_2.2.1                   
 [69] processx_3.4.4                knitr_1.30                   
 [71] bit64_4.0.5                   purrr_0.3.4                  
 [73] future_1.19.1                 sparseMatrixStats_1.2.0      
 [75] mime_0.9                      origami_1.0.3                
 [77] xml2_1.3.2                    biomaRt_2.46.0               
 [79] compiler_4.0.3                beeswarm_0.2.3               
 [81] curl_4.3                      interactiveDisplayBase_1.28.0
 [83] tibble_3.0.4                  statmod_1.4.35               
 [85] stringi_1.5.3                 highr_0.8                    
 [87] ps_1.4.0                      RSpectra_0.16-0              
 [89] lattice_0.20-41               ProtGenerics_1.22.0          
 [91] Matrix_1.2-18                 vctrs_0.3.4                  
 [93] pillar_1.4.6                  lifecycle_0.2.0              
 [95] BiocManager_1.30.10           Rdpack_2.0                   
 [97] BiocNeighbors_1.8.0           data.table_1.13.2            
 [99] cowplot_1.1.0                 bitops_1.0-6                 
[101] irlba_2.3.3                   gbRd_0.4-11                  
[103] httpuv_1.5.4                  rtracklayer_1.50.0           
[105] R6_2.5.0                      bookdown_0.21                
[107] promises_1.1.1                KernSmooth_2.23-18           
[109] gridExtra_2.3                 vipor_0.4.5                  
[111] codetools_0.2-16              assertthat_0.2.1             
[113] openssl_1.4.3                 sparsepca_0.1.2              
[115] withr_2.3.0                   GenomicAlignments_1.26.0     
[117] Rsamtools_2.6.0               GenomeInfoDbData_1.2.4       
[119] hms_0.5.3                     grid_4.0.3                   
[121] beachmat_2.6.0                rmarkdown_2.5                
[123] DelayedMatrixStats_1.12.0     Rtsne_0.15                   
[125] shiny_1.5.0                   ggbeeswarm_0.6.0             


Messmer, T., F. von Meyenn, A. Savino, F. Santos, H. Mohammed, A. T. L. Lun, J. C. Marioni, and W. Reik. 2019. “Transcriptional heterogeneity in naive and primed human pluripotent stem cells at single-cell resolution.” Cell Rep 26 (4): 815–24.