1SingleCellExperiment类定义

SingleCellExperiment类是单细胞基因组数据的轻量级容器。它扩展了RangedSummarizedExperiment类和遵循类似的惯例,即行应该表示特征(基因,转录本,基因组区域),列应该表示细胞。除了已经存在的槽RangedSummarizedExperiment,SingleCellExperiment类包含:

  • int_elementMetadata,以保存每行的内部元数据。
  • int_colData,以保存每列的内部元数据。
  • int_metadata,以保存整个对象的内部元数据。
  • reducedDims,以保存降维结果。

int_前缀描述内部槽是用于用户直接操作。相反,它们由其他用户可见的方法设置,下面将更详细地讨论这些方法。包开发人员应该查bob电竞体育官网看另一篇文章,了解如何定义访问这些内部字段的方法。

2创建singlecel实验实例

SingleCellExperiment对象可以通过同名的构造函数创建:

library(singlecel实验)counts <- matrix(rpois(100, lambda =10), ncol=10, nrow=10) sce <- singlecel实验(assays = list(counts = counts)) sce
##类:singlecellexper实验组## dim: 10 10 ##元数据(0):## assays(1):计数## rownames: NULL ## rowData names(0): ## colnames: NULL ## colData names(0): ## reducedDimNames(0): ## spikeNames(0):

另一种方法是通过强制SummarizedExperiment对象。

se <- summarizeexperimental (list(counts=counts)) as(se, " singlecelexperimental ")
##类:singlecellexper实验组## dim: 10 10 ##元数据(0):## assays(1):计数## rownames: NULL ## rowData names(0): ## colnames: NULL ## colData names(0): ## reducedDimNames(0): ## spikeNames(0):

类的一个子集来演示类的用法艾伦数据集来自scRNAseq包中。这些数据被存储为SummarizedExperiment,因此我们首先将其强制为aSingleCellExperiment

库(scRNAseq)数据(艾伦)艾伦
##类:summarize实验## dim: 20908 379 ##元数据(2):SuppInfo whe_qc ## assays(4): tophat_counts cufflinks_fpkm rsem_counts rsem_tpm ## rownames(20908): 0610007P14Rik 0610009B22Rik…Zzef1 Zzz3 ## rowData names(0): ## colnames(379): SRR2140028 SRR2140022…SRR2139341 SRR2139336 ## colData names(22): NREADS NALIGNED…的动物。ID passes_qc_checks_s
sce <- as(allen, " singlecelexperimental ") sce
##类:singlecel实验实验## dim: 20908 379 ##元数据(2):SuppInfo whe_qc ## assays(4): tophat_counts cufflinks_fpkm rsem_counts rsem_tpm ## rownames(20908): 0610007P14Rik 0610009B22Rik…Zzef1 Zzz3 ## rowData names(0): ## colnames(379): SRR2140028 SRR2140022…SRR2139341 SRR2139336 ## colData names(22): NREADS NALIGNED…的动物。ID passes_qc_checks_s ## reducedDimNames(0): ## spikeNames(0):

3.添加插入信息

其中一个主要的补充SummarizedExperiment是用户指定与插入文本对应的行的能力。这是通过方法完成的isSpike,为插入集使用适当的名称。

isSpike(sce, "ERCC") <- grepl("^ERCC-", rownames(sce)) sce
##类:singlecel实验实验## dim: 20908 379 ##元数据(2):SuppInfo whe_qc ## assays(4): tophat_counts cufflinks_fpkm rsem_counts rsem_tpm ## rownames(20908): 0610007P14Rik 0610009B22Rik…Zzef1 Zzz3 ## rowData names(0): ## colnames(379): SRR2140028 SRR2140022…SRR2139341 SRR2139336 ## colData names(22): NREADS NALIGNED…的动物。ID passes_qc_checks_s ## reducedDimNames(0): ## spikeNames(1): ERCC

可以使用插入集的名称轻松检索插入行的标识,如下所示。方法返回当前可用的插入集的名称spikeNames方法。

“ERCC”表(isSpike (sce))
## ##假真## 20816 92
spikeNames (sce)
##[1]“ercc”

