Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Table of Contents

Introduction to Samtools - manipulating and filtering bam files

As Nathan showed you yesterday, the main type of output from aligning reads to a databases is a binary alignment file, or BAM file. These files are compressed, so they can't be viewed using standard unix file viewers such as more, less and head. Samtools allows you to manipulate the .bam files - they can be converted into a non-binary format (SAM format specification here) and can also be ordered and sorted based on the quality of the alignment. This is a good way to remove low quality reads, or make a BAM file restricted to a single chromosome.

...

Code Block
languagebash
titleget a bam file from Nathan's scratch area
ssh user@login8.stampede.tacc.utexas.edu
cds
mkdir samtools
cd samtools
cp /scratch/02423/nsabell/core_ngs/alignment/bam/yeast_pairedend.bam .

Sorting and Indexing a bam file: samtools index, sort

Now that we have a BAM file, we need to index it. All BAM files need an index, as they tend to be large and the index allows us to perform computationally complex operations on these files without it taking days to complete.

...

Expand
titleExercise 1 solution
Code Block
languagebash
titlesolution
module load samtools 
samtools sort yeast_pairedend.bam yeast_pairedend_sort # will take 1-2 minutes
samtools index yeast_pairedend_sort.bam

Use ls -lah to see what files you made and how large they are.  This is what mine look like:

Code Block
languagebash
-rwxrwxr-x 1 awh394 G-801021 110M May 26 14:12 yeast_pairedend.bam
-rwxrwxrwx 1 awh394 G-801021  91M May 26 14:13 yeast_pairedend_sort.bam
-rwxrwxrwx 1 awh394 G-801021  20K May 26 14:14 yeast_pairedend_sort.bam.bai

Note how small the index file is!

Samtools flags and mapping rate: calculating the proportion of mapped reads in an aligned bam file

We have a sorted, indexed BAM file.  Now we can use other samtools functionality to filter this file and count mapped vs unmapped reads in a given region. samtools allows you to sort based on certain flags that are specified on page 4 on the sam format specification.  We'll focus on a couple, below.

...

Expand
titleExercise 2 solution

I've put my output for each line in the comment area.

Code Block
languagebash
titlesolution
module load samtools                                     # if needed
samtools view -c yeast_pairedend_sort.bam chrIII         # total number of reads on this chromosome: 5070
samtools view -c -F 0X04 yeast_pairedend_sort.bam chrIII # reads on this chromosome which are unmapped: 4611

So the total proportion of reads that were unmapped on chromosome III is 4611/5070 or 90.9%, which is really high!  Only 10% of reads on this chromosome were able to be mapped to the genome.

Filtering bam files based on mapped status and mapping quality using samtools view

Mapping qualities are a measure of how likely a given sequence alignment to a location is correct. The lowest score is a mapping quality of zero, or mq0 for short. The reads map to multiple places on the genome, and we can't be sure of where the reads originated. To improve the quality of our data, we can remove these low quality reads from our sorted and indexed file.

...