1动机

SingleCellExperiment是相当复杂的类,它可以容纳多个方面的相同的数据集。可以有多个化验,多个降维结果,和多个不同的实验——每一个都可以进一步有多个化验和reducedDims!在某些情况下,它可能需要遍历这些作品,应用相同的函数。这是方便可行的通过applySCE ()框架。

2快速启动

假设我们有一个适度复杂SingleCellExperiment包含多个替代实验的对象,不同的数据模式。

库(SingleCellExperiment)计数< -矩阵(rpois(100年,λ= 10),ncol = 10, nrow = 10) sce < - SingleCellExperiment(计数)altExp(,“飙升”)< - SingleCellExperiment(矩阵(rpois(20,λ= 5),ncol = 10, nrow = 2)) altExp(,“蛋白质”)< - SingleCellExperiment(矩阵(rpois(50,λ= 100),ncol = 10, nrow = 5)) altExp (,“CRISPR”) < - SingleCellExperiment(矩阵(rbinom (p = 0.1, 80 1), ncol = 10, nrow = 8))预计
# # # #类:SingleCellExperiment暗淡:10 10 # #元数据(0):# #化验(1):“# # rownames:零构成了rowData名称(0):# # # # colnames:零# # colData名称(0):# # reducedDimNames (0): # # mainExpName:零# # altExpNames(3):蛋白质CRISPR飙升

假设我们想要计算每个形态的总计数,使用第一个试验。我们可以定义一个函数,看起来就像下面。(我们会回来的目的乘数=subset.row =后)。

totalCount < -函数(x, i = 1,乘数= 1,subset.row = NULL){垫< -试验(x,我)如果(! is.null (subset.row)){垫< -垫(子集。行,,= FALSE)} colSums(垫)*乘数}

我们可以轻松地应用这个函数在主要和替代实验:

总数< - applySCE (sce、有趣= totalCount)总数
# # # #[1]([1])93 95 90 124 102 107 115 99 93 91 # # # # # #飙升[1]10 12 14 11 6 6 14 7 9 12 # # # # # # $蛋白质[1]526 507 477 475 502 550 494 491 499 518 # # # # # # CRISPR [1] 0 2 1 0 0 0 1 1 1 0

3设计说明

applySCE ()以上功能相当于:

总数。手册< -列表(totalCount (sce),峰值= totalCount (altExp(,“飙升”)),蛋白质= totalCount (altExp(,“蛋白质”)),CRISPR = totalCount (altExp (,“CRISPR”))) stopifnot(相同(总数、totals.manual))

除了更详细applySCE (),这种方法不适应常见的参数。说我们想集乘数= 10对所有电话。与上面的手工方式中,这将涉及多次指定参数:

totals10。手册< -列表(totalCount (sce乘数= 10),峰值= totalCount (altExp(,“飙升”),乘数= 10),蛋白质= totalCount (altExp(,“蛋白质”),乘数= 10),CRISPR = totalCount (altExp (,“CRISPR”),乘数= 10))

而与applySCE ()的方法,我们可以把它一次。这使得它更容易改变,减少了出错的可能性当复制粘贴在调用参数列表。

totals10。应用< - applySCE (sce、有趣= totalCount乘数= 10)stopifnot(相同(totals10。应用,totals10.manual))

现在,人们可能会考虑使用拉普兰人()在这种情况下,也避免了重复规范:

totals10。拉普兰人< -拉普(c(列表(sce) altExps (sce)),有趣= totalCount乘数= 10)stopifnot(相同(totals10。应用,totals10.lapply))

然而,这个遇到了相反的问题——它不再是可以指定自定义为每个调用参数。例如,假设我们想为每个主要的一组不同的特征子集和替代实验。与applySCE ()这仍然是可能的:

