[med-svn] [Git][med-team/kma][upstream] New upstream version 1.4.7
Andreas Tille (@tille)
gitlab at salsa.debian.org
Wed Oct 12 16:53:02 BST 2022
Andreas Tille pushed to branch upstream at Debian Med / kma
Commits:
8f30a2e5 by Andreas Tille at 2022-10-12T17:50:45+02:00
New upstream version 1.4.7
- - - - -
11 changed files:
- align.c
- filebuff.c
- kma.c
- mt1.c
- runkma.c
- sam.c
- savekmers.c
- seqmenttree.c
- seqmenttree.h
- seqparse.c
- version.h
Changes:
=====================================
align.c
=====================================
@@ -43,6 +43,10 @@ AlnScore skipLeadAln(Aln *aligned, Aln *Frag_align, const long unsigned *tseq, c
Stat.qGaps = 0;
Stat.pos = t_e;
+ if(aligned) {
+ aligned->start = q_e;
+ }
+
return Stat;
}
@@ -128,7 +132,7 @@ AlnScore leadTailAln(Aln *aligned, Aln *Frag_align, const long unsigned *tseq, c
void skipTrailAln(Aln *aligned, Aln *Frag_align, AlnScore *Stat, const long unsigned *tseq, const unsigned char *qseq, int t_s, int t_len, int q_s, int q_len, const int bandwidth, NWmat *matrices) {
if(aligned) {
- aligned->end = 0;
+ aligned->end = q_len - q_s;
Frag_align->end = 0;
}
}
@@ -961,8 +965,17 @@ int anker_rc(const HashMapCCI *template_index, unsigned char *qseq, int q_len, i
bestScore = 0;
points->len = 0;
} else if(bestScore == score) {
+ /* forward match */
strrc(qseq, q_len);
} else {
+ /* apply sam-flag */
+ /* reverse match */
+ /*
+ if(flag | 64) { // Forward read
+ flag ^= 32;
+ }
+ flag ^= 16;
+ */
/* move mems down */
if(points->len) {
intcpy(points->tStart, points->tStart + points->len, mem_count);
=====================================
filebuff.c
=====================================
@@ -86,7 +86,8 @@ void init_gzFile(FileBuff *inputfile) {
inputfile->inBuffer = tmp;
} else {
inputfile->inBuffer = inputfile->buffer;
- inputfile->buffer = smalloc(CHUNK);
+ inputfile->buffer = smalloc(inputfile->buffSize + 1);
+ inputfile->buffer[inputfile->buffSize] = 0;
}
inputfile->next = inputfile->buffer;
=====================================
kma.c
=====================================
@@ -973,9 +973,9 @@ int kma_main(int argc, char *argv[]) {
}
}
} else if(strcmp(argv[args], "-nc") == 0) {
- nc = 1;
+ nc |= 2;
} else if(strcmp(argv[args], "-na") == 0) {
- nc = 2;
+ nc |= 1;
} else if(strcmp(argv[args], "-nf") == 0) {
nf = 1;
} else if(strcmp(argv[args], "-cge") == 0) {
=====================================
mt1.c
=====================================
@@ -65,14 +65,14 @@ void printFsa_pairMt1(Qseqs *header, Qseqs *qseq, Qseqs *qual, Qseqs *header_r,
if(header) {
buff[1] = qseq->len;
buff[6] = header->len;
- buff[7] = 97;
+ buff[7] = 97; /* 64 32 1 FirstInPair MateRC PE */
sfwrite(buff, sizeof(int), 8, out);
sfwrite(qseq->seq, 1, qseq->len, out);
sfwrite(header->seq + 1, 1, header->len, out);
buff[1] = qseq_r->len;
buff[6] = header_r->len;
- buff[7] = 145;
+ buff[7] = 145; /* 128 16 1 LastInPair RC PE */
strrc(qseq_r->seq, qseq_r->len);
sfwrite(buff, sizeof(int), 8, out);
sfwrite(qseq_r->seq, 1, qseq_r->len, out);
@@ -138,21 +138,20 @@ void runKMA_Mt1(char *templatefilename, char *outputfilename, char *exePrev, int
} else {
frag_out = 0;
}
- if(nc == 0) {
- strcat(outputfilename, ".aln");
- alignment_out = sfopen(outputfilename, "w");
- outputfilename[file_len] = 0;
+ alignment_out = 0;
+ consensus_out = 0;
+ if((nc & 1) == 0) {
strcat(outputfilename, ".fsa");
consensus_out = sfopen(outputfilename, "w");
outputfilename[file_len] = 0;
- } else if(nc == 2) {
- alignment_out = 0;
+ }
+ if((nc & 2) == 0) {
+ strcat(outputfilename, ".aln");
+ alignment_out = sfopen(outputfilename, "w");
+ outputfilename[file_len] = 0;
strcat(outputfilename, ".fsa");
consensus_out = sfopen(outputfilename, "w");
outputfilename[file_len] = 0;
- } else {
- alignment_out = 0;
- consensus_out = 0;
}
if(print_matrix) {
matrix_out = gzInitFileBuff(CHUNK);
@@ -439,7 +438,7 @@ void runKMA_Mt1(char *templatefilename, char *outputfilename, char *exePrev, int
if(tsv) {
printsv(tsv_out, tsv, thread->template_name, aligned_assem, t_len, aligned_assem->readCountAln, read_score, 0, (double) read_score, p_value, read_score);
}
- if(nc != 1) {
+ if(consensus_out) {
printConsensus(aligned_assem, thread->template_name, alignment_out, consensus_out, ref_fsa);
}
/* print matrix */
@@ -480,9 +479,11 @@ void runKMA_Mt1(char *templatefilename, char *outputfilename, char *exePrev, int
if(tsv) {
fclose(tsv_out);
}
+ if(consensus_out) {
+ fclose(consensus_out);
+ }
if(alignment_out) {
fclose(alignment_out);
- fclose(consensus_out);
}
if(frag_out) {
destroyGzFileBuff(frag_out);
=====================================
runkma.c
=====================================
@@ -239,21 +239,20 @@ int runKMA(char *templatefilename, char *outputfilename, char *exePrev, int ConC
} else {
frag_out = 0;
}
- if(nc == 0) {
- strcat(outputfilename, ".aln");
- alignment_out = sfopen(outputfilename, "w");
- outputfilename[file_len] = 0;
+ alignment_out = 0;
+ consensus_out = 0;
+ if((nc & 1) == 0) {
strcat(outputfilename, ".fsa");
consensus_out = sfopen(outputfilename, "w");
outputfilename[file_len] = 0;
- } else if(nc == 2) {
- alignment_out = 0;
+ }
+ if((nc & 2) == 0) {
+ strcat(outputfilename, ".aln");
+ alignment_out = sfopen(outputfilename, "w");
+ outputfilename[file_len] = 0;
strcat(outputfilename, ".fsa");
consensus_out = sfopen(outputfilename, "w");
outputfilename[file_len] = 0;
- } else {
- alignment_out = 0;
- consensus_out = 0;
}
frag_out_raw = tmpF(0);
if(!frag_out_raw) {
@@ -585,14 +584,6 @@ int runKMA(char *templatefilename, char *outputfilename, char *exePrev, int ConC
template_tot_ulen += template_lengths[i];
}
- /* here */
- /* debug scores */
- /*
- for(i = 1; i < DB_size; ++i) {
- fprintf(stdout, "%lu\t%lu\t%d\n", alignment_scores[i], uniq_alignment_scores[i], readCounts[i]);
- }
- */
-
/* ConClave */
if(ConClave == 1) {
fileCount = ConClavePtr(frag_in_raw, &template_fragments, DB_size, w_scores, fragmentCounts, readCounts, alignment_scores, uniq_alignment_scores, template_lengths, header, qseq, bestTemplates, best_start_pos, best_end_pos, alignFrags);
@@ -795,7 +786,7 @@ int runKMA(char *templatefilename, char *outputfilename, char *exePrev, int ConC
if(tsv) {
printsv(tsv_out, tsv, thread->template_name, aligned_assem, t_len, readCounts[template], read_score, expected, q_value, p_value, alignment_scores[template]);
}
- if(nc != 1) {
+ if(consensus_out) {
printConsensus(aligned_assem, thread->template_name, alignment_out, consensus_out, ref_fsa);
}
/* print matrix */
@@ -859,6 +850,8 @@ int runKMA(char *templatefilename, char *outputfilename, char *exePrev, int ConC
}
if(alignment_out) {
fclose(alignment_out);
+ }
+ if(consensus_out) {
fclose(consensus_out);
}
fclose(name_file);
@@ -1000,21 +993,20 @@ int runKMA_MEM(char *templatefilename, char *outputfilename, char *exePrev, int
} else {
frag_out = 0;
}
- if(nc == 0) {
- strcat(outputfilename, ".aln");
- alignment_out = sfopen(outputfilename, "w");
- outputfilename[file_len] = 0;
+ alignment_out = 0;
+ consensus_out = 0;
+ if((nc & 1) == 0) {
strcat(outputfilename, ".fsa");
consensus_out = sfopen(outputfilename, "w");
outputfilename[file_len] = 0;
- } else if(nc == 2) {
- alignment_out = 0;
+ }
+ if((nc & 2) == 0) {
+ strcat(outputfilename, ".aln");
+ alignment_out = sfopen(outputfilename, "w");
+ outputfilename[file_len] = 0;
strcat(outputfilename, ".fsa");
consensus_out = sfopen(outputfilename, "w");
outputfilename[file_len] = 0;
- } else {
- alignment_out = 0;
- consensus_out = 0;
}
frag_out_raw = tmpF(0);
if(!frag_out_raw) {
@@ -1510,7 +1502,7 @@ int runKMA_MEM(char *templatefilename, char *outputfilename, char *exePrev, int
if(tsv) {
printsv(tsv_out, tsv, thread->template_name, aligned_assem, t_len, readCounts[template], read_score, expected, q_value, p_value, alignment_scores[template]);
}
- if(nc != 1) {
+ if(consensus_out) {
printConsensus(aligned_assem, thread->template_name, alignment_out, consensus_out, ref_fsa);
}
/* print matrix */
@@ -1586,6 +1578,8 @@ int runKMA_MEM(char *templatefilename, char *outputfilename, char *exePrev, int
}
if(alignment_out) {
fclose(alignment_out);
+ }
+ if(consensus_out) {
fclose(consensus_out);
}
fclose(name_file);
=====================================
sam.c
=====================================
@@ -33,8 +33,8 @@ char * makeCigar(Qseqs *Cigar, const Aln *aligned) {
char op, pop, *s, *cigar;
unsigned char *t, *q;
- if(Cigar->size < (aligned->len << 1)) {
- Cigar->size = (aligned->len << 1);
+ if(Cigar->size < (aligned->len << 1) + 20) {
+ Cigar->size = (aligned->len << 1) + 20;
free(Cigar->seq);
Cigar->seq = smalloc(Cigar->size);
} else if(aligned->len == 0) {
@@ -200,14 +200,9 @@ int samwrite(const Qseqs *qseq, const Qseqs *header, const Qseqs *Qual, char *rn
}
if(aligned) {
cigar = makeCigar(Cigar, aligned);
- if(2 * sizeof(int) + 1 < header->len && header->seq[header->len - 2 * sizeof(int) - 1] == 0) {
- cigar = (char *) Cigar->seq;
- Cigar->len += sprintf(cigar, "%dS", *((int*) (header->seq + (header->len - 2 * sizeof(int)))));
- }
}
size = fprintf(stdout, "%s\t%d\t%s\t%d\t%d\t%s\t%s\t%d\t%d\t%s\t%s\tET:i:%d\tAS:i:%d\n", qname, flag, rname, pos, mapQ, cigar, rnext, pnext, tlen, (char *) seq, qual, et, score);
unlock(lock);
-
if(tab < 0) {
qname[-tab] = '\t';
}
=====================================
savekmers.c
=====================================
@@ -37,7 +37,7 @@
#include "threader.h"
void (*ankerPtr)(int*, int*, int*, char*, int*, unsigned**, unsigned**, int*, CompDNA*, int, int, int, int, Qseqs*, volatile int*, FILE*) = &ankerAndClean;
-int (*kmerScan)(const HashMapKMA *, const Penalties *, int*, int*, int*, int*, CompDNA*, CompDNA*, Qseqs*, int*, const int, volatile int*, FILE*) = &save_kmers_chain; /* here */ // = &save_kmers_HMM;
+int (*kmerScan)(const HashMapKMA *, const Penalties *, int*, int*, int*, int*, CompDNA*, CompDNA*, Qseqs*, int*, const int, volatile int*, FILE*) = &save_kmers_chain;
int (*save_kmers_pair)(const HashMapKMA *, const Penalties *, int*, int*, int*, int*, int*, int*, CompDNA*, CompDNA*, const Qseqs*, const Qseqs*, int*, const int, volatile int*, FILE*) = &save_kmers_unionPair;
int (*get_kmers_for_pair_ptr)(const HashMapKMA *, const Penalties *, int *, int *, int *, int *, CompDNA *, int *, int) = &get_kmers_for_pair;
int (*getMatch)(int*, int*) = &getBestMatch;
@@ -5020,24 +5020,6 @@ void ankerAndClean_MEM(int *regionTemplates, int *Score, int *Score_r, char *inc
header->len = l;
}
-/* here */
-void checker(int *bestTemplates) {
-
- int i, n, check;
-
- check = 0;
- n = *bestTemplates;
- for(i = 1; i < n; ++i) {
- if(bestTemplates[i] == 1702 || bestTemplates[i] == -1702) {
- ++check;
- }
- }
-
- if(check > 1) {
- fprintf(stderr, "NONO, %d\n", check);
- }
-}
-
int save_kmers_chain(const HashMapKMA *templates, const Penalties *rewards, int *bestTemplates, int *bestTemplates_r, int *Score, int *Score_r, CompDNA *qseq, CompDNA *qseq_r, Qseqs *header, int *extendScore, const int exhaustive, volatile int *excludeOut, FILE *out) {
/* return 0 for match, 1 otherwise */
@@ -5048,7 +5030,7 @@ int save_kmers_chain(const HashMapKMA *templates, const Penalties *rewards, int
int i, j, j_u, rc, Wl, W1, U, M, MM, Ms, MMs, Us, W1s, score, gaps, HIT;
int start, end, pos, shifter, kmersize, mlen, cover, len, template, test;
int cStart, cStart_r, cPos, iPos, len_len, mPos, hLen, flag, seqend, SU;
- int *bests;
+ int VF_start, VR_start, *bests;
unsigned DB_size, hitCounter, hitCounter_r, ties, ties_len;
unsigned *values, *last;
short unsigned *values_s;
@@ -5548,6 +5530,8 @@ int save_kmers_chain(const HashMapKMA *templates, const Penalties *rewards, int
}
/* prune hits */
+ VF_start = VF_scores ? VF_scores->start : 0;
+ VR_start = VR_scores ? VR_scores->start : 0;
if(!(VF_scores = pruneAnkers(VF_scores, kmersize))) {
best_score->score = 0;
}
@@ -5570,7 +5554,6 @@ int save_kmers_chain(const HashMapKMA *templates, const Penalties *rewards, int
best_score_len_r = 0;
}
- /* here */
/* proxi might be off */
cStart = -1;
cStart_r = -1;
@@ -5595,46 +5578,6 @@ int save_kmers_chain(const HashMapKMA *templates, const Penalties *rewards, int
cStart_r = tmp_score->start;;
rc = chooseChain(best_score, best_score_r, cStart, cStart_r, &start, &len);
}
- /*
- if(best_score_r->score < best_score->score) {
- tmp_score = getChainTemplates(best_score, rewards, template_lengths, qseq->seqlen, kmersize, bestTemplates, Score, extendScore, include);
- score = best_score->score;
- cStart = (start = tmp_score->start);
- cStart_r = -1;
- len = best_score->end - start;
- rc = 1;
- } else if(best_score->score < best_score_r->score) {
- tmp_score = getChainTemplates(best_score_r, rewards, template_lengths, qseq->seqlen, kmersize, bestTemplates_r, Score, extendScore, include);
- score = best_score_r->score;
- cStart = -1;
- cStart_r = (start = tmp_score->start);
- len = best_score_r->end - start;
- rc = 2;
- } else if(best_score->end == best_score_r->end) {
- tmp_score = getChainTemplates(best_score, rewards, template_lengths, qseq->seqlen, kmersize, bestTemplates, Score, extendScore, include);
- cStart = (start = tmp_score->start);
- len = best_score->end - start;
- score = best_score->score;
- tmp_score = getChainTemplates(best_score_r, rewards, template_lengths, qseq->seqlen, kmersize, bestTemplates_r, Score, extendScore, include);
- cStart_r = tmp_score->start;
- start = MIN(cStart, cStart_r);
- rc = 3;
- } else if(best_score->end < best_score_r->end) {
- tmp_score = getChainTemplates(best_score_r, rewards, template_lengths, qseq->seqlen, kmersize, bestTemplates_r, Score, extendScore, include);
- score = best_score_r->score;
- cStart = -1;
- cStart_r = (start = tmp_score->start);
- len = best_score_r->end - start;
- rc = 2;
- } else {
- tmp_score = getChainTemplates(best_score, rewards, template_lengths, qseq->seqlen, kmersize, bestTemplates, Score, extendScore, include);
- score = best_score->score;
- cStart = (start = tmp_score->start);
- cStart_r = -1;
- len = best_score->end - start;
- rc = 1;
- }
- */
score = MAX(best_score->score, best_score_r->score);
if(len < minlen || score < kmersize) {
@@ -5650,7 +5593,7 @@ int save_kmers_chain(const HashMapKMA *templates, const Penalties *rewards, int
if(rc & 1) {
score = best_score->score;
V_score = best_score;
- while((V_score = getTieAnker(start, V_score, best_score))) {
+ while((V_score = getTieAnker(start < VF_start ? VF_start : start, V_score, best_score))) {
/*
1. tie anker -> tie_len == best_len
2. Best match is last on seq -> tie_start < best_start
@@ -5690,7 +5633,7 @@ int save_kmers_chain(const HashMapKMA *templates, const Penalties *rewards, int
if(rc & 2) {
score = best_score_r->score;
V_score = best_score_r;
- while((V_score = getTieAnker(start, V_score, best_score_r))) {
+ while((V_score = getTieAnker(start < VR_start ? VR_start : start, V_score, best_score_r))) {
/*
1. tie anker -> tie_len == best_len
2. Best match is last on seq -> tie_start < best_start
@@ -5766,16 +5709,12 @@ int save_kmers_chain(const HashMapKMA *templates, const Penalties *rewards, int
best_score_r->score = 0;
*bestTemplates_r = 0;
}
- /* here */
- //checker(bestTemplates);
lock(excludeOut);
i = deConPrintPtr(bestTemplates, qseq, best_score->score, header, 0, out);
unlock(excludeOut);
best_score->score = 0;
*bestTemplates = 0;
} else {
- /* here */
- //checker(bestTemplates_r);
lock(excludeOut);
i = deConPrintPtr(bestTemplates_r, qseq_r, best_score_r->score, header, 0, out);
unlock(excludeOut);
@@ -5874,51 +5813,12 @@ int save_kmers_chain(const HashMapKMA *templates, const Penalties *rewards, int
}
}
}
+
if(!best_score && !best_score_r) {
*include = 0;
return 0;
} else if(best_score && best_score_r) {
- /* here */
- /*
- if(!best_score->score || !best_score_r->score) {
- if(best_score->score) {
- start = cStart;
- len = best_score->end - start;
- rc = 1;
- } else {
- start = cStart_r;
- len = best_score_r->end - start;
- rc = 2;
- }
- } else {
- rc = chooseChain(best_score, best_score_r, cStart, cStart_r, &start, &len);
- }
- */
rc = chooseChain(best_score, best_score_r, cStart, cStart_r, &start, &len);
- /* proxi might be off */
- /*
- if(best_score_r->score < best_score->score) {
- rc = 1;
- start = cStart;
- len = best_score->end - start;
- } else if(best_score->score < best_score_r->score) {
- rc = 2;
- start = cStart_r;
- len = best_score_r->end - start;
- } else if(best_score->end == best_score_r->end) {
- rc = 3;
- start = MIN(cStart, cStart_r);
- len = best_score->end - start;
- } else if(best_score->end < best_score_r->end) {
- rc = 2;
- start = cStart_r;
- len = best_score_r->end - start;
- } else {
- rc = 1;
- start = cStart;
- len = best_score->end - start;
- }
- */
} else if(best_score) {
rc = 1;
start = cStart;
@@ -5942,8 +5842,9 @@ int save_kmers_sparse_chain(const HashMapKMA *templates, const Penalties *reward
static KmerAnker **tVF_scores;
static SeqmentTree **tSeqments;
int i, j, j_u, shifter, prefix_shifter, kmersize, DB_size, pos, start;
- int Wl, W1, U, M, MM, Ms, MMs, Us, W1s, end, len, gaps, template, test;
- int len_len, mlen, tflag, cPos, iPos, mPos, hLen, seqend, score, *bests;
+ int Wl, W1, U, M, MM, Ms, MMs, Us, W1s, end, len, gaps, template, score;
+ int len_len, mlen, tflag, cPos, iPos, mPos, hLen, seqend, test, VF_start;
+ int *bests;
unsigned SU, HIT, cover, hitCounter, ties, ties_len, prefix_len, flag;
unsigned *values, *last;
short unsigned *values_s;
@@ -6445,6 +6346,7 @@ int save_kmers_sparse_chain(const HashMapKMA *templates, const Penalties *reward
}
/* prune hits */
+ VF_start = VF_scores ? VF_scores->start : 0;
if(!(VF_scores = pruneAnkers(VF_scores, kmersize))) {
best_score->score = 0;
hitCounter = 0;
@@ -6477,7 +6379,7 @@ int save_kmers_sparse_chain(const HashMapKMA *templates, const Penalties *reward
if(ties) {
score = best_score->score;
V_score = best_score;
- while((V_score = getTieAnker(start, V_score, best_score))) {
+ while((V_score = getTieAnker(start < VF_start ? VF_start : start, V_score, best_score))) {
/*
1. tie anker -> tie_len == best_len
2. Best match is last on seq -> tie_start < best_start
=====================================
seqmenttree.c
=====================================
@@ -51,12 +51,59 @@ SeqmentTree * initSeqmentTree(SeqmentTree *src, const unsigned start, const unsi
return src;
}
-void reallocSeqmentTree(SeqmentTree *src) {
+SeqmentTrees * rcpSeqmentTree(SeqmentTree *src, SeqmentTrees *branch) {
- src->root = realloc(src->root, (src->size <<= 1) * sizeof(SeqmentTrees));
- if(!src->root) {
- ERROR();
+ SeqmentTrees *dest;
+
+ /* cp branch */
+ dest = (src->root + src->n++);
+ *dest = *branch;
+
+ /* add subtree of the branch */
+ if(*(branch->branch)) {
+ branch->branch[0] = rcpSeqmentTree(src, branch->branch[0]);
+ branch->branch[1] = rcpSeqmentTree(src, branch->branch[1]);
}
+
+ return dest;
+}
+
+void reallocSeqmentTree(SeqmentTree *src, const long unsigned size) {
+
+ SeqmentTrees *org;
+
+ /* save old tree */
+ org = src->root;
+
+ /* allocate new tree */
+ src->size = size;
+ src->root = smalloc(src->size * sizeof(SeqmentTrees));
+
+ /* cp old tree into new */
+ src->n = 0;
+ src->root = rcpSeqmentTree(src, org);
+
+ /* clean up */
+ free(org);
+}
+
+void resizeSeqmentTree(SeqmentTree *src) {
+
+ SeqmentTrees *org;
+
+ /* save old tree */
+ org = src->root;
+
+ /* allocate new tree */
+ src->size <<= 1;
+ src->root = smalloc(src->size * sizeof(SeqmentTrees));
+
+ /* cp old tree into new */
+ src->n = 0;
+ src->root = rcpSeqmentTree(src, org);
+
+ /* clean up */
+ free(org);
}
unsigned addSeqmentTrees(SeqmentTrees *root, SeqmentTrees *node) {
@@ -139,7 +186,7 @@ int growSeqmentTree(SeqmentTree *src, const unsigned start, const unsigned end)
/* make room for new anker */
if(src->size <= src->n + 2) {
- reallocSeqmentTree(src);
+ resizeSeqmentTree(src);
} else if(src->n == 0) {
initSeqmentTree(src, start, end);
return end - start;
=====================================
seqmenttree.h
=====================================
@@ -17,7 +17,6 @@
* limitations under the License.
*/
#define _XOPEN_SOURCE 600
-//cc -Wall -O3 -std=c99 -c -o seqmenttree seqmenttree.c
#ifndef SEQMENTTREE
#define SEQMENTTREE 1
typedef struct seqmentTree SeqmentTree;
@@ -31,13 +30,16 @@ struct seqmentTrees {
unsigned start;
unsigned end;
unsigned covered;
+ unsigned overhead; /* not used */
struct seqmentTrees *branch[2];
};
#endif
SeqmentTree * initializeSeqmentTree(long unsigned size);
SeqmentTree * initSeqmentTree(SeqmentTree *src, const unsigned start, const unsigned end);
-void reallocSeqmentTree(SeqmentTree *src);
+SeqmentTrees * rcpSeqmentTree(SeqmentTree *src, SeqmentTrees *branch);
+void reallocSeqmentTree(SeqmentTree *src, const long unsigned size);
+void resizeSeqmentTree(SeqmentTree *src);
unsigned addSeqmentTrees(SeqmentTrees *root, SeqmentTrees *node);
int growSeqmentTree(SeqmentTree *src, const unsigned start, const unsigned end);
unsigned queSeqmentTree(SeqmentTrees *src, const unsigned start, const unsigned end);
=====================================
seqparse.c
=====================================
@@ -66,7 +66,7 @@ int openAndDetermine(FileBuff *inputfile, char *filename) {
int FileBuffgetFsa(FileBuff *src, Qseqs *header, Qseqs *qseq, char *trans) {
unsigned char *buff, *seq;
- unsigned size, avail;
+ int size, avail;
/* init */
avail = src->bytes;
@@ -161,7 +161,7 @@ int FileBuffgetFsa(FileBuff *src, Qseqs *header, Qseqs *qseq, char *trans) {
int FileBuffgetFsaSeq(FileBuff *src, Qseqs *qseq, char *trans) {
unsigned char *buff, *seq;
- unsigned size, avail;
+ int size, avail;
/* init */
avail = src->bytes;
@@ -241,7 +241,7 @@ int FileBuffgetFsaSeq(FileBuff *src, Qseqs *qseq, char *trans) {
int FileBuffgetFq(FileBuff *src, Qseqs *header, Qseqs *qseq, Qseqs *qual, char *trans) {
unsigned char *buff, *seq;
- unsigned size, avail;
+ int size, avail;
/* init */
avail = src->bytes;
@@ -396,7 +396,7 @@ int FileBuffgetFq(FileBuff *src, Qseqs *header, Qseqs *qseq, Qseqs *qual, char *
int FileBuffgetFqSeq(FileBuff *src, Qseqs *qseq, Qseqs *qual, char *trans) {
unsigned char *buff, *seq;
- unsigned size, avail;
+ int size, avail;
/* init */
avail = src->bytes;
@@ -532,11 +532,12 @@ int FileBuffgetFqSeq(FileBuff *src, Qseqs *qseq, Qseqs *qual, char *trans) {
int getPhredFileBuff(FileBuff *dest) {
- int seek, avail, scale;
+ int seek, avail, scale, len, maxlen;
unsigned char *buff;
avail = dest->bytes;
scale = 33;
+ maxlen = 0;
buff = dest->next;
while(avail) {
@@ -547,6 +548,7 @@ int getPhredFileBuff(FileBuff *dest) {
}
}
+ len = 0;
seek = avail ? 1 : 0;
while(seek && --avail) {
if(*++buff == '\n') {
@@ -558,8 +560,12 @@ int getPhredFileBuff(FileBuff *dest) {
} else if(94 < *buff) {
scale = 64;
}
+ ++len;
+ }
+ if(maxlen < len) {
+ maxlen = len;
}
}
- return scale;
+ return maxlen <= 301 ? scale : 33;
}
=====================================
version.h
=====================================
@@ -17,4 +17,4 @@
* limitations under the License.
*/
-#define KMA_VERSION "1.4.3"
+#define KMA_VERSION "1.4.7"
View it on GitLab: https://salsa.debian.org/med-team/kma/-/commit/8f30a2e51b097de7679cbb639d451f5f8788e557
--
View it on GitLab: https://salsa.debian.org/med-team/kma/-/commit/8f30a2e51b097de7679cbb639d451f5f8788e557
You're receiving this email because of your account on salsa.debian.org.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://alioth-lists.debian.net/pipermail/debian-med-commit/attachments/20221012/35099051/attachment-0001.htm>
More information about the debian-med-commit
mailing list