class FlankingSequenceGetter(object):

    def __init__(self, reffile, flanking):
        self.reffile = GiantFASTAFile(reffile)
        self.flanking = flanking

    def get(self, chrom, pos, strand):
        chromsize = self.reffile.index[chrom][0]
        winleft = max(0, pos - self.flanking)
        winright = min(chromsize, pos + self.flanking + 1)
        leftfillsize = self.flanking - (pos - winleft)
        rightfillsize = self.flanking + 1 - (winright - pos)

        seq = self.reffile.get(chrom, winleft, winright, strand).upper()
        if leftfillsize != 0 or rightfillsize != 0:
            seq = leftfillsize * '-' + seq + rightfillsize * '-'

        return seq
 def __init__(self, reffile, flanking):
     self.reffile = GiantFASTAFile(reffile)
     self.flanking = flanking