虽然大多数实验性设计使用一组钉入,但该类具有包含多组钉的灵活性。让我们假设亚当在这些数据中,基因家族作为外部基因被插入。

isSpike(sce, "Adam") <- grepl("^Adam[0-9]", rownames(sce)) sce
##类:singlecel实验实验## dim: 20908 379 ##元数据(2):SuppInfo whe_qc ## assays(4): tophat_counts cufflinks_fpkm rsem_counts rsem_tpm ## rownames(20908): 0610007P14Rik 0610009B22Rik…Zzef1 Zzz3 ## rowData names(0): ## colnames(379): SRR2140028 SRR2140022…SRR2139341 SRR2139336 ## colData names(22): NREADS NALIGNED…的动物。ID passes_qc_checks_s ## reducedDimNames(0): ## spikeNames(2): ERCC Adam
“亚当”表(isSpike (sce))
## ##假的真## 20875 33
spikeNames (sce)
##[1]“ERCC”“Adam”

如果isSpike使用时不指定任何名称,则它将返回所有插入集的并集。

表(isSpike (sce))
## ##假真## 20783 125

运行isSpike < -将清除指定的集SingleCellExperiment,同时跑步clearSpikes将删除所有的钉入信息。

temp <- sce isSpike(temp, "Adam") <- NULL spikeNames(temp)
##[1]“ercc”
- clearSpikes(temp) spikeNames(temp)
# #字符(0)

注意isSpike而且isSpike < -方法获取和设置列int_elementMetadata而且int_metadata.此信息仅与包开发人员相关,对于该类的日常使用不是必需的。bob电竞体育官网

4增加尺寸因素

中也可以存储大小因子SingleCellExperiment对象。为了说明,我们在这里简单地计算总的读取数作为大小因子。请注意,有更复杂的计算尺寸因子的方法(参见,例如,食物).

sizeFactors(sce) <- colsum(化验(sce)) head(sizeFactors(sce))
## srr2140028 srr2140022 srr2140055 srr2140083 srr2139991 srr2140067 ## 5173863 6445002 2343379 5438526 4757468 2364851

我们可以计算多个大小因子并将它们存储在对象中,方法是为sizeFactors.这并影响未命名大小因子的值。

sizeFactors(sce,“ERCC”)<- colsum (assay(sce)[isSpike(sce,“ERCC”),])head(sizeFactors(sce,“ERCC”))
## srr2140028 srr2140022 srr2140055 srr2140083 srr2139991 srr2140067 ## 224648 186208 162370 512991 278034 64975
head(sizeFactors(sce)) #与之前相同
## srr2140028 srr2140022 srr2140055 srr2140083 srr2139991 srr2140067 ## 5173863 6445002 2343379 5438526 4757468 2364851

5提取colData而且rowData

colData而且rowData方法可用于检索存储的样本级和基因级元数据。默认情况下,这将只返回用户可见的元数据字段,也就是说,不包括存储在int_ *槽。

