fa235a119005a8986d0b6e761f47bbf198bd9b49 galt Mon Nov 4 16:06:38 2013 -0800 adding IUPAC support to the oligoMatch utility (which was cloned from hgTracks originally and then forgotten) diff --git src/hg/hgTracks/hgTracks.c src/hg/hgTracks/hgTracks.c index b0692b9..89389f7 100644 --- src/hg/hgTracks/hgTracks.c +++ src/hg/hgTracks/hgTracks.c @@ -991,31 +991,36 @@ /* This returns the DNA in the window, all in lower case. */ { static struct dnaSeq *seq = NULL; if (seq == NULL) seq = hDnaFromSeq(database, chromName, winStart, winEnd, dnaLower); return seq->dna; } char *stringInWrapper(char *needle, char *haystack) /* Wrapper around string in to make it so it's a function rather than a macro. */ { return stringIn(needle, haystack); } void oligoMatchLoad(struct track *tg) -/* Create track of perfect matches to oligo on either strand. */ +/* Create track of perfect matches to oligo on either strand. + * + * Note that if you are extending this code, there is also a parallel copy + * in src/hg/utils/oligoMatch/ that should be kept up to date! + * + */ { char *dna = dnaInWindow(); char *fOligo = oligoMatchSeq(); char *(*finder)(char *needle, char *haystack) = (anyIupac(fOligo) ? iupacIn : stringInWrapper); int oligoSize = strlen(fOligo); char *rOligo = cloneString(fOligo); char *rMatch = NULL, *fMatch = NULL; struct bed *bedList = NULL, *bed; char strand; int count = 0, maxCount = 1000000; if (oligoSize >= 2) { fMatch = finder(fOligo, dna); iupacReverseComplement(rOligo, oligoSize);