36f8f6fb024b20cc523cdf9ebde7491eca84fd7c markd Sun Dec 6 20:33:20 2020 -0800 multiple request per connect works except hgBlat diff --git src/webBlat/webBlat.c src/webBlat/webBlat.c index 8ec2b00..13e8767 100644 --- src/webBlat/webBlat.c +++ src/webBlat/webBlat.c @@ -296,31 +296,30 @@ printf(" <FRAME SRC=\"%s\" NAME=\"body\">\n", bodyName); puts("<NOFRAMES><BODY></BODY></NOFRAMES>"); puts("</FRAMESET>"); puts("</HTML>\n"); } void doBlat() /* Do actual blatting */ { char *seqText = cgiString("wb_seq"); bioSeq *seqList, *seq; char *type = NULL; boolean txServer = FALSE, protQuery = FALSE; struct gfServerAt *server; -int conn; FILE *f; struct gfOutput *gvo; struct hash *tFileCache = gfFileCacheNew(); char *pslName = cloneString(rTempName(cfg->tempDir, "wb", ".psl")); char *faName = cloneString(rTempName(cfg->tempDir, "wb", ".fa")); /* Figure out type and if it is a protein or a DNA based query */ type = cgiUsualString("wb_qType", bothQueryMenu[0]); /* Get sequence from control into memory and also saved as fasta file. */ if (sameWord(type, bothQueryMenu[0])) { seqList = faSeqListFromMemText(seqText, FALSE); if (seqList == NULL) errAbort("Please go back and paste in a sequence"); @@ -349,63 +348,65 @@ { freez(&seqList->name); seqList->name = cloneString("query"); } faWriteAll(faName, seqList); /* Set up output for blat. */ f = mustOpen(pslName, "w"); gvo = gfOutputPsl(0, protQuery, FALSE, f, FALSE, TRUE); gvo->includeTargetFile = TRUE; txServer = isTxType(type); server = findServer(txServer); /* Loop through sequences doing alignments and saving to file. */ +struct gfConnection *conn = gfConnect(server->host, server->port, server->dynGenomeDir != NULL); for (seq = seqList; seq != NULL; seq = seq->next) { - conn = gfConnect(server->host, server->port); if (txServer) { gvo->reportTargetStrand = TRUE; if (protQuery) { - gfAlignTrans(&conn, server->seqDir, seq, 5, tFileCache, gvo, server->dynGenomeDir); + gfAlignTrans(conn, server->seqDir, seq, 5, + tFileCache, gvo, server->genome, server->dynGenomeDir); } else { boolean isRna = sameWord(type, "RNA"); - gfAlignTransTrans(&conn, server->seqDir, seq, FALSE, 5, - tFileCache, gvo, isRna, NULL); + gfAlignTransTrans(conn, server->seqDir, seq, FALSE, 5, + tFileCache, gvo, isRna, server->genome, server->dynGenomeDir); if (!isRna) { reverseComplement(seq->dna, seq->size); - conn = gfConnect(server->host, server->port); - gfAlignTransTrans(&conn, server->seqDir, seq, TRUE, 5, - tFileCache, gvo, FALSE, server->dynGenomeDir); + gfAlignTransTrans(conn, server->seqDir, seq, TRUE, 5, + tFileCache, gvo, FALSE, server->genome, server->dynGenomeDir); } } } else { - gfAlignStrand(&conn, server->seqDir, seq, FALSE, 16, tFileCache, gvo, server->dynGenomeDir); + gfAlignStrand(conn, server->seqDir, seq, FALSE, 16, + tFileCache, gvo, server->genome, server->dynGenomeDir); reverseComplement(seq->dna, seq->size); - conn = gfConnect(server->host, server->port); - gfAlignStrand(&conn, server->seqDir, seq, TRUE, 16, tFileCache, gvo, server->dynGenomeDir); + gfAlignStrand(conn, server->seqDir, seq, TRUE, 16, + tFileCache, gvo, server->genome, server->dynGenomeDir); } gfOutputQuery(gvo, f); } +gfDisconnect(&conn); carefulClose(&f); /* Display alignment results. */ aliLines(pslName, faName, server->name, type); } void doGetSeq() /* Put up form that asks them to submit sequence. */ { char *qType = NULL; char **queryMenu = NULL; int queryMenuSize = 0; struct gfServerAt *serverList = NULL, *server;