过滤床文件中的重叠条目

Filter overlapping entries in bed file

提问人:maciek 提问时间:4/16/2017 最后编辑:Timur Shtatlandmaciek 更新时间:10/2/2020 访问量:1996

问:

我有一个床文件,如下所示:

1   183113  183114  chr1:183113-183240  0   +
1   187286  187287  chr1:187128-187287  0   -
1   187576  187587  chr1:187375-187577  0   -
1   187580  187590  chr1:187379-187577  0   -

我的目标是仅提取那些条目不与其他任何条目重叠的行。一段时间以来,我一直在尝试根据文档合并床上工具。我想使用特定的标志来计算构成每个“合并”片段的条目,然后只保留值为“1”的条目,但问题来了:我不知道如何保留有关链、分数(这应该始终为 0)和名称(这可能从前 3 列重建)的信息。 有谁知道如何把这些东西放在一起?

输出应与输入(上)床完全相同,但仅与这些行不与其他任何内容重叠。

1   183113  183114  chr1:183113-183240  0   +
1   187286  187287  chr1:187128-187287  0   -
Bash Shell 生物信息学 工具

评论

0赞 agc 4/16/2017
请附上所需输出的样本。
0赞 maciek 4/16/2017
@agc:编辑后 - 输出格式相同
0赞 agc 4/17/2017
澄清:请附上不完全相同的所需输入和输出的样本。它们可以具有相同的格式,但不能具有完全相同的数据。
0赞 zx8754 4/18/2017
我认为您需要 GenomicRanges 包reduce
0赞 bli 4/18/2017
这可以工作(使用正确的选项):,然后是结果,然后是原始的合并补码?bedtools mergebedtools complementbedtools intersect

答:

3赞 maciek 4/19/2017 #1

好的,我解决了这个问题:

1) 计算原始输入中的重叠项

bedtools merge -i IN.bed -c 1 -o count > counted

2)只过滤掉那些不与任何内容重叠的行

awk '/\t1$/{print}' counted > filtered

3)将其与原始输入相交,并仅保留过滤后找到的原始行

bedtools intersect -a IN.bed -b filtered -wa > OUT.bed