Biowulf at the NIH
RSS Feed
SomaticSniper on Biowulf

The purpose of this program is to identify single nucleotide positions that are different between tumor and normal (or, in theory, any two bam files). It takes a tumor bam and a normal bam and compares the two to determine the differences. It outputs a file in a format very similar to Samtools consensus format. It uses the genotype likelihood model of MAQ (as implemented in Samtools) and then calculates the probability that the tumor and normal genotypes are different. This probability is reported as a somatic score. The somatic score is the Phred-scaled probability (between 0 to 255) that the Tumor and Normal genotypes are not different where 0 means there is no probability that the genotypes are different and 255 means there is a probability of 1 – 10(255/-10) that the genotypes are different between tumor and normal. This is consistent with how the SAM format reports such probabilities. It is currently available as source code via github or as a Debian APT package.

This tool is developed by David E. Larson etc.

The environment variable(s) need to be set properly first. The easiest way to do this is by using the modules commands as in the example below.

$ module avail somaticsniper
---------------------- /usr/local/Modules/3.2.9/modulefiles --------------------------------

$ module load somaticsniper

$ module list
Currently Loaded Modulefiles:
1) somaticsniper/ $ module unload somaticsniper $ module show somaticsniper -------------------------------------------------------------------


module-whatis Sets up somaticsniper
prepend-path PATH /usr/local/apps/somaticsniper/



Running a batch job

1. Create a script file alone the lines below.

# This file is somaticsniperfile
#PBS -N somaticsniper
#PBS -m be
#PBS -k oe

module load somaticsniper

cd /home/$USER/somaticsniper
bam-somaticsniper -f /fdb/igenomes/Homo_sapiens/UCSC/hg19/Sequence/WholeGenomeFasta/genome.fa mutant.bam wild.bam test

2. submit the second file from biowulf:

biowulf> $ qsub -l nodes=1:g24:c16 /data/$USER/TheFileAbove

This job was submitted to a g24 node. Use 'freen' to see other available node types.

Running an interactive job

Users may need to run jobs interactively sometimes. Such jobs should not be run on the Biowulf login node. Instead allocate an interactive node as described below, and run the interactive job there.

biowulf $ qsub -I -l nodes=1
qsub: waiting for job 2236960.biobos to start
qsub: job 2236960.biobos ready

[user@p4]$ module load somaticsniper
[user@p4]$ cd /data/$USER/mydirectory

[user@p4]$ bam-somaticsniper -f /fdb/igenomes/Homo_sapiens/UCSC/hg19/Sequence/WholeGenomeFasta/genome.fa mutant.bam wild.bam test

[user@p4] exit
qsub: job 2236960.biobos completed

User may add a node property in the qsub command to request specific interactive node. For example, if you need a node with 24gb of memory to run job interactively, do this:

[user@biowulf]$ qsub -I -l nodes=1:g24:c16


Submitting a swarm of somaticsniper jobs

Using the 'swarm' utility, one can submit many jobs to the cluster to run concurrently.

Set up a swarm command file (eg /data/$USER/cmdfile). Here is a sample file:

cd /data/$USER/Dir1; bam-somaticsniper -f /fdb/igenomes/Homo_sapiens/UCSC/hg19/Sequence/WholeGenomeFasta/genome.fa mutant.bam wild.bam test 
cd /data/$USER/Dir2; bam-somaticsniper -f /fdb/igenomes/Homo_sapiens/UCSC/hg19/Sequence/WholeGenomeFasta/genome.fa mutant.bam wild.bam test 
cd /data/$USER/DirN; bam-somaticsniper -f /fdb/igenomes/Homo_sapiens/UCSC/hg19/Sequence/WholeGenomeFasta/genome.fa mutant.bam wild.bam test 

The '-f' and '--module' options for swarm are required

By default, each line of the command file above will be executed on 1 processor core of a node and use 1gb of memory. If this is not what you want, you will need to specify '-g' flags when you submit the job on biowulf. Say if each line of the commands above need to use 10gb of memory instead of the default 1gb of memory, make sure swarm understands this by including '-g 10' flag:

biowulf> $ swarm -g 10 -f swarmFile --module somaticsniper

For more information regarding running swarm, see swarm.html