def getNucSignal(self): """Gets Nucleosome Signal Track""" self.nuc_cov = CoverageTrack(self.chrom, self.start, self.end) self.nuc_cov.calculateCoverage(self.mat, self.params.lower, self.params.upper, self.params.window) self.bias = BiasTrack(self.chrom, self.start, self.end) self.bias.calculateBackgroundSignal(self.bias_mat, self.params.vmat, self.nuc_cov) self.nuc_signal = SignalTrack(self.chrom, self.start, self.end) self.nuc_signal.calculateSignal(self.mat, self.params.vmat) self.norm_signal = NormSignalTrack(self.chrom, self.start, self.end) self.norm_signal.calculateNormSignal(self.nuc_signal, self.bias)
def calculateBackgroundSignal(self, mat, vmat, nuc_cov): offset=self.start-mat.start-vmat.w if offset<0: raise Exception("Insufficient flanking region on \ mat to calculate signal") self.vmat = vmat self.bias_mat = mat self.cov = CoverageTrack(self.chrom, self.start, self.end) self.cov.calculateCoverage(self.bias_mat, vmat.lower, vmat.upper, vmat.w*2+1) self.nuc_cov = nuc_cov.vals self.vals = signal.correlate(self.bias_mat.get(vmat.lower,vmat.upper, self.bias_mat.start + offset, self.bias_mat.end - offset), vmat.mat,mode = 'valid')[0] self.vals = self.vals * self.nuc_cov/ self.cov.vals
def _covHelper(arg): """Computes coverage track for a particular set of bed regions""" (chunk, args) = arg try: offset = args.window // 2 mat = FragmentMat2D(chunk.chrom, chunk.start - offset, chunk.end + offset, args.lower, args.upper, args.atac) mat.makeFragmentMat(args.bam) cov = CoverageTrack(chunk.chrom, chunk.start, chunk.end) cov.calculateCoverage(mat, lower=args.lower, upper=args.upper, window_len=args.window) cov.vals *= args.scale / float(args.window) except Exception as e: print(('Caught exception when processing:\n' + chunk.asBed() + "\n")) traceback.print_exc() print() raise e return cov
def getCov(self): """Get read coverage for regions""" self.cov = CoverageTrack(self.chrom, self.start, self.end) self.cov.calculateCoverage(self.mat, 0, self.params.upper, self.params.window)
def getNFR(self): """get number of reads of sub-nucleosomal length""" self.nfr_cov = CoverageTrack(self.chrom, self.start, self.end) self.nfr_cov.calculateCoverage(self.mat, 0, self.params.lower, self.params.window)