colData (sce)
## SRR2140028 13743900 13011100 94.6681 51.11 0.0148148 ## SRR2140022 14078700 13521900 96.0454 55.9157 0.00853083 ## SRR2140083 16784400 15585800 92.8587 55.3076 ## SRR2139991 11558600 10864300 93.9929 50.2258 0.016408 ## ... ... ... ... ... ...## SRR2139379 6175660 5728020000 93.8711 65.1959 0.0270482 ## SRR2139341 28038500 7878700 7467200 94.7772 0.0190784 ## PCT_RIBOSOMAL_BASES PCT_CODING_BASES PCT_UTR_BASES ## <数字> <数字> <数字> ## SRR2140028 1e-06 0.216848 0.265609 ## SRR2140022 0 0.263052 0.327241 ## SRR2140083 1e-060.129243 0.253681 ## SRR2139991 0 0.257729 0.276831 ## ... ... ... ... ## SRR2139325 1.2e-05 0.211253 0.269041 ## SRR2139373 1e-06 0.220541 0.254625 ## SRR2139379 0 0.253996 0.289924 ## SRR2139341 0 0.297193 0.367713 ## SRR2139336 1e-06 0.369537 0.407216 ## PCT_INTRONIC_BASES PCT_INTERGENIC_BASES PCT_MRNA_BASES ##    ## SRR2140028 0.369509 0.148033 0.482457 ## SRR2140022 0.290329 0.136288 0.573384 ## SRR2140055 0.291128 0.174542 0.534327 ## SRR2140083 0.444594 0.172481 0.382924 ## SRR2139991 0.323493 0.141946 0.53456 ## ... ... ... ... ## SRR2139325 0.34636 0.173333 0.480295 ## SRR2139373 0.385409 0.139423 0.475167 ## SRR2139379 0.3254 0.13068 0.54392 ## SRR2139341 0.190673 0.144421 0.664906 ## SRR2139336 0.077377 0.14587 0.776752 ## MEDIAN_CV_COVERAGE MEDIAN_5PRIME_BIAS MEDIAN_3PRIME_BIAS ##    ## SRR2140028 0.507749 0.14181 0.409045 ## SRR2140022 0.488182 0.145024 0.41916 ## SRR2140055 0.729874 0.069846 0.54856 ## SRR2140083 0.781878 0 0.697916 ## SRR2139991 0.48292 0.160644 0.413018 ## ... ... ... ... ## SRR2139325 0.754565 0.049809 0.45433 ## SRR2139373 0.504545 0.162197 0.518013 ## SRR2139379 0.521732 0.136669 0.458149 ## SRR2139341 0.491965 0.155719 0.551382 ## SRR2139336 0.517592 0.148329 0.445874 ## MEDIAN_5PRIME_TO_3PRIME_BIAS driver_1_s dissection_s ##    ## SRR2140028 0.425234 Scnn1a-Tg3-Cre L4 ## SRR2140022 0.41926 Scnn1a-Tg3-Cre L4 ## SRR2140055 0.257657 Scnn1a-Tg3-Cre All ## SRR2140083 0.01825 Scnn1a-Tg3-Cre L4 ## SRR2139991 0.462171 Scnn1a-Tg3-Cre L4 ## ... ... ... ... ## SRR2139325 0.413165 Ntsr1-Cre_GN220 L6a ## SRR2139373 0.356451 Ntsr1-Cre_GN220 L6a ## SRR2139379 0.367889 Ntsr1-Cre_GN220 L6a ## SRR2139341 0.330835 Ntsr1-Cre_GN220 L6a ## SRR2139336 0.390592 Ntsr1-Cre_GN220 L6a ## Core.Type Primary.Type Secondary.Type Animal.ID ##     ## SRR2140028 Intermediate L4 Scnn1a L4 Ctxn3 133632 ## SRR2140022 Core L4 Scnn1a 133632 ## SRR2140055 Intermediate L5a Tcerg1l L5a Batf3 151560 ## SRR2140083 NA NA NA NA ## SRR2139991 Intermediate L4 Scnn1a L4 Ctxn3 126846 ## ... ... ... ... ... ## SRR2139325 Intermediate L6a Sla L6a Mgp 175613 ## SRR2139373 Core L6a Sla 132856 ## SRR2139379 Core L6a Sla 132856 ## SRR2139341 Core L6a Sla 132856 ## SRR2139336 Core L6a Sla 132856 ## passes_qc_checks_s ##  ## SRR2140028 Y ## SRR2140022 Y ## SRR2140055 Y ## SRR2140083 N ## SRR2139991 Y ## ... ... ## SRR2139325 Y ## SRR2139373 Y ## SRR2139379 Y ## SRR2139341 Y ## SRR2139336 Y
rowData (sce)
##数据帧有20908行和0列

但是,检索对象有时是有用的DataFrame使用内部字段,即spike-in和大小因子信息。这可以通过指定内部= TRUE

