void BlastSetUp_MaskQuery(BLAST_SequenceBlk* query_blk, const BlastQueryInfo* query_info, const BlastMaskLoc *filter_maskloc, EBlastProgramType program_number) { const Boolean kIsNucl = (program_number == eBlastTypeBlastn); Int4 context; /* loop variable. */ ASSERT(query_blk); ASSERT(query_info); ASSERT(filter_maskloc); for (context = query_info->first_context; context <= query_info->last_context; ++context) { Int4 query_length = 0; Int4 context_offset = 0; Uint1 *buffer = NULL; /* holds sequence */ if (query_info->contexts[context].is_valid == FALSE) { continue; } query_length = query_info->contexts[context].query_length; context_offset = query_info->contexts[context].query_offset; buffer = &query_blk->sequence[context_offset]; ASSERT(buffer); Blast_MaskTheResidues(buffer, query_length, kIsNucl, filter_maskloc->seqloc_array[context], BlastIsReverseStrand(kIsNucl, context), 0); } }
void BlastSetUp_MaskQuery(BLAST_SequenceBlk* query_blk, const BlastQueryInfo* query_info, const BlastMaskLoc *filter_maskloc, EBlastProgramType program_number) { const Boolean kIsNucl = (program_number == eBlastTypeBlastn); Int4 context; /* loop variable. */ Int4 total_length; Boolean has_mask = FALSE; /* Check for whether filter_maskloc is empty. */ Int4 index; /* loop variable. */ ASSERT(query_blk); ASSERT(query_info); ASSERT(filter_maskloc); for (index=0; index<filter_maskloc->total_size; index++) { if (filter_maskloc->seqloc_array[index]) { has_mask = TRUE; break; } } if (has_mask == FALSE) return; total_length = query_info->contexts[query_info->last_context].query_offset + query_info->contexts[query_info->last_context].query_length + 2; query_blk->sequence_start_nomask = BlastMemDup(query_blk->sequence_start, total_length); query_blk->sequence_nomask = query_blk->sequence_start_nomask + 1; query_blk->nomask_allocated = TRUE; for (context = query_info->first_context; context <= query_info->last_context; ++context) { Int4 query_length = 0; Int4 context_offset = 0; Uint1 *buffer = NULL; /* holds sequence */ if (query_info->contexts[context].is_valid == FALSE) { continue; } query_length = query_info->contexts[context].query_length; context_offset = query_info->contexts[context].query_offset; buffer = &query_blk->sequence[context_offset]; ASSERT(buffer); Blast_MaskTheResidues(buffer, query_length, kIsNucl, filter_maskloc->seqloc_array[context], BlastIsReverseStrand(kIsNucl, context), 0); } }