【问题标题】:Filter overlapping entries in bed file过滤床文件中的重叠条目
【发布时间】:2020-10-02 23:09:35
【问题描述】:

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

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   -

【问题讨论】:

  • 请提供所需输出的样本。
  • @agc : 编辑后的输出格式相同
  • 澄清:请附上不完全相同的所需输入和输出的样本。它们可以具有相同的格式,但不能具有完全相同的数据。
  • 我认为你需要来自GenomicRanges packagereduce
  • 这可以工作吗(使用正确的选项):bedtools merge,然后在结果上bedtools complement,然后在原始的bedtools intersect 上加上合并的补充?

标签: bash shell bioinformatics bed bedtools


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多