使用AME进行Motif富集测试

图书馆(文化)suppressPackageStartupMessages(图书馆(GenomicRanges))图书馆(magrittr)

输入序列

AME需要一系列的输入序列来扫描motif富集。runAme ()接受以下格式的序列输入:

请注意XStringSet可以很容易地从GRanges对象生成DNA序列的输入get_sequence ()函数

数据(“example_peaks”包=“模因”BSgenome.Dmelanogaster.UCSC.dm3::BSgenome.Dmelanogaster.UCSC.dm3example_peaks% > %get_sequence(dm.genome)

数据库输入

AME扫描输入序列对数据库的已知主题和测试丰富的每个主题在数据库中。runAme ()可以接受以下格式的数据库:

设置默认数据库

meme可以配置为使用默认的.meme格式文件作为查询数据库,如果用户没有向该文件提供值,它将使用该文件数据库当调用runAme ().将按顺序搜索以下位置。

  1. meme_db选项,使用选项(meme_db = "path/to/database.meme")
  1. MEME_DB定义的环境变量.Renviron

注意:如果在一个选项中发现无效位置,runAme ()如果有效,将回落到下一个位置(例如,如果meme_db选项设置为无效文件,但是MEME_DB环境变量是有效文件,则MEME_DB路径将被使用。

AME运行

runAme ()支持以三种方式运行AME:

AME模式 描述 命令
与重组 输入vs洗牌序列 runAme(input = sequence, control = "shuffle")
区别的 输入与控制序列 runAme(input = sequence, control = control)
分区 按快速分数排列输入 runAme(input = sequence, control = NA)
runAme(序列)
runAme(序列[15],序列[610])

要使用分区模式运行AME, fasta头必须包含“>entry_name score”形式的每个条目的分数值。的get_sequences ()分数参数允许用户将分数值设置为输入区域的列值。

example_peaks% > %plyranges::变异分数=seq_along(。)% > %get_sequence(dm.genome分数=“分数”的名字(sequence_scored) [1
runAme(sequence_scored控制=NA

在多个组上运行AME

如果使用列表输入到runAme (),它将为列表中的每个对象分派多个AME运行。

使用列表输入的鉴别分析

如果输入为runAme ()名单是什么XStringSet对象,控制可以设置为一个或多个值名称(输入)使用这些区域作为背景。它将跳过运行这些区域作为输入。下面的代码将导致这些比较:

  1. 增加vs静态
  2. 递减vs静态

名称中使用了多个名称控制节中,它们将被组合在一起,形成一个用于所有比较的控制集。在这里,我们使用“静态”和“减少”站点作为对照,这将导致只运行1个比较:增加vs静态+减少。

输出格式

AME将返回不同的输出格式,具体取决于方法使用。有关这些值的详细信息,请参见输出说明网页.一般来说,runAme ()将返回与网页中描述的列名相同的列名,只是删除了破折号并且所有列名都是小写的。

$减少% > %的名字

如果runAme ()是由方法= "fisher",序列输出可以通过设置添加到结果中sequences = TRUE.这将被添加为名为序列可以使用tidyr: unnest运算()

将结果可视化为热图

plot_ame_heatmap ()函数提供了一种方法来轻松生成AME结果的可视化。

要绘制多次运行的结果,必须首先将它们连接到一个数据帧中。的ame_by_behavior_vs_static对象是一个列表,其名称对应于E93响应(增加或减少)。该列表可以使用data.frame组合成data.framedplyr: bind_rows.设置.id = "行为。创建一个新列行为控件中的名称ame_by_behavior_vs_static列表。通过这种方式,得到的data.frame包含了每次运行的所有AME结果,这些结果可以通过行为列。

% > %使用dplyr::bind_rows可以轻松组合列表格式的# AME结果# .id将指定一个列来保存列表对象名称dplyr::bind_rows.id =“行为”% > %#将group设置为列名将在y轴上分割结果plot_ame_heatmap组=行为)

复杂热图示例

在制作这些数据的热图可视化时,有几个细微差别。以下示例突出了其中一些问题,并提供了替代方法和解决方案。

我们首先使用不同的绑定站点类别作为输入。

属性可以将多次运行的结果聚合到热图中集团参数plot_ame_heatmap ()

这在这个小插图中有太多的点击,但你可以看到热图将通过它们在组之间的重叠来绘制图案,其中独特的图案在左边,共享的图案在右边。

热图可视化的问题

这些数据中p值的动态范围因组而异。出于这个原因,使用所有数据值缩放的简单热图将更难在具有较低动态值范围的组内解释。换句话说,因为不同实验之间值的动态范围是不同的,将它们放在默认的尺度上进行比较可能并不总是最优的可视化。

我们可以通过用每个TF的归一化秩值填充热图来部分克服这一限制,这解释了AME运行之间所发现的motif总数的差异。虽然它并没有完全消除差异,但组内高级别母题的信号值将更具可比性。然而,规范化的排名可视化消除了所有与统计显著性相关的真实值!相反,此可视化表示AME运行中命中的相对排名,这些命中已经通过了期间设置的显著性阈值runAME ().这意味着即使几个图案具有相似甚至相同的p值,它们的热图表示也将基于它们在结果列表中的排名顺序而呈现不同的颜色值。这通常只在有大量命中时才有用(>=100)。这两种可视化方法都很有用,可以向用户显示数据的不同属性。如果有疑问,更喜欢log10 (adj.pvalue)表示。

下面是使用时值分布的比较log10 (adj.pvalue)(A) vs归一化排名(B)。由于孤点总体上倾向于具有较小的p值,热图比例尺将向孤点数据中的高值倾斜,使异位热值和本向热值相比更轻。

% > %ame_compare_heatmap_methods组=binding_type)

若要使用规范化的秩值,请设置值= "normalize"plot_ame_heatmap ()

该图揭示了在所有3个类别中共享的母题往往在输出中排名较高,而不同类别中独特的母题往往来自较低的排名。这建议三种类型的母题内容虽然存在差异,但母题构成可能基本相似。我们将在“Denovo母题相似性”一节中更详细地研究这个问题。

图书馆(ggplot2)ame_res% > %dplyr::group_by(binding_type motif_alt_id)% > %dplyr::过滤器(adj.pvalue= =最小值(adj.pvalue))% > %plot_ame_heatmap组=binding_type,id =motif_alt_id,值=“正常化”+#所有的ggplot函数都可以用来扩展或编辑热图图ggtitle“价值=\”正常化\”))

还有第三个选项可以重新调整log10 (adj.pvalue)更改热图的最大颜色值。这允许用户维护代表重要性的值,但重新缩放数据以捕获动态范围的低端。使用上面的累积分布图,一个合理的截止点在7和10之间,它捕获了异位和本位部位90%的数据。

这三种方法的比较如下所示。

ame_res% > %dplyr::group_by(binding_type motif_alt_id)% > %dplyr::过滤器(adj.pvalue= =最小值(adj.pvalue))% > %plot_ame_heatmap组=binding_type,id =motif_alt_id)+ggtitle"value = -log10(adj.pvalue)"ame_res% > %dplyr::group_by(binding_type motif_alt_id)% > %dplyr::过滤器(adj.pvalue= =最小值(adj.pvalue))% > %plot_ame_heatmap组=binding_type,id =motif_alt_id,scale_max =7.5+ggtitle"value = -log10(adj.pvalue)(刻度上限为7.5)"

下面是使用log10 (adj.pvalue)vs正常化热图的绘制方法。注意不同的图是如何突出不同的数据属性的。的log10 (adj.pvalue)图显示每个命中的整体意义,而正常化方法中每个命中的相对排序binding_type.降低C)中的最大尺度值比a)在沿异位行和本位行可视化显著性差异方面做得更好,代价是降低孤行的动态范围。选择要发表的可视化在很大程度上取决于上下文,但如果有疑问,最好选择包含统计显著性信息的可视化,如a)或C)。

