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",