Loading alnfrags.c +28 −29 Original line number Diff line number Diff line Loading @@ -35,9 +35,9 @@ #include "threader.h" #include "updatescores.h" int (*alnFragsPE)(HashMap_index**, int*, int*, int, double, CompDNA*, CompDNA*, unsigned char*, unsigned char*, Qseqs*, Qseqs*, int, int*, int*, long unsigned*, long unsigned*, int*, int*, int*, int*, int*, int*, int, int, long*, long*, FILE*, AlnPoints*, NWmat*, volatile int*, volatile int*) = alnFragsUnionPE; int (*alnFragsPE)(HashMap_index**, int*, int*, int, double, int, CompDNA*, CompDNA*, unsigned char*, unsigned char*, Qseqs*, Qseqs*, int, int*, int*, long unsigned*, long unsigned*, int*, int*, int*, int*, int*, int*, int, int, long*, long*, FILE*, AlnPoints*, NWmat*, volatile int*, volatile int*) = alnFragsUnionPE; int alnFragsSE(HashMap_index **templates_index, int *matched_templates, int *template_lengths, int mq, double scoreT, int rc_flag, CompDNA *qseq_comp, CompDNA *qseq_r_comp, unsigned char *qseq, unsigned char *qseq_r, int q_len, int kmersize, Qseqs *header, int *bestTemplates, long unsigned *alignment_scores, long unsigned *uniq_alignment_scores, int *best_start_pos, int *best_end_pos, int *flag, int *best_read_score, int seq_in, int index_in, long *seq_indexes, long *index_indexes, FILE *frag_out_raw, AlnPoints *points, NWmat *NWmatrices, volatile int *excludeOut, volatile int *excludeDB) { int alnFragsSE(HashMap_index **templates_index, int *matched_templates, int *template_lengths, int mq, double scoreT, int minlen, int rc_flag, CompDNA *qseq_comp, CompDNA *qseq_r_comp, unsigned char *qseq, unsigned char *qseq_r, int q_len, int kmersize, Qseqs *header, int *bestTemplates, long unsigned *alignment_scores, long unsigned *uniq_alignment_scores, int *best_start_pos, int *best_end_pos, int *flag, int *best_read_score, int seq_in, int index_in, long *seq_indexes, long *index_indexes, FILE *frag_out_raw, AlnPoints *points, NWmat *NWmatrices, volatile int *excludeOut, volatile int *excludeDB) { int t_i, template, read_score, bestHits, aln_len; int start, end, W1; Loading Loading @@ -100,9 +100,10 @@ int alnFragsSE(HashMap_index **templates_index, int *matched_templates, int *tem //read_score += (((start != 0) + (end != template_lengths[abs(template)])) * W1); /* Get normed score */ if(aln_len > 0) { if(minlen <= aln_len) { score = 1.0 * read_score / aln_len; } else { read_score = 0; score = 0; } Loading Loading @@ -142,7 +143,7 @@ int alnFragsSE(HashMap_index **templates_index, int *matched_templates, int *tem return 1; } int alnFragsUnionPE(HashMap_index **templates_index, int *matched_templates, int *template_lengths, int mq, double scoreT, CompDNA *qseq_comp, CompDNA *qseq_r_comp, unsigned char *qseq, unsigned char *qseq_r, Qseqs *header, Qseqs *header_r, int kmersize, int *bestTemplates, int *bestTemplates_r, long unsigned *alignment_scores, long unsigned *uniq_alignment_scores, int *best_start_pos, int *best_end_pos, int *flag, int *flag_r, int *best_read_score, int *best_read_score_r, int seq_in, int index_in, long *seq_indexes, long *index_indexes, FILE *frag_out_raw, AlnPoints *points, NWmat *NWmatrices, volatile int *excludeOut, volatile int *excludeDB) { int alnFragsUnionPE(HashMap_index **templates_index, int *matched_templates, int *template_lengths, int mq, double scoreT, int minlen, CompDNA *qseq_comp, CompDNA *qseq_r_comp, unsigned char *qseq, unsigned char *qseq_r, Qseqs *header, Qseqs *header_r, int kmersize, int *bestTemplates, int *bestTemplates_r, long unsigned *alignment_scores, long unsigned *uniq_alignment_scores, int *best_start_pos, int *best_end_pos, int *flag, int *flag_r, int *best_read_score, int *best_read_score_r, int seq_in, int index_in, long *seq_indexes, long *index_indexes, FILE *frag_out_raw, AlnPoints *points, NWmat *NWmatrices, volatile int *excludeOut, volatile int *excludeDB) { int t_i, template, read_score; int compScore, bestHits, bestHits_r, aln_len, start, end, rc, W1; Loading Loading @@ -198,13 +199,12 @@ int alnFragsUnionPE(HashMap_index **templates_index, int *matched_templates, int alnStat = KMA_score(templates_index[template], qseq, qseq_comp->seqlen, qseq_comp, mq, scoreT, points, NWmatrices); /* get read score */ if(0 < alnStat.score) { aln_len = alnStat.len; read_score = alnStat.score; if(minlen <= aln_len && 0 < read_score) { start = alnStat.pos; end = alnStat.pos + alnStat.len - alnStat.gaps; read_score = alnStat.score; if(start == 0 && end == template_lengths[abs(template)]) { read_score += abs(W1); } Loading @@ -227,13 +227,12 @@ int alnFragsUnionPE(HashMap_index **templates_index, int *matched_templates, int alnStat = KMA_score(templates_index[template], qseq_r, qseq_r_comp->seqlen, qseq_r_comp, mq, scoreT, points, NWmatrices); /* get read score */ if(0 < alnStat.score) { aln_len = alnStat.len; read_score = alnStat.score; if(minlen <= aln_len && 0 < read_score) { start = alnStat.pos; end = alnStat.pos + alnStat.len - alnStat.gaps; read_score = alnStat.score; if(start == 0 && end == template_lengths[abs(template)]) { read_score += abs(W1); } Loading Loading @@ -421,7 +420,7 @@ int alnFragsUnionPE(HashMap_index **templates_index, int *matched_templates, int return 3; } int alnFragsPenaltyPE(HashMap_index **templates_index, int *matched_templates, int *template_lengths, int mq, double scoreT, CompDNA *qseq_comp, CompDNA *qseq_r_comp, unsigned char *qseq, unsigned char *qseq_r, Qseqs *header, Qseqs *header_r, int kmersize, int *bestTemplates, int *bestTemplates_r, long unsigned *alignment_scores, long unsigned *uniq_alignment_scores, int *best_start_pos, int *best_end_pos, int *flag, int *flag_r, int *best_read_score, int *best_read_score_r, int seq_in, int index_in, long *seq_indexes, long *index_indexes, FILE *frag_out_raw, AlnPoints *points, NWmat *NWmatrices, volatile int *excludeOut, volatile int *excludeDB) { int alnFragsPenaltyPE(HashMap_index **templates_index, int *matched_templates, int *template_lengths, int mq, double scoreT, int minlen, CompDNA *qseq_comp, CompDNA *qseq_r_comp, unsigned char *qseq, unsigned char *qseq_r, Qseqs *header, Qseqs *header_r, int kmersize, int *bestTemplates, int *bestTemplates_r, long unsigned *alignment_scores, long unsigned *uniq_alignment_scores, int *best_start_pos, int *best_end_pos, int *flag, int *flag_r, int *best_read_score, int *best_read_score_r, int seq_in, int index_in, long *seq_indexes, long *index_indexes, FILE *frag_out_raw, AlnPoints *points, NWmat *NWmatrices, volatile int *excludeOut, volatile int *excludeDB) { int t_i, template, read_score; int compScore, bestHits, bestHits_r, aln_len, start, end, rc, W1, PE; Loading Loading @@ -478,13 +477,12 @@ int alnFragsPenaltyPE(HashMap_index **templates_index, int *matched_templates, i alnStat = KMA_score(templates_index[template], qseq, qseq_comp->seqlen, qseq_comp, mq, scoreT, points, NWmatrices); /* get read score */ if(0 < alnStat.score) { aln_len = alnStat.len; read_score = alnStat.score; if(minlen <= aln_len && 0 < read_score) { start = alnStat.pos; end = alnStat.pos + alnStat.len - alnStat.gaps; read_score = alnStat.score; if(start == 0 && end == template_lengths[abs(template)]) { read_score += abs(W1); } Loading @@ -507,13 +505,12 @@ int alnFragsPenaltyPE(HashMap_index **templates_index, int *matched_templates, i alnStat = KMA_score(templates_index[template], qseq_r, qseq_r_comp->seqlen, qseq_r_comp, mq, scoreT, points, NWmatrices); /* get read score */ if(0 < alnStat.score) { aln_len = alnStat.len; read_score = alnStat.score; if(minlen <= aln_len && 0 < read_score) { start = alnStat.pos; end = alnStat.pos + alnStat.len - alnStat.gaps; read_score = alnStat.score; if(start == 0 && end == template_lengths[abs(template)]) { read_score += abs(W1); } Loading Loading @@ -698,7 +695,7 @@ int alnFragsPenaltyPE(HashMap_index **templates_index, int *matched_templates, i return 3; } int alnFragsForcePE(HashMap_index **templates_index, int *matched_templates, int *template_lengths, int mq, double scoreT, CompDNA *qseq_comp, CompDNA *qseq_r_comp, unsigned char *qseq, unsigned char *qseq_r, Qseqs *header, Qseqs *header_r, int kmersize, int *bestTemplates, int *bestTemplates_r, long unsigned *alignment_scores, long unsigned *uniq_alignment_scores, int *best_start_pos, int *best_end_pos, int *flag, int *flag_r, int *best_read_score, int *best_read_score_r, int seq_in, int index_in, long *seq_indexes, long *index_indexes, FILE *frag_out_raw, AlnPoints *points, NWmat *NWmatrices, volatile int *excludeOut, volatile int *excludeDB) { int alnFragsForcePE(HashMap_index **templates_index, int *matched_templates, int *template_lengths, int mq, double scoreT, int minlen, CompDNA *qseq_comp, CompDNA *qseq_r_comp, unsigned char *qseq, unsigned char *qseq_r, Qseqs *header, Qseqs *header_r, int kmersize, int *bestTemplates, int *bestTemplates_r, long unsigned *alignment_scores, long unsigned *uniq_alignment_scores, int *best_start_pos, int *best_end_pos, int *flag, int *flag_r, int *best_read_score, int *best_read_score_r, int seq_in, int index_in, long *seq_indexes, long *index_indexes, FILE *frag_out_raw, AlnPoints *points, NWmat *NWmatrices, volatile int *excludeOut, volatile int *excludeDB) { int t_i, template, read_score, bestHits, aln_len, W1; int start, end, rc; Loading Loading @@ -751,11 +748,11 @@ int alnFragsForcePE(HashMap_index **templates_index, int *matched_templates, int /* align qseq */ alnStat = KMA_score(templates_index[template], qseq, qseq_comp->seqlen, qseq_comp, mq, scoreT, points, NWmatrices); if(0 < alnStat.score) { if(0 < alnStat.score && minlen <= alnStat.len) { alnStat_r = KMA_score(templates_index[template], qseq_r, qseq_r_comp->seqlen, qseq_r_comp, mq, scoreT, points, NWmatrices); /* get read score */ if(0 < alnStat_r.score) { if(0 < alnStat_r.score && minlen <= alnStat_r.len) { aln_len = alnStat.len + alnStat_r.len; /* Handle negative insertsizes caused by trimming, Loading Loading @@ -834,9 +831,10 @@ void * alnFrags_threaded(void * arg) { static volatile int excludeIn[1] = {0}, excludeOut[1] = {0}, excludeDB[1] = {0}; Aln_thread *thread = arg; int rc_flag, read_score, delta, index_in, seq_in, kmersize, flag, flag_r; int mq, sam, unmapped, best_read_score, stats[2], *matched_templates, *bestTemplates; int *best_start_pos, *best_end_pos, *template_lengths, *bestTemplates_r; int rc_flag, read_score, delta, index_in, seq_in, kmersize, minlen; int flag, flag_r, mq, sam, unmapped, best_read_score, stats[2]; int *matched_templates, *bestTemplates, *bestTemplates_r; int *template_lengths, *best_start_pos, *best_end_pos; long *index_indexes, *seq_indexes; long unsigned *alignment_scores, *uniq_alignment_scores; double scoreT; Loading Loading @@ -872,6 +870,7 @@ void * alnFrags_threaded(void * arg) { points = thread->points; NWmatrices = thread->NWmatrices; kmersize = thread->kmersize; minlen = thread->minlen; mq = thread->mq; sam = thread->sam; scoreT = thread->scoreT; Loading Loading @@ -910,9 +909,9 @@ void * alnFrags_threaded(void * arg) { if(kmersize <= qseq->len) { if(read_score && kmersize <= qseq_r->len) { // PE unmapped = alnFragsPE(templates_index, matched_templates, template_lengths, mq, scoreT, qseq_comp, qseq_r_comp, qseq->seq, qseq_r->seq, header, header_r, kmersize, bestTemplates, bestTemplates_r, alignment_scores, uniq_alignment_scores, best_start_pos, best_end_pos, &flag, &flag_r, &best_read_score, &read_score, seq_in, index_in, seq_indexes, index_indexes, frag_out_raw, points, NWmatrices, excludeOut, excludeDB); unmapped = alnFragsPE(templates_index, matched_templates, template_lengths, mq, scoreT, minlen, qseq_comp, qseq_r_comp, qseq->seq, qseq_r->seq, header, header_r, kmersize, bestTemplates, bestTemplates_r, alignment_scores, uniq_alignment_scores, best_start_pos, best_end_pos, &flag, &flag_r, &best_read_score, &read_score, seq_in, index_in, seq_indexes, index_indexes, frag_out_raw, points, NWmatrices, excludeOut, excludeDB); } else { // SE unmapped = alnFragsSE(templates_index, matched_templates, template_lengths, mq, scoreT, rc_flag, qseq_comp, qseq_r_comp, qseq->seq, qseq_r->seq, qseq->len, kmersize, header, bestTemplates, alignment_scores, uniq_alignment_scores, best_start_pos, best_end_pos, &flag, &best_read_score, seq_in, index_in, seq_indexes, index_indexes, frag_out_raw, points, NWmatrices, excludeOut, excludeDB); unmapped = alnFragsSE(templates_index, matched_templates, template_lengths, mq, scoreT, minlen, rc_flag, qseq_comp, qseq_r_comp, qseq->seq, qseq_r->seq, qseq->len, kmersize, header, bestTemplates, alignment_scores, uniq_alignment_scores, best_start_pos, best_end_pos, &flag, &best_read_score, seq_in, index_in, seq_indexes, index_indexes, frag_out_raw, points, NWmatrices, excludeOut, excludeDB); } } else { unmapped = 0; Loading alnfrags.h +6 −5 Original line number Diff line number Diff line Loading @@ -45,6 +45,7 @@ struct aln_thread { int index_in; int seq_in; int kmersize; int minlen; int mq; int sam; double scoreT; Loading @@ -62,9 +63,9 @@ struct aln_thread { #define ALNTHREAD 1; #endif extern int (*alnFragsPE)(HashMap_index**, int*, int*, int, double, CompDNA*, CompDNA*, unsigned char*, unsigned char*, Qseqs*, Qseqs*, int, int*, int*, long unsigned*, long unsigned*, int*, int*, int*, int*, int*, int*, int, int, long*, long*, FILE*, AlnPoints*, NWmat*, volatile int*, volatile int*); int alnFragsSE(HashMap_index **templates_index, int *matched_templates, int *template_lengths, int mq, double scoreT, int rc_flag, CompDNA *qseq_comp, CompDNA *qseq_r_comp, unsigned char *qseq, unsigned char *qseq_r, int q_len, int kmersize, Qseqs *header, int *bestTemplates, long unsigned *alignment_scores, long unsigned *uniq_alignment_scores, int *best_start_pos, int *best_end_pos, int *flag, int *best_read_score, int seq_in, int index_in, long *seq_indexes, long *index_indexes, FILE *frag_out_raw, AlnPoints *points, NWmat *NWmatrices, volatile int *excludeOut, volatile int *excludeDB); int alnFragsUnionPE(HashMap_index **templates_index, int *matched_templates, int *template_lengths, int mq, double scoreT, CompDNA *qseq_comp, CompDNA *qseq_r_comp, unsigned char *qseq, unsigned char *qseq_r, Qseqs *header, Qseqs *header_r, int kmersize, int *bestTemplates, int *bestTemplates_r, long unsigned *alignment_scores, long unsigned *uniq_alignment_scores, int *best_start_pos, int *best_end_pos, int *flag, int *flag_r, int *best_read_score, int *best_read_score_r, int seq_in, int index_in, long *seq_indexes, long *index_indexes, FILE *frag_out_raw, AlnPoints *points, NWmat *NWmatrices, volatile int *excludeOut, volatile int *excludeDB); int alnFragsPenaltyPE(HashMap_index **templates_index, int *matched_templates, int *template_lengths, int mq, double scoreT, CompDNA *qseq_comp, CompDNA *qseq_r_comp, unsigned char *qseq, unsigned char *qseq_r, Qseqs *header, Qseqs *header_r, int kmersize, int *bestTemplates, int *bestTemplates_r, long unsigned *alignment_scores, long unsigned *uniq_alignment_scores, int *best_start_pos, int *best_end_pos, int *flag, int *flag_r, int *best_read_score, int *best_read_score_r, int seq_in, int index_in, long *seq_indexes, long *index_indexes, FILE *frag_out_raw, AlnPoints *points, NWmat *NWmatrices, volatile int *excludeOut, volatile int *excludeDB); int alnFragsForcePE(HashMap_index **templates_index, int *matched_templates, int *template_lengths, int mq, double scoreT, CompDNA *qseq_comp, CompDNA *qseq_r_comp, unsigned char *qseq, unsigned char *qseq_r, Qseqs *header, Qseqs *header_r, int kmersize, int *bestTemplates, int *bestTemplates_r, long unsigned *alignment_scores, long unsigned *uniq_alignment_scores, int *best_start_pos, int *best_end_pos, int *flag, int *flag_r, int *best_read_score, int *best_read_score_r, int seq_in, int index_in, long *seq_indexes, long *index_indexes, FILE *frag_out_raw, AlnPoints *points, NWmat *NWmatrices, volatile int *excludeOut, volatile int *excludeDB); extern int (*alnFragsPE)(HashMap_index**, int*, int*, int, double, int, CompDNA*, CompDNA*, unsigned char*, unsigned char*, Qseqs*, Qseqs*, int, int*, int*, long unsigned*, long unsigned*, int*, int*, int*, int*, int*, int*, int, int, long*, long*, FILE*, AlnPoints*, NWmat*, volatile int*, volatile int*); int alnFragsSE(HashMap_index **templates_index, int *matched_templates, int *template_lengths, int mq, double scoreT, int minlen, int rc_flag, CompDNA *qseq_comp, CompDNA *qseq_r_comp, unsigned char *qseq, unsigned char *qseq_r, int q_len, int kmersize, Qseqs *header, int *bestTemplates, long unsigned *alignment_scores, long unsigned *uniq_alignment_scores, int *best_start_pos, int *best_end_pos, int *flag, int *best_read_score, int seq_in, int index_in, long *seq_indexes, long *index_indexes, FILE *frag_out_raw, AlnPoints *points, NWmat *NWmatrices, volatile int *excludeOut, volatile int *excludeDB); int alnFragsUnionPE(HashMap_index **templates_index, int *matched_templates, int *template_lengths, int mq, double scoreT, int minlen, CompDNA *qseq_comp, CompDNA *qseq_r_comp, unsigned char *qseq, unsigned char *qseq_r, Qseqs *header, Qseqs *header_r, int kmersize, int *bestTemplates, int *bestTemplates_r, long unsigned *alignment_scores, long unsigned *uniq_alignment_scores, int *best_start_pos, int *best_end_pos, int *flag, int *flag_r, int *best_read_score, int *best_read_score_r, int seq_in, int index_in, long *seq_indexes, long *index_indexes, FILE *frag_out_raw, AlnPoints *points, NWmat *NWmatrices, volatile int *excludeOut, volatile int *excludeDB); int alnFragsPenaltyPE(HashMap_index **templates_index, int *matched_templates, int *template_lengths, int mq, double scoreT, int minlen, CompDNA *qseq_comp, CompDNA *qseq_r_comp, unsigned char *qseq, unsigned char *qseq_r, Qseqs *header, Qseqs *header_r, int kmersize, int *bestTemplates, int *bestTemplates_r, long unsigned *alignment_scores, long unsigned *uniq_alignment_scores, int *best_start_pos, int *best_end_pos, int *flag, int *flag_r, int *best_read_score, int *best_read_score_r, int seq_in, int index_in, long *seq_indexes, long *index_indexes, FILE *frag_out_raw, AlnPoints *points, NWmat *NWmatrices, volatile int *excludeOut, volatile int *excludeDB); int alnFragsForcePE(HashMap_index **templates_index, int *matched_templates, int *template_lengths, int mq, double scoreT, int minlen, CompDNA *qseq_comp, CompDNA *qseq_r_comp, unsigned char *qseq, unsigned char *qseq_r, Qseqs *header, Qseqs *header_r, int kmersize, int *bestTemplates, int *bestTemplates_r, long unsigned *alignment_scores, long unsigned *uniq_alignment_scores, int *best_start_pos, int *best_end_pos, int *flag, int *flag_r, int *best_read_score, int *best_read_score_r, int seq_in, int index_in, long *seq_indexes, long *index_indexes, FILE *frag_out_raw, AlnPoints *points, NWmat *NWmatrices, volatile int *excludeOut, volatile int *excludeDB); void * alnFrags_threaded(void * arg); assembly.c +23 −5 Original line number Diff line number Diff line Loading @@ -279,7 +279,7 @@ void * assemble_KMA_threaded(void *arg) { int i, j, t_len, aln_len, start, end, bias, myBias, gaps, pos, spin, sam; int read_score, depthUpdate, bestBaseScore, bestScore, template, asm_len; int nextTemplate, file_i, file_count, delta, thread_num, mq, status, bcd; int stats[5], buffer[8]; int minlen, stats[5], buffer[8]; unsigned coverScore; long unsigned depth, depthVar; const char bases[6] = "ACGTN-"; Loading Loading @@ -312,6 +312,7 @@ void * assemble_KMA_threaded(void *arg) { NWmatrices = thread->NWmatrices; delta = qseq->size; mq = thread->mq; minlen = thread->minlen; scoreT = thread->scoreT; evalue = thread->evalue; bcd = thread->bcd; Loading Loading @@ -357,6 +358,8 @@ void * assemble_KMA_threaded(void *arg) { /* start threads */ aligned_assem->score = 0; aligned_assem->fragmentCountAln = 0; aligned_assem->readCountAln = 0; mainTemplate = template; thread_wait = thread_num; unlock(excludeMatrix); Loading Loading @@ -446,9 +449,10 @@ void * assemble_KMA_threaded(void *arg) { /* Get normed score */ read_score = alnStat.score; if(0 < aln_len) { if(minlen <= aln_len) { score = 1.0 * read_score / aln_len; } else { read_score = 0; score = 0; } Loading @@ -463,6 +467,10 @@ void * assemble_KMA_threaded(void *arg) { //lock(excludeMatrix); lockTime(excludeMatrix, 10) aligned_assem->score += read_score; if(!(stats[4] & 2) || (stats[4] & 64)) { ++aligned_assem->fragmentCountAln; } ++aligned_assem->readCountAln; /* diff */ i = 0; Loading Loading @@ -738,7 +746,7 @@ void * assemble_KMA_dense_threaded(void *arg) { Assemble_thread *thread = arg; int i, j, t_len, aln_len, start, end, file_i, file_count, template, spin; int pos, read_score, bestScore, depthUpdate, bestBaseScore, nextTemplate; int sam, thread_num, mq, status, bcd, stats[5], buffer[8]; int sam, thread_num, mq, status, bcd, minlen, stats[5], buffer[8]; unsigned coverScore, delta; long unsigned depth, depthVar; const char bases[6] = "ACGTN-"; Loading Loading @@ -770,6 +778,7 @@ void * assemble_KMA_dense_threaded(void *arg) { NWmatrices = thread->NWmatrices; delta = qseq->size; mq = thread->mq; minlen = thread->minlen; scoreT = thread->scoreT; evalue = thread->evalue; bcd = thread->bcd; Loading Loading @@ -834,6 +843,8 @@ void * assemble_KMA_dense_threaded(void *arg) { /* start threads */ aligned_assem->score = 0; aligned_assem->fragmentCountAln = 0; aligned_assem->readCountAln = 0; mainTemplate = template; thread_wait = thread_num; unlock(excludeOut); Loading Loading @@ -927,11 +938,11 @@ void * assemble_KMA_dense_threaded(void *arg) { /* Get normed score */ read_score = alnStat.score; if(0 < aln_len) { if(minlen <= aln_len) { score = 1.0 * read_score / aln_len; } else { score = 0; read_score = 0; score = 0; } if(0 < read_score && scoreT <= score) { Loading @@ -946,6 +957,10 @@ void * assemble_KMA_dense_threaded(void *arg) { //lock(excludeMatrix); lockTime(excludeMatrix, 10) aligned_assem->score += read_score; if(!(stats[4] & 2) || (stats[4] & 64)) { ++aligned_assem->fragmentCountAln; } ++aligned_assem->readCountAln; /* diff */ for(i = 0, pos = start; i < aln_len; ++i) { Loading Loading @@ -1150,6 +1165,8 @@ void * skip_assemble_KMA(void *arg) { aligned_assem->q[0] = 0; aligned_assem->len = t_len; aligned_assem->aln_len = t_len; aligned_assem->fragmentCountAln = 0; aligned_assem->readCountAln = 0; /* load reads of this template */ file_i = 0; Loading Loading @@ -1213,5 +1230,6 @@ void * skip_assemble_KMA(void *arg) { aligned_assem->cover = 0; aligned_assem->aln_len = (1 - exp((-1.0) * aligned_assem->depth / t_len)) * t_len; // expected coverage from depth return NULL; } assembly.h +3 −0 Original line number Diff line number Diff line Loading @@ -42,6 +42,8 @@ struct assem { unsigned len; unsigned aln_len; unsigned size; unsigned fragmentCountAln; unsigned readCountAln; }; struct assembly { Loading @@ -62,6 +64,7 @@ struct assemble_thread { int file_count; int spin; int mq; int minlen; int bcd; int sam; int thread_num; Loading ef.c +5 −5 Original line number Diff line number Diff line Loading @@ -41,10 +41,10 @@ void initExtendedFeatures(FILE *out, char *templatefilename, unsigned totFrags, strftime(Date, sizeof(Date), "%Y-%m-%d", tm); fprintf(out, "## date\t%s\n", Date); fprintf(out, "## command\t%s\n", cmd); fprintf(out, "# refSequence\treadCount\tfragmentCount\tmapScoreSum\trefCoveredPositions\trefConsensusSum\tbpTotal\tdepthVariance\tnucHighDepthVariance\tdepthMax\tsnpSum\tinsertSum\tdeletionSum\n"); fprintf(out, "# refSequence\treadCount\tfragmentCount\tmapScoreSum\trefCoveredPositions\trefConsensusSum\tbpTotal\tdepthVariance\tnucHighDepthVariance\tdepthMax\tsnpSum\tinsertSum\tdeletionSum\treadCountAln\tfragmentCountAln\n"); } void getExtendedFeatures(char *template_name, AssemInfo *matrix, long unsigned *template_seq, int t_len, Assem *aligned_assem, unsigned fragmentCount, unsigned readCount, FILE *outfile) { void getExtendedFeatures(char *template_name, AssemInfo *matrix, long unsigned *template_seq, int t_len, Assem *aligned_assem, unsigned fragmentCount, unsigned readCount, unsigned fragmentCountAln, unsigned readCountAln, FILE *outfile) { unsigned pos, depthUpdate, maxDepth, nucHighVarSum; long unsigned snpSum, insertSum, deletionSum; Loading Loading @@ -94,10 +94,10 @@ void getExtendedFeatures(char *template_name, AssemInfo *matrix, long unsigned * } } while((pos = assembly[pos].next) != 0); fprintf(outfile, "%s\t%u\t%u\t%lu\t%u\t%u\t%lu\t%f\t%u\t%u\t%lu\t%lu\t%lu\n", template_name, readCount, fragmentCount, aligned_assem->score, aligned_assem->aln_len, aligned_assem->cover, aligned_assem->depth, (double) var, nucHighVarSum, maxDepth, snpSum, insertSum, deletionSum); fprintf(outfile, "%s\t%u\t%u\t%lu\t%u\t%u\t%lu\t%f\t%u\t%u\t%lu\t%lu\t%lu\t%u\t%u\n", template_name, readCount, fragmentCount, aligned_assem->score, aligned_assem->aln_len, aligned_assem->cover, aligned_assem->depth, (double) var, nucHighVarSum, maxDepth, snpSum, insertSum, deletionSum, readCountAln, fragmentCountAln); } else if(aligned_assem) { fprintf(outfile, "%s\t%u\t%u\t%u\t%u\t%u\t%lu\t%f\t%u\t%u\t%u\t%u\t%u\n", template_name, readCount, fragmentCount, 0, 0, 0, aligned_assem->depth, 0.0, 0, 0, 0, 0, 0); fprintf(outfile, "%s\t%u\t%u\t%u\t%u\t%u\t%lu\t%f\t%u\t%u\t%u\t%u\t%u\t%u\t%u\n", template_name, readCount, fragmentCount, 0, 0, 0, aligned_assem->depth, 0.0, 0, 0, 0, 0, 0, readCountAln, fragmentCountAln); } else { fprintf(outfile, "%s\t%u\t%u\t%u\t%u\t%u\t%u\t%f\t%u\t%u\t%u\t%u\t%u\n", template_name, 0, 0, 0, 0, 0, 0, 0.0, 0, 0, 0, 0, 0); fprintf(outfile, "%s\t%u\t%u\t%u\t%u\t%u\t%u\t%f\t%u\t%u\t%u\t%u\t%u\t%u\t%u\n", template_name, 0, 0, 0, 0, 0, 0, 0.0, 0, 0, 0, 0, 0, 0, 0); } } Loading
alnfrags.c +28 −29 Original line number Diff line number Diff line Loading @@ -35,9 +35,9 @@ #include "threader.h" #include "updatescores.h" int (*alnFragsPE)(HashMap_index**, int*, int*, int, double, CompDNA*, CompDNA*, unsigned char*, unsigned char*, Qseqs*, Qseqs*, int, int*, int*, long unsigned*, long unsigned*, int*, int*, int*, int*, int*, int*, int, int, long*, long*, FILE*, AlnPoints*, NWmat*, volatile int*, volatile int*) = alnFragsUnionPE; int (*alnFragsPE)(HashMap_index**, int*, int*, int, double, int, CompDNA*, CompDNA*, unsigned char*, unsigned char*, Qseqs*, Qseqs*, int, int*, int*, long unsigned*, long unsigned*, int*, int*, int*, int*, int*, int*, int, int, long*, long*, FILE*, AlnPoints*, NWmat*, volatile int*, volatile int*) = alnFragsUnionPE; int alnFragsSE(HashMap_index **templates_index, int *matched_templates, int *template_lengths, int mq, double scoreT, int rc_flag, CompDNA *qseq_comp, CompDNA *qseq_r_comp, unsigned char *qseq, unsigned char *qseq_r, int q_len, int kmersize, Qseqs *header, int *bestTemplates, long unsigned *alignment_scores, long unsigned *uniq_alignment_scores, int *best_start_pos, int *best_end_pos, int *flag, int *best_read_score, int seq_in, int index_in, long *seq_indexes, long *index_indexes, FILE *frag_out_raw, AlnPoints *points, NWmat *NWmatrices, volatile int *excludeOut, volatile int *excludeDB) { int alnFragsSE(HashMap_index **templates_index, int *matched_templates, int *template_lengths, int mq, double scoreT, int minlen, int rc_flag, CompDNA *qseq_comp, CompDNA *qseq_r_comp, unsigned char *qseq, unsigned char *qseq_r, int q_len, int kmersize, Qseqs *header, int *bestTemplates, long unsigned *alignment_scores, long unsigned *uniq_alignment_scores, int *best_start_pos, int *best_end_pos, int *flag, int *best_read_score, int seq_in, int index_in, long *seq_indexes, long *index_indexes, FILE *frag_out_raw, AlnPoints *points, NWmat *NWmatrices, volatile int *excludeOut, volatile int *excludeDB) { int t_i, template, read_score, bestHits, aln_len; int start, end, W1; Loading Loading @@ -100,9 +100,10 @@ int alnFragsSE(HashMap_index **templates_index, int *matched_templates, int *tem //read_score += (((start != 0) + (end != template_lengths[abs(template)])) * W1); /* Get normed score */ if(aln_len > 0) { if(minlen <= aln_len) { score = 1.0 * read_score / aln_len; } else { read_score = 0; score = 0; } Loading Loading @@ -142,7 +143,7 @@ int alnFragsSE(HashMap_index **templates_index, int *matched_templates, int *tem return 1; } int alnFragsUnionPE(HashMap_index **templates_index, int *matched_templates, int *template_lengths, int mq, double scoreT, CompDNA *qseq_comp, CompDNA *qseq_r_comp, unsigned char *qseq, unsigned char *qseq_r, Qseqs *header, Qseqs *header_r, int kmersize, int *bestTemplates, int *bestTemplates_r, long unsigned *alignment_scores, long unsigned *uniq_alignment_scores, int *best_start_pos, int *best_end_pos, int *flag, int *flag_r, int *best_read_score, int *best_read_score_r, int seq_in, int index_in, long *seq_indexes, long *index_indexes, FILE *frag_out_raw, AlnPoints *points, NWmat *NWmatrices, volatile int *excludeOut, volatile int *excludeDB) { int alnFragsUnionPE(HashMap_index **templates_index, int *matched_templates, int *template_lengths, int mq, double scoreT, int minlen, CompDNA *qseq_comp, CompDNA *qseq_r_comp, unsigned char *qseq, unsigned char *qseq_r, Qseqs *header, Qseqs *header_r, int kmersize, int *bestTemplates, int *bestTemplates_r, long unsigned *alignment_scores, long unsigned *uniq_alignment_scores, int *best_start_pos, int *best_end_pos, int *flag, int *flag_r, int *best_read_score, int *best_read_score_r, int seq_in, int index_in, long *seq_indexes, long *index_indexes, FILE *frag_out_raw, AlnPoints *points, NWmat *NWmatrices, volatile int *excludeOut, volatile int *excludeDB) { int t_i, template, read_score; int compScore, bestHits, bestHits_r, aln_len, start, end, rc, W1; Loading Loading @@ -198,13 +199,12 @@ int alnFragsUnionPE(HashMap_index **templates_index, int *matched_templates, int alnStat = KMA_score(templates_index[template], qseq, qseq_comp->seqlen, qseq_comp, mq, scoreT, points, NWmatrices); /* get read score */ if(0 < alnStat.score) { aln_len = alnStat.len; read_score = alnStat.score; if(minlen <= aln_len && 0 < read_score) { start = alnStat.pos; end = alnStat.pos + alnStat.len - alnStat.gaps; read_score = alnStat.score; if(start == 0 && end == template_lengths[abs(template)]) { read_score += abs(W1); } Loading @@ -227,13 +227,12 @@ int alnFragsUnionPE(HashMap_index **templates_index, int *matched_templates, int alnStat = KMA_score(templates_index[template], qseq_r, qseq_r_comp->seqlen, qseq_r_comp, mq, scoreT, points, NWmatrices); /* get read score */ if(0 < alnStat.score) { aln_len = alnStat.len; read_score = alnStat.score; if(minlen <= aln_len && 0 < read_score) { start = alnStat.pos; end = alnStat.pos + alnStat.len - alnStat.gaps; read_score = alnStat.score; if(start == 0 && end == template_lengths[abs(template)]) { read_score += abs(W1); } Loading Loading @@ -421,7 +420,7 @@ int alnFragsUnionPE(HashMap_index **templates_index, int *matched_templates, int return 3; } int alnFragsPenaltyPE(HashMap_index **templates_index, int *matched_templates, int *template_lengths, int mq, double scoreT, CompDNA *qseq_comp, CompDNA *qseq_r_comp, unsigned char *qseq, unsigned char *qseq_r, Qseqs *header, Qseqs *header_r, int kmersize, int *bestTemplates, int *bestTemplates_r, long unsigned *alignment_scores, long unsigned *uniq_alignment_scores, int *best_start_pos, int *best_end_pos, int *flag, int *flag_r, int *best_read_score, int *best_read_score_r, int seq_in, int index_in, long *seq_indexes, long *index_indexes, FILE *frag_out_raw, AlnPoints *points, NWmat *NWmatrices, volatile int *excludeOut, volatile int *excludeDB) { int alnFragsPenaltyPE(HashMap_index **templates_index, int *matched_templates, int *template_lengths, int mq, double scoreT, int minlen, CompDNA *qseq_comp, CompDNA *qseq_r_comp, unsigned char *qseq, unsigned char *qseq_r, Qseqs *header, Qseqs *header_r, int kmersize, int *bestTemplates, int *bestTemplates_r, long unsigned *alignment_scores, long unsigned *uniq_alignment_scores, int *best_start_pos, int *best_end_pos, int *flag, int *flag_r, int *best_read_score, int *best_read_score_r, int seq_in, int index_in, long *seq_indexes, long *index_indexes, FILE *frag_out_raw, AlnPoints *points, NWmat *NWmatrices, volatile int *excludeOut, volatile int *excludeDB) { int t_i, template, read_score; int compScore, bestHits, bestHits_r, aln_len, start, end, rc, W1, PE; Loading Loading @@ -478,13 +477,12 @@ int alnFragsPenaltyPE(HashMap_index **templates_index, int *matched_templates, i alnStat = KMA_score(templates_index[template], qseq, qseq_comp->seqlen, qseq_comp, mq, scoreT, points, NWmatrices); /* get read score */ if(0 < alnStat.score) { aln_len = alnStat.len; read_score = alnStat.score; if(minlen <= aln_len && 0 < read_score) { start = alnStat.pos; end = alnStat.pos + alnStat.len - alnStat.gaps; read_score = alnStat.score; if(start == 0 && end == template_lengths[abs(template)]) { read_score += abs(W1); } Loading @@ -507,13 +505,12 @@ int alnFragsPenaltyPE(HashMap_index **templates_index, int *matched_templates, i alnStat = KMA_score(templates_index[template], qseq_r, qseq_r_comp->seqlen, qseq_r_comp, mq, scoreT, points, NWmatrices); /* get read score */ if(0 < alnStat.score) { aln_len = alnStat.len; read_score = alnStat.score; if(minlen <= aln_len && 0 < read_score) { start = alnStat.pos; end = alnStat.pos + alnStat.len - alnStat.gaps; read_score = alnStat.score; if(start == 0 && end == template_lengths[abs(template)]) { read_score += abs(W1); } Loading Loading @@ -698,7 +695,7 @@ int alnFragsPenaltyPE(HashMap_index **templates_index, int *matched_templates, i return 3; } int alnFragsForcePE(HashMap_index **templates_index, int *matched_templates, int *template_lengths, int mq, double scoreT, CompDNA *qseq_comp, CompDNA *qseq_r_comp, unsigned char *qseq, unsigned char *qseq_r, Qseqs *header, Qseqs *header_r, int kmersize, int *bestTemplates, int *bestTemplates_r, long unsigned *alignment_scores, long unsigned *uniq_alignment_scores, int *best_start_pos, int *best_end_pos, int *flag, int *flag_r, int *best_read_score, int *best_read_score_r, int seq_in, int index_in, long *seq_indexes, long *index_indexes, FILE *frag_out_raw, AlnPoints *points, NWmat *NWmatrices, volatile int *excludeOut, volatile int *excludeDB) { int alnFragsForcePE(HashMap_index **templates_index, int *matched_templates, int *template_lengths, int mq, double scoreT, int minlen, CompDNA *qseq_comp, CompDNA *qseq_r_comp, unsigned char *qseq, unsigned char *qseq_r, Qseqs *header, Qseqs *header_r, int kmersize, int *bestTemplates, int *bestTemplates_r, long unsigned *alignment_scores, long unsigned *uniq_alignment_scores, int *best_start_pos, int *best_end_pos, int *flag, int *flag_r, int *best_read_score, int *best_read_score_r, int seq_in, int index_in, long *seq_indexes, long *index_indexes, FILE *frag_out_raw, AlnPoints *points, NWmat *NWmatrices, volatile int *excludeOut, volatile int *excludeDB) { int t_i, template, read_score, bestHits, aln_len, W1; int start, end, rc; Loading Loading @@ -751,11 +748,11 @@ int alnFragsForcePE(HashMap_index **templates_index, int *matched_templates, int /* align qseq */ alnStat = KMA_score(templates_index[template], qseq, qseq_comp->seqlen, qseq_comp, mq, scoreT, points, NWmatrices); if(0 < alnStat.score) { if(0 < alnStat.score && minlen <= alnStat.len) { alnStat_r = KMA_score(templates_index[template], qseq_r, qseq_r_comp->seqlen, qseq_r_comp, mq, scoreT, points, NWmatrices); /* get read score */ if(0 < alnStat_r.score) { if(0 < alnStat_r.score && minlen <= alnStat_r.len) { aln_len = alnStat.len + alnStat_r.len; /* Handle negative insertsizes caused by trimming, Loading Loading @@ -834,9 +831,10 @@ void * alnFrags_threaded(void * arg) { static volatile int excludeIn[1] = {0}, excludeOut[1] = {0}, excludeDB[1] = {0}; Aln_thread *thread = arg; int rc_flag, read_score, delta, index_in, seq_in, kmersize, flag, flag_r; int mq, sam, unmapped, best_read_score, stats[2], *matched_templates, *bestTemplates; int *best_start_pos, *best_end_pos, *template_lengths, *bestTemplates_r; int rc_flag, read_score, delta, index_in, seq_in, kmersize, minlen; int flag, flag_r, mq, sam, unmapped, best_read_score, stats[2]; int *matched_templates, *bestTemplates, *bestTemplates_r; int *template_lengths, *best_start_pos, *best_end_pos; long *index_indexes, *seq_indexes; long unsigned *alignment_scores, *uniq_alignment_scores; double scoreT; Loading Loading @@ -872,6 +870,7 @@ void * alnFrags_threaded(void * arg) { points = thread->points; NWmatrices = thread->NWmatrices; kmersize = thread->kmersize; minlen = thread->minlen; mq = thread->mq; sam = thread->sam; scoreT = thread->scoreT; Loading Loading @@ -910,9 +909,9 @@ void * alnFrags_threaded(void * arg) { if(kmersize <= qseq->len) { if(read_score && kmersize <= qseq_r->len) { // PE unmapped = alnFragsPE(templates_index, matched_templates, template_lengths, mq, scoreT, qseq_comp, qseq_r_comp, qseq->seq, qseq_r->seq, header, header_r, kmersize, bestTemplates, bestTemplates_r, alignment_scores, uniq_alignment_scores, best_start_pos, best_end_pos, &flag, &flag_r, &best_read_score, &read_score, seq_in, index_in, seq_indexes, index_indexes, frag_out_raw, points, NWmatrices, excludeOut, excludeDB); unmapped = alnFragsPE(templates_index, matched_templates, template_lengths, mq, scoreT, minlen, qseq_comp, qseq_r_comp, qseq->seq, qseq_r->seq, header, header_r, kmersize, bestTemplates, bestTemplates_r, alignment_scores, uniq_alignment_scores, best_start_pos, best_end_pos, &flag, &flag_r, &best_read_score, &read_score, seq_in, index_in, seq_indexes, index_indexes, frag_out_raw, points, NWmatrices, excludeOut, excludeDB); } else { // SE unmapped = alnFragsSE(templates_index, matched_templates, template_lengths, mq, scoreT, rc_flag, qseq_comp, qseq_r_comp, qseq->seq, qseq_r->seq, qseq->len, kmersize, header, bestTemplates, alignment_scores, uniq_alignment_scores, best_start_pos, best_end_pos, &flag, &best_read_score, seq_in, index_in, seq_indexes, index_indexes, frag_out_raw, points, NWmatrices, excludeOut, excludeDB); unmapped = alnFragsSE(templates_index, matched_templates, template_lengths, mq, scoreT, minlen, rc_flag, qseq_comp, qseq_r_comp, qseq->seq, qseq_r->seq, qseq->len, kmersize, header, bestTemplates, alignment_scores, uniq_alignment_scores, best_start_pos, best_end_pos, &flag, &best_read_score, seq_in, index_in, seq_indexes, index_indexes, frag_out_raw, points, NWmatrices, excludeOut, excludeDB); } } else { unmapped = 0; Loading
alnfrags.h +6 −5 Original line number Diff line number Diff line Loading @@ -45,6 +45,7 @@ struct aln_thread { int index_in; int seq_in; int kmersize; int minlen; int mq; int sam; double scoreT; Loading @@ -62,9 +63,9 @@ struct aln_thread { #define ALNTHREAD 1; #endif extern int (*alnFragsPE)(HashMap_index**, int*, int*, int, double, CompDNA*, CompDNA*, unsigned char*, unsigned char*, Qseqs*, Qseqs*, int, int*, int*, long unsigned*, long unsigned*, int*, int*, int*, int*, int*, int*, int, int, long*, long*, FILE*, AlnPoints*, NWmat*, volatile int*, volatile int*); int alnFragsSE(HashMap_index **templates_index, int *matched_templates, int *template_lengths, int mq, double scoreT, int rc_flag, CompDNA *qseq_comp, CompDNA *qseq_r_comp, unsigned char *qseq, unsigned char *qseq_r, int q_len, int kmersize, Qseqs *header, int *bestTemplates, long unsigned *alignment_scores, long unsigned *uniq_alignment_scores, int *best_start_pos, int *best_end_pos, int *flag, int *best_read_score, int seq_in, int index_in, long *seq_indexes, long *index_indexes, FILE *frag_out_raw, AlnPoints *points, NWmat *NWmatrices, volatile int *excludeOut, volatile int *excludeDB); int alnFragsUnionPE(HashMap_index **templates_index, int *matched_templates, int *template_lengths, int mq, double scoreT, CompDNA *qseq_comp, CompDNA *qseq_r_comp, unsigned char *qseq, unsigned char *qseq_r, Qseqs *header, Qseqs *header_r, int kmersize, int *bestTemplates, int *bestTemplates_r, long unsigned *alignment_scores, long unsigned *uniq_alignment_scores, int *best_start_pos, int *best_end_pos, int *flag, int *flag_r, int *best_read_score, int *best_read_score_r, int seq_in, int index_in, long *seq_indexes, long *index_indexes, FILE *frag_out_raw, AlnPoints *points, NWmat *NWmatrices, volatile int *excludeOut, volatile int *excludeDB); int alnFragsPenaltyPE(HashMap_index **templates_index, int *matched_templates, int *template_lengths, int mq, double scoreT, CompDNA *qseq_comp, CompDNA *qseq_r_comp, unsigned char *qseq, unsigned char *qseq_r, Qseqs *header, Qseqs *header_r, int kmersize, int *bestTemplates, int *bestTemplates_r, long unsigned *alignment_scores, long unsigned *uniq_alignment_scores, int *best_start_pos, int *best_end_pos, int *flag, int *flag_r, int *best_read_score, int *best_read_score_r, int seq_in, int index_in, long *seq_indexes, long *index_indexes, FILE *frag_out_raw, AlnPoints *points, NWmat *NWmatrices, volatile int *excludeOut, volatile int *excludeDB); int alnFragsForcePE(HashMap_index **templates_index, int *matched_templates, int *template_lengths, int mq, double scoreT, CompDNA *qseq_comp, CompDNA *qseq_r_comp, unsigned char *qseq, unsigned char *qseq_r, Qseqs *header, Qseqs *header_r, int kmersize, int *bestTemplates, int *bestTemplates_r, long unsigned *alignment_scores, long unsigned *uniq_alignment_scores, int *best_start_pos, int *best_end_pos, int *flag, int *flag_r, int *best_read_score, int *best_read_score_r, int seq_in, int index_in, long *seq_indexes, long *index_indexes, FILE *frag_out_raw, AlnPoints *points, NWmat *NWmatrices, volatile int *excludeOut, volatile int *excludeDB); extern int (*alnFragsPE)(HashMap_index**, int*, int*, int, double, int, CompDNA*, CompDNA*, unsigned char*, unsigned char*, Qseqs*, Qseqs*, int, int*, int*, long unsigned*, long unsigned*, int*, int*, int*, int*, int*, int*, int, int, long*, long*, FILE*, AlnPoints*, NWmat*, volatile int*, volatile int*); int alnFragsSE(HashMap_index **templates_index, int *matched_templates, int *template_lengths, int mq, double scoreT, int minlen, int rc_flag, CompDNA *qseq_comp, CompDNA *qseq_r_comp, unsigned char *qseq, unsigned char *qseq_r, int q_len, int kmersize, Qseqs *header, int *bestTemplates, long unsigned *alignment_scores, long unsigned *uniq_alignment_scores, int *best_start_pos, int *best_end_pos, int *flag, int *best_read_score, int seq_in, int index_in, long *seq_indexes, long *index_indexes, FILE *frag_out_raw, AlnPoints *points, NWmat *NWmatrices, volatile int *excludeOut, volatile int *excludeDB); int alnFragsUnionPE(HashMap_index **templates_index, int *matched_templates, int *template_lengths, int mq, double scoreT, int minlen, CompDNA *qseq_comp, CompDNA *qseq_r_comp, unsigned char *qseq, unsigned char *qseq_r, Qseqs *header, Qseqs *header_r, int kmersize, int *bestTemplates, int *bestTemplates_r, long unsigned *alignment_scores, long unsigned *uniq_alignment_scores, int *best_start_pos, int *best_end_pos, int *flag, int *flag_r, int *best_read_score, int *best_read_score_r, int seq_in, int index_in, long *seq_indexes, long *index_indexes, FILE *frag_out_raw, AlnPoints *points, NWmat *NWmatrices, volatile int *excludeOut, volatile int *excludeDB); int alnFragsPenaltyPE(HashMap_index **templates_index, int *matched_templates, int *template_lengths, int mq, double scoreT, int minlen, CompDNA *qseq_comp, CompDNA *qseq_r_comp, unsigned char *qseq, unsigned char *qseq_r, Qseqs *header, Qseqs *header_r, int kmersize, int *bestTemplates, int *bestTemplates_r, long unsigned *alignment_scores, long unsigned *uniq_alignment_scores, int *best_start_pos, int *best_end_pos, int *flag, int *flag_r, int *best_read_score, int *best_read_score_r, int seq_in, int index_in, long *seq_indexes, long *index_indexes, FILE *frag_out_raw, AlnPoints *points, NWmat *NWmatrices, volatile int *excludeOut, volatile int *excludeDB); int alnFragsForcePE(HashMap_index **templates_index, int *matched_templates, int *template_lengths, int mq, double scoreT, int minlen, CompDNA *qseq_comp, CompDNA *qseq_r_comp, unsigned char *qseq, unsigned char *qseq_r, Qseqs *header, Qseqs *header_r, int kmersize, int *bestTemplates, int *bestTemplates_r, long unsigned *alignment_scores, long unsigned *uniq_alignment_scores, int *best_start_pos, int *best_end_pos, int *flag, int *flag_r, int *best_read_score, int *best_read_score_r, int seq_in, int index_in, long *seq_indexes, long *index_indexes, FILE *frag_out_raw, AlnPoints *points, NWmat *NWmatrices, volatile int *excludeOut, volatile int *excludeDB); void * alnFrags_threaded(void * arg);
assembly.c +23 −5 Original line number Diff line number Diff line Loading @@ -279,7 +279,7 @@ void * assemble_KMA_threaded(void *arg) { int i, j, t_len, aln_len, start, end, bias, myBias, gaps, pos, spin, sam; int read_score, depthUpdate, bestBaseScore, bestScore, template, asm_len; int nextTemplate, file_i, file_count, delta, thread_num, mq, status, bcd; int stats[5], buffer[8]; int minlen, stats[5], buffer[8]; unsigned coverScore; long unsigned depth, depthVar; const char bases[6] = "ACGTN-"; Loading Loading @@ -312,6 +312,7 @@ void * assemble_KMA_threaded(void *arg) { NWmatrices = thread->NWmatrices; delta = qseq->size; mq = thread->mq; minlen = thread->minlen; scoreT = thread->scoreT; evalue = thread->evalue; bcd = thread->bcd; Loading Loading @@ -357,6 +358,8 @@ void * assemble_KMA_threaded(void *arg) { /* start threads */ aligned_assem->score = 0; aligned_assem->fragmentCountAln = 0; aligned_assem->readCountAln = 0; mainTemplate = template; thread_wait = thread_num; unlock(excludeMatrix); Loading Loading @@ -446,9 +449,10 @@ void * assemble_KMA_threaded(void *arg) { /* Get normed score */ read_score = alnStat.score; if(0 < aln_len) { if(minlen <= aln_len) { score = 1.0 * read_score / aln_len; } else { read_score = 0; score = 0; } Loading @@ -463,6 +467,10 @@ void * assemble_KMA_threaded(void *arg) { //lock(excludeMatrix); lockTime(excludeMatrix, 10) aligned_assem->score += read_score; if(!(stats[4] & 2) || (stats[4] & 64)) { ++aligned_assem->fragmentCountAln; } ++aligned_assem->readCountAln; /* diff */ i = 0; Loading Loading @@ -738,7 +746,7 @@ void * assemble_KMA_dense_threaded(void *arg) { Assemble_thread *thread = arg; int i, j, t_len, aln_len, start, end, file_i, file_count, template, spin; int pos, read_score, bestScore, depthUpdate, bestBaseScore, nextTemplate; int sam, thread_num, mq, status, bcd, stats[5], buffer[8]; int sam, thread_num, mq, status, bcd, minlen, stats[5], buffer[8]; unsigned coverScore, delta; long unsigned depth, depthVar; const char bases[6] = "ACGTN-"; Loading Loading @@ -770,6 +778,7 @@ void * assemble_KMA_dense_threaded(void *arg) { NWmatrices = thread->NWmatrices; delta = qseq->size; mq = thread->mq; minlen = thread->minlen; scoreT = thread->scoreT; evalue = thread->evalue; bcd = thread->bcd; Loading Loading @@ -834,6 +843,8 @@ void * assemble_KMA_dense_threaded(void *arg) { /* start threads */ aligned_assem->score = 0; aligned_assem->fragmentCountAln = 0; aligned_assem->readCountAln = 0; mainTemplate = template; thread_wait = thread_num; unlock(excludeOut); Loading Loading @@ -927,11 +938,11 @@ void * assemble_KMA_dense_threaded(void *arg) { /* Get normed score */ read_score = alnStat.score; if(0 < aln_len) { if(minlen <= aln_len) { score = 1.0 * read_score / aln_len; } else { score = 0; read_score = 0; score = 0; } if(0 < read_score && scoreT <= score) { Loading @@ -946,6 +957,10 @@ void * assemble_KMA_dense_threaded(void *arg) { //lock(excludeMatrix); lockTime(excludeMatrix, 10) aligned_assem->score += read_score; if(!(stats[4] & 2) || (stats[4] & 64)) { ++aligned_assem->fragmentCountAln; } ++aligned_assem->readCountAln; /* diff */ for(i = 0, pos = start; i < aln_len; ++i) { Loading Loading @@ -1150,6 +1165,8 @@ void * skip_assemble_KMA(void *arg) { aligned_assem->q[0] = 0; aligned_assem->len = t_len; aligned_assem->aln_len = t_len; aligned_assem->fragmentCountAln = 0; aligned_assem->readCountAln = 0; /* load reads of this template */ file_i = 0; Loading Loading @@ -1213,5 +1230,6 @@ void * skip_assemble_KMA(void *arg) { aligned_assem->cover = 0; aligned_assem->aln_len = (1 - exp((-1.0) * aligned_assem->depth / t_len)) * t_len; // expected coverage from depth return NULL; }
assembly.h +3 −0 Original line number Diff line number Diff line Loading @@ -42,6 +42,8 @@ struct assem { unsigned len; unsigned aln_len; unsigned size; unsigned fragmentCountAln; unsigned readCountAln; }; struct assembly { Loading @@ -62,6 +64,7 @@ struct assemble_thread { int file_count; int spin; int mq; int minlen; int bcd; int sam; int thread_num; Loading
ef.c +5 −5 Original line number Diff line number Diff line Loading @@ -41,10 +41,10 @@ void initExtendedFeatures(FILE *out, char *templatefilename, unsigned totFrags, strftime(Date, sizeof(Date), "%Y-%m-%d", tm); fprintf(out, "## date\t%s\n", Date); fprintf(out, "## command\t%s\n", cmd); fprintf(out, "# refSequence\treadCount\tfragmentCount\tmapScoreSum\trefCoveredPositions\trefConsensusSum\tbpTotal\tdepthVariance\tnucHighDepthVariance\tdepthMax\tsnpSum\tinsertSum\tdeletionSum\n"); fprintf(out, "# refSequence\treadCount\tfragmentCount\tmapScoreSum\trefCoveredPositions\trefConsensusSum\tbpTotal\tdepthVariance\tnucHighDepthVariance\tdepthMax\tsnpSum\tinsertSum\tdeletionSum\treadCountAln\tfragmentCountAln\n"); } void getExtendedFeatures(char *template_name, AssemInfo *matrix, long unsigned *template_seq, int t_len, Assem *aligned_assem, unsigned fragmentCount, unsigned readCount, FILE *outfile) { void getExtendedFeatures(char *template_name, AssemInfo *matrix, long unsigned *template_seq, int t_len, Assem *aligned_assem, unsigned fragmentCount, unsigned readCount, unsigned fragmentCountAln, unsigned readCountAln, FILE *outfile) { unsigned pos, depthUpdate, maxDepth, nucHighVarSum; long unsigned snpSum, insertSum, deletionSum; Loading Loading @@ -94,10 +94,10 @@ void getExtendedFeatures(char *template_name, AssemInfo *matrix, long unsigned * } } while((pos = assembly[pos].next) != 0); fprintf(outfile, "%s\t%u\t%u\t%lu\t%u\t%u\t%lu\t%f\t%u\t%u\t%lu\t%lu\t%lu\n", template_name, readCount, fragmentCount, aligned_assem->score, aligned_assem->aln_len, aligned_assem->cover, aligned_assem->depth, (double) var, nucHighVarSum, maxDepth, snpSum, insertSum, deletionSum); fprintf(outfile, "%s\t%u\t%u\t%lu\t%u\t%u\t%lu\t%f\t%u\t%u\t%lu\t%lu\t%lu\t%u\t%u\n", template_name, readCount, fragmentCount, aligned_assem->score, aligned_assem->aln_len, aligned_assem->cover, aligned_assem->depth, (double) var, nucHighVarSum, maxDepth, snpSum, insertSum, deletionSum, readCountAln, fragmentCountAln); } else if(aligned_assem) { fprintf(outfile, "%s\t%u\t%u\t%u\t%u\t%u\t%lu\t%f\t%u\t%u\t%u\t%u\t%u\n", template_name, readCount, fragmentCount, 0, 0, 0, aligned_assem->depth, 0.0, 0, 0, 0, 0, 0); fprintf(outfile, "%s\t%u\t%u\t%u\t%u\t%u\t%lu\t%f\t%u\t%u\t%u\t%u\t%u\t%u\t%u\n", template_name, readCount, fragmentCount, 0, 0, 0, aligned_assem->depth, 0.0, 0, 0, 0, 0, 0, readCountAln, fragmentCountAln); } else { fprintf(outfile, "%s\t%u\t%u\t%u\t%u\t%u\t%u\t%f\t%u\t%u\t%u\t%u\t%u\n", template_name, 0, 0, 0, 0, 0, 0, 0.0, 0, 0, 0, 0, 0); fprintf(outfile, "%s\t%u\t%u\t%u\t%u\t%u\t%u\t%f\t%u\t%u\t%u\t%u\t%u\t%u\t%u\n", template_name, 0, 0, 0, 0, 0, 0, 0.0, 0, 0, 0, 0, 0, 0, 0); } }