首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >基因组分析工具的瑞士军刀—BEDtools

基因组分析工具的瑞士军刀—BEDtools

作者头像
生信菜鸟团
发布2023-12-20 16:34:12
发布2023-12-20 16:34:12
1.9K00
代码可运行
举报
文章被收录于专栏:生信菜鸟团生信菜鸟团
运行总次数:0
代码可运行

工欲善其事必先利其器

1bedtools

Bedtools是由犹他大学昆兰实验室开发的基因组算法工具集,用于广泛的基因组学分析任务。它堪称是基因组分析工具中的瑞士军刀。其设计灵活,可以轻松地与其他命令行工具集成,如 awkgrepsort 等,使得它成为基因组研究和数据分析中不可或缺的工具之一。此外,bedtools 支持多种基因组数据格式,其中最常用的是 BED 格式,但也支持 VCF、GFF 和其他一些标准格式。由于其广泛的应用和功能,bedtools 成为了生物信息学家和基因组学者工具箱中的标准工具之一

  • 官网:https://bedtools.readthedocs.io/en/latest/index.html
  • 主要编程语言:C++
  • 旨在 UNIX、LINUX 上的“命令行”环境中运行,因此不支持Windows 平台

2发表文章

题目:BEDTools: a flexible suite of utilities for comparing genomic features日期:2010-03-15期刊:Bioinformatics 作者&单位:Aaron Quinlan & 弗吉尼亚大学医学院生物化学与分子遗传学系DOI:https://doi.org/10.1093/bioinformatics/btq033

3简要用途

bedtools 是一个强大的生物信息学工具,它是一套用于比较基因组学特征的软件。这些工具允许进行广泛的基因组分析任务,包括寻找重叠的基因或基因组区域、计算覆盖率、寻找最近的基因组特征等。其具有众多子命令:

bedtools工具集

4如何安装

方法一:conda 安装

最简单

代码语言:javascript
代码运行次数:0
运行
复制
#codna create -n wes #先创建小环境,如果已经创建,可以忽略 
conda activate wes 
conda install -y bedtools

方法二:编译安装

代码语言:javascript
代码运行次数:0
运行
复制
wget -c https://github.com/arq5x/bedtools2/releases/download/v2.31.1/bedtools-2.31.1.tar.gz
tar -xf bedtools-2.31.1.tar.gz 

cd bedtools2/
make

解压后,bin文件夹下什么都没有,需要再执行一下编译 make ,然后就可以正常使用

5简单演示

bedtools 有众多子命令,下面我们来简单演示一些部分命令用法:

下载测试数据

代码语言:javascript
代码运行次数:0
运行
复制
curl -O http://s3.amazonaws.com/bedtools-tutorials/web/maurano.dnaseI.tgz
curl -O http://s3.amazonaws.com/bedtools-tutorials/web/cpg.bed
curl -O http://s3.amazonaws.com/bedtools-tutorials/web/exons.bed
curl -O http://s3.amazonaws.com/bedtools-tutorials/web/gwas.bed
curl -O http://s3.amazonaws.com/bedtools-tutorials/web/genome.txt
curl -O http://s3.amazonaws.com/bedtools-tutorials/web/hesc.chromHmm.bed

900K 12月 13 18:26 cpg.bed
4.0K 12月 13 18:38 demo_data
 29M 12月 13 18:27 exons.bed
2.0K 12月 13 18:27 genome.txt
604K 12月 13 18:27 gwas.bed
 24M 12月 13 18:32 hesc.chromHmm.bed
 38M 12月 13 18:23 maurano.dnaseI.tgz

intersect

主要用于识别两个或多个BED/GFF/VCF文件之间相交的基因组区域。例如,如果你有一个包含特定基因位置的文件和一个包含转录因子结合位点的文件,你可以使用 bedtools intersect 来找出转录因子结合位点是否位于这些基因的区域内。这个命令在基因组注释、变异位点分析等方面非常有用。

如何找到两个或多个基因组数据集(例如BED文件)中重叠的区域

intersect图解

  • “A intersect B”展示了A和B之间的交集区域。
  • “A intersect B (-wa)”只显示了数据集A中与B交集的部分。
  • “A intersect B (-v)”则展示了数据集A中不与B重叠的部分。
  • "A intersect B1,B2”显示了数据集A与两个数据集B1和B2的交集。
  • 通过使用额外的参数(如“-wa -wb”),可以展示两个数据集B1和B2中与A数据集重叠的所有区域
代码语言:javascript
代码运行次数:0
运行
复制
## 输出A和B有交集的区域
bedtools intersect -a ./demo_date/cpg.bed -b ./demo_date/exons.bed  > a_int_b.txt

## 在有重叠区域,输出文件A中的原始特征
bedtools intersect -a ./demo_date/cpg.bed -b ./demo_date/exons.bed  -wa |head

## 在有重叠区域,输出文件A和文件B的原始特征
bedtools intersect -a ./demo_date/cpg.bed -b ./demo_date/exons.bed  -wa -wb |head

## 对文件A中的每个特征输出与文件B的重叠,如果没有重叠,则为B输出为NULL
bedtools intersect -a ./demo_date/cpg.bed -b ./demo_date/exons.bed -loj |head

