内容

从尝试开始吧MultiAssayExperiment使用软件包提供的TCGA肾上腺皮质癌(ACC)数据集的子集。该数据集提供了92例患者的5项检测,尽管并非所有5项检测都对每位患者进行:

  1. RNASeq2GeneNorm: RNA-seq测定基因mRNA丰度
  2. gistict:按基因计算的GISTIC基因组拷贝数
  3. RPPAArray:反相蛋白质阵列测定蛋白质丰度
  4. 突变:基因的非沉默体细胞突变
  5. miRNASeqGene:通过microRNA-seq测定microRNA丰度。
suppressPackageStartupMessages({library(MultiAssayExperiment) library(S4Vectors)}) data(miniACC) miniACC
MultiAssayExperiment对象,包含5个实验,用户自定义名称和各自的类。##包含一个长度为5的ExperimentList类对象:## [1]RNASeq2GeneNorm: 198行79列的ExpressionSet ## [2] gistict:总结实验198行90列## [3]RPPAArray: 33行46列的ExpressionSet ##[4]突变:矩阵97行90列## [5]miRNASeqGene: 471行80列的ExpressionSet ##功能:## experiments() -获取ExperimentList实例## colData() -主/表型DataFrame ## sampleMap() -样本可用性DataFrame ## ' $ ', '[', '[[' -提取colData列,子集,或实验## *格式()-转换为长或宽DataFrame ## assays() -转换为矩阵的简单列表

组件槽

colData -信息生物单位

这个槽是DataFrame描述生物单位的特征,例如病人的临床数据。在准备好的数据集中癌症基因组图谱,每一行是一个病人,每列是一个临床、病理、亚型或其他变量。的函数提供访问或设置的快捷方式colData列。

colData (miniACC) [1:4, 1:4]
## 4行4列的数据框##患者号年出生vitital_status日死亡## <字符>    ## TCGA-OR-A5J1 TCGA-OR-A5J1 58 1 1355 ## TCGA-OR-A5J2 TCGA-OR-A5J2 44 1 1677 ## TCGA-OR-A5J3 TCGA-OR-A5J4 23 1 423
表(miniACC种族美元)
## ##亚洲黑人或非洲裔美国人## 2 1 ##白人## 78

重点:

ExperimentList -实验数据

一个基地列表ExperimentList对象,该对象包含所收集样本集的实验数据集。它被转换成一个类ExperimentList在施工期间。

实验(miniACC)
## [1] RNASeq2GeneNorm: ExpressionSet with 198 row and 79 columns ## [2] gistict: summarizeexperimental with 198 row and 90 columns ## [3] RPPAArray: ExpressionSet with 33 row and 46 columns ## [4] Mutations: matrix with 97 row and 90 column ## [5] miRNASeqGene: ExpressionSet with 471 row and 80 column

重点:

sampleMap -关系图

sampleMap是表示生物单位与实验结果之间关系的图形。的列名的简单情况下ExperimentList的行名匹配数据矩阵colData,用户不需要指定或思考一个样本地图,它可以自动创建由MultiAssayExperiment构造函数。sampleMap是简单的三列吗DataFrame

  1. 分析列:化验的名称,并在名称中找到ExperimentList列表名称
  2. 主要的列:标识病人或生物单位,并在行中找到名称colData
  3. colname列:检测结果的标识符,并在列的名称中找到ExperimentListHelper函数可用于从列表创建映射。看到listToMap ?
sampleMap (miniACC)
# # DataFrame 385行3列# #试验主要colname # # <因素> <人物> <人物> # # 1 RNASeq2GeneNorm TCGA-OR-A5J1 TCGA-OR-A5J1-01A-11R-A29S-07 # # 2 RNASeq2GeneNorm TCGA-OR-A5J2 TCGA-OR-A5J2-01A-11R-A29S-07 # # 3 RNASeq2GeneNorm TCGA-OR-A5J3 TCGA-OR-A5J3-01A-11R-A29S-07 # # 4 RNASeq2GeneNorm TCGA-OR-A5J5 TCGA-OR-A5J5-01A-11R-A29S-07 # # 5 RNASeq2GeneNorm TCGA-OR-A5J6 TCGA-OR-A5J6-01A-31R-A29S-07  ## ... ... ... ...385 miRNASeqGene TCGA-PK-A5H8 TCGA-PK-A5H9 TCGA-PK-A5H9- 01a - 11r - a29w -13 TCGA-PK-A5HA TCGA-PK-A5HA- 01a - 11r - a29w -13

重点:

回到顶部

元数据

元数据可用于保存关于患者、对个体或整个队列进行的分析或基因、蛋白质和基因组范围等特征的附加信息。存储元数据有许多可用的选项。首先,MultiAssayExperiment有自己的元数据来描述整个实验:

