过滤床文件中的重叠条目

时间:2017-04-15 23:11:57

标签: bash shell bioinformatics genome

我的床文件看起来像这样:

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   -

我的目标是仅提取条目与其他条目不重叠的行。有一段时间我一直在根据doc尝试 bedtools merge 。我想使用特定的标志来计算构成每个"合并的条目"片段,然后只保留那些有价值的" 1"但问题出在这里:我不知道如何保留关于链的信息,得分(这应该总是0)和名称(这可能是从前3列重建的)。 有谁知道如何将这些东西放在一起?

输出应该看起来与输入(上方)完全相同,但只有这些行与其他任何内容都不重叠。

1   183113  183114  chr1:183113-183240  0   +
1   187286  187287  chr1:187128-187287  0   -

1 个答案:

答案 0 :(得分:2)

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

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