Calling consesus from BAM file into a fasta
1
1
Entering edit mode
9.4 years ago

I am trying to get a consensus sequence for each block of reads aligned at two different locus from bam file. The reads at locus looks like:

TTCAATGGATCTATAAATCTCCCCCTGGGATTCATCATAGTAACTGTAACGGAACCTTTGACCTTGAAACAAATATCATG
TTCAATGGATCTATAAATCTCCCCCTGGGATTCATCATAGTAACTGTAACGGAACCTTTGACCTTGAAACAAATATCATG
TTCAATGGATCTATAAATCTCCCCCTGGGATTCATCATAGTAACTGTAACGGAACCTTTGACCTTGAAACAAATATCATG
TTCAATGGATCTATAAATCTCCCCCTGGGATTCATCATAGTAACTGTAACGGAACCTTTGACCTTGAAACAAATATCATG
TTCAATGGATCTATAAATCTCCCCCAGGGATTCATCATAGTAACTGTAACGGAACCTTTGACCTTGAAACAAATATCATG
TTCAATGGATCTATAAATCTCCCCCAGGGATTCATCATAGTAACTGTAACGGAACCTTTGACCTTGAAACAAATATCATG
TTCAATGGATCTATAAATCTCCCCCAGGGATTCATCATAGTAACTGTAACGGAACCTTTGACCTTGAAACAAATATCATG
TTCAATGGATCTATAAATCTCCCCCAGGGATTCATCATAGTAACTGTAACGGAACCTTTGACCTTGAAACAAATATCATG
TTCAATGGATCTATAAATCTCCCCCAGGGATTCATCATAGTAACTGTAACGGAACCTTTGACCTTGAAACAAATATCATG
TTCAATGGATCTATAAATCTCCCCCAGGGATTCATCATAGTAACTGTAACGGAACCTTTGACCTTGAAACAAATATCATG
#                        ^

GGGGACCAGTCACAGCAGCCTTTTTAACTTTGGGAAAACCCAATGCTCACTTCACTCAAACGTCGCAAAGTGGTGCCATG
GGGGACCAGTCACAGCAGCCTTTTTAACTTTGGGAAAACCCAATGCTCACTTCACTCAAACGTCGCAAAGTGGTGCCATG
GGGGACCAGTCACAGCAGCCTTTTTAACTTTGGGAAAACCCAATGCTCACTTCACTCAAACGTCGCAAAGTGGTGCCATG
GGGGACCAGTCACAGCAGCCTTTTTAACTTTGGGAAAACCCAATGCTCACTTCACTCAAACGTCGCAAAGTGGTGCCATG
GGGGACCAGTCACAGCAGCCTTTTTAACTTTGGGAAAACCCAATGCTCACTTCACTCAAACGTCGCAAAGTGGTGCCATG
GGGGACCAGTCACAGCAGCCTTTTTAACTTTAGGAAAACCCAATGCTCACTTCACTCAAACGTCGCAAAGTGGTGCCATG
GGGGACCAGTCACAGCAGCCTTTTTAACTTTAGGAAAACCCAATGCTCACTTCACTCAAACGTCGCAAAGTGGTGCCATG
GGGGACCAGTCACAGCAGCCTTTTTAACTTTAGGAAAACCCAATGCTCACTTCACTCAAACGTCGCAAAGTGGTGCCATG
GGGGACCAGTCACAGCAGCCTTTTTAACTTTAGGAAAACCCAATGCTCACTTCACTCAAACGTCGCAAAGTGGTGCCATG
GGGGACCAGTCACAGCAGCCTTTTTAACTTTAGGAAAACCCAATGCTCACTTCACTCAAACGTCGCAAAGTGGTGCCATG
#                              ^

The one position highlighted using the lines beginning with # is a SNP. There I would like to keep a IUPAC code in the consensus as shown below.

TTCAATGGATCTATAAATCTCCCCCWGGGATTCATCATAGTAACTGTAACGGAACCTTTGACCTTGAAACAAATATCATG
#                        ^
GGGGACCAGTCACAGCAGCCTTTTTAACTTTRGGAAAACCCAATGCTCACTTCACTCAAACGTCGCAAAGTGGTGCCATG
#                              ^

I could do it in python to make consensus, but I would like to do it through an SNP calling program like mpileup, so that it takes the statistics in to account to call confident SNP. I am using a restricted enzyme digested sequence data, there is no random fragmentation, hence reads mapping at any given locus will have 100% overlap.

I have seen other posts How To Generate A Consensus Fasta Sequence From Sam Tools Pileup? but I did not find what I need.

SNP mpileup samtools • 2.6k views
ADD COMMENT
0
Entering edit mode

I don't understand why you cannot use the output of mpileup.

ADD REPLY
0
Entering edit mode

I see lot of 'nnnn' in the output i.e contain sequence for the whole reference. I am looking for the consensus sequences in a fasta file only from the mapped regions. I tried

samtools mpileup -cf ref.fa aln.bam | samtools.pl pileup2fq | less
ADD REPLY
1
Entering edit mode
9.3 years ago

I am finally 1. Calling SNPs 2. Create a Bed File from Bam File --> sort --> merge. 3. Use FastaAlternateReferenceMaker (with --useIUPAC) of GATK and input BAM File, VCF File and use BED file as interval file to extract only those regions present in BAM file.

ADD COMMENT

Login before adding your answer.

Traffic: 1614 users visited in the last hour
Help About
FAQ
Access RSS
API
Stats

Use of this site constitutes acceptance of our User Agreement and Privacy Policy.

Powered by the version 2.3.6