def get_reads_base_lengths(chrm_strand_reads, chrm_len, rev_strand):
base_length_sums = np.zeros(chrm_len)
base_cov = np.zeros(chrm_len, dtype=np.int_)
for r_data in chrm_strand_reads:
# extract read means data so data across all chrms is not
# in RAM at one time
try:
read_data = h5py.File(r_data.fn, 'r')
except IOError:
# probably truncated file
continue
events_slot = '/'.join((
'/Analyses', r_data.corr_group, 'Events'))
if events_slot not in read_data:
continue
read_lengths = read_data[events_slot]['length']
if rev_strand:
read_lengths = read_lengths[::-1]
base_length_sums[
r_data.start:
r_data.start + len(read_lengths)] += read_lengths
base_cov[r_data.start:r_data.start + len(read_lengths)] += 1
return base_length_sums / base_cov
评论列表
文章目录