def parse_motifs(raw_motifs, model_info, mod_set):
    if mod_set is not None:
        mod_set = set(mod_set)
    can_bases = set()
    for mod_base, can_base in model_info.mod_base_to_can.items():
        if mod_set is not None and mod_base not in mod_set:
            continue
        can_bases.add(can_base)
    if raw_motifs is None:
        return [(mh.compile_motif_pat(can_base), 0) for can_base in can_bases]
    motifs = []
    for raw_motif, rel_pos in raw_motifs:
        rel_pos = int(rel_pos)
        if raw_motif[rel_pos] not in can_bases:
            LOGGER.warning(
                ('Motif "{}" not associated with requested modified ' +
                 'bases.').format(raw_motif))
            continue
        motifs.append((mh.compile_motif_pat(raw_motif), rel_pos))
    return motifs
Exemple #2
0
def parse_motifs(raw_motifs):
    motifs = []
    for raw_motif, bases_before in raw_motifs:
        bases_before = int(bases_before)
        bases_after = len(raw_motif) - bases_before - 1
        motif = mh.compile_motif_pat(raw_motif)
        rc_motif = mh.compile_rev_comp_motif_pat(raw_motif)
        motifs.append(
            MOTIF_INFO(bases_before=bases_before,
                       bases_after=bases_after,
                       raw_motif=raw_motif,
                       motif=motif,
                       rc_motif=rc_motif))

    return motifs