的SummarizedExperiment
类用于存储实验结果的矩形矩阵,这些结果通常由测序和微阵列实验产生。每个对象存储一个或多个样本的观察结果,以及描述观察结果(特征)和样本(表型)的额外元数据。
的一个关键方面SummarizedExperiment
类是元数据的协调和子集时的分析。例如,如果你想排除一个给定的样本,你可以在一个操作中同时进行元数据和分析,这确保元数据和观察数据保持同步。对元数据和观察数据的不当解释导致了许多不正确的结果和撤回,所以这是一个非常可取的特性。
SummarizedExperiment
在很多方面与历史相似吗ExpressionSet
,主要的区别是SummarizedExperiment
是更灵活的行信息,允许两者农庄
根据以及所述的任意DataFrame
s.这使得它非常适合于各种实验,特别是基于测序的实验,如RNA-Seq和ChIp-Seq。
SummarizedExperiment
的SummarizedExperiment包包含两个类:SummarizedExperiment
而且RangedSummarizedExperiment
.
SummarizedExperiment
是一个类似矩阵的容器,其中行表示感兴趣的特征(如基因、转录本、外显子等),列表示样本。对象包含一个或多个测试,每个测试都由数值或其他模式的类似矩阵的对象表示。a的行SummarizedExperiment
对象表示感兴趣的特性。有关这些特性的信息存储在DataFrame
对象,可以使用函数访问rowData ()
.每一行DataFrame
属性的对应行中提供有关特性的信息SummarizedExperiment
对象。DataFrame的列表示感兴趣的特征的不同属性,例如基因或转录本id等。
RangedSummarizedExperiment
是子的SummarizedExperiment
类,这意味着所有的方法SummarizedExperiment
也要做一个RangedSummarizedExperiment
.
这两个类之间的基本区别是a的行RangedSummarizedExperiment
对象表示感兴趣的基因组范围,而不是DataFrame
的功能。的RangedSummarizedExperiment
范围由a描述农庄
或者一个GRangesList
对象,可以使用rowRanges ()
函数。
下图显示了类的几何图形,并突出显示了垂直(列)和水平(行)关系。
的气道
包包含一个来自RNA-Seq实验的气道平滑肌每个基因读取计数的示例数据集。这些数据存储在RangedSummarizedExperiment
对象包含8个不同的实验和测定64102个基因转录本。
library(summarizeexperiment) data(airway, package="airway") se <- airway se
##类:rangedsummarizeexperimental ## dim: 64102 8 ##元数据(1):“## assays(1):计数## rownames(64102): ENSG00000000003 ENSG00000000005…LRG_98 LRG_99 ## rowData names(0): ## colnames(8): SRR1039508 SRR1039509…SRR1039520 SRR1039521 ## colData names(9): SampleName cell…样本BioSample
从a中检索实验数据SummarizedExperiment
对象1可以使用分析()
访问器。对象可以有多个分析数据集,每个数据集都可以使用$
操作符。的气道
数据集只包含一个化验(计数
).这里每一行代表一个基因转录本,每列代表一个样本。
化验(se)数美元
SRR1039508 | SRR1039509 | SRR1039512 | SRR1039513 | SRR1039516 | SRR1039517 | SRR1039520 | SRR1039521 | |
---|---|---|---|---|---|---|---|---|
ENSG00000000003 | 679 | 448 | 873 | 408 | 1138 | 1047 | 770 | 572 |
ENSG00000000005 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
ENSG00000000419 | 467 | 515 | 621 | 365 | 587 | 799 | 417 | 508 |
ENSG00000000457 | 260 | 211 | 263 | 164 | 245 | 331 | 233 | 229 |
ENSG00000000460 | 60 | 55 | 40 | 35 | 78 | 63 | 76 | 60 |
ENSG00000000938 | 0 | 0 | 2 | 0 | 1 | 0 | 0 | 0 |
ENSG00000000971 | 3251 | 3679 | 6177 | 4252 | 6721 | 11027 | 5176 | 7995 |
ENSG00000001036 | 1433 | 1062 | 1733 | 881 | 1424 | 1439 | 1359 | 1109 |
ENSG00000001084 | 519 | 380 | 595 | 493 | 820 | 714 | 696 | 704 |
ENSG00000001167 | 394 | 236 | 464 | 175 | 658 | 584 | 360 | 269 |
的rowRanges ()
访问器用于查看的范围信息RangedSummarizedExperiment
.(注意这是否是父节点SummarizedExperiment
我们使用的类rowData ()
).数据存储在GRangesList
对象,其中每个列表元素对应一个基因转录本以及每个转录本中的范围农庄
与转录本中的外显子相对应。
rowRanges (se)
## GRanges对象,长度为64102:## $ENSG00000000003# # seqnames范围链| exon_id exon_name # # < Rle > < IRanges > < Rle > | <整数> <人物> # # [1]X 99883667 - 99884983 | 667145 ENSE00001459322 # # [2] X 99885756 - 99885863 | 667146 ENSE00000868868 # # [3] X 99887482 - 99887565 | 667147 ENSE00000401072 # # [4] X 99887538 - 99887565 | 667148 ENSE00001849132 # # [5] X 99888402 - 99888536 | 667149 ENSE00003554016 ## ... ... ... ... . ... ...[13] X 99890555-99890743 - | 667156 ENSE00003512331 ## [14] X 99891188-99891686 - | 667158 ENSE00001886883 ## [15] X 99891605-99891803 - | 667159 ENSE00001855382 ## [16] X 99891790-99892101 - | 667160 ENSE00001863395 ## [17] X 99894942-99894988 - | 667161 ENSE00001828996 ## ------- # seqinfo: 722序列(1循环)来自一个未指定的基因组## ##…## <64101更多的元素>
描述样本的样本元数据可以使用colData ()
,是一个DataFrame
可以为每个示例行存储任意数量的描述性列。
colData (se)
运行avgLength ## ## SRR1039508 GSM1275862 N61311 untrt untrt SRR1039509 126 ## SRR1039509 GSM1275866 N052611 untrt untrt SRR1039512 126 ## SRR1039513 GSM1275867 N052611 trt untrt SRR1039516 120 ## SRR1039517 GSM1275871 N080611 trt untrt SRR1039517 126 #### SRR1039508 SRX384345 SRS508568 SAMN02422669 ## SRR1039509 SRX384346 SRS508567 SAMN02422675 ## SRR1039513 SRX384349 SRS508571 SAMN02422678 ## SRR1039516 SRX384353 SRS508575 SAMN02422682 ## SRR1039517 SRX384354 SRS508576 SAMN02422673 ## SRR1039520 SRX384357 SRS508579Samn02422683 ## srr1039521 srx384358 srs508580 samn02422677
类可以访问此样例元数据$
访问器,它可以很容易地根据给定的表型对整个对象进行子集。
#子集仅用于地塞米松处理的样本se[, se$dex == "trt"]
##类:rangedsummarizeexperimental ## dim: 64102 4 ##元数据(1):“## assays(1):计数## rownames(64102): ENSG00000000003 ENSG00000000005…LRG_98 LRG_99 ## rowData names(0): ## colnames(4): SRR1039509 SRR1039513 SRR1039517 SRR1039521 ## colData names(9): SampleName cell…样本BioSample
描述实验方法和出版物引用的元数据可以使用元数据()
.
元数据(se)
##[[1]] ##实验数据##实验者姓名:Himes BE ##实验室:NA ##联系方式:##标题:RNA-Seq转录组分析发现CRISPLD2是一种糖皮质激素反应基因,调节气道平滑肌细胞中的细胞因子功能。## URL: http://www.ncbi.nlm.nih.gov/pubmed/24926665 ## PMIDs: 24926665 ## ##摘要:一个226字的摘要。使用“抽象”方法。
请注意,元数据()
只是一个简单的列表,所以它适用于任何用户希望保存的实验范围元数据,例如存储模型公式。
元数据(se)$formula <- counts ~ dex + albut元数据(se)
##[[1]] ##实验数据##实验者姓名:Himes BE ##实验室:NA ##联系方式:##标题:RNA-Seq转录组分析发现CRISPLD2是一种糖皮质激素反应基因,调节气道平滑肌细胞中的细胞因子功能。## URL: http://www.ncbi.nlm.nih.gov/pubmed/24926665 ## PMIDs: 24926665 ## ##摘要:一个226字的摘要。使用“抽象”方法。## ## $formula ##计数~ dex + albut
SummarizedExperiment
通常,SummarizedExperiment
或RangedSummarizedExperiment
对象由其他包写入的函数返回。方法可以手工创建SummarizedExperiment ()
构造函数。
构建一个RangedSummarizedExperiment
与一个农庄
随着rowRanges论点:
nrows <- 200 ncols <- 6 counts <- matrix(runif(nrows * ncols, 1,1e4), nrows) rowRanges <- GRanges(rep(c("chr1", "chr2"), c(50,150)), IRanges(floor(runif(" 200,1e5, 1e6)), width=100), strand=sample(c("+", "-"), 200, TRUE), feature_id=sprintf("ID%03d", 1:200)) colData <- DataFrame(Treatment=rep(c("ChIP", "Input"), 3), row.names=LETTERS[1:6]) summarize实验(assays=list(counts=counts), rowRanges=rowRanges, colData=colData)
##类:rangedsummarize实验## dim: 200 6 ##元数据(0):## assays(1):计数## rownames: NULL ## rowData names(1): feature_id ## colnames(6): A B…E f# # colData名称(1):治疗
一个SummarizedExperiment
可以用或不提供DataFrame
为rowData论点:
SummarizedExperiment(化验=列表(数量=计数),colData = colData)
##类:summarizeexperiment ## dim: 200 6 ##元数据(0):## assays(1):计数## rownames: NULL ## rowData names(0): ## colnames(6): A B…E f# # colData名称(1):治疗
SummarizedExperiment
[
执行二维子集,就像子集矩阵或数据帧一样。#子集前五个转录本和前三个样本se[1:5, 1:3]
##类:rangedsummarize实验## dim: 5 3 ##元数据(2):“公式## assays(1):计数## rownames(5): ENSG00000000003 ENSG00000000005 ENSG00000000419 ## ENSG00000000457 ENSG00000000460 ## rowData names(0): ## colnames(3): SRR1039508 SRR1039509 SRR1039512 ## colData names(9): SampleName cell…样本BioSample
$
作用于colData ()
列,便于样品提取。se[, se$cell == "N61311"]
##类:rangedsummarizeexperiment ## dim: 64102 2 ##元数据(2):“公式## assays(1):计数## rownames(64102): ENSG00000000003 ENSG00000000005…LRG_98 LRG_99 ## rowData names(0): ## colnames(2): SRR1039508 SRR1039509 ## colData names(9): SampleName cell…样本BioSample
rowRanges ()
/ (rowData ()
),colData ()
,元数据()
counts <- matrix(1:15, 5,3, dimnames=list(LETTERS[1:5], LETTERS[1:3])) dates <- summarizeexperimentation (assays=list(counts=counts), rowData=DataFrame(month=month.name[1:5], day=1:5)) #子集所有一月份的assays日期[rowData(dates)$month == "January",]
##类:summarizeexperiment ## dim: 1 3 ##元数据(0):## assays(1):计数## rownames(1): A ## rowData names(2):月日## colnames(3): A B c# # colData names(0):
分析()
与分析()
有两个访问函数用于从a中提取分析数据SummarizedExperiment
对象。分析()
操作的整个列表的化验数据作为一个整体,而分析()
一次只能操作一种化验。试验(x,我)
是一个简单的方便函数,它等价于化验(x)[[我]]
.化验(se)
长度为1的名称列表(1):计数
化验(se) [[1]] [1:5, 1:5)
## srr1039508 srr1039509 srr1039512 srr1039513 srr1039516 ## ensg00000000003 679 448 873 408 1138 ## ensg00000000005 000000 ## ensg00000000419 467 515 621 365 587 ## ensg00000000457 260 211 263 164 245 ## ensg00000000460 60 55 40 35 78
#化验默认为第一个化验,如果不给I化验(se)[1:5, 1:5]
## srr1039508 srr1039509 srr1039512 srr1039513 srr1039516 ## ensg00000000003 679 448 873 408 1138 ## ensg00000000005 000000 ## ensg00000000419 467 515 621 365 587 ## ensg00000000457 260 211 263 164 245 ## ensg00000000460 60 55 40 35 78
测定(se, 1)[1:5, 1:5]
## srr1039508 srr1039509 srr1039512 srr1039513 srr1039516 ## ensg00000000003 679 448 873 408 1138 ## ensg00000000005 000000 ## ensg00000000419 467 515 621 365 587 ## ensg00000000457 260 211 263 164 245 ## ensg00000000460 60 55 40 35 78
subsetByOverlaps ()
SummarizedExperiment
对象支持所有的findOverlaps ()
方法和相关函数。这包括subsetByOverlaps ()
,这使得子集aSummarizedExperiment
对象。# 1号染色体的区间10万到11万的子集roi <- GRanges(seqnames="1", ranges=100000:1100000) subsetByOverlaps(se, roi)
##类:rangedsummarizeexperimental ## dim: 74 8 ##元数据(2):“公式## assays(1):计数## rownames(74): ENSG00000131591 ENSG00000177757…ENSG00000272512 ## ENSG00000273443 ## rowData names(0): ## colnames(8): SRR1039508 SRR1039509…SRR1039520 SRR1039521 ## colData names(9): SampleName cell…样本BioSample
sessionInfo ()
## R版本3.6.2(2019-12-12)##平台:x86_64-pc-linux-gnu(64位)##运行在:Ubuntu 18.04.3 LTS ## ##矩阵产品:默认## BLAS: /home/biocbuild/bbs-3.10-bioc/R/lib/libRblas。所以## LAPACK: /home/biocbuild/bbs-3.10-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跑龙套数据集# #[8]方法基础# # # #其他附加包:# # [1]testthat_2.3.1 SummarizedExperiment_1.16.1 # # [3] DelayedArray_0.12.1 BiocParallel_1.20.0 # # [5] matrixStats_0.55.0 Biobase_2.46.0 # # [7] GenomicRanges_1.38.0 GenomeInfoDb_1.22.0 # # [9] IRanges_2.20.1 S4Vectors_0.24.1 # # [11] BiocGenerics_0.32.0 BiocStyle_2.14.2 # # # #通过加载一个名称空间(而不是附加):[1] Rcpp_1.0.3 highr_0.8 compiler_3.6.2 ## [4] BiocManager_1.30.10 XVector_0.26.0 bitops_1.0-6 ## [7] tools_3.6.2 zlibbioc_1.32.0 digest_0.6.23 ## [13] Matrix_1.2-18 yaml_2.2.0 xfun_0.11 ## [16] GenomeInfoDbData_1.2.2 withr_2.1.2 string_1 .4.0 ## [19] knitr_1.26 grid_3.6.2 R6_2.4.1 ## [22] rmarkdown_2.0 bookdown_0.16 magrittr_1. 1.5 ## [25] htmltools_0.4.0 ellipsis_0.3.0 stringi_1.4.3 ## [28] RCurl_1.95-4.12