::plot_grid(pval_heatmapncol =1标签=“汽车”

导入以前的数据

importAme ()可以用来导入ame.tsv之前在MEME服务器上或命令行上运行的文件。关于如何从AME web服务器保存数据的详细信息如下。

可选地,如果AME在命令行上运行——方法费舍尔时,用户可以将路径传递给sequences.tsv文件到序列的观点importAme ()将序列信息附加到AME结果中。

从AME Web服务器保存数据

要从MEME Server下载TSV数据,右键单击AME TSV输出链接并“另存目标为”或“另存链接为”(见下图示例),并另存为<文件名> . tsv.该文件可以使用importAme ()

保存AME tsv结果">
     <p class=保存AME tsv结果

引用

MEME是MEME Suite中一些精选工具的包装器,这些工具是由另一个小组开发的。除了引用模因外,请引用与您使用的工具相对应的MEME Suite工具。

如果你使用runAme ()在你的分析中,请引用:

Robert McLeay和Timothy L. Bailey,“Motif Enrichment Analysis:一个统一的框架和方法评估”,BMC生物信息学,11:165,2010,doi: 10.1186 / 1471-2105-11-165全文

许可限制

MEME Suite对于非营利性用户是免费的,但营利性用户需要购买许可证。看到MEME Suite版权页面获取详细信息。

会话信息

sessionInfo()