内部= TRUE colData (sce)
## SRR2140028 13743900 13011100 94.6681 51.11 0.0148148 ## SRR2140022 14078700 13521900 96.0454 55.9157 0.00853083 ## SRR2140083 16784400 15585800 92.8587 55.3076 ## SRR2139991 11558600 10864300 93.9929 50.2258 0.016408 ## ... ... ... ... ... ...## SRR2139379 6175660 5728020000 93.8711 65.1959 0.0270482 ## SRR2139341 28038500 7878700 7467200 94.7772 0.0190784 ## PCT_RIBOSOMAL_BASES PCT_CODING_BASES PCT_UTR_BASES ## <数字> <数字> <数字> ## SRR2140028 1e-06 0.216848 0.265609 ## SRR2140022 0 0.263052 0.327241 ## SRR2140083 1e-060.129243 0.253681 ## SRR2139991 0 0.257729 0.276831 ## ... ... ... ... ## SRR2139325 1.2e-05 0.211253 0.269041 ## SRR2139373 1e-06 0.220541 0.254625 ## SRR2139379 0 0.253996 0.289924 ## SRR2139341 0 0.297193 0.367713 ## SRR2139336 1e-06 0.369537 0.407216 ## PCT_INTRONIC_BASES PCT_INTERGENIC_BASES PCT_MRNA_BASES ##    ## SRR2140028 0.369509 0.148033 0.482457 ## SRR2140022 0.290329 0.136288 0.573384 ## SRR2140055 0.291128 0.174542 0.534327 ## SRR2140083 0.444594 0.172481 0.382924 ## SRR2139991 0.323493 0.141946 0.53456 ## ... ... ... ... ## SRR2139325 0.34636 0.173333 0.480295 ## SRR2139373 0.385409 0.139423 0.475167 ## SRR2139379 0.3254 0.13068 0.54392 ## SRR2139341 0.190673 0.144421 0.664906 ## SRR2139336 0.077377 0.14587 0.776752 ## MEDIAN_CV_COVERAGE MEDIAN_5PRIME_BIAS MEDIAN_3PRIME_BIAS ##    ## SRR2140028 0.507749 0.14181 0.409045 ## SRR2140022 0.488182 0.145024 0.41916 ## SRR2140055 0.729874 0.069846 0.54856 ## SRR2140083 0.781878 0 0.697916 ## SRR2139991 0.48292 0.160644 0.413018 ## ... ... ... ... ## SRR2139325 0.754565 0.049809 0.45433 ## SRR2139373 0.504545 0.162197 0.518013 ## SRR2139379 0.521732 0.136669 0.458149 ## SRR2139341 0.491965 0.155719 0.551382 ## SRR2139336 0.517592 0.148329 0.445874 ## MEDIAN_5PRIME_TO_3PRIME_BIAS driver_1_s dissection_s ##    ## SRR2140028 0.425234 Scnn1a-Tg3-Cre L4 ## SRR2140022 0.41926 Scnn1a-Tg3-Cre L4 ## SRR2140055 0.257657 Scnn1a-Tg3-Cre All ## SRR2140083 0.01825 Scnn1a-Tg3-Cre L4 ## SRR2139991 0.462171 Scnn1a-Tg3-Cre L4 ## ... ... ... ... ## SRR2139325 0.413165 Ntsr1-Cre_GN220 L6a ## SRR2139373 0.356451 Ntsr1-Cre_GN220 L6a ## SRR2139379 0.367889 Ntsr1-Cre_GN220 L6a ## SRR2139341 0.330835 Ntsr1-Cre_GN220 L6a ## SRR2139336 0.390592 Ntsr1-Cre_GN220 L6a ## Core.Type Primary.Type Secondary.Type Animal.ID ##     ## SRR2140028 Intermediate L4 Scnn1a L4 Ctxn3 133632 ## SRR2140022 Core L4 Scnn1a 133632 ## SRR2140055 Intermediate L5a Tcerg1l L5a Batf3 151560 ## SRR2140083 NA NA NA NA ## SRR2139991 Intermediate L4 Scnn1a L4 Ctxn3 126846 ## ... ... ... ... ... ## SRR2139325 Intermediate L6a Sla L6a Mgp 175613 ## SRR2139373 Core L6a Sla 132856 ## SRR2139379 Core L6a Sla 132856 ## SRR2139341 Core L6a Sla 132856 ## SRR2139336 Core L6a Sla 132856 ## passes_qc_checks_s size_factor size_factor_ERCC ##    ## SRR2140028 Y 5173863 224648 ## SRR2140022 Y 6445002 186208 ## SRR2140055 Y 2343379 162370 ## SRR2140083 N 5438526 512991 ## SRR2139991 Y 4757468 278034 ## ... ... ... ... ## SRR2139325 Y 4377966 331955 ## SRR2139373 Y 3393227 79524 ## SRR2139379 Y 2529501 37021 ## SRR2139341 Y 13972642 439580 ## SRR2139336 Y 4838243 163414
内部= TRUE rowData (sce)
##数据帧20908行3列## is_spike_ERCC is_spike is_spike_Adam ## <逻辑> <逻辑> <逻辑> ## 0610007P14Rik假假假## 0610009B22Rik假假假## 0610009O20Rik假假假## 0610010F05Rik假假假## ... ... ... ...## Zyg11a假假假## Zyg11b假假假## Zyx假假假## Zzef1假假假## Zzz3假假假

