轉(zhuǎn)自:https://zhuanlan.zhihu.com/p/52322803
之前已經(jīng)講過BED 文件和它的衍生文件的格式,鏈接在這里:[數(shù)據(jù)格式] (2)BED 格式的四種寫法 。
但是當(dāng)我們想對兩個或多個BED文件的區(qū)域求它們的交集疫铜,找它們之間的overlap時,就很麻煩睦优。手動操作太痛苦,用awk也不是很合適壮不。
Bedtools是Quinlan AR 和 Hall IM 在2010年發(fā)布在Bioinformatics上的工具汗盘,可以通過它對同一參考基因組的BED文件進行交,并询一,補集的操作,還有其他的功能健蕊,比如注釋和格式轉(zhuǎn)換晴及,這篇主要講利用 Bedtools 對BED格式的文件進行操作琳钉。
Bedtools的安裝很簡單,有conda用conda,沒有conda可以去它的GitHub下載。 順便說一下钾虐,Bedtools發(fā)布了它的python版本pyBedtools,對環(huán)境有潔癖的朋友也可以在Bedtools的GitHub網(wǎng)頁上找到它菌仁,鏈接:arq5x/bedtools2
Bedtools的應(yīng)用:
集合運算(注:都是鏈接,可以點開看詳細轉(zhuǎn)換方法):
1. 交集運算 intersect
不同參數(shù)結(jié)果輸出不同的區(qū)域摹迷,A和B是輸入的兩個BED文件。不輸入?yún)?shù)輸出結(jié)果為兩個BED文件的交集,-wa保留和b文件有重疊的全部A文件區(qū)域,-v 輸出結(jié)果為-wa的補集靠抑,即B中沒有A重疊的區(qū)域〖∷疲可以用圖表示為:
命令為:
bedtools intersect [OPTIONS] -a <FILE> \
-b <FILE1, FILE2, ..., FILEN>
#or
intersectBed [OPTIONS] -a <FILE> \
-b <FILE1, FILE2, ..., FILEN>
2. 并集運算 merge
將一個BED文件中所有的重疊區(qū)域和相鄰merge為一個大的區(qū)域睬澡,可以將結(jié)果轉(zhuǎn)換為其他格式的數(shù)據(jù)斗躏,可以通過參數(shù)設(shè)置相距多遠的兩個區(qū)域,可以取他們的并集:
命令為:
bedtools merge [OPTIONS] -i <BED/GFF/VCF/BAM>
#or
mergeBed [OPTIONS] -i <BED/GFF/VCF/BAM>
3. 補集運算 complement静陈,找到基因組上所有和給定區(qū)域無重疊的區(qū)域:
命令:
bedtools complement -i <BED/GFF/VCF> -g <GENOME>
#or:
complementBed -i <BED/GFF/VCF> -g <GENOME>
4. 差集運算 subtract,用A中的區(qū)域減去B中的區(qū)域崩泡,通過參數(shù)-A可以實現(xiàn)有重疊區(qū)域的全部剔除:
命令:
bedtools subtract [OPTIONS] -a <BED/GFF/VCF> -b <BED/GFF/VCF>
#or:
subtractBed [OPTIONS] -a <BED/GFF/VCF> -b <BED/GFF/VCF>
此外禁荒,還有類似于intersect的window,可以看區(qū)域上下游的重疊情況角撞;cluster呛伴,類似于merge,將有重疊的區(qū)域歸在一起谒所,但是不會合并為一個大的區(qū)域热康。
附Bedtools的數(shù)據(jù)格式轉(zhuǎn)換:
Bedtools還有很多很多的功能,它對于我們得到的數(shù)據(jù)非常有幫助劣领,可以說是做二代測序人手必備的神器姐军。
很幸運的是,Bedtools的說明書寫的非常詳細,鏈接:bedtools: a powerful toolset for genome arithmetic
最后補一句:多用sort奕锌,少點麻煩著觉!