Hello,
I am using pysam to count bases from bam file and verifying with igv tool. The counts are mostly consistent except that at some positions, pysam seem to call some bases significantly more.
For example: I get: A/T/G/C 154/1/0/2229 with pysam for position 27
while get: A/T/G/C 6/1/0/2227 in igv for the same position. Other positions are very comparable. Any idea?
Any other suggestion on programs that allow to count coverage bases in bam file will be appreciated.
Thank you.
-----
my code for counting bases with pysam (i am just suspecting if it is doing something funny at some positions):
for pileupcolumn in samfile.pileup( 'Homo',1,17000): # for mitochondria
count_a, count_g, count_c, count_t = 0,0,0,0
#print 'coverage at base %s = %s' % (pileupcolumn.pos , pileupcolumn.n)
for pileupread in pileupcolumn.pileups:
if pileupread.alignment.seq[pileupread.qpos] == 'A':
count_a += 1
elif pileupread.alignment.seq[pileupread.qpos] == 'G':
count_g += 1
elif pileupread.alignment.seq[pileupread.qpos] == 'C':
count_c += 1
elif pileupread.alignment.seq[pileupread.qpos] == 'T':
count_t += 1
else:
print 'pass'
writeoutput.writerow( [pileupcolumn.pos +1,count_a,count_t,count_g,count_c])
I am using pysam to count bases from bam file and verifying with igv tool. The counts are mostly consistent except that at some positions, pysam seem to call some bases significantly more.
For example: I get: A/T/G/C 154/1/0/2229 with pysam for position 27
while get: A/T/G/C 6/1/0/2227 in igv for the same position. Other positions are very comparable. Any idea?
Any other suggestion on programs that allow to count coverage bases in bam file will be appreciated.
Thank you.
-----
my code for counting bases with pysam (i am just suspecting if it is doing something funny at some positions):
for pileupcolumn in samfile.pileup( 'Homo',1,17000): # for mitochondria
count_a, count_g, count_c, count_t = 0,0,0,0
#print 'coverage at base %s = %s' % (pileupcolumn.pos , pileupcolumn.n)
for pileupread in pileupcolumn.pileups:
if pileupread.alignment.seq[pileupread.qpos] == 'A':
count_a += 1
elif pileupread.alignment.seq[pileupread.qpos] == 'G':
count_g += 1
elif pileupread.alignment.seq[pileupread.qpos] == 'C':
count_c += 1
elif pileupread.alignment.seq[pileupread.qpos] == 'T':
count_t += 1
else:
print 'pass'
writeoutput.writerow( [pileupcolumn.pos +1,count_a,count_t,count_g,count_c])