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