不要重復(fù)造輪子
——“哈嘍,能請教你一下怎樣在R server中調(diào)用Linux下的工具?”
——“你為什么要這么做呢?”
——“我想把Linux工具輸出的結(jié)果直接在R中分析,不想換來換去”
bedtools是一個(gè)非常香的工具叭披,幾乎是人盡皆知,是一個(gè)強(qiáng)大的處理bed等文件的工具玩讳,正如其自己描述的一樣:a powerful toolset for genome arithmetic涩蜘。bedtools目前只支持在Linux下以命令行的形式運(yùn)行,所以我們經(jīng)常會遇到上面的問題锋边。
那么如何解決呢丁存?給大家分享一個(gè)好物奈揍,既然我們不想在Linux下運(yùn)行bedtools,那為什么不在R下運(yùn)行呢?感謝北卡羅來納大學(xué)教堂山分校的Phanstiel Lab給了我們這樣的機(jī)會昂芜,開發(fā)出了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.
這意味著這個(gè)工具必須要R和Linux下的bedtools,否則將無法工作萍膛!所以我推薦在R server下使用了~
安裝
#install.packages("devtools")
library(devtools)
devtools::install_github("PhanstielLab/bedtoolsr")
使用示例
bedtools intersect ~ bt.intersect
bedtools intersect的功能不用多介紹吭服,直接上圖:
這個(gè)圖到處都能見到,還不知道的朋友可以去隨便查查bedtools intersect是干嘛的蝗罗,你一定會覺得非常有用艇棕,那么這個(gè)功能對應(yīng)R包bedtoolsr中的函數(shù)就是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功能選項(xiàng)幾乎一模一樣串塑?
這里還是用官網(wǎng)的示例數(shù)據(jù)來做沼琉,主要是想輸出有交集的染色體坐標(biāo)區(qū)間及相交區(qū)域的大小:
#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
更多的功能就待大家去探索了~把這個(gè)包支持的函數(shù)全部列在下面了桩匪,對應(yīng)bedtools的工具找就好了打瘪!
今天又是摸魚的一天!