元数据(miniACC)
## $title ##[1]“肾上腺皮质癌的全面泛基因组特征”## ## $PMID ##[1]“27165744”## ## $ sourceurl# #[1]“http://s3.amazonaws.com/multiassayexperiments/accMAEO.rds”## ## $ rppafeaturedataurl# #[1]“http://genomeportal.stanford.edu/pan-tcga/show_target_selection_file?filename=Allprotein.txt”## ## $ coldataextrasurl# #[1]“http://www.cell.com/cms/attachment/2062093088/2063584534/mmc3.xlsx”

此外,DataFrame使用的类sampleMap而且colData,以及ExperimentList类,同样支持元数据。最后,给出了许多实验数据对象,说明可以在实验中使用ExperimentList支持元数据。这为用户和派生类的开发人员提供了灵活的选择。2021欧洲杯体育投注开户

构造子集

单肘板

在下面的伪代码中,子设置操作作用于以下索引的行:实验数据行2。j主名称或列名(以列表列表) 3。k分析

Multiassayexperiment [i = rownames, j = primary or colnames, k = assay]

子集操作总是返回另一个MultiAssayExperiment.例如,下面将返回任何名为“MAPK14”或“IGFBP2”的行,并删除任何不匹配的行:

miniACC[c("MAPK14", "IGFBP2"),,]

以下仅保留病理阶段iv的患者及其所有相关分析:

miniACC[, miniACC$pathologic_stage == "stage iv",]
##协调输入:##删除311个带有“colname”的sampleMap行,而不是在实验的colname中##删除74个colData行,而不是在sampleMap“primary”中

下面将只保留RNA-seq数据集,并且只保留该检测可用的患者:

miniACC[,, "RNASeq2GeneNorm"]
##协调输入:##删除13个colData行名不在sampleMap 'primary'中

按基因组范围细分

如果任何ExperimentList对象具有由基因组范围表示的特征(例如:RangedSummarizedExperimentRaggedExperiment),然后农庄在第一个子集位置的对象将对这些对象进行子集GenomicRanges: findOverlaps ()

