edit distance based error correction

This commit is contained in:
Haoyu Cheng
2019-07-07 03:44:59 -04:00
parent b553f3ac5e
commit 87873d6323
35 changed files with 3910 additions and 6 deletions

View File

@@ -483,6 +483,64 @@ void print_overlap_region(Candidates_list* candidates, overlap_region_alloc* ove
}
int cmp_by_x_pos_s(const void * a, const void * b)
{
if ((*(overlap_region*)a).x_pos_s > (*(overlap_region*)b).x_pos_s)
{
return 1;
}
else if ((*(overlap_region*)a).x_pos_s < (*(overlap_region*)b).x_pos_s)
{
return -1;
}
else
{
if ((*(overlap_region*)a).x_pos_e > (*(overlap_region*)b).x_pos_e)
{
return 1;
}
else if ((*(overlap_region*)a).x_pos_e < (*(overlap_region*)b).x_pos_e)
{
return -1;
}
else
{
return 0;
}
}
}
int cmp_by_x_pos_e(const void * a, const void * b)
{
if ((*(overlap_region*)a).x_pos_e > (*(overlap_region*)b).x_pos_e)
{
return 1;
}
else if ((*(overlap_region*)a).x_pos_e < (*(overlap_region*)b).x_pos_e)
{
return -1;
}
else
{
if ((*(overlap_region*)a).x_pos_s > (*(overlap_region*)b).x_pos_s)
{
return 1;
}
else if ((*(overlap_region*)a).x_pos_s < (*(overlap_region*)b).x_pos_s)
{
return -1;
}
else
{
return 0;
}
}
}
///r->length = Get_READ_LENGTH((*R_INF), ID);
@@ -500,6 +558,7 @@ uint64_t readID, uint64_t readLength, All_reads* R_INF)
long long constant_distance = 5;
double error_rate = 0.05;
if (candidates->length == 0)
{
return;
@@ -556,14 +615,19 @@ uint64_t readID, uint64_t readLength, All_reads* R_INF)
}
///自己和自己重叠的要排除
///if (tmp_region.x_id != tmp_region.y_id && tmp_region.shared_seed > 1)
if (tmp_region.x_id != tmp_region.y_id)
{
append_overlap_region_alloc(overlap_list, &tmp_region, R_INF);
}
}
///以x_pos_e即结束位置为主元排序
///qsort(overlap_list->list, overlap_list->length, sizeof(overlap_region), cmp_by_x_pos_e);
qsort(overlap_list->list, overlap_list->length, sizeof(overlap_region), cmp_by_x_pos_s);
///debug_overlap_region(candidates, overlap_list, readID);
///print_overlap_region(candidates, overlap_list, R_INF);