好物分享——R语言版本的bedtools
不要重复造轮子
——“哈喽,能请教你一下怎样在R server中调用Linux下的工具?”
——“你为什么要这么做呢?”
——“我想把Linux工具输出的结果直接在R中分析,不想换来换去”
bedtools是一个非常香的工具,几乎是人尽皆知,是一个强大的处理bed等文件的工具,正如其自己描述的一样:a powerful toolset for genome arithmetic。bedtools目前只支持在Linux下以命令行的形式运行,所以我们经常会遇到上面的问题。
那么如何解决呢?给大家分享一个好物,既然我们不想在Linux下运行bedtools,那为什么不在R下运行呢?感谢北卡罗来纳大学教堂山分校的Phanstiel Lab给了我们这样的机会,开发出了R下的bedtools——bedtoolsr。不过,有喜必有悲,看下面这句话:
bedtoolsr
should work on any system with R and bedtools installed. It has been tested on macOS (version 10.14 "Mojave") and Linux (Ubuntu version 18.04). bedtools is not available for Windows; however, you can either use a virtual machine or Windows Subsystem for Linux. In either case, R from the Windows side would not be able to access bedtools running on the Linux side, so R and bedtoolsr
would also have to be installed on the Linux side.
这意味着这个工具必须要R和Linux下的bedtools,否则将无法工作!所以我推荐在R server下使用了~
安装
#install.packages("devtools")
library(devtools)
devtools::install_github("PhanstielLab/bedtoolsr")
使用示例
bedtools intersect ~ bt.intersect
bedtools intersect的功能不用多介绍,直接上图:
这个图到处都能见到,还不知道的朋友可以去随便查查bedtools intersect是干嘛的,你一定会觉得非常有用,那么这个功能对应R包bedtoolsr中的函数就是bt.intersect。
?bt.intersect
bt.intersect(
a,
b,
wa = NULL,
wb = NULL,
loj = NULL,
wo = NULL,
wao = NULL,
u = NULL,
c = NULL,
C = NULL,
v = NULL,
ubam = NULL,
s = NULL,
S = NULL,
f = NULL,
F = NULL,
r = NULL,
e = NULL,
split = NULL,
g = NULL,
nonamecheck = NULL,
sorted = NULL,
names = NULL,
filenames = NULL,
sortout = NULL,
bed = NULL,
header = NULL,
nobuf = NULL,
iobuf = NULL,
output = NULL
)
这不是和bedtools intersect功能选项几乎一模一样?
这里还是用官网的示例数据来做,主要是想输出有交集的染色体坐标区间及相交区域的大小:
#build bed files
A.bed <- data.frame(chrom=c("chr1", "chr1"), start=c(10, 30), end=c(20, 40))
B.bed <- data.frame(chrom=c("chr1"), start=15, end=20)
#bedtools intersect ~ bt.intersect
bedtoolsr::bt.intersect(a = A.bed, b = B.bed, wo = T)
#output
V1 V2 V3 V4 V5 V6 V7
1 chr1 10 20 chr1 15 20 5
更多的功能就待大家去探索了~把这个包支持的函数全部列在下面了,对应bedtools的工具找就好了!
bedtoolsr
今天又是摸鱼的一天!