bedtools的使用

---------------

#################

Nickier

2018-12-14

#################

---------------

bedtools的主要子命令有以下三个,直接输入子命令按回车可以看到帮助

bedtools intersect
bedtools merge
bedtools subtract

bedtools intersect

intersect命令是该bedtools主要功能。它比较两个或多个BED / BAM / VCF / GFF文件,并识别gemome中两个文件中的特征重叠的所有区域。
如:

bedtools intersect -a cpg.bed -b exons.bed | head 
image.png

bedtools intersect的-wa-wb选项可以输出重叠的A和B文件的原始记录。
使用方法是:

bedtools intersect -a cpg.bed -b exons.bed -wa -wb | head 

-wo参数可以输出重叠部分有多少碱基对

bedtools intersect -a cpg.bed -b exons.bed -wo | head -10

-c参数可以输出有多少个区域重叠。

bedtools intersect -a cpg.bed -b exons.bed -c | head -n 1000|tail 
chr1    43353947    43354170    CpG:_17 1
chr1    43389835    43390551    CpG:_67 0
chr1    43423467    43424768    CpG:_130    2
chr1    43472867    43473334    CpG:_43 0
chr1    43533890    43534334    CpG:_42 0
chr1    43613488    43613842    CpG:_29 1
chr1    43637503    43638052    CpG:_45 8
chr1    43738484    43738829    CpG:_30 1
chr1    43770522    43770880    CpG:_43 2
chr1    43814305    43815277    CpG:_76 2
image.png

-v参数可以输出非重叠区域,而重叠区域不输出

bedtools intersect -a cpg.bed -b exons.bed -v

-f可以指定输出重叠率大于百分之多少的区域,如:50%

bedtools intersect -a cpg.bed -b exons.bed -f 0.50 | head

bedtools merge

许多基因组特征数据集具有许多彼此重叠的个体特征(例如,来自Chip-seq数据)。将重叠组合成单个连续的间隔通常很有用,此时就可以用bedtools merge命令
使用这个命令有一个主要注意的地方,就是需要对合并前的恩建进行sort,用的是linux的sort

# sort的-u选项,在输出行中去除重复行
# sort的-n选项,数值排序,即不会出现10比3小的情况
# sort的-g选项,可以按浮点数大小进行排序
# sort的-o选项,想把排序结果输出到原文件中
# sort的-k选项,按指定的列排序
# sort的-t选项,按指定的分隔符分列
sort -k1,1 -k2,2n foo.bed > foo.sort.bed

-i参数可以合并有重叠overlap的区域,如

$head exons.bed 
chr1    11873   12227   NR_046018_exon_0_0_chr1_11874_f 0   +
chr1    12612   12721   NR_046018_exon_1_0_chr1_12613_f 0   +
chr1    13220   14409   NR_046018_exon_2_0_chr1_13221_f 0   +
chr1    14361   14829   NR_024540_exon_0_0_chr1_14362_r 0   -
chr1    14969   15038   NR_024540_exon_1_0_chr1_14970_r 0   -
chr1    15795   15947   NR_024540_exon_2_0_chr1_15796_r 0   -
chr1    16606   16765   NR_024540_exon_3_0_chr1_16607_r 0   -
chr1    16857   17055   NR_024540_exon_4_0_chr1_16858_r 0   -
chr1    17232   17368   NR_024540_exon_5_0_chr1_17233_r 0   -
chr1    17605   17742   NR_024540_exon_6_0_chr1_17606_r 0   -

# 第三行和第四行的区域有重叠overlap部分,合并成一行
$head exons.bed |bedtools merge -i -
chr1    11873   12227
chr1    12612   12721
chr1    13220   14829
chr1    14969   15038
chr1    15795   15947
chr1    16606   16765
chr1    16857   17055
chr1    17232   17368
chr1    17605   17742

-c 参数和-o参数一起使用,-c指定列,-o做统计,可以统计每一行是由原文件几行合并得来的

$bedtools merge -i exons.bed -c 1 -o count | head 
chr1    11873   12227   1
chr1    12612   12721   1
chr1    13220   14829   2
chr1    14969   15038   1
chr1    15795   15947   1
chr1    16606   16765   1
chr1    16857   17055   1
chr1    17232   17368   1
chr1    17605   17742   1
chr1    17914   18061   1

