内容

1安装

如果(!需要(“BiocManager”)) install.packages (“BiocManager”) BiocManager::安装(“MultiAssayExperiment”)

加载包:

库(MultiAssayExperiment)库(GenomicRanges)图书馆(SummarizedExperiment)图书馆(RaggedExperiment)

2简要描述

MultiAssayExperiment提供了一个数据结构的表示和分析multi-omics实验:利用多种类型的生物分析方法观察,如DNA突变和丰富的RNA和蛋白质,在同一生物标本。

2.1选择合适的数据结构

为分析不同数量的行和列,MultiAssayExperiment建议。集的化验与相同的信息在所有行(例如,基因或基因组范围),SummarizedExperiment是推荐的数据结构。

3概述的MultiAssayExperiment

这是一个类及其构造函数和提取器的概述:

空< - MultiAssayExperiment()是空的
# # MultiAssayExperiment对象0 # #实验没有列出用户定义的名称和相应的类。# #包含ExperimentList类对象的长度0:# #功能:# # # #实验()——获得ExperimentList实例colData()——主/表型DataFrame # # sampleMap()——样本协调DataFrame # #“美元”,“[”、“[[-提取colData列,子集,或实验# # *()——格式转换成一个长或宽DataFrame # #化验()——ExperimentList转换为一个矩阵的SimpleList # # exportClass()——保存所有数据文件
slotNames(空的)
# # [1]“ExperimentList”“colData”“sampleMap”“滴”# #[5]“元数据”

的视觉表示MultiAssayExperiment类及其accessor函数所示。有三个主要组件:

  1. ExperimentList
  2. colData
  3. sampleMap
MultiAssayExperiment对象示意图显示了基础设施的设计类。colData提供病人的数据,细胞系,或其他生物单位,单位一行和一列变量。实验分析数据集的列表的任意类,每一列的观察。sampleMap链接一个病人数据表(colData)通过一个简单但强大的表列出的实验实验:病人边缘(关系),可以在简单的情况下自动创建或使用电子表格如果assay-specific样本标识符。sampleMap涉及每一列(观察)化验(实验)完全colData一行(生物单元);然而,一排colData可能映射到零,一个,或多个列/试验,允许失踪,复制化验。绿色条纹表示的映射一个话题转到多个观测实验。

图1:MultiAssayExperiment对象示意图显示了基础设施的设计类
colData提供病人的数据,细胞系,或其他生物单位,单位一行和一列变量。实验分析数据集的列表的任意类,每一列的观察。sampleMap链接一个病人数据表(colData)通过一个简单但强大的表列出的实验实验:病人边缘(关系),可以在简单的情况下自动创建或使用电子表格如果assay-specific样本标识符。sampleMap涉及每一列(观察)化验(实验)完全colData一行(生物单元);然而,一排colData可能映射到零,一个,或多个列/试验,允许失踪,复制化验。绿色条纹表示的映射一个话题转到多个观测实验。

3.1组件的MultiAssayExperiment

3.1.1ExperimentList:实验数据

ExperimentList槽和类的容器主力MultiAssayExperiment类。它包含所有的实验数据。它继承自类S4Vectors: SimpleList一个元素/组件/数据类型。

类(实验(空的))# ExperimentList
# # [1]“ExperimentList”# # attr(“包”)# # [1]“MultiAssayExperiment”

的元素ExperimentList可以包含的实名基于范围数据。所有类的要求ExperimentList列出的API。

以下基础和Bioconductor类工作称为ExperimentList的元素:

  • 基地:矩阵:基类,可用于基于id的数据集,如基因表达总结每个基因、代谢组学、微生物微rna,数据。

  • SummarizedExperiment: SummarizedExperiment:丰富的基于id的数据集表示相比,一个普通的矩阵存储额外的分析级元数据的能力。

  • Biobase: ExpressionSet:一个遗产支持的基于id的数据集,表示为了方便和取代SummarizedExperiment

  • SummarizedExperiment: RangedSummarizedExperiment:对于矩形基于范围的数据集,一套基因组范围是多个样本化验。甲基化,它可用于基因表达或其他数据类型,参考基因组的位置。

  • RaggedExperiment: RaggedExperiment:对于基于范围的数据集,如拷贝数和突变数据,RaggedExperiment类可以被用来代表测量通过基因组的位置。

3.1.1.1内部类需求ExperimentList容器

