9a71e97d8a11e25bc6e48e8e95fa0c9cc7da4801 chmalee Tue Apr 4 11:59:28 2023 -0700 hgPcr saves hits instead of overwriting the trash file with each new pcr search, refs #30925 diff --git src/hg/hgPcr/hgPcr.c src/hg/hgPcr/hgPcr.c index c91e5b2..b19e076 100644 --- src/hg/hgPcr/hgPcr.c +++ src/hg/hgPcr/hgPcr.c @@ -493,51 +493,64 @@ printf("%s", "
In-Silico PCR was written by " "Jim Kent.\n" "Interactive use on this web server is free to all.\n" "Sources and executables to run batch jobs on your own server are available free\n" "for academic, personal, and non-profit purposes. Non-exclusive commercial\n" "licenses are also available. Contact Jim for details.
\n"); } void writePrimers(struct gfPcrOutput *gpo, char *fileName) /* Write primer sequences to file. Look at only the first gpo because there * is only one set of primers in the input form. */ { if (gpo == NULL) return; -FILE *f = mustOpen(fileName, "w"); +FILE *f = mustOpen(fileName, "a"); fprintf(f, "%s\t%s\n", gpo->fPrimer, gpo->rPrimer); carefulClose(&f); } void writePcrResultTrack(struct gfPcrOutput *gpoList, char *db, char *target) /* Write trash files and store their name in a cart variable. */ { char *cartVar = pcrResultCartVar(db); struct tempName bedTn, primerTn; char buf[2048]; +char *pslFile, *txtFile, *cartResult; +if ( (cartResult = cartOptionalString(cart, cartVar)) != NULL) + { + char *pcrFiles[3]; + chopByWhite(cloneString(cartResult), pcrFiles, 3); + pslFile = pcrFiles[0]; + txtFile = pcrFiles[1]; + gfPcrOutputWriteAll(gpoList, "psl", NULL, pslFile); + writePrimers(gpoList, txtFile); + } +else + { trashDirFile(&bedTn, "hgPcr", "hgPcr", ".psl"); trashDirFile(&primerTn, "hgPcr", "hgPcr", ".txt"); gfPcrOutputWriteAll(gpoList, "psl", NULL, bedTn.forCgi); writePrimers(gpoList, primerTn.forCgi); if (isNotEmpty(target)) safef(buf, sizeof(buf), "%s %s %s", bedTn.forCgi, primerTn.forCgi, target); else safef(buf, sizeof(buf), "%s %s", bedTn.forCgi, primerTn.forCgi); cartSetString(cart, cartVar, buf); } +} static void printHelpLinks(struct gfPcrOutput *gpoList) { /* print links to our docs for special chromosome names */ // if you modify this, also modify hgBlat.c:showAliPlaces, which implements a similar feature, for hgBlat boolean isAlt = FALSE; boolean isFix = FALSE; boolean isRandom = FALSE; boolean isChrUn = FALSE; if (gpoList != NULL) { struct gfPcrOutput *gpo; for (gpo = gpoList; gpo != NULL; gpo = gpo->next) { char *seq = gpo->seqName;