def get_closest_forward_read(self, read): closest_forward_read = None if read.query_name.split('_')[-1] == '1': positions = sorted(list(self.forward_reads_mate2_positions[read.reference_name].keys())) closest_pos = misc.takeClosestSmaller(positions, read.reference_end-self.context_width) if closest_pos is not None: closest_forward_read = self.forward_reads_mate2_positions[read.reference_name][closest_pos] else: positions = sorted(list(self.forward_reads_mate1_positions[read.reference_name].keys())) closest_pos = misc.takeClosestSmaller(positions, read.reference_end-self.context_width) if closest_pos is not None: closest_forward_read = self.forward_reads_mate1_positions[read.reference_name][closest_pos] return closest_forward_read
def has_nearby_3p_mate(self, pos, positions): closest_3p = misc.takeClosestSmaller(positions, pos) if closest_3p is None: return False if pos - closest_3p <= self.min_distance_to_mate: return True else: return False