From 9edbd13fc44a61dbf07dee498c6ea32b3a02693b Mon Sep 17 00:00:00 2001 From: Kanwei Li Date: Thu, 7 Jan 2010 18:48:38 -0500 Subject: [PATCH] Add missing bam provider --- lib/galaxy/visualization/tracks/data/bam.py | 24 +++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 lib/galaxy/visualization/tracks/data/bam.py diff --git a/lib/galaxy/visualization/tracks/data/bam.py b/lib/galaxy/visualization/tracks/data/bam.py new file mode 100644 index 00000000000..00c5e85b89f --- /dev/null +++ b/lib/galaxy/visualization/tracks/data/bam.py @@ -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 + \ No newline at end of file