Add missing bam provider

This commit is contained in:
Kanwei Li
2010-01-07 18:48:38 -05:00
parent 4fa0ac8682
commit 9edbd13fc4
@@ -0,0 +1,24 @@
import pkg_resources; pkg_resources.require( "pysam" )
from pysam import csamtools
from math import floor, ceil, log
import logging
class BamDataProvider( object ):
def __init__( self, index, original_dataset ):
self.log = logging.getLogger(__name__)
self.index = index
self.original_dataset = original_dataset
def get_data( self, chrom, start, end, **kwargs ):
start, end = int(start), int(end)
bamfile = csamtools.Samfile(filename=self.original_dataset.file_name, mode='rb', index_filename=self.index.file_name)
data = bamfile.fetch(start=start, end=end, reference=chrom)
results = []
for read in data:
payload = { 'uid': str(read.pos) + str(read.seq), 'start': read.pos, 'end': read.pos + read.rlen, 'name': read.seq }
results.append(payload)
bamfile.close()
return results