Region *Region_create(gint query_start, gint target_start, gint query_length, gint target_length) { register Region *region = g_new(Region, 1); region->ref_count = 1; region->query_start = query_start; region->target_start = target_start; region->query_length = query_length; region->target_length = target_length; g_assert(Region_is_valid(region)); return region; }
void Region_init_static(Region *region, gint query_start, gint target_start, gint query_length, gint target_length) { region->ref_count = -1; region->query_start = query_start; region->target_start = target_start; region->query_length = query_length; region->target_length = target_length; g_assert(Region_is_valid(region)); return; }
static Region *Optimal_find_region(Optimal *optimal, Region *region, gpointer user_data, C4_Score threshold, SubOpt *subopt, C4_Score *region_score){ register Region *alignment_region; register Viterbi_Data *vd; register C4_Score score; g_assert(optimal->type & Optimal_Type_REDUCED_SPACE); if(!optimal->find_region) /* Must be a global model */ return Region_share(region); /* Already know region */ g_assert(optimal->find_region); vd = Viterbi_Data_create(optimal->find_region, region); score = Viterbi_calculate(optimal->find_region, region, vd, user_data, subopt); if(score < threshold) return NULL; alignment_region = Region_share(vd->alignment_region); (*region_score) = score; g_assert(Region_is_valid(alignment_region)); g_assert(Region_is_within(region, alignment_region)); Viterbi_Data_destroy(vd); return alignment_region; }