void fastq_sw_conv_seq(unsigned char* seq, int n)
{
- while (*seq || n--) {
+ while (*seq && n) {
switch (*seq) {
case 'A' :
case 'a':
}
seq++;
+ n--;
}
}
sw_t* fastq_alloc_sw(const unsigned char* subject, int size)
{
sw_t* sw = malloc_or_die(sizeof(sw_t));
+
+ sw->subject = malloc_or_die(size);
memcpy(sw->subject, subject, size);
/* default cost matrix */
int fastq_sw(sw_t* sw, const unsigned char* x, int n)
{
- /*const int max_score = 65535;*/
-
/* conveniance */
int* maxstu = sw->work0;
int* t = sw->work1;
int i, j;
+ int score = 0;
+
/* zero maxstu row */
memset(maxstu, 0, m * sizeof(int));
for (i = 0; i < n; i++) {
/* special case for column 0 */
- t[j] = imax(maxstu[j] + gap_op, t[j] + gap_ex);
+ t[0] = imax(maxstu[0] + gap_op, t[0] + gap_ex);
u = gap_op;
- maxstu[0] = imax4(0, d[5 * y[j] + x[j]], t[j], u);
+ maxstu[0] = imax4(0, d[5 * y[0] + x[0]], t[0], u);
maxstu0 = 0;
+ score = imax(score, maxstu[0]);
for (j = 1; j < m; j++) {
maxstu0 = maxstu[j];
maxstu[j] = imax4(0, s, t[j], u);
+ score = imax(score, maxstu[j]);
}
}
- /* return maximum from maxstu */
- maxstu0 = 0;
- for (j = 0; j <m; j++) maxstu0 = imax(maxstu0, maxstu[j]);
-
- return maxstu0;
+ return score;
}