-d(distance)选项,可以合并不重叠但彼此接近的间隔。例如,要合并不超过1000bp的功能,

$head exons.bed 
chr1    11873   12227   NR_046018_exon_0_0_chr1_11874_f 0   +
chr1    12612   12721   NR_046018_exon_1_0_chr1_12613_f 0   +
chr1    13220   14409   NR_046018_exon_2_0_chr1_13221_f 0   +
chr1    14361   14829   NR_024540_exon_0_0_chr1_14362_r 0   -
chr1    14969   15038   NR_024540_exon_1_0_chr1_14970_r 0   -
chr1    15795   15947   NR_024540_exon_2_0_chr1_15796_r 0   -
chr1    16606   16765   NR_024540_exon_3_0_chr1_16607_r 0   -
chr1    16857   17055   NR_024540_exon_4_0_chr1_16858_r 0   -
chr1    17232   17368   NR_024540_exon_5_0_chr1_17233_r 0   -
chr1    17605   17742   NR_024540_exon_6_0_chr1_17606_r 0   -

# 第7行和第8行之间的间隔小于50
$bedtools merge -i exons.bed -c 1 -o count -d 100| head 
chr1    11873   12227   1
chr1    12612   12721   1
chr1    13220   14829   2
chr1    14969   15038   1
chr1    15795   15947   1
chr1    16606   17055   2
chr1    17232   17368   1
chr1    17605   17742   1
chr1    17914   18061   1
chr1    18267   18366   1

在上述命令基础上,增加collapse 可以列出外显子的名称,如在exons.bed中外显子的名称是第四列,则指定第四列合并

$bedtools merge -i exons.bed -d 90 -c 1,4 -o count,collapse | head 
chr1    11873   12227   1   NR_046018_exon_0_0_chr1_11874_f
chr1    12612   12721   1   NR_046018_exon_1_0_chr1_12613_f
chr1    13220   14829   2   NR_046018_exon_2_0_chr1_13221_f,NR_024540_exon_0_0_chr1_14362_r
chr1    14969   15038   1   NR_024540_exon_1_0_chr1_14970_r
chr1    15795   15947   1   NR_024540_exon_2_0_chr1_15796_r
chr1    16606   16765   1   NR_024540_exon_3_0_chr1_16607_r
chr1    16857   17055   1   NR_024540_exon_4_0_chr1_16858_r
chr1    17232   17368   1   NR_024540_exon_5_0_chr1_17233_r
chr1    17605   17742   1   NR_024540_exon_6_0_chr1_17606_r
chr1    17914   18061   1   NR_024540_exon_7_0_chr1_17915_r

bedtools genomecov

查看覆盖度:如查看基因组中外显子的覆盖度,-i是输入文件,-g是基因组坐信息,如这里的genemo.txt

$bedtools genomecov -i exons.bed -g genome.txt|head
chr1    0   241996316   249250621   0.970896
chr1    1   4276763 249250621   0.0171585
chr1    2   1475526 249250621   0.00591985
chr1    3   710135  249250621   0.00284908
chr1    4   388193  249250621   0.00155744
chr1    5   179651  249250621   0.000720765
chr1    6   91005   249250621   0.000365114
chr1    7   53307   249250621   0.000213869
chr1    8   33862   249250621   0.000135855
chr1    9   8961    249250621   3.59518e-05

bedtools jaccard

主成分分析: jaccard可以实现两个数据集的主成分分析,如:
-a输入第一个文件-b输入第二个文件,这里的两个示例文件分别是相同胎儿组织的两个样本,jaccard值越大(介于0~1之间),则相关性越大

bedtools jaccard \
    -a fHeart-DS16621.hotspot.twopass.fdr0.05.merge.bed \
    -b fHeart-DS15839.hotspot.twopass.fdr0.05.merge.bed
intersection    union-intersection  jaccard n_intersections
81269248    160493950   0.50637 130852

(未完,待续)

你可能感兴趣的:(bedtools的使用)