Source code for transposonmapper.mapping.correct_read_position

import numpy as np

[docs]def correct_read_position(flags, start_position, readlength): """Correct starting position for reads with reversed orientation Parameters ---------- flags : numpy.array [description] start_position : numpy.array [description] readlength : numpy.array [description] Returns ------- numpy.array start position and flags corrected """ flag0coor_array = np.where(flags == 1) # coordinates reads 5' -> 3' flag16coor_array = np.where(flags == -1) # coordinates reads 3' -> 5' startdirect_array = start_position[flag0coor_array] flagdirect_array = flags[flag0coor_array] startindirect_array = ( start_position[flag16coor_array] + readlength[flag16coor_array] ) flagindirect_array = flags[flag16coor_array] start_position_corrected = np.concatenate( (startdirect_array, startindirect_array), axis=0 ) flags_corrected = np.concatenate((flagdirect_array, flagindirect_array), axis=0) start_sortindices = start_position_corrected.argsort( kind="mergesort" ) # use mergesort for stable sorting start_position_corrected = start_position_corrected[start_sortindices] flags_corrected = flags_corrected[start_sortindices] return start_position_corrected, flags_corrected