总数。自定义<- applySCE(sce, FUN=totalCount, multiplier=10, ALT.ARGS=list(Spike=list(subset.row=2), Protein=list(subset.row=3:5))) totals.custom
# # # #[1]([1])930 950 900 1240 1020 1070 1150 990 930 910 # # # # # #飙升[1]50 50 70 70 20 40 70 40 40 50 # # # # # # $蛋白质[1]3150 3060 2790 3060 2950 3230 3100 2890 3100 3010 # # # # # # CRISPR [1] 20 10 0 0 0 10 10 10 0 0

在这种情况下,我们有一个自定义之间的混合和常见的参数,applySCE ()提供一个更方便和灵活的接口比手动调用或拉普兰人()荷兰国际集团(ing)。

4简化到一个SingleCellExperiment

另一个方便的方面applySCE ()是,如果指定的吗有趣的=返回一个SingleCellExperiment,applySCE ()将尝试格式化输出作为一个SingleCellExperiment。为了演示,让我们使用头()函数将每个主要的头几个特性和替代实验:

头。南加州爱迪生公司<- applySCE(sce, FUN=head, n=5) head.sce
# # # #类:SingleCellExperiment暗淡:5 10 # #元数据(0):# #化验(1):“# # rownames:零构成了rowData名称(0):# # # # colnames:零# # colData名称(0):# # reducedDimNames (0): # # mainExpName:零# # altExpNames(3):蛋白质CRISPR飙升

而不是返回的列表SingleCellExperiment年代,我们可以看到,输出是整齐有序的作为SingleCellExperiment与指定的n = 5特性。此外,每个替代实验也截断首次5特性(或更少,如果没有许多开始)。这个输出镜,尽可能多的格式输入南加州爱迪生公司,更方便的使用对象的列表。

altExp (head.sce)
# # # #类:SingleCellExperiment暗淡:2 10 # #元数据(0):# #化验(1):“# # rownames:零构成了rowData名称(0):# # # # colnames:零# # colData名称(0):# # reducedDimNames (0): # # mainExpName:零# # altExpNames (0):
altExp(头。南加州爱迪生公司,"Protein")
# # # #类:SingleCellExperiment暗淡:5 10 # #元数据(0):# #化验(1):“# # rownames:零构成了rowData名称(0):# # # # colnames:零# # colData名称(0):# # reducedDimNames (0): # # mainExpName:零# # altExpNames (0):
altExp(头。南加州爱迪生公司,"CRISPR")
# # # #类:SingleCellExperiment暗淡:5 10 # #元数据(0):# #化验(1):“# # rownames:零构成了rowData名称(0):# # # # colnames:零# # colData名称(0):# # reducedDimNames (0): # # mainExpName:零# # altExpNames (0):

看看引擎盖下面,我们可以关掉简化,看看会发生什么。我们确实看到,函数返回一个列表SingleCellExperiment对象对应于头()每个实验。当简化= TRUE这个列表是通过simplifyToSCE ()尝试重组成一个单一的对象。

head.sce。< - applySCE列表(sce、有趣=头,n = 5,简化= FALSE) head.sce.list
([1])# # # #类:SingleCellExperiment # #暗淡:5 10 # #元数据(0):# #化验(1):“# # rownames:零构成了rowData名称(0):# # # # colnames:零# # colData名称(0):# # reducedDimNames (0): # # mainExpName:零# # altExpNames(3):峰值蛋白质CRISPR # # # # $ # #飙升类:SingleCellExperiment # #暗淡:2 10 # #元数据(0):# #化验(1):“# # rownames:零构成了rowData名称(0):# # # # colnames:零# # colData名称(0):# # reducedDimNames (0): # # mainExpName:零# # altExpNames(0): # # # # # # $蛋白质类:SingleCellExperiment # #暗淡:5 10 # #元数据(0):# #化验(1):“# # rownames:零构成了rowData名称(0):# # # # colnames:零# # colData名称(0):# # reducedDimNames (0): # # mainExpName:零# # altExpNames (0): # # # # $ CRISPR # #类:SingleCellExperiment # #暗淡:5 10 # #元数据(0):# #化验(1):“# # rownames:零构成了rowData名称(0):# # # # colnames:零# # colData名称(0):# # reducedDimNames (0): # # mainExpName:零# # altExpNames (0):

