---------------
#################
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
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
-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
(未完,待续)