Bedtools Tutorial

Overview of Bedtools

Bedtools is a suite of utilities for comparing, analyzing, and manipulating genomic features in a variety of file formats like BAM, BED, GFF/GTF, and VCF. It's often described as a "swiss-army knife" for genome arithmetic because it allows researchers to perform a wide range of tasks such as intersecting, merging, counting, complementing, and shuffling genomic intervals. These tools are designed to perform simple tasks individually, but when combined, they can execute complex genomic analyses.

Developed in the Quinlan laboratory at the University of Utah, Bedtools has become an essential tool in bioinformatics, thanks to its flexibility and the contributions from the scientific community worldwide. It's available under a GNU Public License (Version 2), making it freely accessible for researchers to use and modify.


To install Bedtools, you will typically need to have command-line access to a Unix-like operating system. The installation process can vary depending on the system and package manager you are using. For instance, on systems like Ubuntu, you can install Bedtools using the package manager with a command like sudo apt-get install bedtools. Alternatively, you can download the source code from the Bedtools GitHub repository and compile it manually.

Quick Start

Once Bedtools is installed, you can start using it right away with its various commands. Each command is designed to perform a specific function, and you can combine these commands to perform more complex tasks. For example, to intersect two BED files and find overlapping regions, you would use the bedtools intersect command followed by the names of the files you want to compare.

Code Examples Of Popular Commands

Here are five popular Bedtools commands with examples of how to use them:

  1. Intersect: This command allows you to find overlapping regions between two sets of genomic intervals.

    bedtools intersect -a file1.bed -b file2.bed > intersected_output.bed
  2. Merge: This command is used to combine overlapping or adjacent intervals into a single interval.

    bedtools merge -i input.bed > merged_output.bed
  3. Sort: Before using certain Bedtools commands, you may need to sort your intervals. The sort command will do this for you.

    bedtools sort -i unsorted.bed > sorted.bed
  4. Genomecov: This command provides a way to calculate the coverage of genomic features across an entire genome.

    bedtools genomecov -ibam input.bam -bg > genome_coverage.bedgraph
  5. Getfasta: If you need to extract sequences from a FASTA file based on intervals in a BED file, getfasta is the command you'll use.

    bedtools getfasta -fi genome.fa -bed regions.bed > extracted_sequences.fa

These commands represent just a fraction of what Bedtools can do. By learning and combining different commands, you can tailor your genomic analysis to your specific research needs.