def test_get_all_segments(): 'Give a list of discontinious segments we get all segments' segments = get_all_segments([(0, 10), (15, 20)], 30) assert segments == [((0, 10), True), ((11, 14), False), ((15, 20), True), ((21, 29), False)] segments = get_all_segments([(15, 20)], 30) assert segments == [((0, 14), False), ((15, 20), True), ((21, 29), False)] segments = get_all_segments([(15, 29)], 30) assert segments == [((0, 14), False), ((15, 29), True)]
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)