0ca2f6c1f2b42131bb87d680e49bee7f07e5bd23
angie
Wed Jul 13 11:38:19 2011 -0700
MLQ #4606: user found that a two-base deletion was not recognized asa frameshift by pgSnp hgc handler. Fix: since dnaseq.c's translateSeq
returns a protein with empty sequence if the input is less than 3 bases
(like "-G"), check for emtpy sequence. I kind of wonder if translateSeq
should return "X" if the input is 1 or 2 bases...?
diff --git src/hg/lib/pgSnp.c src/hg/lib/pgSnp.c
index c3bddf5..40b44e6 100644
--- src/hg/lib/pgSnp.c
+++ src/hg/lib/pgSnp.c
@@ -451,31 +451,31 @@
else if (item->chromStart == item->chromEnd &&
countChars(allele[i], '-') == strlen(allele[i]))
{
printf(" wildtype
\n");
}
else
{
struct dnaSeq *dnaseq = newDnaSeq(cod->seq, strlen(cod->seq), "orig");
aaSeq *origAa = translateSeq(dnaseq, 0, FALSE);
if (!strstr(origAa->dna, "X"))
{
char *rep2 = replaceString(cod->seq, (cod->regStart - cod->cdStart), (cod->regEnd - cod->cdStart), allele[i]);
dnaseq = newDnaSeq(rep2, strlen(rep2), "rep2");
aaSeq *repAa = translateSeq(dnaseq, 0, FALSE);
//freeDnaSeq(&dnaseq);
- if (!strstr(repAa->dna, "X"))
+ if (!strstr(repAa->dna, "X") && isNotEmpty(repAa->dna))
{
printf(" %s > %s
\n",
origAa->dna, repAa->dna);
if (differentString(origAa->dna, repAa->dna))
aaProperties(origAa->dna, repAa->dna);
}
else if ((countChars(rep2, '-')) % 3 != 0)
{
printf(" frameshift
\n");
}
}
}
}
}
bedFreeList(&list);