Download and install
wget https://github.com/samtools/samtools/releases/download/1.11/samtools-1.11.tar.bz2
tar -jvxf samtools-1.11.tar.bz2
cd samtools-1.11
make
make prefix=$HOME/tools/samtools install # path where to install samtools
# add path to your .bashrc file
export PATH=$HOME/tools/samtools/bin/:$PATH
http://www.htslib.org/download/
Examples
convert a SAM file to a BAM file
samtools view -b -S SAMPLE.sam > SAMPLE.bam
-S Input is in SAM format
-b Output in BAM format
convert a BAM file to a SAM file
samtools view -h SAMPLE.bam > SAMPLE.sam
sort a BAM file
samtools sort SAMPLE.bam -o SAMPLE_sorted.bam
# using a unix pipe (input '-')
cat SAMPLE.bam | samtools sort - -o SAMPLE_sorted.bam
samtools sort SAMPLE.bam SAMPLE # old version v1.2
sort by readName
samtools sort -n SAMPLE.bam -o SAMPLE_sorted.bam
Stats
get number of reads
get number of individual reads, paired reads that mapped both count double R1+R2
samtools view -c SAMPLE.bam
→ How to count the number of mapped reads in a BAM or SAM file (SAM bitcode fields)
more statistics about alignments
samtools flagstat SAMPLE.bam
comprehensive statistics
samtools stats SAMPLE.bam
Get coverage
# get coverage of a selected region (e.g., from base 1,958,700 to 1,958,907 of a contig)
samtools index sampleID.bam
samtools mpileup -r 'contigName:1,958,700-1,958,907' sampleID.bam
# same in combination with awk to count the total and averaged coverage
samtools mpileup -r 'contigName:1,958,700-1,958,907' sampleID.bam | awk 'BEGIN{C=0}; {C=C+$4}; END{print C "\t" C/NR}'
see also: → Calling SNPs/INDELs with SAMtools/BCFtools
Note: SAMtools mpileup counts only primary aligned reads. SAMtools discards unmapped reads, secondary alignments and duplicates. To consider also secondary alignments, BEDtools could be an alternative.