def get_base_means(raw_read_coverage, chrm_sizes):
# ignore divide by zero errors that occur where there is no
# coverage. Need to correct nan values after subtracting two sets of
# coverage so leave as nan for now
old_err_settings = np.seterr(all='ignore')
# take the mean over all signal overlapping each base
mean_base_signal = {}
for chrm, strand in [(c, s) for c in chrm_sizes.keys()
for s in ('+', '-')]:
if (chrm, strand) in raw_read_coverage:
cs_base_means = get_reads_base_means(
raw_read_coverage[(chrm, strand)], chrm_sizes[chrm],
strand == '-')
else:
cs_base_means = np.empty(chrm_sizes[chrm])
cs_base_means[:] = np.nan
mean_base_signal[(chrm, strand)] = cs_base_means
_ = np.seterr(**old_err_settings)
return mean_base_signal
评论列表
文章目录