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
Exemple #3
0
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