The IsoMut tool was obtained by downloading it from its github repository.
Compiling was done using the gcc command.
The isomut_example_script.py file was modified to fit our current dataset:
import os
To determine a suitable parameter set for running IsoMut a simple optimization process was carried out using two reference test sets of validated mutations (details of which can be found in (Pipek et al., manuscript in preparation)) and control samples of starting clones and identical samples in which no unique mutations are expected to be found. For different filtering p parameter sets, seven different q quality values were determined, two of which describe the number of missed validated mutations from the reference test sets (‘false negatives’) while the other five accounting for the number of mutations found in starting clones and identical samples (‘false positives’). The parameter set that yielded the lowest total sum of falsely identified mutations (p[93]) was chosen for the purposes of this paper.
The tested p parameter sets and the resulting q values can be found below with the total sum of falsely identified mutations.
IsoMut_dir = 'IsoMut'
os.chdir(IsoMut_dir)
os.system("git clone https://github.com/riblidezso/isomut.git")
os.chdir("isomut/src")
os.system("gcc -O3 -c isomut_lib.c fisher.c -W -Wall")
os.system("gcc -O3 -o isomut isomut.c isomut_lib.o fisher.o -lm -W -Wall")
os.chdir("..")
#################################################
# importing the wrapper
#################################################
import sys,os
#add path for isomut_wrappers.py
# if not running it from the isomut directory
# change os.getcwd for the path to it
sys.path.append(os.getcwd()+'/src')
#load the parallel wrapper function
from isomut_wrappers import run_isomut
#add path for isomut, if its in the path comment/delete this line
# if not running it from the isomut directory
# change os.getcwd for the path to it
os.environ["PATH"] += os.pathsep + os.getcwd() +'/src'
#################################################
# defining administrative parameters
#################################################
#using parameter dictionary
params=dict()
#minimum number of blocks to run
# usually there will be 10-20 more blocks
params['n_min_block']=200
#number of concurrent processes to run
params['n_conc_blocks']=4
#genome
params['ref_fasta']="/home/ribli/input/index/gallus/Gallus_gallus.Galgal4.74.dna.toplevel.fa"
#input dir, output dir
params['input_dir']='/nagyvinyok/adat83/sotejedlik/orsi/bam_all_links/'
params['output_dir']='output/'
#the bam files used
params['bam_filenames']=[]
for i in xrange(1,8):
params['bam_filenames'].append("DS" + "%03d"%i + "_RMdup_picard_realign.bam")
for i in xrange(9,12):
params['bam_filenames'].append("DS" + "%03d"%i + "_RMdup_picard_realign.bam")
for i in xrange(14,17):
params['bam_filenames'].append("DS" + "%03d"%i + "_RMdup_picard_realign.bam")
params['bam_filenames'].append("DS018_RMdup_picard_realign.bam")
params['bam_filenames'].append("DS026_RMdup_picard_realign.bam")
params['bam_filenames'].append("DS027_RMdup_picard_realign.bam")
for i in xrange(33,38):
params['bam_filenames'].append("DS" + "%03d"%i + "_RMdup_picard_realign.bam")
for i in xrange(41,75):
params['bam_filenames'].append("DS" + "%03d"%i + "_RMdup_picard_realign.bam")
for i in xrange(81,138):
params['bam_filenames'].append("DS" + "%03d"%i + "_RMdup_picard_realign.bam")
for i in xrange(141,149):
params['bam_filenames'].append("DS" + "%03d"%i + "_RMdup_picard_realign.bam")
#limit chromosomes (for references with many scaffolds)
params['chromosomes']=map(str,range(1,29))+ ['32','W','Z','MT']
#################################################
# defining mutation calling parameters
#################################################
params['min_sample_freq']=0.33
params['min_other_ref_freq']=0.9
params['cov_limit']=10
params['base_quality_limit']=30
params['min_gap_dist_snv']=0
params['min_gap_dist_indel']=20
#################################################
# running IsoMut
#################################################
run_isomut(params)