def covered_segments_from_match_parts(match_parts,
                                      in_query=True,
                                      merge_segments_closer=1):
    '''Given a list of match_parts it returns the covered segments.

       match_part 1  -------        ----->    -----------
       match_part 2       ------
       It returns the list of segments covered by the match parts either in the
       query or in the subject.
       merge_segments_closer is an integer. Segments closer than the given
       number of residues will be merged.
    '''

    # we collect all start and ends
    segments = []
    for match_part in match_parts:
        if in_query:
            start = match_part['query_start']
            end = match_part['query_end']
        else:
            start = match_part['subject_start']
            end = match_part['subject_end']
        if start > end:  # a revesed item
            start, end = end, start
        segments.append((start, end))
    return merge_overlaping_segments(
        segments, merge_segments_closer=merge_segments_closer)
def covered_segments_from_match_parts(match_parts, in_query=True,
                                      merge_segments_closer=1):
    '''Given a list of match_parts it returns the covered segments.

       match_part 1  -------        ----->    -----------
       match_part 2       ------
       It returns the list of segments covered by the match parts either in the
       query or in the subject.
       merge_segments_closer is an integer. Segments closer than the given
       number of residues will be merged.
    '''

    # we collect all start and ends
    segments = []
    for match_part in match_parts:
        if in_query:
            start = match_part['query_start']
            end = match_part['query_end']
        else:
            start = match_part['subject_start']
            end = match_part['subject_end']
        if start > end:  # a revesed item
            start, end = end, start
        segments.append((start, end))
    return merge_overlaping_segments(segments,
                                   merge_segments_closer=merge_segments_closer)
Exemple #3
0
def _mask_sequence(seqrecord, segments):
    'It masks the given segments of the sequence'

    if not segments:
        return seqrecord
    segments = merge_overlaping_segments(segments)
    segments = get_all_segments(segments, len(seqrecord))
    seq = str(seqrecord.seq)
    new_seq = ''
    for segment in segments:
        start = segment[0][0]
        end = segment[0][1] + 1
        seq_ = seq[start:end]

        if segment[1]:
            seq_ = seq_.lower()
        new_seq += seq_
    return copy_seqrecord(seqrecord, seq=Seq(new_seq,
                                             alphabet=seqrecord.seq.alphabet))
Exemple #4
0
def _mask_sequence(seq, segments):
    'It masks the given segments of the sequence'

    if not segments:
        return seq
    segments = merge_overlaping_segments(segments)
    segments = get_all_segments(segments, get_length(seq))
    str_seq = get_str_seq(seq)
    new_seq = ''
    for segment in segments:
        start = segment[0][0]
        end = segment[0][1] + 1
        str_seq_ = str_seq[start:end]

        if segment[1]:
            str_seq_ = str_seq_.lower()
        new_seq += str_seq_
    if seq.kind == SEQRECORD:
        new_seq = Seq(new_seq, alphabet=seq.object.seq.alphabet)
    return copy_seq(seq, seq=new_seq)
Exemple #5
0
def _mask_sequence(seq, segments):
    'It masks the given segments of the sequence'

    if not segments:
        return seq
    segments = merge_overlaping_segments(segments)
    segments = get_all_segments(segments, get_length(seq))
    str_seq = get_str_seq(seq)
    new_seq = ''
    for segment in segments:
        start = segment[0][0]
        end = segment[0][1] + 1
        str_seq_ = str_seq[start:end]

        if segment[1]:
            str_seq_ = str_seq_.lower()
        new_seq += str_seq_
    if seq.kind == SEQRECORD:
        new_seq = Seq(new_seq, alphabet=seq.object.seq.alphabet)
    return copy_seq(seq, seq=new_seq)