内容

在这个小插图中,我们展示了一个更现实的MIRA工作流,包括添加注释和使用多个样本和区域集。由于涉及的文件比较大,因此只计算这个小插图的后半部分。

1生物问题

尤文氏肉瘤是一种由融合癌蛋白EWS-FLI1(一种转录因子)定义的儿童癌症。我们有尤文氏肉瘤和肌肉相关样本的DNA甲基化数据,我们想用这些数据看看尤文氏肉瘤样本是否可以与肌肉相关样本区分开来。我们还对探索不同基因组区域的调控活性感兴趣。MIRA可以从基因组中共享某些生物注释(如转录因子ChIP区域或DNase超敏位点(DHSs))的感兴趣区域聚合甲基化,以获得这些区域的甲基化概要。MIRA包基于这样一个假设:由于转录因子的结合和更开放的染色质状态,活性基因组区域往往具有较低的DNA甲基化水平,因此甲基化剖面的形状包含了这些区域活性的信息。通过比较剖面和相关分数(根据剖面的形状计算),可以推断出这些区域调节活动的样本之间的差异。我们将使用MIRA将尤文因样本与肌肉样本进行比较,并使用两个区域集:第一个是尤文因特异性DHSs,第二个是肌肉特异性DHSs。

1.1输入:

这个小插图需要大的输入文件,可以在这里下载:MIRA_Ewing_Vignette_Files.tgz.这个档案包含:

2计划工作流程

准备工作:从适当格式化的单核苷酸分辨率甲基化数据、区域集(每个区域都包含与某些生物注释相对应的基因组区域)和具有样本名称(sampleName列)和样本类型(sampleType列)的样本注释文件开始。看到SummarizedExperimentToDataTable ?以选择将其他DNA甲基化包的格式转换为我们的格式。
1.用每个条件/样本类型的一些样本设置每个区域,快速运行MIRA工作流,以确保区域大小是合理的(稍后讨论)。
1.1.聚合跨区域的甲基化数据,得到每个区域集合的MIRA剖面,样本组合。
1.2.计算每个区域集的MIRA得分,根据MIRA剖面的形状进行样本组合。
2.根据初步结果,根据MIRA概要的样子为每个区域集选择一个区域大小。
3.使用选定的区域大小运行完整的MIRA分析。
3.1.聚合跨区域的甲基化数据,得到每个区域集合的MIRA剖面,样本组合。
3.2.计算每个区域集的MIRA得分,根据MIRA剖面的形状进行样本组合。

2.1最初的贯通

首先,让我们加载库并读入数据文件。包中包含了一个示例注释文件:

library(MIRA) library(data.table) #用于函数:fread, setkey, merge library(genome icranges) #用于函数:GRanges, resize library(ggplot2) #用于函数:ylab exampleAnnoDT2 <- fread(system. table) #文件(“extdata”、“exampleAnnoDT2.txt”、包=“米拉”))

接下来,为DNA甲基化样本和区域集构造文件名(通过输入部分)。

# 12 Ewing样本:T1-T12 pathToData <- "/path/to/MIRA_Ewing_Vignette_Files/" ewingFiles <- paste0(pathToData, "EWS_T", 1:12, ".bed") # 12肌肉相关样本,每种类型3个muscleFiles <- c("Hsmm_", "Hsmmt_", "Hsmmfshd_","Hsmmtubefshd_") muscleFiles <- paste0(pathToData, muscleFiles, rep(1:3, each=4), ".bed") RRBSFiles <- c(ewingFiles, muscleFiles) regionSetFiles <- paste0(pathToData, muscleFiles, rep(1:3, each=4), "sknmc_specific. txt ")床”、“muscle_specific.bed”))

让我们把文件读入R:

BSDTList <- lapply(X=RRBSFiles, FUN=BSreadBiSeq) regionSets <- lapply(X=regionSetFiles, FUN=fread)

在将数据插入MIRA之前,我们需要做一些预处理。的BSreadBiSeq函数从软件Biseqmethcalling读取DNA甲基化调用,将甲基化调用读入data.table对象。我们在区域内阅读从文件中读他们也将如此data.table对象。首先,让我们把样本名称添加到甲基化的列表中data.tables.然后我们把区域集从data.table对象农庄对象,包括染色体、开始和结束信息。在大多数情况下,MIRA不需要链信息,应该省略。

