src/utils/findMotif/findMotif.c 1.13
1.13 2009/07/07 17:58:56 hiram
Fixing a gap confusion bug
Index: src/utils/findMotif/findMotif.c
===================================================================
RCS file: /projects/compbio/cvsroot/kent/src/utils/findMotif/findMotif.c,v
retrieving revision 1.12
retrieving revision 1.13
diff -b -B -U 4 -r1.12 -r1.13
--- src/utils/findMotif/findMotif.c 15 May 2008 16:32:29 -0000 1.12
+++ src/utils/findMotif/findMotif.c 7 Jul 2009 17:58:56 -0000 1.13
@@ -68,8 +68,9 @@
unsigned long long negPreviousPosition = 0;
register unsigned long long posNeedle = motifVal;
register unsigned long long negNeedle = complementVal;
unsigned long long enterGap = 1;
+boolean inGap = FALSE;
unsigned long long gapCount = 0;
mask = 3;
for (i=1; i < motifLen; ++i )
@@ -92,9 +93,10 @@
case G_BASE_VAL:
incomingVal = mask & ((incomingVal << 2) | val);
if (! incomingLength)
{
- if (((long long int)chromPosition - (long long int)enterGap) > 0)
+ if (inGap &&
+ (((long long int)chromPosition - (long long int)enterGap) > 0))
{
++gapCount;
verbose(3,
"#\treturn from gap at %llu, gap length: %llu\n",
@@ -106,8 +108,9 @@
* of 1 Tb */
enterGap = (unsigned long long)BIGNUM << 10;
}
}
+ inGap = FALSE;
++incomingLength;
if (doPlusStrand && (incomingLength >= motifLen)
&& (incomingVal == posNeedle))
@@ -143,14 +146,15 @@
{
verbose(3, "#\tenter gap at %llu\n", chromPosition);
enterGap = chromPosition;
}
+ inGap = TRUE;
incomingVal = 0;
incomingLength = 0;
break;
}
}
-if (((long long int)chromPosition - (long long int)enterGap) > 0)
+if (inGap && (((long long int)chromPosition - (long long int)enterGap) > 0))
{
++gapCount;
verbose(3,
"#\treturn from gap at %llu, gap length: %llu\n",