什么是bedtools
- bedtools 是一个灵活而强大的用于基因组运算的工具集。
- 号称是适用于各种基因组分析任务的瑞士军刀。
- 它是由Utah大学的Quinlan实验室开发的。
为什么要用bedtools
- 事实上,如果你能比较熟练掌握一门编程语言的话,比如 python、perl、ruby 之类的脚本语言,那么其实可以自己写脚本来实现 bedtools 的各种功能。
- 但是,每次遇到这种问题都要自己写脚本难免有些无聊且浪费时间,既然有人已经把轮子都造好了,我们直接拿来用就好了呀,何况这轮子造得还确实不错。
我们用bedtools都可以做些啥
能做的很多,接下来我随便调几个做个简单的介绍,后面应该会每期介绍一个功能。
- intersect 可以计算两个 bed 文件中基因组坐标位置的交集,这是我第一次接触到 bedtools 时使用到的功能,很好很强大!
- closest 可以找到距离给定区间最近的一个区间,相当于 intersect 的一个补充。
- getfasta 提取指定位置的 DNA 序列,也是很好用的一个功能,反向互补链也可以提,不用自己写脚本提了。(关键是把这些功能集成起来用的时候方便多了。)
- maskfasta 把指定区域的序列 mask 掉,提供了 softmask(替换成小写字母) 和 hardmask(替换成 N) 两种方式。速度很快,python 用字符串切片能慢死......
- merge 把小于一定长度的区间合并起来
- coverage 计算在指定区域的覆盖度,输入可以是 BAM 文件。
- groupby 可以把某几列相同的作为一组,然后以组为单位,对其它几列进行一定的统计操作,比如计数、求和等等。
功能有很多,后面一节一节慢慢讲吧!
结语
bedtools 中的 bed 其实是一种文件格式,从这个工具的名字就可以看出来,它操作的对象主要是 bed 格式的文件。
下一节我们将会介绍 bedtools 的主要输入文件格式。