3 获取scRNA-seq表达值矩阵
通常是一个计数矩阵,包含基因(行)×细胞(列)的读取数。计数可以是唯一分子标识符 (unique molecular identifiers,UMI) 的数量。
3.1 单细胞测序实验设计
3.1.1 scRNA-Seq experimental protocols:
液滴,droplet-based protocols,事实标准,高通量,低成本,如10X Genomics、inDrop和Drop-seq;
-
平板,plate-based protocols,捕获其他表型信息(如形态学);
UMI平板,plate-based protocols with UMIs,减轻了PCR扩增噪声的影响,如CEL-seq(2)和MARS-seq;
reads平板,plate-based protocols with reads,提供全转录覆盖(如剪接、外显子组突变),主要是Smart-seq2;
其他方案,如sciRNA-seq。
3.1.2 捕获细胞数目和测序深度最佳权衡
3.2 测序数据→计数矩阵
Cellranger
https://www.nature.com/articles/ncomms14049alevin
伪对比方法.https://genomebiology.biomedcentral.com/articles/10.1186/s13059-019-1670-yspike-in transcripts
应将 spike-in sequences作为参考基因组的一部分
3.3 导入计数矩阵
3.3.1 从表格格式
3.3.1.1 csv
下载胰腺scRNA-seq数据集:GSE85241_cellsystems_dataset_4donors_updated.csv.gz(HTTP)
使用 scuttle 包中 readSparseCounts()
以稀疏格式(sparse format)读取,仅存储非零值,避免在低测序的scRNA-seq实验中将内存花费在大多数零上。
Code
sparse.mat <-
scuttle::readSparseCounts("data/OSCA/GSE85241_cellsystems_dataset_4donors_updated.csv")
dim(sparse.mat)
#> [1] 19140 3072
Code
object.size(sparse.mat)
#> 150978872 bytes
object.size(mat)
#> 471886952 bytes
3.3.1.2 excel
下载:GSE61533_HTSEQ_count_results.xls.gz(HTTP)
Code
all.counts <- readxl::read_excel("data/OSCA/GSE61533_HTSEQ_count_results.xls")
gene.names <- all.counts$ID
all.counts <- as.matrix(all.counts[,-1])
rownames(all.counts) <- gene.names
dim(all.counts)
#> [1] 38498 96
3.3.2 10X Genomics /Cell Ranger
对于 10X Genomics 数据,Cell Ranger 软件套件将生成一个包含计数和特征/条形码注释的输出目录。下载:Gene / cell matrix (filtered)
Code
sce <- DropletUtils::read10xCounts("data/OSCA/pbmc4k_filtered_gene_bc_matrices/filtered_gene_bc_matrices/GRCh38")
sce
#> class: SingleCellExperiment
#> dim: 33694 4340
#> metadata(1): Samples
#> assays(1): counts
#> rownames(33694): ENSG00000243485 ENSG00000237613 ... ENSG00000277475
#> ENSG00000268674
#> rowData names(2): ID Symbol
#> colnames: NULL
#> colData names(2): Sample Barcode
#> reducedDimNames(0):
#> mainExpName: NULL
#> altExpNames(0):
通过将多个目录路径传递给read10xCounts()
来读取多个计数矩阵。如果所有数据集都具有相同的基因注释,则该函数将能够将它们组合到单个对象中。
Code
dirA <- "data/OSCA/pbmc4k_filtered_gene_bc_matrices/filtered_gene_bc_matrices/GRCh38"
dirB <- "data/OSCA/filtered_gene_bc_matrices - 副本/GRCh38" #复制
sce <- DropletUtils::read10xCounts(c(dirA, dirB))
sce
#> class: SingleCellExperiment
#> dim: 33694 8680
#> metadata(1): Samples
#> assays(1): counts
#> rownames(33694): ENSG00000243485 ENSG00000237613 ... ENSG00000277475
#> ENSG00000268674
#> rowData names(2): ID Symbol
#> colnames: NULL
#> colData names(2): Sample Barcode
#> reducedDimNames(0):
#> mainExpName: NULL
#> altExpNames(0):
3.3.3 HDF5 格式
一系列scRNA-seq存储格式基于分层数据格式第5版(HDF5),无需将所有数据读入 R 即可进行基于bioconductor的分析,这使得在计算机内存有限的情况下分析非常大的数据集。 这些格式能够在同一文件中存储表达值以及相关的基因和细胞注释。例如:Gene / cell matrix HDF5 (raw)
一种是 H5AD 格式。
Code
demo <- system.file("extdata", "krumsiek11.h5ad", package = "zellkonverter")
sce <- zellkonverter::readH5AD(demo)
sce
#> class: SingleCellExperiment
#> dim: 11 640
#> metadata(2): highlights iroot
#> assays(1): X
#> rownames(11): Gata2 Gata1 ... EgrNab Gfi1
#> rowData names(0):
#> colnames(640): 0 1 ... 158-3 159-3
#> colData names(1): cell_type
#> reducedDimNames(0):
#> mainExpName: NULL
#> altExpNames(0):
另一种是 Loom 格式
Code
demo <- system.file("extdata", "L1_DRG_20_example.loom", package = "LoomExperiment")
scle <- LoomExperiment::import(demo, type="SingleCellLoomExperiment")
scle
#> class: SingleCellLoomExperiment
#> dim: 20 20
#> metadata(4): CreatedWith LOOM_SPEC_VERSION LoomExperiment-class
#> MatrixName
#> assays(1): matrix
#> rownames: NULL
#> rowData names(7): Accession Gene ... X_Total X_Valid
#> colnames: NULL
#> colData names(103): Age AnalysisPool ... cDNA_Lib_Ok ngperul_cDNA
#> reducedDimNames(0):
#> mainExpName: NULL
#> altExpNames(0):
#> rowGraphs(0): NULL
#> colGraphs(2): KNN MKNN