双肘板[[

“双括号”方法([[类的单个元素的方便函数MultiAssayExperimentExperimentList.它避免了使用实验(mae) [l] [1].例如,以下两种方法都提取ExpressionSet包含RNA-seq数据的对象:

miniACC[[1L]] #或等价的,miniACC[["RNASeq2GeneNorm"]]]
## ExpressionSet (storageMode: lockedEnvironment) ## assayData: 198个特征,79个样本##元素名称:exprs ##协议数据:无##表型数据:无## featureData:无##实验数据:使用“实验数据(对象)”##注释:

资料完整的患者

complete.cases ()显示哪些患者拥有所有检测的完整数据:

总结(complete.cases (miniACC))
##模式FALSE TRUE ##逻辑49 43

上述逻辑向量可用于患者的细分。更简单,intersectColumns ()是否会选择完整的案例并重新排列ExperimentList元素,使其列完全对应于的行colData顺序相同:

accmatched = intersectColumns(miniACC)
##协调输入:##删除170个带有“colname”的sampleMap行,而不是在实验的colname中删除49个colData行,而不是在sampleMap“primary”中删除

中分析的列名accmatched由于检测特异性标识符不相同,但它们已自动重新排列,以对应相同的患者。在这些TCGA测试中,前三个-划开的位置与第一个病人的位置相对应TCGA-OR-A5J2

colnames (accmatched)
##长度为5的字符列表[["RNASeq2GeneNorm"]] TCGA-OR-A5J2-01A-11R-A29S-07…“gistict”# # [[]]TCGA-OR-A5J2-01A-11D-A29H-01……“RPPAArray”# # [[]]TCGA-OR-A5J2-01A-21-A39K-20……# #[["变异"]]TCGA-OR-A5J2-01A-11D-A29I-10……“miRNASeqGene”# # [[]]TCGA-OR-A5J2-01A-11R-A29W-13……

在测试中常见的行名

intersectRows ()只保留每个分析共有的行,并将它们按相同的顺序排列。例如,只保留RNA-seq、GISTIC拷贝数和体细胞突变数据可用的基因:

accmatched2 <- intersectRows(miniACC[,, c("RNASeq2GeneNorm", "gistict", "Mutations")]) rownames(accmatched2)
##长度为3的字符列表## [["RNASeq2GeneNorm"]] DIRAS3 G6PD KDR ERBB3…RET CDKN2A MACC1 CHGA ## [["gistict"]] DIRAS3 G6PD KDR ERBB3 AKT1S1…PREX1 RET CDKN2A MACC1 CHGA ##[["突变"]]DIRAS3 G6PD KDR ERBB3 AKT1S1…Ret cdkn2a macc1 chga

回到顶部

提取

化验和测定

分析而且化验方法遵循SummarizedExperiment公约。的分析方法的第一个元素ExperimentList并返回一个矩阵

类(化验(miniACC))
##[1]“矩阵”

化验(复数)方法将返回SimpleList每个元素都是a的数据矩阵

化验(miniACC)
长度为5的名称列表(5):RNASeq2GeneNorm gistict RPPAArray Mutations miRNASeqGene

关键点:

回到顶部

插槽和访问器的摘要

插槽MultiAssayExperiment可以使用它们的访问器函数访问或设置:

访问器
ExperimentList 实验()
colData colData ()而且
sampleMap sampleMap ()
元数据 元数据()

__ * __a上的算子MultiAssayExperiment类的单列colData

转型/重塑

longFormatwideFormat功能将“重塑”,并将实验相互结合和结合colData成一个DataFrame.这些函数提供了与用于回归、机器学习和可视化的大多数常见R/Bioconductor函数的兼容性。

longFormat

格式单列提供所有的化验结果,与其他可选colData其值在必要时重复的列。在这里分析是ExperimentList元素的名称,主要的为患者标识符(colData的行名),rowname是化验行名(在本例中是基因),colname是特定于分析的标识符(列名),价值是数值测量(基因表达,拷贝数,非沉默突变的存在等),并遵循这些是vital_status而且days_to_death已添加的colData列:

longFormat(miniACC[c("TP53", "CTNNB1"),,], colDataCols = c("vital_status", "days_to_death")))
# # # 7 # DataFrame 518行和列分析主要rowname colname # # < Rle > < Rle > <人物> < Rle > # # 1 RNASeq2GeneNorm TCGA-OR-A5J1 TP53 TCGA-OR-A5J1-01A-11R-A29S-07 # # 2 RNASeq2GeneNorm TCGA-OR-A5J1 CTNNB1 TCGA-OR-A5J1-01A-11R-A29S-07 # # 3 RNASeq2GeneNorm TCGA-OR-A5J2 TP53 TCGA-OR-A5J2-01A-11R-A29S-07 # # 4 RNASeq2GeneNorm TCGA-OR-A5J2 CTNNB1 TCGA-OR-A5J2-01A-11R-A29S-07 # # 5 RNASeq2GeneNorm TCGA-OR-A5J3 TP53 TCGA-OR-A5J3-01A-11R-A29S-07  ## ... ... ... ... ...# # 515 # # 514突变TCGA-PK-A5HA CTNNB1 TCGA-PK-A5HA-01A-11D-A29I-10 TCGA-PK-A5HB TP53突变TCGA-PK-A5HB-01A-11D-A29I-10 # # 516突变TCGA-PK-A5HB CTNNB1 TCGA-PK-A5HB-01A-11D-A29I-10 # # 517 TCGA-PK-A5HC TP53突变TCGA-PK-A5HC-01A-11D-A30A-10 # # 518突变TCGA-PK-A5HC CTNNB1 TCGA-PK-A5HC-01A-11D-A30A-10 # #价值vital_status days_to_death # # <数字> <整数> <整数> 563.4006 - 1 # # 1355 # # 1355 # # 3 165.4811 - 1 1677 5634.4669 - 1 # # 4 956.3028 62658.3913 1677 # # 5 0 NA## ... ... ... ... ## 514 0 0 NA ## 515 0 0 NA ## 516 0 0 NA ## 517 0 0 NA ## 518 0 0 NA

wideFormat

格式,每个化验的每个特征放在一个单独的列中,每个主要标识符(患者)有一行。在这里,每个变量都变成一个新列:

wideFormat(miniACC[c("TP53", "CTNNB1"),,], colDataCols = c(" vitital_status ", "days_to_death")))
1 TCGA-OR-A5J1 1 1355 0 ## 2 TCGA-OR-A5J2 1 1677 1 ## 3 TCGA-OR-A5J3 0 NA 0 ## 4 TCGA-OR-A5J4 1 423 0 ## 5 TCGA-OR-A5J5 1 365 0 ## ... ... ... ... ...## 88 TCGA-PK-A5H8 0 NA 0 ## 89 TCGA-PK-A5H9 0 NA 0 ## 91 TCGA-PK-A5HB 0 NA 0 ## 92 TCGA-PK-A5HB 0 NA 0 ##突变s_tp53 RNASeq2GeneNorm_CTNNB1 RNASeq2GeneNorm_TP53 ## <数字> <数字> <数字> ## 11 62658.391 165.4811 ## 30 6337.426 956.3028 ## 40 NA NA ## 5 0 5979.055 1169.6359 ## ... ... ... ...## 890 5258.986 890.8663 ## 90 0 8120.165 683.5722 ## 91 0 5257.815 237.3697 ## 92 0 NA NA ## gistict_CTNNB1 gistict_TP53 ## <数字> <数字> ## 1 0 0 ## 2 1 0 ## 30 0 ## 40 1 ## 5 0 0 ## ... ... ...## 88 na na ## 89 0 0 ## 90 0 -1 ## 91 -1 -1 ## 92 1 1 1

multiassay实验班的构建与衔接

MultiAssayExperiment构造函数

MultiAssayExperiment构造函数可以接受三个参数:

  1. 实验——一个ExperimentList列表的数据
  2. colData——一个DataFrame描述患者(或细胞系或其他生物单位)
  3. sampleMap——一个DataFrame分析主要的,colname标识符

miniACC对象可以重构如下:

MultiAssayExperiment(实验=实验(miniACC), colData=colData(miniACC), sampleMap=sampleMap(miniACC),元数据=元数据(miniACC))
MultiAssayExperiment对象,包含5个实验,用户自定义名称和各自的类。##包含一个长度为5的ExperimentList类对象:## [1]RNASeq2GeneNorm: 198行79列的ExpressionSet ## [2] gistict:总结实验198行90列## [3]RPPAArray: 33行46列的ExpressionSet ##[4]突变:矩阵97行90列## [5]miRNASeqGene: 471行80列的ExpressionSet ##功能:## experiments() -获取ExperimentList实例## colData() -主/表型DataFrame ## sampleMap() -样本可用性DataFrame ## ' $ ', '[', '[[' -提取colData列,子集,或实验## *格式()-转换为长或宽DataFrame ## assays() -转换为矩阵的简单列表

prepMultiAssay构造函数助手

prepMultiAssay函数允许用户在创建对象时诊断典型问题MultiAssayExperiment对象。看到prepMultiAssay ?欲知详情。

c-连接到MultiAssayExperiment

c函数允许用户将额外的实验连接到现有的实验MultiAssayExperiment.可选sampleMap参数允许连接列名与行的名称不匹配的分析colData.为方便起见,mapFrom参数允许用户从一个特定的实验进行映射提供这一订单的冒号之一相同.一个警告将发布这一假设,使用户意识到。例如,要连接log2转换RNA-seq结果的矩阵:

miniACC2 <- c(miniACC, log2rnaseq = log2(assays(miniACC)$RNASeq2GeneNorm), mapFrom=1L)
##在.local(x,…)中的警告:假设所提供的数据中的列顺序与'mapFrom'实验中的colnames中的顺序匹配
实验(miniACC2)
## [1] RNASeq2GeneNorm: 198行79列的ExpressionSet ## [2] gistict:总结实验198行90列## [3]RPPAArray: 33行46列的ExpressionSet ##[4]突变:97行90列的矩阵## [5]miRNASeqGene: 471行80列的ExpressionSet ## [6] log2rnaseq: 198行79列的矩阵

回到顶部

练习

每种测定组合有多少个样品的数据?

解决方案

内置的upsetSamples创建一个“心烦意乱”的维恩图来回答这个问题:

upsetSamples (miniACC)
##加载所需的命名空间:UpSetR

本数据集中仅有43个样本5项检测全部完成,32个样本缺失逆向相蛋白(RPPAArray), 2个样本缺失突变,1个样本缺失gistict, 12个样本仅存在突变和gistict等。

按病理阶段分层的Kaplan-meier图

创建一个Kaplan-meier图,使用pathology_N_stage作为分层变量。

解决方案

colData提供临床数据,如按节点分期分层的总体生存Kaplan-Meier图。

Surv(miniACC$days_to_death, miniACC$ vitital_status)
# # [1] 1355 1677 NA + 423 365 NA + 490 579 NA + 922 551 # # [12] 1750 NA + 2105 NA + 541 NA + NA + 490 NA + NA + 562 # # [23] NA + NA NA + NA + NA + NA + 289 NA + NA + NA + 552 # # [34] NA + NA NA + 994 NA + NA + 498 NA + NA + 344 NA + # # [45] NA + NA + NA + NA + NA + NA + NA + NA + NA + 391 125 # # [56] NA + 1852 NA + NA + NA + NA + NA + NA + NA + 1204 159 # # [67] 1197 662 445 2385 436 1105 NA NA + + 1613 NA + NA + # # [78] 2405 NA + NA + NA + NA + 0 NA NA + 207 + NA + NA + # # [89] NA + NA + NA + 383

并删除所有缺失总体生存信息的患者:

miniACCsurv <- miniACC[,完整。cases(miniACC$days_to_death, miniACC$vital_status), ]
##协调输入:##删除248个带有“colname”的sampleMap行,而不是在实验的colname中##删除58个colData行,而不是在sampleMap“primary”中
fit <- survfit(Surv(days_to_death, vital_status) ~ pathology_N_stage, data = colData(miniACCsurv)) ggsurvplot(fit, data = colData(miniACCsurv), risk。表= TRUE)

多变量Cox回归包括RNA-seq,拷贝数和病理

选择EZH2演示基因。这个子集将删除没有名为EZH2的行:

wideacc = wideFormat(miniACC["EZH2",,], colDataCols=c("vital_status", "days_to_death", "pathology_N_stage")) wideacc$y = Surv(wideacc$days_to_death, wideacc$vital_status) head(wideacc)
# # DataFrame包含6行和7列# #主要vital_status days_to_death pathology_N_stage # # <因素> <整数> <整数> <人物> # # 1 TCGA-OR-A5J1 1 1355 n0 # # 2 TCGA-OR-A5J2 1 1677 n0 # # 3 TCGA-OR-A5J3 0 NA n0 # # 4 TCGA-OR-A5J4 1 423 n1 # # 5 TCGA-OR-A5J5 1 365 n0 # # 6 TCGA-OR-A5J6 0 NA n0 # # RNASeq2GeneNorm_EZH2 gistict_EZH2 y # # <数字> <数字> < Surv > # # 1 75.8886 0 1355:1 # # 2 326.5332 1 1677:1 # # 3 190.1940 - 1 NA: 0 # # 4 NA 2 423:1 # # 5 366.3826 - 1组# # 6 30.7371 - 1 NA: 0

进行多元Cox回归EZH2拷贝数(gistict), log2转换EZH2表达(RNASeq2GeneNorm)和节点状态(pathology_N_stage)作为预测因子:

coxph(Surv(days_to_death, vitital_status) ~ gistict_EZH2 + log2(RNASeq2GeneNorm_EZH2) + pathology_N_stage, data=wideacc)
##调用:## coxph(公式= Surv(days_to_death, vital_status) ~ gistict_EZH2 + ## log2(RNASeq2GeneNorm_EZH2) + pathology_ezh2, data = wideacc) ## ## coef exp(coef) se(coef) z p# # gistict_EZH2 -0.0372 0.9635 0.2821 -0.13 0.89499 ## log2(RNASeq2GeneNorm_EZH2) 0.9773 2.6573 0.2811 3.48 0.00051 ## pathology_N_stagen1 0.3775 1.4586 0.5699 0.66 0.50774 ## ##似然比测试=16.3 on 3 df, p=0.000994 ## n= 26,事件数= 26 ##(66个观测值因缺失而删除)

我们看到了EZH2表达与总生存率显著相关(p < 0.001),但EZH2副本号和节点状态不为。这种分析可以很容易地扩展到全基因组,通过在列上重复单变量回归、惩罚多元回归等方法发现预后特征。

欲了解更多细节,请参阅主要的MultiAssayExperiment小插图。

回到顶部

RNA-seq与拷贝数的相关性

第1部分

对于所有同时存在重复拷贝数(gistict测定)和RNA-seq的基因,计算log2(RNAseq + 1)和拷贝数之间的相关性。创建这些相关性的直方图。将其与所有相关关系的直方图进行比较无与伦比的基因拷贝数对。

解决方案

首先,缩小范围miniACC仅用于所需的检测:

subacc <- miniACC[,, c("RNASeq2GeneNorm", "gistict")]

对齐行和列,只保留样本与两种分析可用:

subacc <- intersectColumns(subacc)
##协调输入:##删除15个带有“colname”的sampleMap行,而不是在实验的colname中##删除不在sampleMap“primary”中的15个colData行
subacc <- intersectRows(subacc)

创建一个数字矩阵列表:

subacc。列表<- assays(subacc)

对数变换RNA-seq检测:

subacc。列表[[1]] <- log2(subacc.list[[1]] + 1)

两者都转置,所以基因在列中:

subacc。列表<- lapply(subacc.list, t)

计算第一个矩阵中的列与第二个矩阵中的列之间的相关性:

Corres <- cor(subacc。列表[[1]], subacc.list[[2]])

最后,创建直方图:

嘘(诊断接头(corr))

嘘(corr [upper.tri (corr)])

第2部分

对于与拷贝数相关性最高的基因,绘制log2表达量与拷贝数的箱线图。

解决方案

首先,确定表达与拷贝数相关性最高的基因:

which.max(诊断接头(corr))
## eif4e ##

现在可以通过从列表subacc.list的每个元素中获取EIF4E列来绘制图形列表那是从前额叶下取出的MultiAssayExperiment,但是我们通过从MultiAssayExperiment

df <- wideFormat(subacc["EIF4E",,]) head(df)
##主RNASeq2GeneNorm_EIF4E gistict_EIF4E ## <因子> <数字> <数字> ## 1 TCGA-OR-A5J2 371.2252 0 ## 3 TCGA-OR-A5J3 516.0717 0 ## 4 TCGA-OR-A5J5 1129.3571 1 ## 5 TCGA-OR-A5J6 822.0782 0 ## 6 TCGA-OR-A5J7 344.5648 -1
boxplot(RNASeq2GeneNorm_EIF4E ~ gistict_EIF4E, data=df, varwidth=TRUE, xlab="GISTIC相对拷贝数调用",ylab="RNA-seq计数")

回到顶部

确定相关的主成分

执行主成分分析的每一个化验,使用样本可在每个化验,日志转换RNA-seq数据首先。使用前10个成分,计算所有得分之间的Pearson相关性,并将这些相关性绘制为热图,以识别各测定的相关成分。

解决方案

这里有一个函数来简化做pca:

getLoadings <- function(x, ncomp=10, dolog=FALSE, center=TRUE, scale.=TRUE){if(dolog){x <- log2(x + 1)} pc = prcomp(x, center=center, scale.=scale.) return(t(pc$rotation[, 1:10]))}

虽然可以使用循环来完成以下操作,但不同的数据类型确实需要不同的PCA选项(例如,突变是0/1矩阵,1表示存在体细胞突变,gistict在-2之间变化,表示纯合子缺失,2表示基因组加倍,因此两者都没有缩放和中心意义)。因此,不妨逐一执行以下操作,将每个PCA结果连接到MultiAssayExperiment:

miniACC2 <- intersectColumns(miniACC)
##协调输入:##删除170个带有“colname”的sampleMap行,而不是在实验的colname中删除49个colData行,而不是在sampleMap“primary”中删除
miniACC2 <- c(miniACC2, rnaseqPCA= getloads (assays(miniACC2)[[1]], dolog=TRUE), mapFrom=1L)
##在.local(x,…)中的警告:假设所提供的数据中的列顺序与'mapFrom'实验中的colnames中的顺序匹配
miniACC2 <- c(miniACC2, gistictPCA=getLoadings(assays(miniACC2)[[2]], center=FALSE, scale.=FALSE), mapFrom=2L)
##在.local(x,…)中的警告:假设所提供的数据中的列顺序与'mapFrom'实验中的colnames中的顺序匹配
miniACC2 <- c(miniACC2, proteinPCA= getloads (assays(miniACC2)[[3]]), mapFrom=3L)
##在.local(x,…)中的警告:假设所提供的数据中的列顺序与'mapFrom'实验中的colnames中的顺序匹配
miniACC2 <- c(miniACC2, mutationsPCA=getLoadings(assays(miniACC2)[[4]], center=FALSE, scale.=FALSE), mapFrom=4L)
##在.local(x,…)中的警告:假设所提供的数据中的列顺序与'mapFrom'实验中的colnames中的顺序匹配
miniACC2 <- c(miniACC2, miRNAPCA= getloads (assays(miniACC2)[[5]]), mapFrom=5L)
##在.local(x,…)中的警告:假设所提供的数据中的列顺序与'mapFrom'实验中的colnames中的顺序匹配

现在要保留子集只有主成分分析结果:

miniACC2 <- miniACC2[,, 6:10]实验(miniACC2)
## [1] rnaseqPCA: 10行43列的矩阵## [2]gistictPCA: 10行43列的矩阵## [3]proteinPCA: 10行43列的矩阵## [4]mutationsPCA: 10行43列的矩阵## [5]miRNAPCA: 10行43列的矩阵

注意,对每个化验的所有样本进行主成分分析同样容易(也许更好),然后在此时改用intersectColumns。

现在,计算相关性和绘制热图的步骤wideFormat将它们粘贴在一起,它具有将分析名称添加到列名的良好属性。*第一列总是包含样本标识符,所以删除它。*计算相关性,并取绝对值(因为主成分的符号是任意的)*设置对角线为NA(每个变量与自身的相关性为1)。

df <- wideFormat(miniACC2)[, -1] mycors <- cor(as.matrix(df)) mycors <- abs(mycors) diag(mycors) <- NA

为了简化热图,只显示至少有一个相关性大于0.5的组件。

has.high.cor <- apply(mycors, 2, max, na.rm=TRUE) > 0.5 mycors <- mycors[has.high. cor, 2, max, na.rm=TRUE)天哪,has.high。c或] pheatmap::pheatmap(mycors)

RNA-seq检测的PC2和蛋白质检测的PC1之间的相关性最高。

回到顶部

使用范围注释

转换所有ExperimentList元素miniACCSummarizedExperiment对象。然后使用rowRanges用基因组范围标注这些物体。对于microRNA检测,取而代之的是用预测靶标的基因组坐标进行注释。

解决方案

首先,创建一个新对象,并将其实验转换为summarizeexperiment对象:

2 . suppressPackageStartupMessages(library(summarizeexperiment)) seACC <- miniACC experiments(seACC)
## [1] RNASeq2GeneNorm: ExpressionSet with 198 row and 79 columns ## [2] gistict: summarizeexperimental with 198 row and 90 columns ## [3] RPPAArray: ExpressionSet with 33 row and 46 columns ## [4] Mutations: matrix with 97 row and 90 column ## [5] miRNASeqGene: ExpressionSet with 471 row and 80 column
seACC[[1]] <- summarizeexperiment (exprs(seACC[[1]])) seACC[[3]] <- summarizeexperiment (exprs(seACC[[3]])) seACC[[4]] <- summarizeexperiment (seACC[[4]]) seACC[[5]] <- summarizeexperiment (exprs(seACC[[5]])) experiments(seACC)
## [1] RNASeq2GeneNorm: 198行79列的总结实验## [2]gistict: 198行90列的总结实验## [3]RPPAArray: 33行46列的总结实验##[4]突变:97行90列的总结实验## [5]miRNASeqGene: 471行80列的总结实验

下面的快捷函数接受人类基因符号列表并使用AnnotationFilter而且EnsDb.Hsapiens.v86查找范围,并返回一个GRangesList,它可以用来替换summarizeexperiment对象的rowRanges:

getrr <- function(identifier, EnsDbFilterFunc="SymbolFilter"){suppressPackageStartupMessages({library(AnnotationFilter) library(EnsDb.Hsapiens.v86)}) FUN <- get(EnsDbFilterFunc) edb <- EnsDb.Hsapiens.v86)v86 afl <- AnnotationFilterList(FUN(identifiers), SeqNameFilter(c(1:21, "X", "Y")), TxBiotypeFilter("protein_coding")) gr <- genes(edb, filter=afl) grl <- split(gr, factor(identifiers)) grl <- grl[match(identifiers, names(grl))] stopifnot(same (names(grl), identifiers) return(grl)}

例如:

getrr (rownames (seACC) [[1]])
包含1个范围和7个元数据列的GRanges对象:## seqnames ranges strand | gene_id ##    |  ## ENSG00000116288 1 [7954291,7985505] + | ENSG00000116288 ## gene_name gene_biotype seq_coord_system symbol ##     ## ENSG00000116288 PARK7 protein_coding染色体PARK7 ## entrezid tx_biotype ##   ## ENSG00000116288 11315 protein_coding ## ## $MAPK14 ## GRanges对象,1个范围和7个元数据列:## eng00000116285 1 [8004404, 8026308] - | ENSG00000116285 ## gene_name gene_biotype seq_coord_system符号## ENSG00000116285 ERRFI1 entrezid tx_biotype ## ENSG00000116285 54206 protein_coding ## ## $YAP1 ## GRanges对象,具有1个范围和7个元数据列:## eng00000198793 1 [11106535, 11262507] - | ENSG00000198793 gene_name gene_biotype seq_coord_system symbol ## ENSG00000198793 MTOR protein_coding染色体MTOR ## entrezid tx_biotype ## ENSG00000198793 2475 protein_coding ## ##…## <195更多元素> ## ------- ## seqinfo: 22个序列来自GRCh38基因组

使用这些GRangesList对象设置实验1-4的rowRanges

(我在1:4){rowRanges (seACC[[我]])< - getrr (rownames (seACC[[我]]))}

注意,实验1-4的类别是现在RangedSummarizedExperiment

实验(seACC)
## [1] RNASeq2GeneNorm: 198行79列的rangedsummarizeexperiment ## [2] gistict: 198行90列的rangedsummarizeexperiment ## [3] RPPAArray: 33行46列的rangedsummarizeexperiment ##[4]突变:97行90列的rangedsummarizeexperiment ## [5] miRNASeqGene: 471行80列的summarizeexperiment

使用MultiAssayExperiment中的远程对象,您可以按范围进行子集设置。例如,选择1号染色体上的所有基因rangedSummarizedExperiment对象:

seACC[GRanges(seqnames="1:1-1e9"),, 1:4]
MultiAssayExperiment对象,包含4个实验,用户自定义名称和各自的类。## [1] RNASeq2GeneNorm: rangedsummarizeexperimental with 22行和79列## [2]gistict: rangedsummarizeexperimental with 22行和90列## [3]RPPAArray: rangedsummarizeexperimental with 3行和46列## [4]Mutations: rangedsummarizeexperimental with 11行和90列##功能:## experiments() -获取ExperimentList实例## colData() -主/表型DataFrame ## sampleMap() -样本可用性DataFrame ## ' $ ', '[', '[[' -提取colData列,子集,或实验## *格式()-转换为长或宽DataFrame ## assays() -转换为矩阵的简单列表

注意microRNA:您可以根据这些microRNA的基因组位置或其预测目标的位置设置microRNA检测的范围,但我们在这里不这样做。分配microRNA目标的基因组范围将是一种简单的方法,根据它们的目标将它们子集。

回到顶部

闪闪发光的应用

maeView。R本研讨会中定义的函数打开了一个用于类似TCGA对象的Shiny应用程序,以识别和可视化RNA-seq表达、GISTIC拷贝数峰值和microRNA表达之间的关系。对于指定的基因,您可以查看表达与拷贝数的箱线图,并使用limma来鉴定与该基因表达相关的microRNA。

MultiAssayExperimentWorkshop: maeView (miniACC)

回到顶部

会话信息

sessionInfo ()
## R版本3.4.1(2017-06-30)##平台:x86_64-pc-linux-gnu(64位)##运行在Ubuntu 16.04.2 LTS下## ##矩阵产品:默认## BLAS: /usr/local/lib/R/lib/ librblas。/usr/local/lib/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 utils数据集##[8]方法基础## ##其他附加包:# # # # [1] EnsDb.Hsapiens.v86_2.99.0 ensembldb_2.1.10 [3] GenomicFeatures_1.29.8 AnnotationDbi_1.39.2 # # [5] AnnotationFilter_1.1.3 SummarizedExperiment_1.7.5 # # [7] DelayedArray_0.3.17 matrixStats_0.52.2 # # [9] Biobase_2.37.2 GenomicRanges_1.29.12 # # [11] GenomeInfoDb_1.13.4 IRanges_2.11.12 # # [13] survminer_0.4.0 ggpubr_0.1.4 # # [15] magrittr_1.5 ggplot2_2.2.1 # # [17] survival_2.41-3 S4Vectors_0.15.5 # # [19] BiocGenerics_0.23.0 MultiAssayExperiment_1.3.20 # # [21] BiocStyle_2.5.8 # # # #通过命名空间(并且没有附加):# # [1] nlme_3.1 - 131 ProtGenerics_1.9.0 # # [3] bitops_1.0-6 cmprsk_2.2-7 # # [5] bit64_0.9-7 httr_1.2.1 # # [7] progress_1.1.2 RColorBrewer_1.1-2 # # [9] rprojroot_1.2 UpSetR_1.3.3 # # [11] R.cache_0.12.0 tools_3.4.1 # # [13] backports_1.1.0 R6_2.2.2 # # [15] DBI_0.7 lazyeval_0.2.0 # # [17] colorspace_1.3-2 prettyunits_1.0.2 # # [19] gridExtra_2.2.1 mnormt_1.5-5 # # [21] curl_2.8.1 bit_1.1-12 # # [23] compiler_3.4.1 rtracklayer_1.37.3 # # [25] labeling_0.3 scales_0.4.1 # # [27] survMisc_0.5.4 psych_1.7.5 # #[37] htmltools_0.3.6 rlang_0.1.1 ## [39] RSQLite_2.0 BiocInstaller_1.27.2 ## [41] shiny_1.0.3 bindr_0.1 ## [43] zoo_1.8-0 BiocParallel_1.11.4 ## [45] dplyr_0.7.2 R.oo_1.21.0 ## [47] RCurl_1.95-4.8 GenomeInfoDbData_0.99.1 ## [49] Matrix_1.2-10 Rcpp_0.12.12 ## [51] munsell_0.4.3 R.methodsS3_1.7.1 ## [53] stringi_1.1.5 yaml_2.1.14 ## [55] zlibbioc_1.23.0 AnnotationHub_2.9.5 ## [57] plyr_1.8.4 grid_3.4.1 ## [59] blob_1.1.0 shinydashboard_0.6.1 ## [61] lattice_0.20-35 Biostrings_2.45.3 ## [63] splines_3.4.1 knitr_1.16 ## [65] biomaRt_2.33.3 reshape2_1.4.2 ## [67] codetools_0.2-15 XML_3.98-1.9 ## [69] glue_1.1.1 evaluate_0.10.1 ## [71] data.table_1.10.4 httpuv_1.3.5 ## [73] gtable_0.2.0 purrr_0.2.2.2 ## [75] tidyr_0.6.3 km.ci_0.5-2 ## [77] assertthat_0.2.0 mime_0.5 ## [79] xtable_1.8-2 broom_0.4.2 ## [81] tibble_1.3.3 pheatmap_1.0.8 ## [83] GenomicAlignments_1.13.4 memoise_1.1.0 ## [85] KMsurv_0.1-5 bindrcpp_0.2 ## [87] interactiveDisplayBase_1.15.0 R.rsp_0.41.0