关于为什么在这里使用内部存储机制的一些讨论,请参见下面。

6添加低维表示

为了简单和快速,我们研究了100个基因的子集。为了避免最后只得到无趣的基因,我们提取了对数转换计数中方差最大的100个基因。

library(magrittr) assay(sce) %>% log1p %>% rowVars -> vars names(vars) <- rownames(sce) vars <- sort(vars, reduction = TRUE) sce_sub <- sce[names(vars[1:100]),] sce_sub
##类:singlecel实验实验## dim: 100 379 ##元数据(2):SuppInfo,它的qc ## assays(4): tophat_counts cufflinks_fpkm rsem_counts rsem_tpm# # rownames(100): Lamp5 Fam19a1…Rnf2 Zfp35 ## rowData names(0): ## colnames(379): SRR2140028 SRR2140022…SRR2139341 SRR2139336 ## colData names(22): NREADS NALIGNED…的动物。ID passes_qc_checks_s ## reducedDimNames(0): ## spikeNames(2): ERCC Adam

我们获得数据的PCA和t-SNE表示,并将它们添加到对象中reducedDims方法。

library(rtse) set.seed(5252) pca_data <- prcomp(t(log1p(assay(sce_sub)))) tsne_data <- rtse (pca_data$x[,1:50], pca = FALSE) reducedDims(sce_sub) <- SimpleList(pca =pca_data$x, tse =tsne_data$Y) sce_sub . log
##类:singlecel实验实验## dim: 100 379 ##元数据(2):SuppInfo,它的qc ## assays(4): tophat_counts cufflinks_fpkm rsem_counts rsem_tpm# # rownames(100): Lamp5 Fam19a1…Rnf2 Zfp35 ## rowData names(0): ## colnames(379): SRR2140028 SRR2140022…SRR2139341 SRR2139336 ## colData names(22): NREADS NALIGNED…的动物。ID passes_qc_checks_s ## reducedDimNames(2): PCA TSNE ## spikeNames(2): ERCC Adam

存储的坐标可以通过名称或数字索引检索。假设坐标矩阵的每一行对应一个单元格,而每一列表示一个维度。

reducedDims (sce_sub)
长度2的名称列表(2):PCA TSNE
reducedDimNames (sce_sub)
##[1]“pca”“tsne”
头(reducedDim (sce_sub PCA) [1:2])
## srr2140028 17.557295 -7.717162 ## srr2140022 21.468975 -1.198212 ## srr2140055 4.303756 -11.360330 ## srr2140083 21.440479 -9.435868 ## srr2139991 15.592089 -11.043989 ## srr2140067 16.539336 -9.831779
头(reducedDim (sce_sub TSNE) [1:2])
## [,1] [,2] ## srr2140028 -7.305172 -13.21667 ## srr2140022 -5.571360 -12.47031 ## srr2140055 1.730797 -14.54116 ## srr2140083 -3.774831 -14.21703 ## srr2139991 -2.702975 -13.59155 ## srr2140067 -2.529361 -15.59027

