mirror of
https://github.com/chhylp123/hifiasm.git
synced 2026-10-09 12:08:11 +08:00
Fix bug
This commit is contained in:
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
+22
-4
@@ -400,18 +400,29 @@ void Build_hash_table_multiple_thr()
|
|||||||
{
|
{
|
||||||
write_Total_Pos_Table(&PCB, read_file_name);
|
write_Total_Pos_Table(&PCB, read_file_name);
|
||||||
destory_Total_Pos_Table(&PCB);
|
destory_Total_Pos_Table(&PCB);
|
||||||
load_Total_Pos_Table(&PCB, read_file_name);
|
///load_Total_Pos_Table(&PCB, read_file_name);
|
||||||
|
|
||||||
write_All_reads(&R_INF, read_file_name);
|
write_All_reads(&R_INF, read_file_name);
|
||||||
destory_All_reads(&R_INF);
|
destory_All_reads(&R_INF);
|
||||||
load_All_reads(&R_INF, read_file_name);
|
///load_All_reads(&R_INF, read_file_name);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int load_pre_cauculated_index()
|
||||||
|
{
|
||||||
|
if(load_Total_Pos_Table(&PCB, read_file_name) && load_All_reads(&R_INF, read_file_name))
|
||||||
|
{
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/********************************for debug***************************************/
|
/********************************for debug***************************************/
|
||||||
@@ -508,15 +519,18 @@ void verify_Position_hash_table()
|
|||||||
while (get_read(seq))
|
while (get_read(seq))
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
||||||
if (seq->seq.l
|
if (seq->seq.l
|
||||||
!= Get_READ_LENGTH(R_INF, read_number))
|
!= Get_READ_LENGTH(R_INF, read_number))
|
||||||
{
|
{
|
||||||
fprintf(stderr, "seq error\n");
|
fprintf(stderr, "seq error\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
recover_UC_Read(&g_read, &R_INF, read_number);
|
recover_UC_Read(&g_read, &R_INF, read_number);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if(memcmp(seq->seq.s, g_read.seq, seq->seq.l))
|
if(memcmp(seq->seq.s, g_read.seq, seq->seq.l))
|
||||||
{
|
{
|
||||||
fprintf(stderr, "\nseq error ID: %llu, length: %llu\n",read_number, seq->seq.l);
|
fprintf(stderr, "\nseq error ID: %llu, length: %llu\n",read_number, seq->seq.l);
|
||||||
@@ -536,7 +550,6 @@ void verify_Position_hash_table()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
init_HPC_seq(&HPC_read, seq->seq.s, seq->seq.l);
|
init_HPC_seq(&HPC_read, seq->seq.s, seq->seq.l);
|
||||||
init_Hash_code(&k_code);
|
init_Hash_code(&k_code);
|
||||||
|
|
||||||
@@ -545,6 +558,8 @@ void verify_Position_hash_table()
|
|||||||
|
|
||||||
while ((code = get_HPC_code(&HPC_read)) != 6)
|
while ((code = get_HPC_code(&HPC_read)) != 6)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
||||||
if(code < 4)
|
if(code < 4)
|
||||||
{
|
{
|
||||||
k_mer_append(&k_code,code,k_mer_length);
|
k_mer_append(&k_code,code,k_mer_length);
|
||||||
@@ -552,13 +567,16 @@ void verify_Position_hash_table()
|
|||||||
if (avalible_k>=k_mer_length)
|
if (avalible_k>=k_mer_length)
|
||||||
{
|
{
|
||||||
|
|
||||||
uint64_t count1 = get_Total_Count_Table(&TCB, &k_code, k_mer_length);
|
///uint64_t count1 = get_Total_Count_Table(&TCB, &k_code, k_mer_length);
|
||||||
uint64_t count2 = count_Total_Pos_Table(&PCB, &k_code, k_mer_length);
|
uint64_t count2 = count_Total_Pos_Table(&PCB, &k_code, k_mer_length);
|
||||||
|
/**
|
||||||
if(count1>=k_mer_min_freq && count1<= k_mer_max_freq && count1!=count2)
|
if(count1>=k_mer_min_freq && count1<= k_mer_max_freq && count1!=count2)
|
||||||
{
|
{
|
||||||
fprintf(stderr, "count1: %lld\n",count1);
|
fprintf(stderr, "count1: %lld\n",count1);
|
||||||
fprintf(stderr, "count2: %lld\n",count2);
|
fprintf(stderr, "count2: %lld\n",count2);
|
||||||
}
|
}
|
||||||
|
**/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if(locate_Total_Pos_Table(&PCB, &k_code, &list, k_mer_length, &sub_ID) == count2)
|
if(locate_Total_Pos_Table(&PCB, &k_code, &list, k_mer_length, &sub_ID) == count2)
|
||||||
|
|||||||
@@ -8,6 +8,7 @@
|
|||||||
|
|
||||||
void Counting_multiple_thr();
|
void Counting_multiple_thr();
|
||||||
void Build_hash_table_multiple_thr();
|
void Build_hash_table_multiple_thr();
|
||||||
|
int load_pre_cauculated_index();
|
||||||
|
|
||||||
/********************************for debug***************************************/
|
/********************************for debug***************************************/
|
||||||
void Verify_Counting();
|
void Verify_Counting();
|
||||||
|
|||||||
+7
-1
@@ -131,12 +131,17 @@ void write_Total_Pos_Table(Total_Pos_Table* TCB, char* read_file_name)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void load_Total_Pos_Table(Total_Pos_Table* TCB, char* read_file_name)
|
int load_Total_Pos_Table(Total_Pos_Table* TCB, char* read_file_name)
|
||||||
{
|
{
|
||||||
fprintf(stdout, "Loading index to disk ...... \n");
|
fprintf(stdout, "Loading index to disk ...... \n");
|
||||||
char* index_name = (char*)malloc(strlen(read_file_name)+5);
|
char* index_name = (char*)malloc(strlen(read_file_name)+5);
|
||||||
sprintf(index_name, "%s.idx", read_file_name);
|
sprintf(index_name, "%s.idx", read_file_name);
|
||||||
FILE* fp = fopen(index_name, "r");
|
FILE* fp = fopen(index_name, "r");
|
||||||
|
if (!fp)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
fread(&TCB->prefix_bits, sizeof(TCB->prefix_bits), 1, fp);
|
fread(&TCB->prefix_bits, sizeof(TCB->prefix_bits), 1, fp);
|
||||||
fread(&TCB->suffix_bits, sizeof(TCB->suffix_bits), 1, fp);
|
fread(&TCB->suffix_bits, sizeof(TCB->suffix_bits), 1, fp);
|
||||||
@@ -184,6 +189,7 @@ void load_Total_Pos_Table(Total_Pos_Table* TCB, char* read_file_name)
|
|||||||
fclose(fp);
|
fclose(fp);
|
||||||
fprintf(stdout, "Index has been loaded.\n");
|
fprintf(stdout, "Index has been loaded.\n");
|
||||||
|
|
||||||
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -294,7 +294,7 @@ void init_Count_Table(Count_Table** table);
|
|||||||
void init_Pos_Table(Count_Table** pre_table, Pos_Table** table);
|
void init_Pos_Table(Count_Table** pre_table, Pos_Table** table);
|
||||||
void destory_Total_Pos_Table(Total_Pos_Table* TCB);
|
void destory_Total_Pos_Table(Total_Pos_Table* TCB);
|
||||||
void write_Total_Pos_Table(Total_Pos_Table* TCB, char* read_file_name);
|
void write_Total_Pos_Table(Total_Pos_Table* TCB, char* read_file_name);
|
||||||
void load_Total_Pos_Table(Total_Pos_Table* TCB, char* read_file_name);
|
int load_Total_Pos_Table(Total_Pos_Table* TCB, char* read_file_name);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
+9
-1
@@ -107,12 +107,18 @@ void write_All_reads(All_reads* r, char* read_file_name)
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
void load_All_reads(All_reads* r, char* read_file_name)
|
int load_All_reads(All_reads* r, char* read_file_name)
|
||||||
{
|
{
|
||||||
fprintf(stdout, "Loading reads to disk ...... \n");
|
fprintf(stdout, "Loading reads to disk ...... \n");
|
||||||
char* index_name = (char*)malloc(strlen(read_file_name)+5);
|
char* index_name = (char*)malloc(strlen(read_file_name)+5);
|
||||||
sprintf(index_name, "%s.bin", read_file_name);
|
sprintf(index_name, "%s.bin", read_file_name);
|
||||||
FILE* fp = fopen(index_name, "r");
|
FILE* fp = fopen(index_name, "r");
|
||||||
|
if (!fp)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
fread(&r->index_size, sizeof(r->index_size), 1, fp);
|
fread(&r->index_size, sizeof(r->index_size), 1, fp);
|
||||||
fread(&r->name_index_size, sizeof(r->name_index_size), 1, fp);
|
fread(&r->name_index_size, sizeof(r->name_index_size), 1, fp);
|
||||||
fread(&r->total_reads, sizeof(r->total_reads), 1, fp);
|
fread(&r->total_reads, sizeof(r->total_reads), 1, fp);
|
||||||
@@ -162,6 +168,8 @@ void load_All_reads(All_reads* r, char* read_file_name)
|
|||||||
free(index_name);
|
free(index_name);
|
||||||
fclose(fp);
|
fclose(fp);
|
||||||
fprintf(stdout, "Reads has been loaded.\n");
|
fprintf(stdout, "Reads has been loaded.\n");
|
||||||
|
|
||||||
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -111,7 +111,7 @@ void init_UC_Read(UC_Read* r);
|
|||||||
void recover_UC_Read(UC_Read* r, All_reads* R_INF, uint64_t ID);
|
void recover_UC_Read(UC_Read* r, All_reads* R_INF, uint64_t ID);
|
||||||
void reverse_complement(char* pattern, uint64_t length);
|
void reverse_complement(char* pattern, uint64_t length);
|
||||||
void write_All_reads(All_reads* r, char* read_file_name);
|
void write_All_reads(All_reads* r, char* read_file_name);
|
||||||
void load_All_reads(All_reads* r, char* read_file_name);
|
int load_All_reads(All_reads* r, char* read_file_name);
|
||||||
void destory_All_reads(All_reads* r);
|
void destory_All_reads(All_reads* r);
|
||||||
|
|
||||||
void Counting_block();
|
void Counting_block();
|
||||||
|
|||||||
@@ -21,20 +21,26 @@ int main(int argc, char *argv[])
|
|||||||
if (!CommandLine_process(argc, argv))
|
if (!CommandLine_process(argc, argv))
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
///init_kseq(read_file_name);
|
|
||||||
|
|
||||||
fprintf(stdout, "k-mer length: %d\n",k_mer_length);
|
fprintf(stdout, "k-mer length: %d\n",k_mer_length);
|
||||||
|
|
||||||
///Counting();
|
if (load_index_from_disk && load_pre_cauculated_index())
|
||||||
Counting_multiple_thr();
|
{
|
||||||
|
;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Counting_multiple_thr();
|
||||||
|
|
||||||
|
Build_hash_table_multiple_thr();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Build_hash_table_multiple_thr();
|
|
||||||
|
|
||||||
///verify_Position_hash_table();
|
///verify_Position_hash_table();
|
||||||
|
|
||||||
///destory_kseq();
|
|
||||||
|
|
||||||
///debug_Counting();
|
|
||||||
|
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
|
|||||||
Reference in New Issue
Block a user