18e5367bd1c91fb9c54a8d59abcee1ab042813a9
angie
  Thu Oct 10 11:34:49 2013 -0700
Don't add splice_region_variant for a variant that falls at beginningor end of transcript -- only for actual splice regions.

diff --git src/hg/lib/gpFx.c src/hg/lib/gpFx.c
index b47b704..14d6cab 100644
--- src/hg/lib/gpFx.c
+++ src/hg/lib/gpFx.c
@@ -650,32 +650,34 @@
 	int exonNumPos = exonIx;
 	if (pred->strand[0] == '-')
 	    exonNumPos = pred->exonCount - 1 - exonIx;
 	uint exonStart = pred->exonStarts[exonNumPos], exonEnd = pred->exonEnds[exonNumPos];
 	if (variant->chromStart <= exonStart && variant->chromEnd >= exonEnd)
 	    {
 	    struct gpFx *effect = gpFxNew(allele->sequence, pred->name, exon_loss,
 					  nonCodingExon, lm);
 	    setNCExonVals(effect, exonIx, txc->startInCdna);
 	    slAddTail(&effectsList, effect);
 	    }
 	else
 	    {
 	    // If variant is in exon *but* within 3 bases of splice site,
 	    // it also qualifies as splice_region_variant:
-	    if ((variant->chromEnd > exonEnd-3 && variant->chromStart < exonEnd) ||
-		(variant->chromEnd > exonStart && variant->chromStart < exonStart+3))
+	    if ((variant->chromEnd > exonEnd-3 && variant->chromStart < exonEnd &&
+		 exonIx < pred->exonCount - 1) ||
+		(variant->chromEnd > exonStart && variant->chromStart < exonStart+3 &&
+		 exonIx > 0))
 		{
 		struct gpFx *effect = gpFxNew(allele->sequence, pred->name, splice_region_variant,
 					      nonCodingExon, lm);
 		setNCExonVals(effect, exonIx, txc->startInCdna);
 		slAddTail(&effectsList, effect);
 		}
 	    }
 	}
     }
 return effectsList;
 }
 
 static struct gpFx *gpFxInIntron(struct variant *variant, struct txCoords *txc, int intronIx,
 				 struct genePred *pred, char *altAllele, struct lm *lm)
 // Annotate a variant that overlaps an intron (and possibly splice region)