Commit edf24f80 authored by Li's avatar Li
Browse files

Check the boundary when heuristic skipping alignment

parent 75be4a3d
Loading
Loading
Loading
Loading
+23 −6
Original line number Diff line number Diff line
@@ -2024,8 +2024,24 @@ void Chromap<MappingRecord>::VerifyCandidates(const SequenceBatch &read_batch, u
      *num_best_mappings = 1 ;
      *num_second_best_mappings = 0 ;
      *min_num_errors = 0 ;
      if (candidate_direction == kPositive) {

      uint32_t rid = 0 ; 
      uint32_t position = 0 ; 
      uint32_t read_length = read_batch.GetSequenceLengthAt(read_index);
      if (candidate_direction == kPositive) {
        rid = positive_candidates[ci].refPos >> 32 ;
        position = positive_candidates[ci].refPos ;
      }
      else {
        rid = negative_candidates[ci].refPos >> 32 ;
        position = (uint32_t)negative_candidates[ci].refPos - read_length + 1 ;
      }
      bool flag = true ;
      if (position < (uint32_t)error_threshold_ || position >= reference.GetSequenceLengthAt(rid) || position + read_length + error_threshold_ >= reference.GetSequenceLengthAt(rid)) {
      	flag = false ;
      }
      if (flag) {
        if (candidate_direction == kPositive) {
          positive_mappings->emplace_back(0, positive_candidates[ci].refPos + read_length - 1);
        } else {
          negative_mappings->emplace_back(0, negative_candidates[ci].refPos); 
@@ -2033,6 +2049,7 @@ void Chromap<MappingRecord>::VerifyCandidates(const SequenceBatch &read_batch, u
	//printf("Saved %d\n", positive_candidates.size() + negative_candidates.size() ) ;
	return ;
      }
  }
  //printf("Notsaved %d\n", positive_candidates.size() + negative_candidates.size()) ;

  // Use more sophicated approach to obtain the mapping