关于 bedtools merge 的详细参数设定可见:

bedtools merge documentation:

https://bedtools.readthedocs.io/en/latest/content/tools/merge.html

默认情况下,bedtools merge 会对所有重叠区间及相邻区间进行合并,例如:

1
2
3
4
5
# 运行前
chr1 10000 10001
chr1 10001 10002
# 运行后
chr1 10000 10002

但在最近遇到的分析场景中,我仅想合并重叠的点并对它们的值求平均,并不想将它们与相邻的点合并起来,例如:

1
2
3
chr1	10000	10001	0.1
chr1 10000 10001 0.2
chr1 10001 10002 0.3

这里我仅想在 chr1:10000-10001 上进行合并且求平均,但此时使用 bedtools merge -c 4 -o mean 会输出以下结果:

1
chr1    10000   10002   0.2

这并不符合我的预期工作情况,在查阅参数说明后,发现了以下关键参数:

  • -d:Maximum distance between features allowed for features to be merged. Default is 0. That is, overlapping and/or features are merged.

这里的 -d 默认值为 0,说明中提到该值会将重叠的以及首尾相接的区间合并到一起,于是乎我尝试了将该参数改为 -1

1
2
3
$ bedtools merge -i test.bed -d -1 -c 4 -o mean
chr1 10000 10001 0.15
chr1 10001 10002 0.3

在设置为 -1 后,bedtools merge 仅对重叠区间进行合并,以下是一个测试:

1
2
3
4
5
6
7
8
# 运行前
chr1 10000 10001 0.1
chr1 10000 10001 0.2
chr1 10001 10009 0.3
chr1 10008 10020 0.4
# 运行后
chr1 10000 10001 0.15
chr1 10001 10020 0.35