def mhsmidkernelsmooth(bamfile, bwfile, maxinsert=80, mininsert=1, paired=False, kernelsize=30): bamfor = Baminfo.Baminfo(bamfile) bw = pyBigWig.open(bwfile, "w") bw.addHeader(list(bamfor.chrlen.items())) for chromosome in bamfor.chrlen: end = bamfor.chrlen[chromosome] mhsmidcount = mhsbam.mhsmidcount(bamfile=bamfile, chromosome=chromosome, start=1, end=end, maxinsert=maxinsert, mininsert=mininsert, paired=paired) mhsmidsmoothed = kernelsmooth(mhsmidcount, 1, end, end, kernelsize) if mhsmidsmoothed: starts = list() values = list() for start in sorted(mhsmidsmoothed): starts.append(start) values.append(float(mhsmidsmoothed[start])) bw.addEntries(chromosome, starts=starts, values=values, span=1, step=1) bw.close()
def test_openmhs_pairedshort(self): res = mhsbam.mhsmidcount(self.pairedbamnps, chromosome='Chr1', start=1, end=300, paired=True) self.assertEqual(res[115], 2)
def test_openmhs_pairedlong_empty(self): res = mhsbam.mhsmidcount(self.pairedbamnps, chromosome='Chr2', start=1, end=300, maxinsert=180, paired=True) self.assertFalse(res)
def test_openmhs_pairedlong(self): res = mhsbam.mhsmidcount(self.pairedbamnps, chromosome='Chr1', start=1, end=300, maxinsert=180, paired=True) self.assertEqual(res[251], 3)
def midextendtobw(bamfile, bwfile, maxinsert, mininsert, paired=False, extend=80): bamfor = Baminfo.Baminfo(bamfile) bw = pyBigWig.open(bwfile, "w") bw.addHeader(list(bamfor.chrlen.items())) for chromosome in bamfor.chrlen: end = bamfor.chrlen[chromosome] mhsmidcount = mhsbam.mhsmidcount(bamfile=bamfile, chromosome=chromosome, start=1, end=end, maxinsert=maxinsert, mininsert=mininsert, paired=paired) if mhsmidcount: extended = dict() for midnow in mhsmidcount: halfextend = int(extend/2) rangestart = 0-halfextend rangeend = halfextend+1 for i in range(rangestart, rangeend): nowsite = i + midnow if nowsite < 1: continue if nowsite > end: continue if nowsite in extended: extended[nowsite] += mhsmidcount[midnow] else: extended[nowsite] = mhsmidcount[midnow] starts = list() values = list() for nowsite in sorted(extended): starts.append(nowsite) values.append(float(extended[nowsite])) bw.addEntries(chromosome, starts=starts, values=values, span=1, step=1) bw.close()