的列的任意子集sce_sub也会导致维数降低结果的子集由单元格。

暗(reducedDim (sce_sub PCA))
## [1] 379 100
暗(reducedDim (sce_sub [1:10], PCA))
## [1] 10 100

7方便访问命名的化验

SingleCellExperiment,用户可以为的项分配任意名称化验.为了帮助包之间的互操作性,我们对特定类型的数据的名称提供了一些建议:

  • 计数:原始计数数据,例如,特定基因的读数或转录数。
  • normcounts:与原始计数在同一尺度上的规范化值。例如,以统一为中心的细胞特定大小因子划分的计数。
  • logcounts:对数转换计数或类计数值。在大多数情况下,这将被定义为对数转换normcounts,例如,使用以2为底的对数和1的伪计数。
  • cpm: Counts-per-million。这是每个细胞中每个基因的读取计数,除以每个细胞的文库大小,单位为百万。
  • tpm: Transcripts-per-million。这是每个细胞中每个基因的转录本数量,除以该细胞中的转录本总数(以百万为单位)。

方法的适当getter/setter方法SingleCellExperiment.例如,我们可以取(非常明确的名称)tophat_counts命名并将其分配给计数而不是:

Counts (sce) <- assay(sce, "tophat_counts") sce
##类:singlecel实验实验## dim: 20908 379 ##元数据(2):SuppInfo该qc ## assays(5): tophat_counts cufflinks_fpkm rsem_counts rsem_tpm counts ## rownames(20908): 0610007P14Rik 0610009B22Rik…Zzef1 Zzz3 ## rowData names(0): ## colnames(379): SRR2140028 SRR2140022…SRR2139341 SRR2139336 ## colData names(22): NREADS NALIGNED…的动物。ID passes_qc_checks_s ## reducedDimNames(0): ## spikeNames(2): ERCC Adam
暗(计数(sce))
## [1] 20908 379

这意味着期望计数数据的函数可以简单地调用数量()不用担心特定于包的命名约定。

8会话信息

sessionInfo ()
## R版本3.6.0(2019-04-26)##平台:x86_64-pc-linux-gnu(64位)##运行在Ubuntu 18.04.2 LTS下## ##矩阵产品:默认## BLAS: /home/biocbuild/bbs-3.9-bioc/R/lib/libRblas。/home/biocbuild/bbs-3.9-bioc/R/lib/libRlapack。所以## ## locale: ## [1] LC_CTYPE=en_US。UTF-8 LC_NUMERIC= c# # [3] LC_TIME=en_US。UTF-8 LC_COLLATE= c# # [5] LC_MONETARY=en_US。utf - 8 LC_MESSAGES = en_US。UTF-8 ## [7] LC_PAPER=en_US。UTF-8 LC_NAME= c# # [9] LC_ADDRESS=C lc_phone = c# # [11] LC_MEASUREMENT=en_US。UTF-8 LC_IDENTIFICATION=C ## ##附加的基本包:##[1]并行stats4统计图形grDevices utils数据集##[8]方法基础## ##其他附加包:[5] SummarizedExperiment_1.14.0 DelayedArray_0.10.0 ## [7] Biobase_2.44.0 GenomicRanges_1.36.0 ## [11] GenomeInfoDb_1.20.0 IRanges_2.18.0 ## [13] S4Vectors_0.22.0 BiocGenerics_0.30.0 ## [15] BiocStyle_2.12.0 ## ##通过命名空间加载(并且没有附加):[1] Rcpp_1.0.1 knitr_1.22 XVector_0.24.0 ## [4] zlibbioc_1.30.0 lattice_0.20-38 stringi_1. 4.0 ## [7] tools_3.6.0 grid_3.6.0 xfun_0.6 ## [7] htmltools_0.3.6 yaml_2.2.0 digest_0.6.18 ## [13] bookdown_0.9 Matrix_1.2-17 GenomeInfoDbData_1.2.1 ## [16] BiocManager_1.30.4 bitops_1.0-6 RCurl_1.95-4.12 ## [22] compiler_3.6.0