I want to go straight from bwa mem alignment to BAM format as I don't need the SAM file and it takes up too much space. How do I achieve this?
2 Answers
For directly outputting a sorted bam file you can use the following:
bwa mem genome.fa reads.fastq | samtools sort -o output.bam -
Optionally using multiple threads:
bwa mem -t 8 genome.fa reads.fastq | samtools sort -@8 -o output.bam -
-
$\begingroup$ Ah, great solution if sorting is needed! I had tried this in the past but I was trying to pipe it though
samtools view
and then intosort
. Didn't realise you could go straight intosort
. $\endgroup$ May 12, 2017 at 23:48
Found the solution. You just need to pipe the output from bwa mem
into samtools view
like so
bwa mem ref.fa in.fq | samtools view -bS - > out.bam
The -
in samtools view tells it to read from stdin
.
-
$\begingroup$ In my workflow, BWA output goes to MergeBamAlignment, so
samtools view
seemed lower overhead thansamtools sort
. (Directly piping from BWA to MergeBamAlignment, as suggested here, failed for me.) $\endgroup$ Feb 1 at 18:53