names(BSDTList) <- tools::file_path_sans_ext(basename(RRBSFiles)) regionSets <- lapply(X=regionSets, FUN=function(X) setNames(X, c("chr", "start", "end")) regionSets <- lapply(X=regionSets, FUN=function(X) GRanges(seqnames= X $chr, ranges=IRanges(X $start, X $end))

我们还需要选择初始区域大小。为了获得我们感兴趣地点周围的甲基化剖面,我们将区域大小调整到5000 bp。此外,对集合中的所有区域使用相同的区域大小将使最终的甲基化概要更容易解释。与区域集的平均区域大小(两个区域集都在151 bp左右)相比,这是一个较宽的初始猜测,但我们稍后将对此进行调整。

regionSets[[1]] <- resize(regionSets[[1]], 5000, fix="center") regionSets[[2]] <- resize(regionSets[[2]], 5000, fix="center") names(regionSets) <- c("Ewing_Specific", "Muscle_Specific")

现在我们准备在样本的一个子集上运行MIRA——三个尤因样本和三个肌肉样本。首先,我们将甲基化数据聚合到aggregateMethyl.MIRA将每个区域划分为不同的容器,并在每个区域的每个容器中发现甲基化。然后在所有区域聚合匹配的箱子(所有的箱子1在一起,所有的箱子2在一起,等等)。垃圾箱编号(binNum)将影响数据的分辨率或噪声——较高的仓数将允许更高的分辨率,因为每个仓对应的基因组区域较小,但由于每个仓中的甲基化数据较少,可能会增加噪声。为了对称和MIRA评分,建议使用奇数仓号。

subBSDTList <- BSDTList[c(1,5,9,13,17,21)] bigBin <- lapply(X=subBSDTList, FUN= aggregatem乙基,GRList=regionSets, binNum=21, minBaseCovPerBin=0)

然后我们将所有样本合并为一个data.table并根据列表项的名称为示例名称添加一列:

bigBinDT1 <- rbindNamedList(bigBin, newColName = "sampleName")

如果您在自己的设备上运行实际示例,则可以跳过以下步骤。否则,让我们加载打包的甲基化数据(bigBinDT1),这是通过上一步得到的。

MIRA包数据(bigBinDT1)

接下来我们添加注释数据:每个样本的实验条件或样本类型。这是根据样本类型对样本进行分组所必需的,我们将在绘制甲基化剖面和MIRA评分时进行分组。我们将使用函数data.table包来做此操作,合并基于sampleName列。

setkey(bigBinDT1, sampleName) bigBinDT1 <- merge(bigBinDT1, exampleAnnoDT2, all.x=TRUE)

让我们看看MIRA概要文件,看看是否应该更改区域大小。

plotMIRAProfiles (binnedRegDT = bigBinDT1)

2.2选择合适的区域大小

虽然甲基化剖面看起来很好,但当观察肌肉特定区域集时,对肌肉相关样本来说,降幅有点太窄。如果凹陷过窄,MIRA中的评分函数可能会遇到问题,因为它预计凹陷从外缘到外缘至少有5个箱宽(这个数字包括外缘)。让我们对两个区域集使用较小的区域大小:尤因DHS区域为4000 bp,肌肉DHS区域为1750 bp(选择有点随意)。区域的大小不宜缩小太多;如果区域太小,可能会有更多的噪音,因为每个容器的甲基化数据会更少。此外,区域必须足够宽,以捕捉倾角的外边缘,因为外边缘用于MIRA评分。

要实现我们的新区域大小:

regionSets[[1]] <- resize(regionSets[[1]], 4000, fix="center") # Ewing regionSets[[2]] <- resize(regionSets[[2]], 1750, fix="center") #肌肉

2.3全面的米拉分析

现在我们可以用所有样本运行MIRA。让我们把甲基化数据再次汇总aggregateMethyl

(X=BSDTList, FUN= aggregatem乙基,GRList=regionSets, binNum=21, minBaseCovPerBin=0) bigBinDT2 <- rbindNamedList(bigBin)

如果您在自己的设备上运行实际示例,则可以跳过以下步骤。否则,让我们加载打包的甲基化数据(bigBinDT2),这是通过上一步得到的。

# MIRA包数据(bigBinDT2)

我们使用与前面相同的过程添加注释数据:

#数据。table函数用于将注释对象中的信息添加到bigBinDT2 setkey(exampleAnnoDT2, sampleName) setkey(bigBinDT2, sampleName) bigBinDT2 <- merge(bigBinDT2, exampleAnnoDT2, all.x=TRUE)

让我们看看MIRA的配置文件:

plotMIRAProfiles (binnedRegDT = bigBinDT2)

接下来,我们规范化归档的甲基化数据(MIRA配置文件)。通过从每个样本/区域集组合中减去最小甲基化bin值进行归一化处理,通常会使中心MIRA剖面得到相似的甲基化值,使MIRA得分更多地与剖面的形状有关,而较少地与平均甲基化有关。我们用data.table语法。

bigBinDT2[, methylProp:= methylProp - min(methylProp) + .05, by=。(featureID sampleName))
normPlot <- plotMIRAProfiles(binnedRegDT=bigBinDT2)

现在我们可以计算所有样本的MIRA分数calcMIRAScore函数。

- calcMIRAScore(bigBinDT2, shoulderShift="auto", regionSetIDColName="featureID", sampleIDColName="sampleName") head(sampleScores)
## 1: Ewing_Specific EWS_T1 2.180698 ## 2: Ewing_Specific EWS_T10 2.114649 ## 3: Ewing_Specific EWS_T11 2.064900 ## 4: Ewing_Specific EWS_T12 2.290313 ## 5: Ewing_Specific EWS_T2 1.987881 ## 6: Ewing_Specific EWS_T3 2.230074

最后,让我们重新添加注释数据并查看分数!

setkey(exampleAnnoDT2, sampleName) setkey(sampleScores, sampleName) sampleScores <- merge(sampleScores, exampleAnnoDT2, all.x=TRUE) plotMIRAScores(sampleScores)
##警告:不赞成指定' guide = FALSE '来删除参考线。请##使用' guide = "none"代替。

3.解释结果

正如预期的那样,我们发现尤因肉瘤样本对尤因特异性DHSs有较高的MIRA评分,这意味着尤因特异性区域有更多的活性。肌肉特异性DHSs需要更多的解释。肌肉样本平均MIRA得分较高,但组间没有完全分离。这表明尤因的样本在肌肉特定区域仍然有一些活动。如果我们想看看两组之间的差异是否具有统计学意义,我们可以使用Wilcoxon秩和检验(t检验的非参数平行)。首先,我们对特定于ewing的区域集这样做。

[sampleScores$sampleType == "Ewing" & sampleScores$featureID == "Ewing_Specific",] myoSampleEwingRegions <- sampleScores[sampleScores$sampleType == " muscle related" & sampleScores$featureID == "Ewing_Specific",] wilcox。测试(EwingSampleEwingRegions得分,美元美元myoSampleEwingRegions分数)
## ## Wilcoxon秩和精确检验## ## data: EwingSampleEwingRegions$score and myoSampleEwingRegions$score ## W = 144, p-value = 7.396e-07 ##备选假设:真实位置偏移不等于0

接下来,我们对肌肉特定区域集进行操作。

[sampleScores$sampleType == "Ewing" & sampleScores$featureID == "Muscle_Specific",] myoSampleMyoRegions <- sampleScores[sampleScores$sampleType == " muscle related" & sampleScores$featureID == "Muscle_Specific",] wilcox。测试(EwingSampleMyoRegions得分,美元美元myoSampleMyoRegions分数)
## ## Wilcoxon秩和精确检验## ## data: EwingSampleMyoRegions$score and myoSampleMyoRegions$score ## W = 40, p-value = 0.06836 ##备选假设:真实位置偏移不等于0

我们可以看到,样本组在一个区域(尤因区域)有显著差异,但在另一个(肌肉区域)没有差异。

4一般口译提示和注意事项

一般来说,解释将取决于所使用的样本和区域集。虽然我们已经发现MIRA在推断转录因子调控活性方面很有用,但我们也必须记住,MIRA评分只是对转录因子活性的间接推断。甲基化谱可能受到除感兴趣的TF外的其他TF的影响。因此,有可能一个样本对TF结合区域的MIRA评分比另一个样本高,但对该TF的活性更低(但可能对碰巧也在同一区域的其他调控元素的活性更高)。使用TF结合区域集,我们真正测量的只是一个样本中TF结合的区域相对于另一个样本的活性发生了变化。要记住的主要事情是,MIRA推断出你给它的区域的一般调节活性,生物学解释取决于你使用的样本和区域的类型(生物注释以及源组织/细胞类型)。

5使用MIRA的其他提示

说到MIRA, lapply是您的朋友(尽管这通常是正确的)。这允许使用mclapply平行包)或bplapplyBiocParallel如果需要的话)。