def _update_genome_from_delta_data( franken_genome, external_genome, parser_state, distance_covered, is_external_insert ): from nasp_objects import Genome if distance_covered == -1: distance_covered = parser_state['final_pos'] - parser_state['reference_pos'] + 1 is_external_insert = True if distance_covered > 0: if parser_state['external_is_reversed']: matching_segment = Genome.reverse_complement( ''.join( external_genome.get_call( ( parser_state['external_pos'] - distance_covered + 1 ), parser_state['external_pos'] ) ) ) else: matching_segment = ''.join( external_genome.get_call( parser_state['external_pos'], ( parser_state['external_pos'] + distance_covered - 1 ) ) ) franken_genome.set_call( list( matching_segment ), parser_state['reference_pos'], 'X' ) parser_state['reference_pos'] = parser_state['reference_pos'] + distance_covered parser_state['external_pos'] = parser_state['external_pos'] + ( -distance_covered if parser_state['external_is_reversed'] else distance_covered ) if is_external_insert: parser_state['external_pos'] = parser_state['external_pos'] + ( -1 if parser_state['external_is_reversed'] else 1 ) else: franken_genome.set_call( '.', parser_state['reference_pos'], '!' ) parser_state['reference_pos'] = parser_state['reference_pos'] + 1 return parser_state