相比之下,手动如果我们不得不这样做,这将是相当繁琐和容易出错的,例如,如果我们忘了n =或者我们重新分配的输出头()错误的选择实验。

手册。头< -头(大带宽,n = 5) altExp(手册。头,“飙升”)< -头(altExp(,“飙升”),n = 5) altExp(手册。头,“蛋白质”)< -头(altExp(,“蛋白质”),n = 5) altExp(手册。头,“CRISPR”) < -头(altExp (,“CRISPR”), n = 5) manual.head
# # # #类:SingleCellExperiment暗淡:5 10 # #元数据(0):# #化验(1):“# # rownames:零构成了rowData名称(0):# # # # colnames:零# # colData名称(0):# # reducedDimNames (0): # # mainExpName:零# # altExpNames(3):蛋白质CRISPR飙升

当然,这种简化是唯一可能的情况允许的时候。它要求有趣的=返回一个SingleCellExperiment在每一个电话,不超过一个的结果是生成的每个替代实验。未能满足这些条件将导致一个警告和non-simplified输出。

bob电竞体育官网开发人员可能会倾向于集简化= FALSE和手动调用simplifyToSCE (),可能与warn.level = 3简化失败时触发一个显式的错误。

会话信息

sessionInfo ()
# # R正在开发的(不稳定的)(2022-10-25 r83175) # #平台:x86_64-pc-linux-gnu(64位)# #下运行:Ubuntu 22.04.1 LTS # # # #矩阵产品:默认# #布拉斯特区:/home/biocbuild/bbs - 3.17 - bioc / R / lib / libRblas。所以# # LAPACK: /usr/lib/x86_64-linux-gnu / LAPACK liblapack.so.3.10.0 # # # #语言环境:# # [1]LC_CTYPE = en_US。utf - 8 LC_NUMERIC = C # #[3]而= en_GB 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 = C LC_TELEPHONE = # # [11] LC_MEASUREMENT = en_US。utf - 8 LC_IDENTIFICATION = C附加基本包:# # # # # # [1]stats4统计图形grDevices跑龙套数据集方法# # # # # #[8]基地其他附加包:# # [1]SingleCellExperiment_1.21.0 SummarizedExperiment_1.29.0 # # [3] Biobase_2.59.0 GenomicRanges_1.51.0 # # [5] GenomeInfoDb_1.35.0 IRanges_2.33.0 # # [7] S4Vectors_0.37.0 BiocGenerics_0.45.0 # # [9] MatrixGenerics_1.11.0 matrixStats_0.62.0 # # [11] BiocStyle_2.27.0 # # # #通过加载一个名称空间(而不是附加):# # [1]Matrix_1.5-1 jsonlite_1.8.3 compiler_4.3.0 # # [4] BiocManager_1.30.19 stringr_1.4.1 bitops_1.0-7 # # [7] jquerylib_0.1.4 yaml_2.3.6 fastmap_1.1.0 # # [10] lattice_0.20-45 R6_2.5.1 XVector_0.39.0 # # [13] knitr_1.40 DelayedArray_0.25.0 bookdown_0.29 # # [16] GenomeInfoDbData_1.2.9 bslib_0.4.0 rlang_1.0.6 # # [19] cachem_1.0.6 stringi_1.7.8 xfun_0.34 # # [22] sass_0.4.2 cli_3.4.1 magrittr_2.0.3 # # [25] zlibbioc_1.45.0 digest_0.6.30 grid_4.3.0 # # [28] evaluate_0.17 rcurl_1.98 - 1.9 rmarkdown_2.17 # # [31] tools_4.3.0 htmltools_0.5.3