65479b434f3b7e556b78d1c75171fd3365e20272 angie Mon Oct 14 16:46:03 2013 -0700 isAllDna has a condition that surprised me (returns FALSE if size is 1),so I added isAllNt which has the behavior I expected. diff --git src/lib/dnautil.c src/lib/dnautil.c index 61ac692..d02806d 100644 --- src/lib/dnautil.c +++ src/lib/dnautil.c @@ -991,60 +991,65 @@ * noise to be trimmed too, but skips last two tt for revcomp'd taa stop * codon. * It is less conservative in extending the polyA region than maskHeadPolyT. */ { return findHeadPolyTMaybeMask(dna, size, FALSE, TRUE); } int maskHeadPolyT(DNA *dna, int size) /* Convert PolyT at start. This allows a few non-T's as noise to be * trimmed too. Returns number of bases trimmed. */ { return findHeadPolyTMaybeMask(dna, size, TRUE, FALSE); } boolean isDna(char *poly, int size) -/* Return TRUE if letters in poly are at least 90% ACGTU */ +/* Return TRUE if letters in poly are at least 90% ACGTNU- */ { int i; int dnaCount = 0; dnaUtilOpen(); for (i=0; i<size; ++i) { if (ntChars[(int)poly[i]]) dnaCount += 1; } return (dnaCount >= round(0.9 * size)); } -boolean isAllDna(char *poly, int size) -/* Return TRUE if letters in poly are 100% ACGTU */ +boolean isAllNt(char *seq, int size) +/* Return TRUE if all letters in seq are ACGTNU-. */ { int i; - -if (size <= 1) - return FALSE; dnaUtilOpen(); for (i=0; i<size-1; ++i) { - if (ntChars[(int)poly[i]] == 0) + if (ntChars[(int)seq[i]] == 0) return FALSE; } return TRUE; } +boolean isAllDna(char *poly, int size) +/* Return TRUE if size is great than 1 and letters in poly are 100% ACGTNU- */ +{ +if (size <= 1) + return FALSE; +return isAllNt(poly, size); +} + /* Tables to convert from 0-20 to ascii single letter representation * of proteins. */ int aaVal[256]; AA valToAa[21]; AA aaChars[256]; /* 0 except for value aa characters. Converts to upper case rest. */ struct aminoAcidTable /* A little info about each amino acid. */ { int ix; char letter; char abbreviation[3];