def get_barcode_windows_seperate(fragments, barcode_map, window_size, chrom_length, start, end, walk_step): window_starts = range(start, end - 2 * window_size, walk_step) barcode_windows = [] for start in window_starts: #up windows end = start + window_size overlap = utilities.frags_overlap_same_chrom(fragments, start, end) barcodes = set(barcode_map[bc] for bc in overlap["bc"]) barcode_windows.append(barcodes) barcode_windows.append(set([start, end])) #down windows, need to change the start by start + windows size start1 = start + window_size + 1 end1 = start1 + window_size overlap1 = utilities.frags_overlap_same_chrom(fragments, start1, end1) barcodes1 = set(barcode_map[bc1] for bc1 in overlap1["bc"]) barcode_windows.append(barcodes1) barcode_windows.append(set([start1, end1])) return barcode_windows
def get_barcode_windows(fragments, barcode_map, window_size, chrom_length, start, end): window_starts = range(start, end, window_size) barcode_windows = [] for start in window_starts: end = start + window_size overlap = utilities.frags_overlap_same_chrom(fragments, start, end) barcodes = set(barcode_map[bc] for bc in overlap["bc"]) barcode_windows.append(barcodes) return barcode_windows
def get_bg_fragments_distributions(frags, reference, logger, skip_length=1e6): distributions = [] for chrom in reference.chroms: logger.log("BG Frag Length Distribution: {}".format(chrom)) chrom_length = reference.chrom_lengths[chrom] curfrags = frags.loc[frags["chrom"] == chrom] if chrom_length < 2 * skip_length: continue for pos in numpy.arange(skip_length, chrom_length - skip_length, skip_length): e = utilities.frags_overlap_same_chrom(curfrags, int(pos), int(pos)) if e.shape[0] < 5: continue distributions.append(e["obs_len"].values) if len(distributions) < 2 and skip_length > 1e5: print("Trying again...") return get_bg_fragments_distributions(frags, reference, logger, skip_length=5e4) return distributions