ExperimentSubset 1.9.0
如果(!requireNamespace("BiocManager", quiet =TRUE)){install.packages("BiocManager")} BiocManager::install(" experiment子集")
要从Github安装最新版本,请使用以下代码:
库(devtools) install_github(“campbio / ExperimentSubset”)
装载包:
库(ExperimentSubset)
实验对象,如SummarizedExperiment
或SingleCellExperiment
是一个或多个类似矩阵的分析以及相关的行和列数据的数据容器。下游分析通常只需要原始数据的一个子集。例如,过滤出质量差的样品需要在分析之前排除一些列。的ExperimentSubset
Object是一个容器,可以有效地管理相同数据的不同子集,而不必为每个新子集创建单独的对象,并且可以用作其他实验类的临时替代品。
ExperimentSubset
包允许用户对来自同一实验的单细胞数据进行灵活的子集设置,以及随后将这些子集存储回同一对象。一般来说,它为用户提供了与SingleCellExperiment
容器是单单元数据使用最广泛的容器之一。然而,除了提供的功能SingleCellExperiment
容器,ExperimentSubset
提供子功能,同时对用户隐藏实现细节。它通过创建对子集的引用来实现这一点行
而且列
而不是尽可能地存储一个新的分析,而不是实际复制冗余数据。函数从SingleCellExperiment
如分析
,rowData
而且colData
可以用于常规分析,就像人们通常做的那样,以及与新创建的数据子集。这允许用户使用ExperimentSubset
容器简单,就好像他们在使用SingleCellExperiment
不需要对现有代码进行更改的容器。
ExperimentSubset
类的ExperimentSubset
包由多个类组成,根据输入实验对象的类支持子集管理功能。当前支持的可以使用的实验类ExperimentSubset
包括SummarizedExperiment
,RangedSummarizedExperiment
而且SingleCellExperiment
.
的ExperimentSubset
包添加了一个额外的插槽子集
赋给这些类中的对象,从而支持数据子集的创建和管理。
中的每个子集ExperimentSubset
对象(更具体地说,是在子集
对象的槽位)存储为AssaySubset
实例。这AssaySubset
实例针对父对象(可以是继承的父对象或另一个子集)创建对这个特定子集的行索引和列索引的引用。如果要针对子集存储新的分析,则将其存储为子集内的单独实验对象(与继承对象相同的类)。
ExperimentSubset
类而所有的方法都可用SummarizedExperiment
而且SingleCellExperiment
类已被重写以支持ExperimentSubset
类提供了对子集的额外支持,则为创建和操作子集提供了一些核心方法ExperimentSubset
类。
ExperimentSubset
构造函数构造函数方法允许创建ExperimentSubset
对象,只要它继承自输入实验对象SummarizedExperiment
类。类的命名列表可以直接从构造函数中创建子集子集
参数。
counts <- matrix(rpois(100, lambda =10), ncol=10, nrow=10) sce <- singlecel实验(list(counts = counts)) es <- experiment子集(sce) es
##类:SubsetSingleCellExperiment ## dim: 10 10 ##元数据(0):## assays(1):计数## rownames: NULL ## rowData names(0): ## colnames: NULL ## colData names(0): ## reducedDimNames(0): ## mainExpName: NULL ## altExpNames(0): ## subsets(0): ## subsetAssays(0):
此外,一个ExperimentSubset
对象也可以直接从通常加载的数据(如计数矩阵)创建,这些数据可以传递给列表中的构造函数。
-矩阵(rpois(100, lambda =10), ncol=10, nrow=10)
##类:SubsetSingleCellExperiment ## dim: 10 10 ##元数据(0):## assays(1):计数## rownames: NULL ## rowData names(0): ## colnames: NULL ## colData names(0): ## reducedDimNames(0): ## mainExpName: NULL ## altExpNames(0): ## subsets(0): ## subsetAssays(0):
createSubset
的createSubset
方法从名称中可以看出,该方法从已经可用的对象中创建子集分析
在对象中。的subsetName
(一个字符
字符串),rowIndices
(一个数字
或字符
向量
),colIndices
(一个数字
或字符
向量
),parentAssay
(一个字符
字符串的标准参数createSubset
方法。如果rowIndices
或colIndices
是失踪
或零
,则从指定的parentAssay
.如果parentAssay
是失踪
或零
,父对象的第一个可用分析被链接为这个子集的父。的parentAssay
可以是分析
对象的子集或分析
在子集中。
es <- createSubset(es, subsetName = "subset1", rows = c(1:2), cols = c(1:5), parentAssay = "counts") es
##类:SubsetSingleCellExperiment ## dim: 10 10 ##元数据(0):## assays(1):计数## rownames: NULL ## rowData names(0): ## colnames: NULL ## colData names(0): ## reducedDimNames(0): ## mainExpName: NULL ## altExpNames(0): ## subsets(1): subset1 ## subsetAssays(1): subset1
setSubsetAssay
而且getSubsetAssay
的setSubsetAssay
方法时应使用分析
需要存储在先前创建的子集中。这与createSubset
方法,该方法仅通过引用已定义的对象来创建子集parentAssay
在哪里internalAssay
子集中没有存储分析。的setSubsetAssay
方法,用于存储分析
在这个internalAssay
子集的Slot,实际上是与父对象相同类的子集实验对象。
subset1Assay <- assay(es, "subset1") subset1Assay[,] <- subset1Assay[,] + 1 es <- setSubsetAssay(es, subsetName = "subset1", inputMatrix = subset1Assay, subsetAssayName = "subset1Assay") es
##类:subsetsinglecellexper实验组## dim: 10 10 ##元数据(0):## assays(1):计数## rownames: NULL ## rowData names(0): ## colnames: NULL ## colData names(0): ## reducedDimNames(0): ## mainExpName: NULL ## altExpNames(0): ## subsets(1): subset1 # subsetAssays(2): subset1 subset1Assay
这种方法的感兴趣的参数是subsetName
它指定输入分析应该存储在其中的子集的名称,inputMatrix
属性指定的子集中存储的矩阵类型对象是哪个subsetName
参数,最后是subsetAssayName
参数,该参数表示新分析的名称。
为了进行子集检测,getSubsetAssay
方法:
getSubsetAssay(es, "subset1")
# # [1] [2] [3] [4] [5] # # [1] 11 11 8 8 9 # # 11 16 9 11 11 [2]
get内部的subset1化验
# # [1] [2] [3] [4] [5] # # [1] 12 12 9 9 10 # # 12 17 10 12 12 [2]
除了setSubsetAssay
而且getSubsetAssay
方法,分析
而且分析< -
方法也可以用于相同的目的。它们的用法已在下面的覆盖方法一节中描述。
subsetSummary
的subsetSummary
方法的总体摘要ExperimentSubset
对象,包括父对象中的分析、子集列表以及存储的分析、降维、Alt实验和其他可能帮助用户了解对象当前状态的补充信息。该方法显示的最重要的信息是对象中每个子集的分层“父-子集”链接。
subsetSummary (es)
##主化验:## counts ## ##子集:## Name Dim Parent Assays ## 1 subset1 2,5 counts subset1Assay
提供了辅助方法,供用户在特定情况下操作数据子集时使用。这些辅助方法及其简短描述如下:
subsetNames
返回所有可用子集的名称(不包括内部子集分析)subsetAssayNames
返回所有可用子集的名称(包括内部子集分析)subsetCount
返回子集的总数(不包括内部子集测定)subsetAssayCount
返回子集的总数(包括内部子集分析)subsetDim
返回指定子集的维数subsetColData
获取或设置colData从/到子集subsetRowData
获取或设置rowData从/到子集subsetColnames
获取或设置从/到子集的colnamesubsetRownames
获取或设置从/到子集的行名subsetParent
返回指定子集的“sub -parent”链接setSubsetAssay
将分析设置为子集getSubsetAssay
从子集获取分析这两个subsetColData
而且subsetrowData
Getter方法包含一个额外的逻辑参数parentColData
或parentRowData
指定返回的' colData '或' rowData '是否也应该包括父对象的' colData '和' rowData '。默认情况下,parentColData
而且parentRowData
参数设置为假
.同样适用于inherited的用法rowData
而且colData
方法。
#存储colData到父对象colData(es) <- cbind(colData(es), sampleID = seq(1:dim(es)[2])) #存储colData到'subset1'使用选项1 colData(es, subsetName = "subset1") <- cbind(colData(es, subsetName = "subset1"), subsetSampleID1 = seq(1:subsetDim(es, "subset1")[2])) #存储colData到'subset1'使用选项2 subsetColData(es, "subset1") <- cbind(subsetColData(es, "subset1"), subsetSampleID2 = seq(1:subsetDim(es, "subset1")"subset1")[2])) #从'subset1'中获取colData,不包含父colData subsetColData(es, "subset1", parentColData = FALSE)
## 5行2列的数据帧## subsetSampleID1 subsetSampleID2 ## ## 1 1 1 ## 2 2 2 ## 3 3 3 ## 4 4 4 ## 5 5 5 5 5
#从subset1中获取colData subsetColData(es, "subset1", parentColData = TRUE)
## 5行3列的数据帧## sampleID subsetSampleID1 subsetSampleID2 ## ## 1 1 1 1 ## 2 2 2 2 ## 3 3 3 4 4 4 4 ## 5 5 5 5 5 5
#同样适用于' colData '和' rowData '方法时,使用子集colData(es, subsetName = "subset1", parentColData = FALSE) #没有父数据
## 5行2列的数据帧## subsetSampleID1 subsetSampleID2 ## ## 1 1 1 ## 2 2 2 ## 3 3 3 ## 4 4 4 ## 5 5 5 5 5
colData(es, subsetName = "subset1", parentColData = TRUE) #与父数据
## 5行3列的数据帧## sampleID subsetSampleID1 subsetSampleID2 ## ## 1 1 1 1 ## 2 2 2 2 ## 3 3 3 4 4 4 4 ## 5 5 5 5 5 5
ExperimentSubset
类类的子集特性而从其他类中重写了这些方法ExperimentSubset
对象,通过引入额外的参数subsetName
对这些方法。这些方法可以简单地在任何ExperimentSubset
对象从父对象或任何子集中获取或设置subsetName
参数。
这些方法包括rowData
,rowData < -
,colData
,colData < -
,元数据
,元数据< -
,reducedDim
,reducedDim < -
,reducedDims
,reducedDims < -
,reducedDimNames
,reducedDimNames < -
,altExp
,altExp < -
,altExps
,altExps < -
,altExpNames
而且altExpNames < -
.所有的方法都可以通过提供可选的方法与子集一起使用subsetName
参数。
的使用是上述方法的一个例外分析
而且分析< -
方法,两者的用法略有不同,如下所述:
因为分析< -
如果一个子集需要在该子集中存储分析结果,那么我们需要指定存储分析结果的子集名称我
参数,并将子集分析的新名称定义为附加名称subsetAssayName
参数。
#创建一个虚拟的ES对象计数< -矩阵(rpois(100年,λ= 10),ncol = 10, nrow = 10) sce < - SingleCellExperiment(列表(数量=计数))ES < - ExperimentSubset (sce) #创建一个子集ES < - createSubset (ES subsetName =“subset1”,行= c(1:2),关口= c(1:4)) #存储一个试验在新创建的“subset1”#注意“分析< - setter有两个重要参数的x”和“我”,# ' x '是对象和“我”是试验名称,但在存储一个#子集,我们使用“x”的对象,'i'作为子集名称,其中应该存储化验#和一个额外的'subsetAssayName'参数,该参数定义了#新化验化验的名称(x = es, i = "subset1", subsetAssayName = "subset1InternalAssay") <- matrix(rpois(100, lambda = 10), ncol=4, nrow=2)
使用分析
Getter方法很简单,因为与setter方法不同,不需要额外的参数。
#化验getter有参数“x”,它是输入对象,“i”可以是父对象中的化验名称,子集名称或子集化验名称#从父es对象化验中获取“计数”(x = es, i = "counts")
# #[1][2][3][4][5][6][7][8][9][10] # #[1] 10 10 17 8 12 15 6 10 10 # #[2] 7 9 6 6 7 12 11 11 4 7 # #[3] 10 13 9 13 5 5 13 6 11 6 # #[4] 5 11 8 3 14 4 10 10 9 11 # #[5] 7 13 14 9 7 4 9 7 6 9 # #[6] 11 9 11 14 13 6 2 19 5 8 # #[7] 9 18 11 11 2 10 16 9 13日12 # # [8]12 12 12 12 8 13 12 7 12 2 # # [9]10 8 6 7 8 9 9 6 13 13 # # [10]4 4 13 9 3 12 12 7 11 13
#获取es对象的subset1 (x = es, I = "subset1")
# # [1] [2] [3] [4] # # [1] 10 10 17 8 # # [2] 7 9 6 6
#从'subset1'化验中获取'subset1InternalAssay' (x = es, i = "subset1InternalAssay")
# # [1] [2] [3] [4] # # [1] 8 11 15 8 # # 10 9 9 11 [2]
ExperimentSubset
对象:一个玩具样例创建ExperimentSubset
对象的操作非常简单,只需将实验对象传递给ExperimentSubset
构造函数:
counts <- matrix(rpois(100, lambda =10), ncol=10, nrow=10) sce <- singlecel实验(list(counts = counts)) es <- experiment子集(sce) subsetSummary(es)
# #主要分析(s): # # # # # #计数子集(s): # # NULL
创建一个只包含前5行和前5列的子集:
- subsetset (es, subsetName = "subset1", rows = c(1:5), cols = c(1:5), parentAssay = "counts") subsetSummary(es)
##主化验:##计数## ##子集:##名称Dim Parent ## 1 subset1 5,5个计数
从创建另一个子集subset1
只保留前两行:
- createSubset(es, subsetName = "subset2", rows = c(1:2), cols = c(1:5), parentAssay = "subset1") subsetSummary(es)
##主化验:##计数## ##子集:##名称Dim Parent ## 1 subset1 5,5计数## 2 subset2 2,5 subset1 ->计数
得到分析
从subset2
和更新值:
subset2Assay <- assay(es, "subset2") subset2Assay[,] <- subset2Assay[,] + 1
存储更新后的分析
回subset2
使用以下两种方法之一:
#方法1 es <- setSubsetAssay(es, subsetName = "subset2", inputMatrix = subset2Assay, subsetAssayName = "subset2Assay_a1") #方法2化验(es, "subset2", subsetAssayName = "subset2Assay_a2")
##主化验:##计数## ##子集:##名称Dim Parent Assays ## 1 subset1 5,5计数## 2 subset2 2,5 subset1 ->计数subset2Assay_a1, subset2Assay_a2
对象中存储实验对象altExp
槽的subset2
:
altExp(x = es, e = "subset2_alt1", subsetName = "subset2") <- singlecel实验(化验= list(计数=化验(es, "subset2")))
显示当前的状态ExperimentSubset
对象:
subsetSummary (es)
##主化验:##计数## ##子集:##名称Dim Parent Assays ## 1 subset1 5,5计数## 2 subset2 2,5 subset1 ->计数subset2Assay_a1, subset2Assay_a2 ## AltExperiments ## 1 ## 2 subset2_alt1
ExperimentSubset
对象:一个真实单细胞RNA-seq数据的例子安装和加载所需的软件包:
如果(!requireNamespace("BiocManager", quiet = TRUE) install.packages("BiocManager") BiocManager::install(version = "3.11", ask = FALSE) BiocManager::install(c("TENxPBMCData", "scater", "scran"))
库(experimental子集)库(TENxPBMCData)库(scater)库(scran)
加载PBMC4K数据集并创建ExperimentSubset
对象:
tenx_pbmc4k <- TENxPBMCData(dataset = "pbmc4k") es <- experiment子集(tenx_pbmc4k) subsetSummary(es)
计算perCellQCMetrics
在计数
矩阵:
perellqcmetrics <- perellqcmetrics (assay(es, "counts")) colData(es) <- cbind(colData(es), perCellQCMetrics)
过滤低列和的单元格,并创建一个名为' filteredCells '的新子集:
filteredCellsIndices <- which(colData(es)$sum > 1500) es <- createSubset(es, "filteredCells", cols = filteredCellsIndices, parentAssay = "counts") subsetSummary(es)
Normalize ' filteredCells '子集使用嘘
库并存储回:
assay(es, "filteredCells", subsetAssayName = "filteredCellsNormalized") <- normalizeCounts(assay(es, "filteredCells")) subsetSummary(es)
从上一步的归一化检测中找到高度可变的基因食物
库只针对' filteredCells '子集:
topHVG1000 <- getTopHVGs(modelGeneVar(assay(es, "filteredCellsNormalized")), n = 1000) es <- createSubset(es, "hvg1000", rows = topHVG1000, parentAssay = "filteredCellsNormalized") subsetSummary(es)
在最后一步中计算的高变量基因上运行“PCA”嘘
库只针对' filteredCells '子集:
reducedDim(es, type = "PCA", subsetName = "hvg1000") <- calculatePCA(assay(es, "hvg1000"))
的当前状态ExperimentSubset
对象:
subsetSummary (es)
ExperimentSubset
ExperimentSubset
构造函数createSubset
setSubsetAssay
getSubsetAssay
subsetSummary
subsetParent
subsetCount
subsetAssayCount
subsetNames
subsetAssayNames
subsetDim
subsetRowData
subsetColData
subsetColnames
subsetRownames
subsetRowData < -
subsetColData < -
subsetColnames < -
subsetRownames < -
显示
分析
分析< -
rowData
rowData < -
colData
colData < -
元数据
元数据< -
reducedDim
reducedDim < -
reducedDims
reducedDims < -
reducedDimNames
reducedDimNames < -
altExp
altExp < -
altExps
altExps < -
altExpNames
altExpNames < -
subsetSpatialCoords
subsetSpatialData
subsetSpatialData < -
subsetRowLinks
subsetColLinks
spatialCoords
spatialData
spatialData < -
rowLinks
colLinks
的内部结构ExperimentSubset
类描述如下:
的ExperimentSubset
对象中指定的类之一SubsetSummarizedExperiment
,SubsetRangedSummarizedExperiment
或SubsetSingleCellExperiment
它们继承自输入对象的类。这确保了ExperimentSubset
对象可以以类似于输入对象类的方式进行操作,因此可以用作这些类的直接替换。与输入对象类兼容的所有方法都与ExperimentSubset
对象也是。
子集
槽的子集
槽位号ExperimentSubset
对象是SimpleList
,其中该列表中的每个元素都是一个内部类型的对象AssaySubset
类。类提供的方法来访问槽本身,用户不能直接访问它ExperimentSubset
包中。每个元素表示父对象中链接到实验对象的一个子集。每个子集的结构如下所述:
subsetName
一个字符
表示子集的用户定义名称的字符串。
rowIndices
一个数字
向量
用于存储此子集的链接父分析中选定行的索引。
colIndices
一个数字
向量
用于存储该子集的链接父分析中所选列的索引。
parentAssay
一个字符
字符串,该字符串存储子集链接到的直接父节点的名称。的parentAssay
可以是分析
在父元素中ExperimentSubset
对象或任何子集或任何internalAssay
子集的。
internalAssay
的internalAssay
Slot存储与输入对象类型相同但具有子集维度的实验对象。的internalAssay
最初是一个空的实验对象,仅设置维度以启用操作,但可用于存储针对子集的额外数据,如分析
,rowData
,colData
,reducedDims
,altExps
而且元数据
.
sessionInfo ()
## R正在开发中(不稳定)(2022-10-25 r83175) ##平台:x86_64-pc-linux-gnu(64位)##运行在Ubuntu 22.04.1 LTS ## ##矩阵产品:默认## 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: ## [1] LC_CTYPE=en_US。UTF-8 LC_NUMERIC= c# # [3] LC_TIME=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 lc_phone = c# # [11] LC_MEASUREMENT=en_US。UTF-8 LC_IDENTIFICATION=C ## ##附加的基本包:## [1]stats4 stats graphics grDevices utils datasets methods ##[8]基础## ##其他附加包:# # # # [1] ExperimentSubset_1.9.0 TreeSummarizedExperiment_2.7.0 [3] Biostrings_2.67.0 XVector_0.39.0 # # [5] SpatialExperiment_1.9.0 SingleCellExperiment_1.21.0 # # [7] SummarizedExperiment_1.29.0 Biobase_2.59.0 # # [9] GenomicRanges_1.51.0 GenomeInfoDb_1.35.0 # # [11] IRanges_2.33.0 S4Vectors_0.37.0 # # [13] BiocGenerics_0.45.0 MatrixGenerics_1.11.0 # # [15] matrixStats_0.62.0 BiocStyle_2.27.0 # # # #通过加载一个名称空间(而不是附加):# # # # [1] tidyselect_1.2.0 dplyr_1.0.10 [3] R.utils_2.12.1 bitops_1.0-7 # # [5] fastmap_1.1.0 rcurl_1.98 - 1.9 # # [7] lazyeval_0.2.2 digest_0.6.30 # # [9] lifecycle_1.0.3 tidytree_0.4.1 # # [11] magrittr_2.0.3 compiler_4.3.0 # # [13] rlang_1.0.6 sass_0.4.2 # # [15] tools_4.3.0 utf8_1.2.2 # # [17] yaml_2.3.6 knitr_1.40 # # [19] dqrng_0.3.0 DelayedArray_0.25.0 # # [21] BiocParallel_1.33.0 HDF5Array_1.27.0 # # [23] purrr_0.3.5 R.oo_1.25.0 # # [25] grid_4.3.0 fansi_1.0.3 # # [27] beachmat_2.15.0 Rhdf5lib_1.21.0## [39] ape_5.6-2 cachem_1.0.6 ## [41] rhdf5_2.43.0 string_1 .4.1 ## [43] zlibbioc_1.45.0 assertthat_0.2.1 ## [45] parallel_4.3.0 BiocManager_1.30.19 ## [47] yulab.utils_0.0.5 vctrs_0.5.0 ## [51] Matrix_1.5-1 jsonlite_1.8.3 ## [51] bookdown_0.29 limma_3.55.0 ## # [55]jquerylib_0.1.4 tidyr_1.2.1 ## [57] glue_1.6.2 DropletUtils_1.19.0 ## [59] codetools_0.2-18 stringi_1.7.8 ## [61] tibble_3.1.8 pillar_1.8.1 ## [63] htmltools_0.5.3 rhdf5filters_1.11.0 ## [65] GenomeInfoDbData_1.2.9 R6_2.5.1 ## [67] sparseMatrixStats_1.11.0 evaluate_0.17 ## [69] lattice_0.20-45 R.methodsS3_1.8.2 ## [71] bslib_0.4.0 Rcpp_1.0.9 ## [73] nlme3.1 -160 xfun_0.34 ## [75] pkgconfig_2.0.3