Applications of BEDOPS > bedops

bedops merge peaks function (bedops -m)

(1/1)

Bedopsi:
Hello,

I'm quite unfamiliar with bedops and interval operations in general, i was trying out the bedops functions on standard bed files and got confused about the --merge option output.
From the documentation it says:
6.1.1.3.8. Merge (-m, –merge)

The --merge operation flattens all overlapping and adjoining elements into contiguous regions:
,
So i was thinking that if I use 2 bed files, all intervals that appear in only one file, that is, have no overlap, would be left out.
However, when i look at the result, i see those non-overlapping intervals as in the original file, and for the overlapping ones, the full extension that covers both, as expected.

I probably missed some description on this, could you comment a bit?
And could you give some ideas on how to get only the overlapping intervals between sets, extended to the full peak range?

Thanks in advance,
Mafalda.

sjn:
For the second of your questions, perhaps try:
bedops -e -1 file1.bed file2.bed > g1
bedops -e -1 file2.bed file1.bed > g2
bedops -m g1 g2 > answer2.bed

It's a good point on the technical wording of how --merge (-m) works.  We will update the documentation.
Thanks.
Shane

AlexReynolds:
I accidentally deleted my response. I can't remember what I typed, but I think the following is a bit cleaner (one command instead of two).

Here's a way to get all "overlapping-only" elements with a one-liner:

$ bedops --merge elements.bed \
    | bedmap --count --echo-map --delim '\t' - elements.bed \
    | awk '$1>1' - \
    | cut -f2- - \
    | tr ';' '\n' \
    | sort-bed - \
    > overlapping-only.bed

In addition to doing it all without intermediate files, another nice thing about this approach is that this preserves ID and other fields in elements.bed. I think my previous approach may have stripped this information.

If you want the merged regions from these, just add another bedops --merge step at the end:

$ bedops --merge elements.bed \
    | bedmap --count --echo-map --delim '\t' - elements.bed \
    | awk '$1>1' - \
    | cut -f2- - \
    | tr ';' '\n' \
    | sort-bed - \
    | bedops --merge - \
    > overlapping-only-and-merged.bed

To get the set of elements that do not merge (those that are "disjoint"), you can use either of the above results:

$ bedops --not-element-of -1 elements.bed overlapping-only.bed > disjoint.bed

sjn:
The description for bedops --merge has been updated in upcoming release, v2p5p0

Navigation

[0] Message Index

Go to full version