SingleCellexperiment 1.18.0
这Singlecellexperiment
类是用于存储和操纵单细胞基因组学数据的轻质生物通用容器。它扩展了RangedSummarizedExperiment
班级并遵循类似的公约,即行应表示特征(基因,转录本,基因组区域),列应代表细胞。它提供了存储降低降低结果和替代特征集的数据的方法(例如,合成尖峰转录本,抗体衍生的标签)。它是生物导体单细胞包的中央数据结构,例如评分和斯克兰。
Singlecellexperiment
可以通过同名的构造函数创建对象。例如,如果我们有计数矩阵计数
,我们可以简单地致电:
库(SingleCellexperiment)计数<-matrix(rpois(100,lambda = 10),ncol = 10,nrow = 10)
##班级:singlecellexperiment ## dim:10 10 ## metadata(0):## assays(1):''## ROWNAMES:null ## rowdata names(0):## colnames:null ## coldata names(0):## reduceddimnames(0):## mainexpname:null ## altexpnames(0):
实际上,通过在命名列表中传递命名测定通常更有用:
sce <-singlecellexperiment(list(counts = counts))SCE
##班级:singlecellexperiment ## dim:10 10 ## metadata(0):## assays(1):计数## ROWNAMES:null ## rowdata names(0):## colnames:null ## coldata names(0)):## reduseddimnames(0):## mainexpname:null ## altexpnames(0):
同样,可以通过将值传递给适当的参数来设置列和行元数据。我们不会在这里详细介绍,因为大多数都涵盖了总结性特征文档,但举一个例子:
prepend.cell.labels < - 示例(字母,ncol(counts),替换= true)prepend.gene.gene.lengths < - sample(10000,nrow(counts))sce <-singlecellexperiment(lists = counts = counts = counts = counts = counts = counts = counts = counts),dataframe(label = pretend.cell.labels),rowdata = dataframe(length = prepend.gene.lengths),元数据= list = list(study =“ gse111111”))sce
##班级:SingleCellexperiment ## Dim:10 10 ##元数据(1):研究## Assays(1):计数## ROWNAMES:NULL ## ROWDATA名称(1):长度## colnames:null ## Coldata名称(1):标签## reduseddimnames(0):## mainexpname:null ## altexpnames(0):
或者,我们可以构建Singlecellexperiment
通过胁迫现有(远程)总结性特征
目的:
se < - summarizedExperiment(list(counts = counts))为(se,“ singlecellexperiment”)
##班级:singlecellexperiment ## dim:10 10 ## metadata(0):## assays(1):计数## ROWNAMES:null ## rowdata names(0):## colnames:null ## coldata names(0)):## reduseddimnames(0):## mainexpname:null ## altexpnames(0):
任何可以应用于RangedSummarizedExperiment
也适用于任何实例Singlecellexperiment
。这包括通过测定()
,列元数据与coldata()
, 等等。同样,没有太多细节:
DIM(测定(SCE))
## [1] 10 10
Colnames(Coldata(SCE))
## [1]“标签”
colnames(rowdata(sce))
## [1]“长度”
为了演示在小插图的其余部分中使用类的使用,我们将使用Allen数据集scrnaseq包裹。
库(scrnaseq)sce <-recocessedallendata(“ tophat_counts”)sce
##类:SingleCellexperiment ## DIM:20816 379 ## Metadata(2):suppinfo whate_qc ## Assays(1):tophat_counts ## Rownames(20816):0610007p14p14rik 0610009b222rik ...## colnames(379):SRR2140028 SRR2140022 ... SRR2139341 SRR2139341 SRR2139336 ## Coldata名称(22):nreads naligned ... Animal.Id passes_qcc_checks_s_qc_checks_s#ERCC
我们从计数矩阵计算对数转换的归一化表达值。(我们注意到,其中许多步骤可以作为单线执行评分包装,但我们将在这里全部展示它们,以演示Singlecellexperiment
班级。)
计数<-Assay(sce,“ tophat_counts”)libsizes <-colsums(counts)size.factors <-libsizes/mean(libsizes)logcounts(sce)logcounts(sce)<-log2(t(t(t(counts)/size.factors) + 1 + 1 + 1)AssayNames(SCE)
## [1]“ tophat_counts”“ logcounts”
我们获得数据的PCA和T-SNE表示形式,并将其添加到对象中降低dims()< -
方法。或者,我们可以一次与降低dim()< -
方法(注意缺失s
)。
pca_data <-prcomp(t(logcounts(sce)),rank = 50)库(rtsne)set.seed(5252)tsne_data <-rtsne(pca_data $ x [,1:50],pca = false)< - list(pca = pca_data $ x,tsne = tsne_data $ y)sce
##类:SingleCellexperiment ## DIM:20816 379 ## Metadata(2):suppinfo whate_qc ## ## ASSAYS(2):tophat_counts logcounts ## ROWNAMES(20816):0610007P14P14RIK 0610009B22RIK ...:## colnames(379):srr2140028 srr2140022 ... srr2139341 srr21393336 ## coldata名称(22):nreads naligned ... andial.i antial.id andial.id passes_qc_cc_checks_s_c_checks_s ## yddimname(2)1):ERCC
所有表示形式的坐标都可以从一个Singlecellexperiment
大批和减少DIMS()
或一次按名称/索引还原()
。假定坐标矩阵的每一行都对应于单元格,而每列表示一个尺寸。
减少DIMS(SCE)
##长度列表2 ##名称(2):PCA TSNE
还原dimnames(SCE)
## [1]“ pca”“ tsne”
头(reduceddim(SCE,“ PCA”)[,1:2])
## PC1 PC2 ## SRR2140028 -70.23670 33.78880 ## SRR2140022 -41.00366 49.76633 ## SRR2140055 -133.70763 7.68870 ## SRR2140083 -36.26099 113.18806 ## SRR2139991 -100.86439 15.94740 ## SRR2140067 -97.71210 35.77881
头(还原(SCE,“ tsne”)[,1:2])
## [,1] [,2] ## SRR2140028 10.291952 -0.573862 ## SRR2140022 6.158490 -1.280543 ## SRR2140055 -4.611946 5.735881 ## SRR2140083 6.502360 6.623059 ## SRR2139991 8.488418 -1.501760 ## SRR2140067 1.832036 -3.197005
通过列的任何子集sce_sub
还将导致细胞减少维度降低结果的子集。这很方便,因为它可以确保我们的低维结果始终与基因表达数据同步。
DIM(还原Dim(SCE,“ PCA”))
## [1] 379 50
DIM(降低DIM(SCE [,1:10],“ PCA”))
## [1] 10 50
在里面Singlecellexperiment
,用户可以将任意名称分配给条目测定
。为了协助包装之间的互操作性,我们为特定类型的数据的名称提供了一些建议:
计数
:原始计数数据,例如,特定基因的读取或成绩单数量。规范
:与原始计数相同的尺度上的归一化值。例如,计数除以以统一性为中心的细胞特异性尺寸因子。登录
:对数转换计数或类似计数的值。在大多数情况下,这将定义为log转换规范
,例如,使用日志底座2和1个伪计数为1。CPM
:每百万计数。这是每个单元中每个基因的读数,除以数百万个单元的库大小。TPM
:每百万个成绩单。这是每个细胞中每个基因的转录本数,除以该单元中的转录本总数(以数百万美元)。这些建议的名称中的每一个都有适当的getter/setter方法,以方便地操纵Singlecellexperiment
。例如,我们可以采用(非常明确的命名)tophat_counts
命名并将其分配给计数
反而:
计数(sce)< - 分析(sce,“ tophat_counts”)sce
##类:SingleCellexperiment ## Dim:20816 379 ## Metadata(2):SuppInfo Who_QC ## Assays(3):Tophat_counts logcounts logcounts Counts Counts ## Rownames(20816):0610007P14RIK 0610009B22RIK ... ZZE ZZEF.ZZZEME ZZZ33 #WUME):## colnames(379):srr2140028 srr2140022 ... srr2139341 srr21393336 ## coldata名称(22):nreads naligned naligned ... andial.id andial.id passes_qc_cc_checks_s_s_s_s ##降低了ddimname #pcapn#pcapn#ables:(1):ERCC
DIM(计数(SCE))
## [1] 20816 379
这意味着期望计数数据的函数可以简单地调用计数()
不必担心特定包装的命名约定。
许多SCRNA-SEQ实验包含内源基因以外多种特征类型的测序数据:
这样的功能可以存储在Singlecellexperiment
通过“替代实验”的概念。这些是嵌套的总结性特征
保证具有相同数字和列的订购的实例Singlecellexperiment
本身。因此,内源基因和其他特征的数据可以保持分开 - 通常是可取的,因为它们需要进行不同的处理,同时仍保留在单个对象上操作的同步。
为了说明,请考虑Allen数据中的尖峰成绩单的情况。这altexp()
方法返回一个独立的Singlecellexperiment
实例仅包含尖峰成绩单。
altexp(SCE)
##班级:SingleCellexperiment ## Dim:92 379 ## Metadata(2):suppinfo who_qc ## ## ASSAYS(1):TOPHAT_COUNTS ## ROWNAMES(92):ERCC-00002 ERCC-00002 ...## rowdata名称(0):## colnames(379):srr2140028 srr2140022 ... srr2139341 srr2139336 ## coldata names(0):## reduseDimeDimnames(0)
每个替代实验可以从主要的Singlecellexperiment
。在必须将其他特征类型进行标准化或转换不同的情况下,这很有用。同样,替代实验可以具有不同的rowdata()
从主要对象。
rowdata(altexp(sce))$浓度<-runif(nrow(altexp(sce)))rowdata(altexp(sce))
## dataframe,带92行和1列##浓度## <数字> ## ercc-00002 0.034970 ## ercc-00003 0.979286 ## ercc-00004 0.171510 ## ercc-00009 0.5777606 ## ercc-0006 ## ercc-00012 0.96512 0.965111###。.. ... ## ERCC-00164 0.2945227 ## ERCC-00165 0.4449455 ## ERCC-00168 0.2821027 ## ERCC-00170 0.08170 0.0817114 ## ERCC-00171 0.4178510 0.4178510
Rowdata(SCE)
## DataFrame,带有20816行和0列
我们提供splitaltexps()
实用程序轻松拆分Singlecellexperiment
进入新的替代实验。例如,如果我们想将Riken成绩单分为一个单独的实验 - 例如,以确保它们不会在下游分析中不使用,而不会明确抛出数据 - 我们会做:
is.riken <-grepl(“^[0-9]”,Rownames(sce))sce <-splitaltexps(sce,ifelse(is.riken,“ riken”,“ riken”,“ gene”))altexpnames(sce)
## [1]“ ercc”“ riken”
另外,如果我们想交换主要和替代实验 - 也许是因为Riken成绩单比预期的要有趣,并且我们想对它们进行分析 - 我们可以简单地使用swapaltexp()
要使用基因表达数据切换Riken替代实验:
swapaltexp(sce,“ riken”,保存=“原始”)
##类:SingleCellexperiment ## DIM:611 379 ## Metadata(2):SuppInfo Who_QC ## Assays(3):Tophat_counts logcounts logcounts计数## ROWNAMES(611):0610007p14rik 0610009b222rik ...(0):## colnames(379):SRR2140028 SRR2140022 ... SRR2139341 SRR2139341 SRR2139336 ## Coldata名称(22):nreads naligned ... naligned ... andial.id passes_qc_cc_checks_s_c_checks_s ## s ## reduseddimnamname:expn:quiken:quiken:pcaame:pcaame:pcaame:pcaame:pcaame:steme##Altexpnames(2):ERCC原始
单细胞分析中的一个常见程序是识别细胞对之间的关系,例如,构建最近的邻居图或标记细胞之间的假定物理相互作用。我们可以在Singlecellexperiment
与colpairs()
功能。为了证明,说我们之间的细胞之间有100个关系SCE
,以某种距离度量为特征:
cell1 < - 示例(ncol(sce),100,替换= true)cell2 < - sample(ncol(sce),100,替换= true)距离<-runif(100)
我们将其存储在Singlecellexperiment
作为一个自我打击
对象使用价值
元数据字段保存我们的数据。这很容易提取为自我打击
或者,对于逻辑或数字数据,作为来自矩阵。
colpair(sce,“关系”)< - selfhits(cell1,cell2,nnonode = ncol(sce),value =距离)colpair(sce,“关系”)
##自动打击对象,带有100个命中和1个元数据列:##从to |值## |<数字> ## [1] 2 224 |0.3155391 ## [2] 2 311 |0.0554668 ## [3] 12 200 |0.6148850 ## [4] 16 304 |0.0174597 ## [5] 21 244 |0.9801941 ## ... ......。... ## [96] 349 369 |0.662352 ## [97] 349 372 | 0.839914 ## [98] 352 10 | 0.540362 ## [99] 360 172 | 0.392147 ## [100] 360 237 | 0.626605 ## ------- ## nnode: 379
类(colpair(sce,assparse = true))
## [1]“ dgcmatrix” ## attr(“ package”)## [1]“ matrix”
一个特别有用的功能是,当相互作用单元格的索引在SCE
被子。这样可以确保配对始终与单元中的单元的身份同步SCE
。
sub <-sce [,50:300] colpair(sub)#如果没有提供“类型”,请抓住第一个配对。
##带有46个命中和1个元数据列的自我打击对象:##从to |值## |<数字> ## [1] 7 157 |0.748443 ## [2] 11 2 |0.260945 ## [3] 18 203 |0.857025 ## [4] 19 217 |0.967591 ## [5] 32 249 |0.608411 ## ... ......。... ## [42] 236 3 |0.17149734 ## [43] 240 245 | 0.98800819 ## [44] 245 52 | 0.00164622 ## [45] 248 208 | 0.53441707 ## [46] 250 65 | 0.31503674 ## ------- ## nnode: 251
通过rowpairs()
功能家族,这对于表示共表达或调节网络有用。
这Singlecellexperiment
课程提供sizeFactors()
Getter和Setter方法,从酷塔
对象。每个尺寸因子代表在下游比较之前(例如,消除库尺寸和其他细胞特异性偏差)的差异的效果之前,将缩放因子应用于单元格在下游比较之前归一化表达值。这些方法主要用于实现归一化方法的功能中的程序使用,但是用户也可以直接调用此方法以检查或定义分析的尺寸因素。
#组成一些尺寸因素并存储它们:sizeFactors(SCE)<-2^rnorm(ncol(sce))摘要(sizeFactors(sce))
##最小。第1次。中值平均第三次。最大限度。## 0.1336 0.6761 1.0082 1.2365 1.5034 9.8244
#删除尺寸因子:sizeFactors(SCE)<-NULL SIZEFACTOR(SCE)
## 无效的
这consemels()
Getter和Seters方法允许应用程序设置和检索单元标签酷塔
。这些标签可以从分类算法等分配的群集注释中得出,并且通常用于下游可视化和分析。虽然可以将标签存储在任何酷塔
字段,consemels()
方法旨在为默认位置提供一些非正式标准化,而下游功能在尝试检索注释时可以首先搜索。
#编制一些标签并存储它们:collecters(sce)< - sample(Letters,ncol(sce),替换= true)table(collectels(sceels))
## ## a b c d e f g h i j k l m n o p q r s t u v w v w x y z ## 18 14 13 13 16 12 19 14 10 12 14 10 12 14 13 16 10 25 25 25 8 12 19 14 19 14 19 14 19 12 17 11 11 9
#删除标签:collecnels(sce)<-Null Collagels(SCE)
## 无效的
同样,我们提供rowsubset()
用户设置并获取行的功能Rowdata
。这将存储任何基因身份的向量(例如,行名,整数索引,逻辑向量)Singlecellexperiment
对象用于检索和下游功能。然后,用户可以轻松将多个功能集包装到同一对象中进行同步操作。
#将整数或字符向量打包到rowdata中:rowsubset(sce,“我的基因set 1”)<-1:10 where(rowsubset(sce,“我的基因set 1”))
## [1] 1 2 3 4 5 6 7 8 9 10
#易于删除:rowsubset(sce,“我的基因set 1”)< - null rowsubset(sce,“我的基因set 1”)
## 无效的
SessionInfo()
## R版本4.2.0 RC(2022-04-19 R82224)##平台:x86_64-pc-linux-gnu(64位)### blas:/home/biocbuild/bbs-3.15-bioc/r/lib/libblas.so ## lapack:/home/biocbuild/bbs-3.15-bioc/rib/lib/libb/librlapack.so ### ## ## locale:## [1] lc_ctype = en_us.utf-8 lc_numeric = c ## [3] lc_time = en_gb lc_collate = c ## [5] lc_us.us.utf-8 lc_messages = en_us.utf-8 ## [7]lc_paper = en_us.utf-8 lc_name = c ## [9] lc_address = c lc_telephone = c ## [11] lc_measurement = en_us.utf-8 lc_istientification = c ## ## ## ## ##附件:统计图形GRDEVICES UTILS数据集方法## [8]基础## ##其他附件:## [1] rtsne_0.16 scrnaseq_2.9.2.2.2.2.2 ## [3] singlecellexperiment_1.1.18.0genomicranges_1.48.0 ## [7] genomeInfodb_1.32.0 iranges_2.30.0 ## [9] s4Vectors_0.34.0 biocgenerics_0.42.0.42.0 ## [11] matrixgenerics_1.1.1.8.8.8.8.8.8.8.8.8.0名称ace(并且未连接):## [1] protgenerics_1.28.0 bitops_1.0-7 ## [3] bit64_4.0.5 filelock_1.0.2 ## [5] progress_1.2.2bslib_0.3.1 ## [9] utf8_1.2.2 r6_2.5.1 ## [11] lazyeval_0.2.2 dbi_1.1.1.1.2 ## [13] withr_2.5.0 tidySelect_1.1.1.1.1.2 ## [15]17] curl_4.3.2 compiler_4.2.0 ## [19] cli_3.3.0 xml2_1.3.3 ## [21] DelayedArray_0.22.0 rtracklayer_1.56.0 ## [23] bookdown_0.26 sass_0.4.1 ## [25] rappdirs_0.3.3 Rsamtools_2.12.0 ## [27] stringr_1.4.0 digest_0.6.29 ## [29] rmarkdown_2.14 XVector_0.36.0 ## [31] pkgconfig_2.0.3 htmltools_0.5.2 ## [33] ensembldb_2.20.0 dbplyr_2.1.1 ## [35] fastmap_1.1.0 rlang_1.0.2 ## [37] RSQLite_2.2.12 shiny_1.7.1 ## [39] jquerylib_0.1.4 BiocIO_1.6.0 ## [41] generics_0.1.2 jsonlite_1.8.0 ## [43] BiocParallel_1.30.0 dplyr_1.0.8 ## [45] RCurl_1.98-1.6 magrittr_2.0.3 ## [47] GenomeInfoDbData_1.2.8 Matrix_1.4-1 ## [49] Rcpp_1.0.8.3 fansi_1.0.3 ## [51] lifecycle_1.0.1 stringi_1.7.6 ## [53] yaml_2.3.5 zlibbioc_1.42.0 ## [55] BiocFileCache_2.4.0 AnnotationHub_3.4.0 ## [57] grid_4.2.0 blob_1.2.3 ## [59] parallel_4.2.0 promises_1.2.0.1 ## [61] ExperimentHub_2.4.0 crayon_1.5.1 ## [63] lattice_0.20-45 Biostrings_2.64.0 ## [65] GenomicFeatures_1.48.0 hms_1.1.1 ## [67] KEGGREST_1.36.0 knitr_1.38 ## [69] pillar_1.7.0 rjson_0.2.21 ## [71] biomaRt_2.52.0 XML_3.99-0.9 ## [73] glue_1.6.2 BiocVersion_3.15.2 ## [75] evaluate_0.15 BiocManager_1.30.17 ## [77] png_0.1-7 vctrs_0.4.1 ## [79] httpuv_1.6.5 purrr_0.3.4 ## [81] assertthat_0.2.1 cachem_1.0.6 ## [83] xfun_0.30 mime_0.12 ## [85] xtable_1.8-4 AnnotationFilter_1.20.0 ## [87] restfulr_0.0.13 later_1.3.0 ## [89] tibble_3.1.6 GenomicAlignments_1.32.0 ## [91] AnnotationDbi_1.58.0 memoise_2.0.1 ## [93] ellipsis_0.3.2 interactiveDisplayBase_1.34.0