## 输出文件A和B的特征以及它们之间的碱基对重叠数量
bedtools intersect -a ./demo_date/cpg.bed -b ./demo_date/exons.bed -wao |head

## 只输出文件A中重叠一次的特征
bedtools intersect -a ./demo_date/cpg.bed -b ./demo_date/exons.bed -u |head

## 对文件A中的每个条目,输出与文件B重叠的次数
bedtools intersect -a ./demo_date/cpg.bed -b ./demo_date/exons.bed -c |head

## 只输出文件A中不与文件B重叠的特征
bedtools intersect -a ./demo_date/cpg.bed -b ./demo_date/exons.bed -v |head
代码语言:javascript
代码运行次数:0
运行
复制
## A文件与一个或多个B文件取交集
bedtools intersect -a exons.bed -b cpg.bed gwas.bed hesc.chromHmm.bed -sorted | head

## 用标签标识,"A"文件(例如外显子)与多个"B"文件(例如CpG岛、GWAS SNPs和ChromHMM注释)相交时,每个交集来自哪个"B"文件
bedtools intersect -a ./demo_date/exons.bed -b ./demo_date/cpg.bed  ./demo_date/gwas.bed ./demo_date/hesc.chromHmm.bed -sorted -wa -wb -names cpg gwas chromhmm |head -n 10000 |tail

merge

将所有重叠的区间合并成一个单一的连续区间。比如ChIP-seq实验中的多个区间重叠时,这个命令可以把这些重叠的区间合并成一个大的连续区间。这对于简化数据集和减少复杂性是非常有用的

merge图解

  • 顶部的蓝色条形代表基因组中的区间
  • 第一行“merge I”展示了所有输入区间合并成一个连续区间的结果。
  • 第二行“merge I (-d 10)”展示了在合并时允许10bp距离内的区间合并成一个连续区间的结果。
  • 第三行“merge I (-n)”展示了每个合并区间内包含的原始区间数量,这里用数字标记在合并后的区间中间。

注:为了合并算法可以非常快速地工作 bedtools merge 命令要求输入文件按染色体,然后按起始位置排序。如果未排序,将会报错

代码语言:javascript
代码运行次数:0
运行
复制
## 对bed文件排序
sort -k1,1 -k2,2n foo.bed > foo.sort.bed

## 合并重叠区间
bedtools merge -i ./demo_date/exons.bed |head

## 合并重叠区间,同时输出合并成新区间的原始区间数量
bedtools merge -i ./demo_date/exons.bed  -c 1 -o count|head
-c #参数用于指定输入文件中你想要总结的列,
-o #参数定义了你希望应用到`-c`参数列上的操作

## 合并那些虽然不重叠但彼此接近的区间。例如,如果你想合并所有相距不超过1000个碱基对(bp)的特征区间,你可以使用 `-d 1000` 参数
bedtools merge -i ./demo_date/exons.bed -d 1000 -c 1 -o count|head

## 合并后,同时列出合并后区间包含的每个特征(例如外显子)的名称
bedtools merge -i ./demo_date/exons.bed -d 90  -c 1,4  -o count,collapse|head

complement

找出在给定特征文件中没有“覆盖”的基因组区间。比方来说,如果你有一个记录了某转录因子结合位点的BED文件,使用 bedtools complement 可以帮助你识别出那些没有转录因子结合的基因组区域。这对于理解转录调控网络中的未被结合的区域非常有用。(注:前提需要提供一个基因组区间文件)

complement图解

代码语言:javascript
代码运行次数:0
运行
复制
bedtools complement -i ./demo_date/exons.bed -g ./demo_date/genome.txt |head

genomecov

用于计算基因组覆盖率。它可以统计每个基因组位置被测序读段覆盖的深度,帮助理解测序实验的覆盖均匀性和发现潜在的覆盖空白区域 (输入文件也是需要先进行排序)

genomecov图解

代码语言:javascript
代码运行次数:0
运行
复制
bedtools genomecov -i ./demo_date/exons.bed -g ./demo_date/genome.txt |head

-d #生成的输出详细列出了每个位置的覆盖次数
-bg #输出BEDGRAPH格式,它合并连续的具有相同覆盖深度的区域
-bga #参数提供了类似于BEDGRAPH的输出,但是对于未覆盖的区域也会显示出来,覆盖次数为0
-d -split #参数考虑了剪接对覆盖度的影响,剪接或分裂的读段被计算在内
-bga -split #纳入剪接读段的考虑,并输出EDGRAPH格式,同样会显示未覆盖区域

以上只是bedtools众多功能的简单演示,更多用法可以查看:https://bedtools.readthedocs.io/en/latest/content/example-usage.html

参考:

  • https://bedtools.readthedocs.io/en/latest/
  • http://quinlanlab.org/tutorials/bedtools.html
  • https://www.jianshu.com/p/f8bbd51b5199
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-12-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 生信菜鸟团 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1bedtools
  • 2发表文章
  • 3简要用途
  • 4如何安装
    • 方法一:conda 安装
    • 方法二:编译安装
  • 5简单演示
    • 下载测试数据
    • intersect
    • merge
    • complement
    • genomecov
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档