看到API部分有关要求使用其他数据类。一般来说,数据类会议的最低要求,包括支持方括号(构造子集和dimnames ()将默认情况下工作。

中包含的数据集的元素ExperimentList可以有:

  • 列名(必需)
  • 行名称(可选)

列名称对应于样品,用于匹配试验数据样本存储在元数据colData

行名称可以对应不同的功能在数据包括但不限于基因名称、调查id,蛋白质,和命名范围。请注意,“行”名字的存在意味着数据必须是矩形或矩阵像。

类中包含的ExperimentList必须支持以下列表的方法:

  • (:一个方括号构造子集,一个逗号。假设值行,逗号前的子集和价值观逗号后列的子集。
  • dimnames ():相应的特性(如基因、蛋白质等)和实验样本
  • 昏暗的():返回一个向量的行数和列数

3.1.2colData:主数据

MultiAssayExperiment让一组“主”的元数据描述的“生物单位”可以指标本,实验对象,患者,等等。在这个故事中,我们将参考每个实验对象病人

3.1.2.1colData槽的要求

colData数据集应该上课DataFrame但可以接受data.frame类对象,将强迫。

为了生物单元的相关元数据,该行的名字colData数据集必须包含病人标识符。

病人。数据< - data.frame(性= c (“M”、“F”、“M”,“F”),年龄= 38:41 row.names = c(“杰克”,“吉尔”、“Bob”,“芭芭拉”))patient.data
# #性别年龄38 # # # #杰克米吉尔F 39 # #鲍勃40 M F 41 # #芭芭拉

重点:

  • 一行的colData可以映射到零个、一个或多个列ExperimentList元素
  • 每一行的colData必须映射到至少一个列在至少一个ExperimentList元素。
  • 每一列的ExperimentList元素必须映射到完全一行的colData

这些关系的定义sampleMap

3.1.2.2注意的灵活性DataFrame

许多典型的目的DataFramedata.frame行为等价;但是,Dataframe更灵活,因为它允许任何向量数据类型存储在其列。的灵活性DataFrame许可证,例如,存储多个剂量反应值一个细胞系,即使剂量和响应的数量是不一致的在所有的细胞系。剂量可能存储在一个列colData作为一个SimpleList,和响应在另一列,也作为一个SimpleList。或者,剂量反应可以存储在一个单一的列值colData作为一个两列矩阵每个细胞株。

3.1.3sampleMap相关的:colData到多个化验

sampleMap是一个DataFrame与“主”的数据(colData实验分析):

(sampleMap(空)、“DataFrame”) #真的吗
# # [1]

sampleMap提供了一个明确的地图从每个实验观察到有且只有一个colData。然而,容许一行colData与多个实验观察或有关任何观测。换句话说,有一个“多对一”映射从实验观测到的行colData和“one-to-any-number”从一排排的映射colData实验观察。

3.1.3.1sampleMap结构

sampleMap三列,列名如下:

  1. 分析提供的名称不同的实验/试验进行。这些都是用户定义的,唯一要求的名称ExperimentList实验分析存储,必须包含在本专栏。

  2. 提供了“主”样本的名字。在本专栏中所有值也必须rownames的礼物colData (MultiAssayExperiment)。在这个例子中,许用值在本专栏“杰克”,“吉尔”,“芭芭拉”,“鲍勃”。

  3. colname提供了样本实验数据集使用的名称,它在实践中往往不同于主样本的名字。对于每个检测,所有的列名必须在本专栏中找到。否则,这些化验是孤儿:不可能匹配样本在整个实验。正如上面提到的,允许重复的值,代表复制相同的整体实验层次注释。

这个设计是出于以下情况:

  1. 它允许灵活性,任何数量的技术复制和生物复制(如肿瘤和匹配的正常的一个病人)的个人分析。
  2. 它允许失踪的观察(例如RNA-seq仅对一些病人执行)。
  3. 它允许使用不同的标识符用于病人/标本和为每一个分析。这些不同的标识符是明确地匹配,构造子集的过程中保持它们之间的一致性和重新排序。
3.1.3.1.1例子sampleMap不提供

如果每个试验使用相同的colnames(即。,if the same sample identifiers are used for each experiment), a simple list of these datasets is sufficient for theMultiAssayExperiment构造函数。没有必要让他们有相同的rownames或colnames:

exprss1 < -矩阵(rnorm (16), ncol = 4, dimnames =列表(sprintf (“ENST00000%i”,示例(288754:290000 4)),c(“杰克”,“吉尔”、“Bob”、“鲍比”)))exprss2 < -矩阵(rnorm (12), ncol = 3, dimnames =列表(sprintf (“ENST00000%i”,示例(288754:290000 4)),c(“杰克”、“简”、“Bob”))) doubleExp < -列表(“甲基2 k = exprss1甲基3 k = exprss2) simpleMultiAssay < - MultiAssayExperiment simpleMultiAssay(实验= doubleExp)
上市# # # # MultiAssayExperiment对象2实验用用户定义的名称和相应的类。# #包含ExperimentList类对象的长度2:# #[1]甲基2 k:矩阵有4行4列# #[2]甲基3 k:矩阵有4行3列# #功能:# # # #实验()——获得ExperimentList实例colData()——主/表型DataFrame # # sampleMap()——样本协调DataFrame # #“美元”,“[”、“[[-提取colData列,子集,或实验# # *()——格式转换成一个长或宽DataFrame # #化验()——ExperimentList转换为一个矩阵的SimpleList # # exportClass()——保存所有数据文件

在上面的例子中,用户没有提供colData参数的构造函数里面装满了一个空DataFrame:

colData (simpleMultiAssay)
# # DataFrame 5 0行和列

但是,colData可以提供。这里,请注意任何化验样本(列)中的不能映射到一个相应的行colData会下降。这是确保内部效度的部分MultiAssayExperiment

simpleMultiAssay2 < - MultiAssayExperiment(实验= doubleExp colData = patient.data)
# #警告:数据从ExperimentList(元素-列):# #甲基2 k -鲍比# #甲基3 k -简# # colData无法映射到行
# #协调输入:# #删除1 colData rownames不在sampleMap“主”
simpleMultiAssay2
上市# # # # MultiAssayExperiment对象2实验用用户定义的名称和相应的类。# #包含ExperimentList类对象的长度2:# #[1]甲基2 k:矩阵有4行3列# #[2]甲基3 k:具有4行2列的矩阵# #功能:# # # #实验()——获得ExperimentList实例colData()——主/表型DataFrame # # sampleMap()——样本协调DataFrame # #“美元”,“[”、“[[-提取colData列,子集,或实验# # *()——格式转换成一个长或宽DataFrame # #化验()——ExperimentList转换为一个矩阵的SimpleList # # exportClass()——保存所有数据文件
colData (simpleMultiAssay2)
# # DataFrame 3行2列# # # #性别年龄<人物> <整数> 38 # # # #杰克米吉尔F 39 # #鲍勃40米

3.1.4元数据

可以添加元数据在不同的水平MultiAssayExperiment

可以的任何类,用于存储study-wide元数据,比如引用信息。为空MultiAssayExperiment对象,它是空的。

类(元数据(空的))#空(类“任何”)
# #[1]“列表”

ExperimentList水平,元数据功能将允许用户输入作为元数据列表

元数据(实验(空的))
# #列表()

在个体分析水平,某些类可能支持元数据,例如,元数据mcols对于一个SummarizedExperiment。推荐使用元数据ExperimentList的水平。

回到顶部

4创建一个MultiAssayExperiment对象:丰富的例子

在本节中,我们证明所有核心支持数据类,使用不同的样本ID约定对于每个试验,主要colData。一些支持类等,矩阵,SummarizedExperiment,RangedSummarizedExperiment

4.1创建数据集玩具展示所有支持的数据类型

我们有三个矩阵像数据集。首先,让我们代表表达数据SummarizedExperiment:

(arraydat < -矩阵(seq (101、108), ncol = 4, dimnames =列表(c (“ENST00000294241”、“ENST00000355076”), c (“array1”、“array2”,“array3”、“array4”))))
# # # # array1 array2 array3 array4 ENST00000294241 101 103 105 107 102 104 106 108 # # ENST00000355076
coldat < - data.frame (slope53 = rnorm (4), row.names = c (“array1”、“array2”、“array3”、“array4”)) exprdat < - SummarizedExperiment exprdat (arraydat, colData = coldat)
# # # #类:SummarizedExperiment暗淡:2 4 # #元数据(0):# #化验(1):“# # rownames (2): ENST00000294241 ENST00000355076构成了rowData名称(0):# # # # colnames (4): array1 array2 array3 array4 # # colData名称(1):slope53

下面的地图匹配colData样品名称exprdata样品名称。注意,命令行最初不匹配,这是好的。

(exprmap < - data.frame(主= rownames (patient.data) [c (1、2、4、3)], colname = c (“array1”、“array2”,“array3”、“array4”), stringsAsFactors = FALSE))
# #主要colname杰克array1 # # 1 # #芭芭拉array3 2吉尔array2 # # 3 # # 4鲍勃array4

现在甲基化数据,我们将代表作为一个矩阵。它使用基因标识符,但措施部分重叠的一组基因。现在,让我们来存储这个作为一个简单的矩阵可以包含一个复制的一个病人。

(methyldat < -矩阵(1:10,ncol = 5, dimnames =列表(c (“ENST00000355076”、“ENST00000383706”), c (“methyl1”、“methyl2”,“methyl3”、“methyl4”、“methyl5”))))
# # # # methyl1 methyl2 methyl3 methyl4 methyl5 ENST00000355076 1 3 5 7 9 # # ENST00000383706 2 4 6 8 10

下面的地图匹配colData样品名称methyldat样品名称。

(methylmap < - data.frame(主= c(“杰克”,“杰克”,“吉尔”,“芭芭拉”,“鲍勃”),colname = c (“methyl1”、“methyl2”,“methyl3”、“methyl4”、“methyl5”), stringsAsFactors = FALSE))
# #主要colname杰克methyl1 # # 1 # # 2杰克methyl2吉尔methyl3 # # 3 # # 4芭芭拉methyl4 # # 5鲍勃methyl5

现在我们有一个microRNA的平台,没有共同的标识符与其他数据集,我们也代表矩阵。它也为“吉尔”缺失的数据。我们将使用相同的示例命名约定是数组。

(microdat < -矩阵(201:212 ncol = 3, dimnames =列表(c (“hsa-miR-21”、“hsa - mir - 191”,“hsa - mir - 148 a”、“hsa-miR148b”), c (“micro1”、“micro2”,“micro3”))))
# # micro1 micro2 micro3 # # hsa-miR-21 201 205 209 # # hsa - mir - 191 202 206 210 # # hsa - mir - 148 - 203 207 211 # # hsa-miR148b 204 208 212

和下面的地图匹配colData样品名称microdat样品名称。

(micromap < - data.frame(主= c(“杰克”,“芭芭拉”,“鲍勃”),colname = c (“micro1”、“micro2”,“micro3”), stringsAsFactors = FALSE))
# #主要colname杰克micro1 # # 1 # # 2芭芭拉micro2 # # 3鲍勃micro3

最后,我们创建一个数据集的类RangedSummarizedExperiment:

nrows < - 5;ncols < - 4计数< -矩阵(runif (e4 nrows * ncols 1 1), nrows) rowRanges < -农庄(代表(c (“chr1”、“chr2”), c (2, nrows - 2)), IRanges(地板(runif (nrows 1 e5 1 e6)),宽度= 100),链=样本(c (“+”,“-”), nrows,真的),feature_id = sprintf (“ID \ \ % 03 d”, 1: nrows))的名字(rowRanges) < -信[1:5]colData < - DataFrame(治疗=代表(c(“芯片”,“输入”),2),row.names = c (“mysnparray1”、“mysnparray2”、“mysnparray3”、“mysnparray4”))交易所< - SummarizedExperiment(化验= SimpleList(数量=计数),rowRanges = rowRanges colData = colData)

我们地图colData样品的RangedSummarizedExperiment:

(rangemap < - data.frame(主= c(“杰克”,“吉尔”、“Bob”,“芭芭拉”),colname = c (“mysnparray1”、“mysnparray2”,“mysnparray3”、“mysnparray4”), stringsAsFactors = FALSE))
# # 1 # #主要colname杰克mysnparray1 # # 2吉尔mysnparray2鲍勃mysnparray3 # # 3 # # 4芭芭拉mysnparray4

4.2sampleMap创建

MultiAssayExperiment构造函数可以创建sampleMap自动如果使用一个命名约定,但是在这个例子中它不能因为我们使用特定于平台的样品标识符(如mysnparray1等)。所以我们必须提供一个ID映射匹配每个实验的样品回colData作为一个三列data.frameDataFrame有三个列命名为“分析”,主要”,和“colname”。这里我们从一个列表:

listmap < -列表(exprmap、methylmap micromap, rangemap)名称(listmap) < - c (“Affy”、“甲基450 k”,“microrna的”,“CNV gistic”) listmap
Affy美元# # # #主要colname杰克array1 # # 1 # #芭芭拉array3 2吉尔array2 # # 3 # # 4鲍勃array4 # # # #的甲基450 k美元杰克methyl1主colname # # # # 1 # # 2杰克methyl2 # # 3吉尔methyl3 # # 4芭芭拉methyl4鲍勃methyl5 # # 5 # # # # $ microrna的# #主要colname杰克micro1 # # 1 # # 2芭芭拉micro2鲍勃micro3 # # 3 # # # # $ # #的CNV gistic主要colname杰克mysnparray1 # # 1 # # 2吉尔mysnparray2鲍勃mysnparray3 # # 3 # # 4芭芭拉mysnparray4

和使用方便的功能listToMap转换的列表data.frame有效的对象的对象sampleMap:

dfmap < - listToMap dfmap (listmap)
# # DataFrame 16行3列# #试验主要colname # # <因素> <人物> <人物> # # 1 Affy杰克array1 # # 2 Affy吉尔array2 # # 3 Affy芭芭拉array3 # # 4 Affy鲍勃array4 # # 5甲基450 k杰克methyl1 # #……# # 12 microrna的鲍勃micro3 # # 13 CNV gistic杰克mysnparray1 # # 14 CNV gistic吉尔mysnparray2 # # 15 CNV gistic鲍勃mysnparray3 # # 16 CNV gistic芭芭拉mysnparray4

请注意,dfmap可以恢复到与另一个列表提供的功能:

mapToList (dfmap“分析”)

4.3实验数据作为列表()

创建一个命名的实验列表MultiAssayExperiment函数。所有这些名字必须找到在第三列dfmap:

objlist < -列表(“Affy”= exprdat“甲基450 k = methyldat = microdat“microrna的”,“CNV gistic”=的比例

4.4创建MultiAssayExperiment类对象

我们建议使用MultiAssayExperiment构造函数:

myMultiAssay < - MultiAssayExperiment (objlist,耐心。数据,myMultiAssay dfmap)
# # MultiAssayExperiment对象列出的4 # #实验用用户定义的名称和相应的类。# #包含ExperimentList类对象的长度4:# # [1]Affy: SummarizedExperiment 2行4列# #[2]甲基450 k:矩阵2行5列# # [3]microrna:矩阵有4行3列# # [4]CNV gistic: RangedSummarizedExperiment 5行4列# #功能:# # # #实验()——获得ExperimentList实例colData()——主/表型DataFrame # # sampleMap()——样本协调DataFrame # #“美元”,“[”、“[[-提取colData列,子集,或实验# # *()——格式转换成一个长或宽DataFrame # #化验()——ExperimentList转换为一个矩阵的SimpleList # # exportClass()——保存所有数据文件

下面的器函数可以用来获取从对象中提取数据:

实验(myMultiAssay)
# # ExperimentList类对象的长度4:# # [1]Affy: SummarizedExperiment 2行4列# #[2]甲基450 k:矩阵2行5列# # [3]microrna:矩阵有4行3列# # [4]CNV gistic: RangedSummarizedExperiment 5行4列
colData (myMultiAssay)
# # DataFrame 4行2列# # # #性别年龄<人物> <整数> 38 # # # #杰克米吉尔F 39 # #鲍勃40 M F 41 # #芭芭拉
sampleMap (myMultiAssay)
# # DataFrame 16行3列# #试验主要colname # # <因素> <人物> <人物> # # 1 Affy杰克array1 # # 2 Affy吉尔array2 # # 3 Affy芭芭拉array3 # # 4 Affy鲍勃array4 # # 5甲基450 k杰克methyl1 # #……# # 12 microrna的鲍勃micro3 # # 13 CNV gistic杰克mysnparray1 # # 14 CNV gistic吉尔mysnparray2 # # 15 CNV gistic鲍勃mysnparray3 # # 16 CNV gistic芭芭拉mysnparray4
元数据(myMultiAssay)
# #列表()

请注意,ExperimentList类扩展了SimpleList类来添加一些特定于有效性检查MultiAssayExperiment。它可以像一个列表。

4.5创建一个Helper函数MultiAssayExperiment对象

prepMultiAssay在创建函数有助于诊断常见的问题MultiAssayExperiment对象。它提供了错误信息和/或警告(无论是在实例名称colnamesExperimentList元素名称)与sampleMap中发现的不一致。输入参数是相同的MultiAssayExperiment(例如,ExperimentList,colData,sampleMap)。结果的输出prepMultiAssay函数是一个列表的输入,包括“元数据下降美元”元素的名称无法匹配。

例子ExperimentList没有创建名称会提示一个错误prepMultiAssay。命名ExperimentList元素是必不可少的检查MultiAssayExperiment

objlist3 < - objlist(名称(objlist3) < -零)
# #空
试(prepMultiAssay (objlist3,耐心。数据、dfmap)美元实验,outFile = stdout())
# # prepMultiAssay误差(objlist3,耐心。数据,dfmap): # # ExperimentList没有名称,指定名称

也可能出现在匹配的名称ExperimentList元素的“试验”专栏sampleMap。如果名字只相差是相同的和独特的,名字将标准化小写和取代。

名(objlist3) < - toupper(名称(objlist))名称(objlist3)
# # [1]“AFFY”“甲基450 k”“microrna的”“CNV GISTIC”
独特(dfmap[,“分析”)
# # [1]Affy甲基450 k microrna的CNV gistic # #级别:Affy甲基450 k microrna的CNV gistic
prepMultiAssay (objlist3,耐心。数据、dfmap)美元实验
ExperimentList # # # #名不匹配sampleMap化验# #标准化将尝试……
# # -名称设置为小写
# # ExperimentList类对象的长度4:# # [1]affy: SummarizedExperiment 2行4列# #[2]甲基450 k:矩阵2行5列# # [3]microrna:矩阵有4行3列# # [4]cnv gistic: RangedSummarizedExperiment 5行4列

colnamesExperimentList不能匹配回到主数据(colData),这些将被删除和添加到元素。

exampleMap < - sampleMap (simpleMultiAssay2)酸式焦磷酸钠(doubleExp colnames)
# # $甲基2 k的# #[1]“杰克”“吉尔”“Bob”“鲍比”# # # # $甲基3 k的# #[1]“杰克”“Jane”“Bob”
exampleMap
# # DataFrame 5行3列# #试验主要colname # # <因素> <人物> <人物> # # 1甲基2 k杰克杰克# # 2甲基2 k吉尔吉尔# # 3甲基2 k鲍勃鲍勃# # 4甲基3 k杰克杰克# # 5甲基3 k鲍勃鲍勃
prepMultiAssay (doubleExp,耐心。数据、exampleMap)元美元下降
# # # #不是所有colnames ExperimentList在# # sampleMap,减少样本ExperimentList……
# # $甲基2 k的# #[1]“鲍比”# # # # $甲基3 k的# #[1]“简”
# # $”列。甲基2 k的# #[1]“鲍比”# # # # $的列。甲基3 k的# #[1]“简”

执行类似的操作检查“主”sampleMap名称和colDatarownames。在这个例子中,我们添加一行对应于“乔”,没有一个匹配的实验数据。

exMap < - rbind (dfmap DataFrame(化验=“新甲”,主要=“乔”,colname =“乔”))不可见(prepMultiAssay (objlist,耐心。数据,exMap))
# #警告prepMultiAssay (objlist,耐心。数据,exMap):## Lengths of names in the ExperimentList and sampleMap ## are not equal
# # # #不是所有名字的主要列sampleMap # #可以匹配到colData rownames;看到美元下跌
# # DataFrame 1行3列# #试验主要colname # # <因素> <人物> <人物> # # 1新甲基乔乔

创建一个MultiAssayExperiment的结果prepMultiAssay函数,每个对应元素的结果列表,输入参数MultiAssayExperiment构造函数。

预备< - prepMultiAssay (objlist,耐心。数据,exMap)
# #警告prepMultiAssay (objlist,耐心。数据,exMap):## Lengths of names in the ExperimentList and sampleMap ## are not equal
# # # #不是所有名字的主要列sampleMap # #可以匹配到colData rownames;看到美元下跌
# # DataFrame 1行3列# #试验主要colname # # <因素> <人物> <人物> # # 1新甲基乔乔
preppedMulti < - MultiAssayExperiment(预备实验,预备colData美元,预备sampleMap美元,准备接受美元元数据)preppedMulti
# # MultiAssayExperiment对象列出的4 # #实验用用户定义的名称和相应的类。# #包含ExperimentList类对象的长度4:# # [1]Affy: SummarizedExperiment 2行4列# #[2]甲基450 k:矩阵2行5列# # [3]microrna:矩阵有4行3列# # [4]CNV gistic: RangedSummarizedExperiment 5行4列# #功能:# # # #实验()——获得ExperimentList实例colData()——主/表型DataFrame # # sampleMap()——样本协调DataFrame # #“美元”,“[”、“[[-提取colData列,子集,或实验# # *()——格式转换成一个长或宽DataFrame # #化验()——ExperimentList转换为一个矩阵的SimpleList # # exportClass()——保存所有数据文件

另外,使用do.call轻松地创建一个函数MultiAssayExperiment从输出的prepMultiAssay功能:

do.call(MultiAssayExperiment, prepped)
# # MultiAssayExperiment对象列出的4 # #实验用用户定义的名称和相应的类。# #包含ExperimentList类对象的长度4:# # [1]Affy: SummarizedExperiment 2行4列# #[2]甲基450 k:矩阵2行5列# # [3]microrna:矩阵有4行3列# # [4]CNV gistic: RangedSummarizedExperiment 5行4列# #功能:# # # #实验()——获得ExperimentList实例colData()——主/表型DataFrame # # sampleMap()——样本协调DataFrame # #“美元”,“[”、“[[-提取colData列,子集,或实验# # *()——格式转换成一个长或宽DataFrame # #化验()——ExperimentList转换为一个矩阵的SimpleList # # exportClass()——保存所有数据文件

4.6辅助函数来创建Bioconductor类从原始数据

最近的更新GenomicRangesSummarizedExperiment包允许用户创建标准Bioconductor从原始数据类。原始数据读入data.frameDataFrame可以转换为GRangesListSummarizedExperiment根据数据类型的类。

函数创建一个GRangesList从一个data.frame,被称为makeGRangesListFromDataFrame可以找到的吗GenomicRanges包中。makeSummarizedExperimentFromDataFrame是可用的SummarizedExperiment包中。也可以创建一个RangedSummarizedExperiment类对象从原始数据在远程数据是可用的。

一个简单的例子可以从函数文档获得GenomicRanges:

grlls < -列表(对应=代表(“chr1 nrows),开始= >(11、15),结束= seq(12、16),链= c(“+”、“-”、“+”、“*”、“*”),得分= seq(1、5),标本= c (“a”、“a”、“b”,“b”,“c”), gene_symbols = paste0(“基因”,字母(seq_len (nrows)])) grldf < - as.data.frame (grlls stringsAsFactors = FALSE) GRL < makeGRangesListFromDataFrame (grldf,分裂。场=“标本”,名字。场= " gene_symbols”)

这可以被转换成一个RaggedExperiment对象的矩形表示将更容易遵守MultiAssayExperimentAPI要求。

RaggedExperiment (GRL)
# # # #类:RaggedExperiment暗淡:5 3 # #化验(0):# # rownames(5):日内瓦GENEb GENEc基因GENEe # # colnames (3): a b c # # colData名称(0):

请注意。看到RaggedExperiment装饰图案为更多的细节。

SummarizedExperiment包:

sels < -列表(对应=代表(“chr2 nrows),开始= >(11、15),结束= seq(12、16),链= c (“+”、“-”、“+”、“*”、“*”), expr0 = seq (3、7), expr1 = seq (8、12), expr2 = seq (12、16)) sedf < - as.data.frame (sels, row.names = paste0(“基因”,字母(牧师(seq_len (nrows)))), stringsAsFactors = FALSE) sedf
# #杆开始结束链expr0 expr1 expr2 # # GENEe chr2 11 12 + 3 8 12 # #基因chr2 12 13 - 4 9 13 # # GENEc chr2 13 14 + 5 10 14 # # GENEb chr2 14 15 * 6 11 15 # #日内瓦chr2 15 16 * 12 7
makeSummarizedExperimentFromDataFrame (sedf)
# # # #类:RangedSummarizedExperiment暗淡:5 3 # #元数据(0):# #化验(1):“# # rownames (5): GENEe基因GENEc GENEb日内瓦构成了rowData名称(0):# # # # colnames (3): expr0 expr1 expr2 # # colData名称(0):

回到顶部

5综合构造子集在实验

MultiAssayExperiment允许构造子集的行、列和化验,同时rownames, colnames,所有实验,同时保证继续匹配样本。

方括号构造子集可以做最简洁的方法,或更啰嗦地和更灵活subsetBy * ()方法。

5.1构造子集的方括号(

括号内的三个职位操作符显示的行,列,和化验,分别(伪代码):

myMultiAssay(行、列、化验)

例如,选择基因“ENST00000355076”:

myMultiAssay (“ENST00000355076”,)
# #协调输入:# #删除7 sampleMap行不是名字(实验)
上市# # # # MultiAssayExperiment对象2实验用用户定义的名称和相应的类。# #包含ExperimentList类对象的长度2:# # [1]Affy: SummarizedExperiment 1行4列# #[2]甲基450 k:矩阵的行和列5 # #功能:# # # #实验()——获得ExperimentList实例colData()——主/表型DataFrame # # sampleMap()——样本协调DataFrame # #“美元”,“[”、“[[-提取colData列,子集,或实验# # *()——格式转换成一个长或宽DataFrame # #化验()——ExperimentList转换为一个矩阵的SimpleList # # exportClass()——保存所有数据文件

以上操作在所有类型的化验工作,是否实名(如。矩阵,ExpressionSet,SummarizedExperiment)或基于范围(如。RangedSummarizedExperiment)。注意,当使用支架的方法(,论点是下降真正的默认情况下。

子集可以通过行、列和化验在单个支架手术,他们将在这个顺序进行(行、列,然后分析)。下面的选择ENST00000355076基因在所有样本,然后第一个两个样品的测定,最后Affy和甲基450 k化验:

myMultiAssay [“ENST00000355076”, 1:2, c (“Affy”、“甲基450 k”))
# #协调输入:# #删除3 sampleMap行不是名字(实验)
上市# # # # MultiAssayExperiment对象2实验用用户定义的名称和相应的类。# #包含ExperimentList类对象的长度2:# # [1]Affy: SummarizedExperiment 1行2列# #[2]甲基450 k:矩阵1行3列# #功能:# # # #实验()——获得ExperimentList实例colData()——主/表型DataFrame # # sampleMap()——样本协调DataFrame # #“美元”,“[”、“[[-提取colData列,子集,或实验# # *()——格式转换成一个长或宽DataFrame # #化验()——ExperimentList转换为一个矩阵的SimpleList # # exportClass()——保存所有数据文件

5.2构造子集的字符,整数和逻辑

通过列字、整数和逻辑都是允许的,例如:

myMultiAssay(“杰克”,)
# # MultiAssayExperiment对象列出的4 # #实验用用户定义的名称和相应的类。# #包含ExperimentList类对象的长度4:# # [1]Affy: SummarizedExperiment 2行1列# #[2]甲基450 k:矩阵2行2列# # [3]microrna:矩阵有4行1列# # [4]CNV gistic: RangedSummarizedExperiment 5行1列# #功能:# # # #实验()——获得ExperimentList实例colData()——主/表型DataFrame # # sampleMap()——样本协调DataFrame # #“美元”,“[”、“[[-提取colData列,子集,或实验# # *()——格式转换成一个长或宽DataFrame # #化验()——ExperimentList转换为一个矩阵的SimpleList # # exportClass()——保存所有数据文件
myMultiAssay [1]
# # MultiAssayExperiment对象列出的4 # #实验用用户定义的名称和相应的类。# #包含ExperimentList类对象的长度4:# # [1]Affy: SummarizedExperiment 2行1列# #[2]甲基450 k:矩阵2行2列# # [3]microrna:矩阵有4行1列# # [4]CNV gistic: RangedSummarizedExperiment 5行1列# #功能:# # # #实验()——获得ExperimentList实例colData()——主/表型DataFrame # # sampleMap()——样本协调DataFrame # #“美元”,“[”、“[[-提取colData列,子集,或实验# # *()——格式转换成一个长或宽DataFrame # #化验()——ExperimentList转换为一个矩阵的SimpleList # # exportClass()——保存所有数据文件
myMultiAssay [c(真的,假的,假的,假的))
# # MultiAssayExperiment对象列出的4 # #实验用用户定义的名称和相应的类。# #包含ExperimentList类对象的长度4:# # [1]Affy: SummarizedExperiment 2行1列# #[2]甲基450 k:矩阵2行2列# # [3]microrna:矩阵有4行1列# # [4]CNV gistic: RangedSummarizedExperiment 5行1列# #功能:# # # #实验()——获得ExperimentList实例colData()——主/表型DataFrame # # sampleMap()——样本协调DataFrame # #“美元”,“[”、“[[-提取colData列,子集,或实验# # *()——格式转换成一个长或宽DataFrame # #化验()——ExperimentList转换为一个矩阵的SimpleList # # exportClass()——保存所有数据文件

分析-字符,整数,和逻辑允许:

myMultiAssay (,“microrna的”)
# #协调输入:# #删除13 sampleMap行不是名字(实验)# #删除1 colData rownames不在sampleMap“主”
# # MultiAssayExperiment对象1 # #列出实验与一个用户定义的名称和各自的类。包含ExperimentList类对象的长度是1 # #:# # [1]microrna:矩阵有4行3列# #功能:# # # #实验()——获得ExperimentList实例colData()——主/表型DataFrame # # sampleMap()——样本协调DataFrame # #“美元”,“[”、“[[-提取colData列,子集,或实验# # *()——格式转换成一个长或宽DataFrame # #化验()——ExperimentList转换为一个矩阵的SimpleList # # exportClass()——保存所有数据文件
myMultiAssay [3],
# #协调输入:# #删除13 sampleMap行不是名字(实验)# #删除1 colData rownames不在sampleMap“主”
# # MultiAssayExperiment对象1 # #列出实验与一个用户定义的名称和各自的类。包含ExperimentList类对象的长度是1 # #:# # [1]microrna:矩阵有4行3列# #功能:# # # #实验()——获得ExperimentList实例colData()——主/表型DataFrame # # sampleMap()——样本协调DataFrame # #“美元”,“[”、“[[-提取colData列,子集,或实验# # *()——格式转换成一个长或宽DataFrame # #化验()——ExperimentList转换为一个矩阵的SimpleList # # exportClass()——保存所有数据文件
myMultiAssay [,, c(假的,假的,真的,假的,假的))
# #协调输入:# #删除13 sampleMap行不是名字(实验)# #删除1 colData rownames不在sampleMap“主”
# # MultiAssayExperiment对象1 # #列出实验与一个用户定义的名称和各自的类。包含ExperimentList类对象的长度是1 # #:# # [1]microrna:矩阵有4行3列# #功能:# # # #实验()——获得ExperimentList实例colData()——主/表型DataFrame # # sampleMap()——样本协调DataFrame # #“美元”,“[”、“[[-提取colData列,子集,或实验# # *()——格式转换成一个长或宽DataFrame # #化验()——ExperimentList转换为一个矩阵的SimpleList # # exportClass()——保存所有数据文件

5.3“下降”的论点

指定= FALSE下降与零行或零化验列,例如:

myMultiAssay [“ENST00000355076”,,, = FALSE)
# # MultiAssayExperiment对象列出的4 # #实验用用户定义的名称和相应的类。# #包含ExperimentList类对象的长度4:# # [1]Affy: SummarizedExperiment 1行4列# #[2]甲基450 k:矩阵的行和列5 # # [3]microrna:矩阵为0行3列# # [4]CNV gistic: RangedSummarizedExperiment为0行4列# #功能:# # # #实验()——获得ExperimentList实例colData()——主/表型DataFrame # # sampleMap()——样本协调DataFrame # #“美元”,“[”、“[[-提取colData列,子集,或实验# # *()——格式转换成一个长或宽DataFrame # #化验()——ExperimentList转换为一个矩阵的SimpleList # # exportClass()——保存所有数据文件

使用默认= TRUE下降化验,没有行或列删除:

myMultiAssay [“ENST00000355076”,,, = TRUE)
# #协调输入:# #删除7 sampleMap行不是名字(实验)
上市# # # # MultiAssayExperiment对象2实验用用户定义的名称和相应的类。# #包含ExperimentList类对象的长度2:# # [1]Affy: SummarizedExperiment 1行4列# #[2]甲基450 k:矩阵的行和列5 # #功能:# # # #实验()——获得ExperimentList实例colData()——主/表型DataFrame # # sampleMap()——样本协调DataFrame # #“美元”,“[”、“[[-提取colData列,子集,或实验# # *()——格式转换成一个长或宽DataFrame # #化验()——ExperimentList转换为一个矩阵的SimpleList # # exportClass()——保存所有数据文件

5.4多个构造子集的列

实验样本存储在的行colData但列的元素ExperimentList列,所以当我们将构造子集,我们指的是列的实验分析。构造子集样品/列将召回后更加明显colData:

colData (myMultiAssay)
# # DataFrame 4行2列# # # #性别年龄<人物> <整数> 38 # # # #杰克米吉尔F 39 # #鲍勃40 M F 41 # #芭芭拉

构造子集的样本确定所选样本行colData DataFrame,然后选择所有列ExperimentList对应于这些行。这里我们用一个整数来保持colData的前两行,和所有相关实验分析两个主要样本:

myMultiAssay [1:2]
# # MultiAssayExperiment对象列出的4 # #实验用用户定义的名称和相应的类。# #包含ExperimentList类对象的长度4:# # [1]Affy: SummarizedExperiment 2行2列# #[2]甲基450 k:矩阵2行3列# # [3]microrna:矩阵有4行1列# # [4]CNV gistic: RangedSummarizedExperiment 2 5行和列# #功能:# # # #实验()——获得ExperimentList实例colData()——主/表型DataFrame # # sampleMap()——样本协调DataFrame # #“美元”,“[”、“[[-提取colData列,子集,或实验# # *()——格式转换成一个长或宽DataFrame # #化验()——ExperimentList转换为一个矩阵的SimpleList # # exportClass()——保存所有数据文件

注意,上面的操作使不同数量的列/每个样本分析,反映出现实一些样品可能没有被化验在所有的实验中,并有可能在一些复制。

列可以使用一个逻辑子集向量。这里的美元符号操作符(美元访问的一个列colData

malesMultiAssay < - myMultiAssay [myMultiAssay性= =“M”美元]colData (malesMultiAssay)
# # DataFrame 2行2列# # # #性别年龄<人物> <整数> # #杰克40 M 38 # #鲍勃·M

最后,对于特殊用例可以发挥行或列的详细控制构造子集,通过使用一个列表CharacterList子集。下面创建一个CharacterList列名的每个试验:

allsamples < - colnames allsamples (myMultiAssay)
长度4 # # # # CharacterList [[“Affy”]] array1 array2 array3 array4 # #[[“甲基450 k”]] methyl1 methyl2 methyl3 methyl4 methyl5 # # [[“microrna”]] micro1 micro2 micro3 # # [[“CNV gistic”]] mysnparray1 mysnparray2 mysnparray3 mysnparray4

现在让我们摆脱三甲基450 k数组,这些位置3,4,5:

allsamples[["甲基450 k "]] < - allsamples[[“甲基450 k”]] [3: 5] myMultiAssay [, as.list (allsamples))
# #协调输入:# #删除3 sampleMap行colname不在colnames实验
# # MultiAssayExperiment对象列出的4 # #实验用用户定义的名称和相应的类。# #包含ExperimentList类对象的长度4:# # [1]Affy: SummarizedExperiment 2行4列# #[2]甲基450 k:矩阵2行2列# # [3]microrna:矩阵有4行3列# # [4]CNV gistic: RangedSummarizedExperiment 5行4列# #功能:# # # #实验()——获得ExperimentList实例colData()——主/表型DataFrame # # sampleMap()——样本协调DataFrame # #“美元”,“[”、“[[-提取colData列,子集,或实验# # *()——格式转换成一个长或宽DataFrame # #化验()——ExperimentList转换为一个矩阵的SimpleList # # exportClass()——保存所有数据文件
subsetByColumn (myMultiAssay as.list (allsamples)) #等价的
# #协调输入:# #删除3 sampleMap行colname不在colnames实验
# # MultiAssayExperiment对象列出的4 # #实验用用户定义的名称和相应的类。# #包含ExperimentList类对象的长度4:# # [1]Affy: SummarizedExperiment 2行4列# #[2]甲基450 k:矩阵2行2列# # [3]microrna:矩阵有4行3列# # [4]CNV gistic: RangedSummarizedExperiment 5行4列# #功能:# # # #实验()——获得ExperimentList实例colData()——主/表型DataFrame # # sampleMap()——样本协调DataFrame # #“美元”,“[”、“[[-提取colData列,子集,或实验# # *()——格式转换成一个长或宽DataFrame # #化验()——ExperimentList转换为一个矩阵的SimpleList # # exportClass()——保存所有数据文件

5.5构造子集化验

您可以选择某些化验/实验使用子集,通过提供一个性格,逻辑,或整数向量。使用角色:一个例子

myMultiAssay [,, c (“Affy”、“CNV gistic”))
# #协调输入:# #删除8 sampleMap行不是名字(实验)
上市# # # # MultiAssayExperiment对象2实验用用户定义的名称和相应的类。# #包含ExperimentList类对象的长度2:# # [1]Affy: SummarizedExperiment 2行4列# # [2]CNV gistic: RangedSummarizedExperiment 5行4列# #功能:# # # #实验()——获得ExperimentList实例colData()——主/表型DataFrame # # sampleMap()——样本协调DataFrame # #“美元”,“[”、“[[-提取colData列,子集,或实验# # *()——格式转换成一个长或宽DataFrame # #化验()——ExperimentList转换为一个矩阵的SimpleList # # exportClass()——保存所有数据文件

您可以使用逻辑子集化验也或整数向量:

is.cnv < - grepl (CNV,名称(实验(myMultiAssay))) is.cnv
# #[1]假假假真
myMultiAssay, is.cnv #逻辑构造子集
# #协调输入:# #删除12 sampleMap行不是名字(实验)
# # MultiAssayExperiment对象1 # #列出实验与一个用户定义的名称和各自的类。包含ExperimentList类对象的长度是1 # #:# # [1]CNV gistic: RangedSummarizedExperiment 5行4列# #功能:# # # #实验()——获得ExperimentList实例colData()——主/表型DataFrame # # sampleMap()——样本协调DataFrame # #“美元”,“[”、“[[-提取colData列,子集,或实验# # *()——格式转换成一个长或宽DataFrame # #化验()——ExperimentList转换为一个矩阵的SimpleList # # exportClass()——保存所有数据文件
myMultiAssay [,, (is.cnv)] #整数构造子集
# #协调输入:# #删除12 sampleMap行不是名字(实验)
# # MultiAssayExperiment对象1 # #列出实验与一个用户定义的名称和各自的类。包含ExperimentList类对象的长度是1 # #:# # [1]CNV gistic: RangedSummarizedExperiment 5行4列# #功能:# # # #实验()——获得ExperimentList实例colData()——主/表型DataFrame # # sampleMap()——样本协调DataFrame # #“美元”,“[”、“[[-提取colData列,子集,或实验# # *()——格式转换成一个长或宽DataFrame # #化验()——ExperimentList转换为一个矩阵的SimpleList # # exportClass()——保存所有数据文件

5.6构造子集行(特性)id、整数或逻辑值

行分析对应的试验特性或测量,如基因。无论基于id的分析(例如,矩阵,ExpressionSet)或基于范围(例如,RangedSummarizedExperiment),他们可以使用下列部分:

  • 一个特征向量的id匹配rownames在每个试验

  • 一个整数向量这将从每个试验选择行这个职位。这可能没有意义,除非每个ExperimentList元素表示相同的测量相同的顺序,将生成一个错误如果任何整数元素超过在任何的行数ExperimentList元素。最可能的使用作为一个整数构造子集功能,例如看每个试验的前6行。

  • 一个逻辑向量将直接传递给行构造子集为每个试验操作。

  • 一个列表列表匹配的元素名称ExperimentList。构造子集列表的每个元素将被传递到底行相应的元素的子集ExperimentList

任何列表列表输入允许选择性构造子集。构造子集是仅适用于匹配的元素名称ExperimentList。例如,只微数据集的前两行,我们使用一个命名列表指示元素我们想随着子集= FALSE下降论点。

myMultiAssay(列表(microrna = 1:2),)
# # MultiAssayExperiment对象列出的4 # #实验用用户定义的名称和相应的类。# #包含ExperimentList类对象的长度4:# # [1]Affy: SummarizedExperiment 2行4列# #[2]甲基450 k:矩阵2行5列# # [3]microrna:矩阵2行3列# # [4]CNV gistic: RangedSummarizedExperiment 5行4列# #功能:# # # #实验()——获得ExperimentList实例colData()——主/表型DataFrame # # sampleMap()——样本协调DataFrame # #“美元”,“[”、“[[-提取colData列,子集,或实验# # *()——格式转换成一个长或宽DataFrame # #化验()——ExperimentList转换为一个矩阵的SimpleList # # exportClass()——保存所有数据文件
# #等同于subsetByRow (myMultiAssay列表(microrna = 1:2))
# # MultiAssayExperiment对象列出的4 # #实验用用户定义的名称和相应的类。# #包含ExperimentList类对象的长度4:# # [1]Affy: SummarizedExperiment 2行4列# #[2]甲基450 k:矩阵2行5列# # [3]microrna:矩阵2行3列# # [4]CNV gistic: RangedSummarizedExperiment 5行4列# #功能:# # # #实验()——获得ExperimentList实例colData()——主/表型DataFrame # # sampleMap()——样本协调DataFrame # #“美元”,“[”、“[[-提取colData列,子集,或实验# # *()——格式转换成一个长或宽DataFrame # #化验()——ExperimentList转换为一个矩阵的SimpleList # # exportClass()——保存所有数据文件

再一次,这些操作总是返回一个MultiAssayExperiment类,除非= TRUE下降传递给(与任何backet子集ExperimentList元素不包含功能零行。

例如,返回一个MultiAssayExperiment那里Affy甲基450 k只包含“ENST0000035076”“行,和“microrna的”和“CNV gistic“零行(下降参数设置为默认情况下在subsetBy *):

featSub0 < - subsetByRow (myMultiAssay ENST00000355076) featSub1 < - myMultiAssay (“ENST00000355076”,放弃= FALSE) #等价。平等(featSub0 featSub1)
# # [1]
类(featSub1)
# # [1]“MultiAssayExperiment”# # attr(“包”)# # [1]“MultiAssayExperiment”
类(实验(featSub1))
# # [1]“ExperimentList”# # attr(“包”)# # [1]“MultiAssayExperiment”
实验(featSub1)
# # ExperimentList类对象的长度4:# # [1]Affy: SummarizedExperiment 1行4列# #[2]甲基450 k:矩阵的行和列5 # # [3]microrna:矩阵为0行3列# # [4]CNV gistic: RangedSummarizedExperiment 0行和4列

在下面,AffySummarizedExperiment保持两行,但顺序颠倒,甲基450 k仅保留其第二行。

featSubsetted < - subsetByRow (myMultiAssay, c (“ENST00000355076”、“ENST00000294241”))测定(myMultiAssay 1升)
# # # # array1 array2 array3 array4 ENST00000294241 101 103 105 107 102 104 106 108 # # ENST00000355076
分析(featSubsetted 1升)
# # # # array1 array2 array3 array4 ENST00000355076 102 104 106 108 101 103 105 107 # # ENST00000294241

5.7构造子集行(特性)GenomicRanges

MultiAssayExperiment对象包含基于范围对象(目前RangedSummarizedExperiment),这些可以通过一个子集农庄对象,例如:

gr < -农庄(seqnames = c (“chr1”、“chr1”,“chr2”),链= c(“-”、“+”、“+”),范围= IRanges(开始= c(230602、443625、934533),结束= c (330701、443724、934632)))

现在构造子集。函数在这里工作IRanges: subsetByOverlaps——看到它的灵活的类型的构造子集的参数范围。这里是前三个参数子集,其余的传递给IRanges: subsetByOverlaps通过“…”:

子集< - subsetByRow (gr, myMultiAssay maxgap = 2 l, type = "内部")实验(子集)
# # ExperimentList类对象的长度4:# # [1]Affy: SummarizedExperiment为0行4列# #[2]甲基450 k:矩阵为0行5列# # [3]microrna:矩阵为0行3列# # [4]CNV gistic: RangedSummarizedExperiment 0行和4列
rowRanges(子集[[4]])
使用0和1 # #农庄对象元数据列:# # seqnames范围链| feature_id # # < Rle > < IRanges > < Rle > | <人物> # # - - - - - - - # # seqinfo: 2因基因组序列;没有seqlengths

还可以使用方括号构造子集,但是传递参数IRanges: subsetByOverlaps通过“…”是简单的使用subsetByRow ()

5.8构造子集是内变质

subsetByRow,subsetByColumn,subsetByAssay和方括号构造子集都是“内变质”操作,他们总是返回另一个MultiAssayExperiment对象。

5.9双支架构造子集选择实验

双支架操作子集是指一个实验,将返回对象包含在一个ExperimentList元素。它是内变质。例如,第一个ExperimentList被称为“Affy”和包含一个元素SummarizedExperiment:

名(myMultiAssay)
# # [1]“Affy”“甲基450 k”“microrna的”“CNV gistic”
myMultiAssay [[1]]
# # # #类:SummarizedExperiment暗淡:2 4 # #元数据(0):# #化验(1):“# # rownames (2): ENST00000294241 ENST00000355076构成了rowData名称(0):# # # # colnames (4): array1 array2 array3 array4 # # colData名称(1):slope53
myMultiAssay [[" Affy "]]
# # # #类:SummarizedExperiment暗淡:2 4 # #元数据(0):# #化验(1):“# # rownames (2): ENST00000294241 ENST00000355076构成了rowData名称(0):# # # # colnames (4): array1 array2 array3 array4 # # colData名称(1):slope53

回到顶部

6数据清理和管理的助手

6.1complete.cases

complete.cases函数返回一个逻辑向量的colData行识别哪些主要单位对所有实验数据。回想一下,myMultiAssay四个人提供数据:

colData (myMultiAssay)
# # DataFrame 4行2列# # # #性别年龄<人物> <整数> 38 # # # #杰克米吉尔F 39 # #鲍勃40 M F 41 # #芭芭拉

其中,只有杰克所有5实验数据:

complete.cases (myMultiAssay)
# #[1]真的假的真的真的

但所有四个完整的例Affy和甲基450 k:

complete.cases(myMultiAssay[, , 1:2])
# #协调输入:# #删除7 sampleMap行不是名字(实验)
# #[1]真的真的真的真的

这个输出可以用来选择个人完整的数据:

myMultiAssay [complete.cases (myMultiAssay))
# # MultiAssayExperiment对象列出的4 # #实验用用户定义的名称和相应的类。# #包含ExperimentList类对象的长度4:# # [1]Affy: SummarizedExperiment 2行3列# #[2]甲基450 k:矩阵和2行4列# # [3]microrna:矩阵有4行3列# # [4]CNV gistic: RangedSummarizedExperiment 5行3列# #功能:# # # #实验()——获得ExperimentList实例colData()——主/表型DataFrame # # sampleMap()——样本协调DataFrame # #“美元”,“[”、“[[-提取colData列,子集,或实验# # *()——格式转换成一个长或宽DataFrame # #化验()——ExperimentList转换为一个矩阵的SimpleList # # exportClass()——保存所有数据文件

6.2复制

复制功能标识列值或生物单位有多个观察每分析。它返回一个列表LogicalList年代,表明生物单位有一个或多个复制测量。默认输出用于合并复制。

复制(myMultiAssay)
# # $ Affy # # LogicalList长度4 # #[[“杰克”]]假假假假# #[[“吉尔”]]假假假假# #[[“芭芭拉”]]假假假假# # [[“Bob”]]假假假假# # # # $甲基450 k的# # LogicalList长度4 # #[[“杰克”]]真的真的假的假的假的# #[[“吉尔”]]假假假假假# #[[“芭芭拉”]]假假假假假# # [[“Bob”]]假假假假假# # # # $ microrna的# # LogicalList长度3 # #[[“杰克”]]假假假# #[[“芭芭拉”]]假假假# # [[“Bob”]]假假假# # # # $的CNV gistic # # LogicalList长度4 # #[[“杰克”]]假假假假# #[[“吉尔”]]假假假假# # [[“Bob”]]假假假假# #[[“芭芭拉”]]假假假假的

6.3intersectRows

intersectRows函数接受所有常见rownames所有实验并返回MultiAssayExperiment与那些行。

(ensmblMatches < intersectRows (myMultiAssay [, 1:2]))
# #协调输入:# #删除7 sampleMap行不是名字(实验)
上市# # # # MultiAssayExperiment对象2实验用用户定义的名称和相应的类。# #包含ExperimentList类对象的长度2:# # [1]Affy: SummarizedExperiment 1行4列# #[2]甲基450 k:矩阵的行和列5 # #功能:# # # #实验()——获得ExperimentList实例colData()——主/表型DataFrame # # sampleMap()——样本协调DataFrame # #“美元”,“[”、“[[-提取colData列,子集,或实验# # *()——格式转换成一个长或宽DataFrame # #化验()——ExperimentList转换为一个矩阵的SimpleList # # exportClass()——保存所有数据文件
rownames (ensmblMatches)
长度2 # # # # CharacterList [[“Affy”]] ENST00000355076 # #[[“甲基450 k”]] ENST00000355076

6.4intersectColumns

调用intersectColumns返回另一个MultiAssayExperiment列的每个元素在哪里ExperimentList对应的行colData。在许多情况下,该操作返回一个一对一的对应的样本为每个实验测定,除非病人中复制数据。

intersectColumns (myMultiAssay)
# # MultiAssayExperiment对象列出的4 # #实验用用户定义的名称和相应的类。# #包含ExperimentList类对象的长度4:# # [1]Affy: SummarizedExperiment 2行3列# #[2]甲基450 k:矩阵和2行4列# # [3]microrna:矩阵有4行3列# # [4]CNV gistic: RangedSummarizedExperiment 5行3列# #功能:# # # #实验()——获得ExperimentList实例colData()——主/表型DataFrame # # sampleMap()——样本协调DataFrame # #“美元”,“[”、“[[-提取colData列,子集,或实验# # *()——格式转换成一个长或宽DataFrame # #化验()——ExperimentList转换为一个矩阵的SimpleList # # exportClass()——保存所有数据文件

6.5mergeReplicates

mergeReplicates函数允许用户指定一个函数(默认值:的意思是在每个测定元素)结合复制列。这可以结合intersectColumns创建一个MultiAssayExperiment在每个实验对象与一个测量/生物单元。

mergeReplicates (intersectColumns (myMultiAssay))
# #协调输入:# #删除1 sampleMap行colname不在colnames实验
# # MultiAssayExperiment对象列出的4 # #实验用用户定义的名称和相应的类。# #包含ExperimentList类对象的长度4:# # [1]Affy: SummarizedExperiment 2行3列# #[2]甲基450 k:矩阵2行3列# # [3]microrna:矩阵有4行3列# # [4]CNV gistic: RangedSummarizedExperiment 5行3列# #功能:# # # #实验()——获得ExperimentList实例colData()——主/表型DataFrame # # sampleMap()——样本协调DataFrame # #“美元”,“[”、“[[-提取colData列,子集,或实验# # *()——格式转换成一个长或宽DataFrame # #化验()——ExperimentList转换为一个矩阵的SimpleList # # exportClass()——保存所有数据文件

6.6结合c

的结合c函数允许用户添加一个实验,实验已经出现在列表中MultiAssayExperiment。如果对同一组样本的观察,c函数可以方便地引用现有的分析,其中包含相同的订购样品的测量。

mapFrom论证表明什么实验相同的组织样本,将引入的新的实验数据集。如果新实验中的列数不匹配的参考实验,就会抛出一个错误。

在这里,我们介绍一个玩具动态创建的数据集:

c (myMultiAssay ExpScores =矩阵(1:8,ncol = 4,昏暗的=列表(c (“ENSMBL0001”、“ENSMBL0002”), paste0 (“pt”, 1:4))), mapFrom = 1升)
# #警告:假定列顺序提供# #数据匹配的顺序(s) colnames mapFrom的实验
# # MultiAssayExperiment对象列出的5 # #实验用用户定义的名称和相应的类。# #包含ExperimentList类对象的长度5:# # [1]Affy: SummarizedExperiment 2行4列# #[2]甲基450 k:矩阵2行5列# # [3]microrna:矩阵有4行3列# # [4]CNV gistic: RangedSummarizedExperiment 5行4列# # [5]ExpScores:矩阵和2行4列# #功能:# # # #实验()——获得ExperimentList实例colData()——主/表型DataFrame # # sampleMap()——样本协调DataFrame # #“美元”,“[”、“[[-提取colData列,子集,或实验# # *()——格式转换成一个长或宽DataFrame # #化验()——ExperimentList转换为一个矩阵的SimpleList # # exportClass()——保存所有数据文件

请注意:另外,sampleMap可以提供额外的数据集。

回到顶部

7器功能

器功能转换MultiAssayExperiment成其他形式,方便分析。这些通常被称为任意构造子集后执行。

7.1getWithColData

提供了一个分析以及任何相关“colData”列在保持试验类常量。

(affex < - getWithColData (myMultiAssay 1 l))
# #协调输入:# #删除12 sampleMap行不是名字(实验)
# # # #类:SummarizedExperiment暗淡:2 4 # #元数据(0):# #化验(1):“# # rownames (2): ENST00000294241 ENST00000355076构成了rowData名称(0):# # # # colnames (4): array1 array2 array3 array4 # # colData名称(3):slope53性别年龄
colData (affex)
# # DataFrame 4行3列# # # # slope53性年龄<数字> <人物> <整数> # # array1 -0.358624 38 # # -0.561252 array2 39 # # array3 1.493963 F 41 # # array4 1.115796 40
类(affex)
# # [1]“SummarizedExperiment”# # attr(“包”)# # [1]“SummarizedExperiment”

它将目标数据时错误类不支持colData替代方法,也就是说,它通常使用SummarizedExperimentRaggedExperiment化验和他们的扩展名。

7.2longFormat&wideFormat

生产(默认)或DataFrame对象。以下生产很长DataFrame前两个化验(默认):

longFormat (myMultiAssay [, 1:2)
# #协调输入:# #删除7 sampleMap行不是名字(实验)
# # DataFrame与18行5列# #试验主要rowname colname值# # <人物> <人物> <人物> <人物> <整数> # # 1 Affy杰克ENST00000294241 array1 101 # # 2 Affy杰克ENST00000355076 array1 102 # # 3 Affy吉尔ENST00000294241 array2 103 # # 4 Affy吉尔ENST00000355076 array2 104 # # 5 Affy芭芭拉ENST00000294241 array3 105 # #………………# # 14甲基450 k吉尔ENST00000383706 methyl3 6 # # 15甲基450 k芭芭拉ENST00000355076 methyl4 7 # # 16甲基450 k芭芭拉ENST00000383706 methyl4 8 # # 17甲基450 k鲍勃ENST00000355076 methyl5 9 # # 18甲基450 k鲍勃ENST00000383706 methyl5 10

这是特别有用的执行对病人或回归样本数据colData使用pDataCols论点:

longFormat (myMultiAssay, 1:2, colDataCols =“年龄”)
# #协调输入:# #删除7 sampleMap行不是名字(实验)
# # DataFrame与18行6列# #试验主要rowname colname价值时代# # <人物> <人物> <人物> <人物> <整数> <整数> # # 1 Affy杰克ENST00000294241 array1 101 38 # # 2 Affy杰克ENST00000355076 array1 102 38 # # 3 Affy吉尔ENST00000294241 array2 103 39 # # 4 Affy吉尔ENST00000355076 array2 104 39 # # 5 Affy芭芭拉ENST00000294241 array3 105 41 # #…………………# # 14甲基450 k吉尔ENST00000383706 methyl3 6 39 # # 15甲基450 k芭芭拉ENST00000355076 methyl4 7 41 # # 16甲基450 k芭芭拉ENST00000383706 methyl4 8 41 # # 17甲基450 k鲍勃ENST00000355076 methyl5 9 40 # # 18甲基450 k鲍勃ENST00000383706 methyl5 10 40

“宽”格式是用于计算相关性或执行回归对不同基因的特性。宽格式与复制测量一般是不可能的,所以我们将演示在清洗MultiAssayExperiment第一个5列:

maemerge < - mergeReplicates (intersectColumns (myMultiAssay))
# #协调输入:# #删除1 sampleMap行colname不在colnames实验
wideFormat (maemerge colDataCols =“性”)[1:5]
# # DataFrame 3行5列# #主要性Affy_ENST00000294241 Affy_ENST00000355076 # # <人物> <人物> <整数> <整数> # # 1杰克107 101 102 # # 2鲍勃·芭芭拉F 105 106 108 # # 3 # # Methyl.450k_ENST00000355076 # # <数字> # # 1 # # 2 9 # # 3 7

7.3分析/化验

分析(单数)函数接受一个特定的实验,并返回一个矩阵。默认情况下,它将返回第一个实验是一个矩阵。

分析(myMultiAssay)
# # # # array1 array2 array3 array4 ENST00000294241 101 103 105 107 102 104 106 108 # # ENST00000355076

化验(复数)函数返回一个SimpleList的数据矩阵ExperimentList:

化验(myMultiAssay)
长度4 # # # #名单(4):Affy甲基450 k microrna的CNV gistic

8癌症基因组图谱和MultiAssayExperiment

我们最近的工作包括实验数据的发布包,curatedTCGAData。这个包将允许用户有选择地下载癌症数据集从癌症基因组图谱(TCGA)和表示数据MultiAssayExperiment对象。更多细节请参见包一幕。

BiocManager::安装(“curatedTCGAData”)

9维度名称:rownamescolnames

rownamescolnames返回一个CharacterList行名称和列名称在所有化验。一个CharacterList是一种有效的替代吗列表时使用的每个元素包含一个特征向量。它还提供了一个展示方法:

rownames (myMultiAssay)
长度4 # # # # CharacterList [[“Affy”]] ENST00000294241 ENST00000355076 # #[[“甲基450 k”]] ENST00000355076 ENST00000383706 # # [[“microrna”]] hsa-miR-21 hsa - mir - 191 hsa - mir - 148 -一个hsa-miR148b # # [[“CNV gistic”]] a b c d e
colnames (myMultiAssay)
长度4 # # # # CharacterList [[“Affy”]] array1 array2 array3 array4 # #[[“甲基450 k”]] methyl1 methyl2 methyl3 methyl4 methyl5 # # [[“microrna”]] micro1 micro2 micro3 # # [[“CNV gistic”]] mysnparray1 mysnparray2 mysnparray3 mysnparray4

回到顶部

10要求额外的数据类的支持

在任何数据类ExperimentList对象必须支持以下方法:

这是如果不的方法之一:

objlist2 < - objlist objlist2 [[2]] < - as.vector (objlist2[[2]])尝试(MultiAssayExperiment (objlist2,耐心。数据、dfmap),输出文件= stdout ())
# # validObject误差(.Object):无效类“ExperimentList”对象:# #元素[2]类“整数”没有兼容的方法(s): [

11应用程序编程接口(API)

有关的正式API的更多信息MultiAssayExperiment,请参阅API维基文档在GitHub上。一个API包在GitHub通过可供下载安装(“waldronlab / MultiAssayShiny”)。它提供了视觉探索可用的方法MultiAssayExperiment

回到顶部

12方法MultiAssayExperiment

下面的方法定义MultiAssayExperiment:

方法(class = " MultiAssayExperiment”)
# # [1][[< - $ $ < - # # [5][[[[< - anyReplicated化验# #[9]化验c强迫colData # # [13] colData < -完成。c一个ses dimnames experiments ## [17] experiments<- exportClass hasRowRanges isEmpty ## [21] length mergeReplicates metadata metadata<- ## [25] names names<- replicated sampleMap ## [29] sampleMap<- show subsetByAssay subsetByColData ## [33] subsetByColumn subsetByRow updateObject ## see '?methods' for accessing help and source code

13援引MultiAssayExperiment

我们兴奋地宣布官方MultiAssayExperiment的引用癌症研究

引用(“MultiAssayExperiment”)
# # # #在出版物引用MultiAssayExperiment使用:# # # #马塞尔·拉莫斯等。软件的集成在Bioconductor Multiomics # #实验。癌症研究,2017年11月1日;# # 77 (21);e39-42。0008 - 5472 . DOI: 10.1158 /。- 17 - 0344 # # # #一个助理型乳胶用户条目是# # # # @Article{# #标题={软件集成的Multi-Omics实验Bioconductor}, # #作者={马塞尔·拉莫斯卢卡斯希弗和安吉拉再保险和Rimsha Azhar极大Basunia卡门·罗德里格斯卡布瑞拉蒂芙尼Chan和菲利普·查普曼和肖恩·戴维斯和大卫Gomez-Cabrero Aedin c . Culhane和本杰明Haibe-Kains Kasper汉森和Hanish Kodali玛丽Stephie路易和阿尔温德•辛格Mer马库斯拒绝前进和马丁·摩根和文森特·凯莉和李维沃尔德伦},# # ={}癌症研究》杂志上的# #年={2017}={# #卷77 (21);e39-42}, # #}

14sessionInfo ()

sessionInfo ()
# # R版本4.0.3(2020-10-10)# #平台:x86_64-pc-linux-gnu(64位)# #下运行:Ubuntu 18.04.5 LTS # # # #矩阵产品:默认# #布拉斯特区:/home/biocbuild/bbs - 3.12 - bioc / R / lib / libRblas。所以# # LAPACK: /home/biocbuild/bbs - 3.12 - bioc / R / lib / libRlapack。# # # #语言环境:# # [1]LC_CTYPE = en_US。utf - 8 LC_NUMERIC = C # #[3]而= 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 = C LC_TELEPHONE = # # [11] LC_MEASUREMENT = en_US。utf - 8 LC_IDENTIFICATION = C附加基本包:# # # # # #[1]平行stats4统计图形grDevices跑龙套数据集# #[8]方法基础# # # #其他附加包:# # [1]RaggedExperiment_1.14.0 MultiAssayExperiment_1.16.0 # # [3] SummarizedExperiment_1.20.0 Biobase_2.50.0 # # [5] GenomicRanges_1.42.0 GenomeInfoDb_1.26.0 # # [7] IRanges_2.24.0 S4Vectors_0.28.0 # # [9] BiocGenerics_0.36.0 MatrixGenerics_1.2.0 # # [11] matrixStats_0.57.0 BiocStyle_2.18.0 # # # #通过加载一个名称空间(而不是附加):# # [1]pillar_1.4.6 highr_0.8 compiler_4.0.3 # # [4] BiocManager_1.30.10 XVector_0.30.0 R.methodsS3_1.8.1 # # [7] R.utils_2.10.1 bitops_1.0-6 tools_4.0.3 # # [10] zlibbioc_1.36.0 digest_0.6.27 tibble_3.0.4 # # [13] lifecycle_0.2.0 evaluate_0.14 R.cache_0.14.0 # # [16] lattice_0.20-41 pkgconfig_2.0.3 rlang_0.4.8 # # [19] Matrix_1.2-18 DelayedArray_0.16.0 yaml_2.2.1 # # [22] xfun_0.18 R.rsp_0.44.0 GenomeInfoDbData_1.2.4 # # [25] dplyr_1.0.2 stringr_1.4.0 knitr_1.30 # # [28] generics_0.0.2 vctrs_0.3.4 tidyselect_1.1.0 # # [31] grid_4.0.3 glue_1.4.2 R6_2.4.1 # # [34] rmarkdown_2.5 bookdown_0.21 purrr_0.3.4 # # [37] tidyr_1.1.2 magrittr_1.5 ellipsis_0.3.1 # # [40] htmltools_0.5.0 stringi_1.5.3 rcurl_1.98 - 1.2 # # [43] crayon_1.3.4 R.oo_1.24.0

回到顶部