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)
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))
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)