4168de92d951347d6c0468a4e4f65c0a4cd953f5 max Mon Jul 1 00:55:39 2024 -0700 adding more text to hgPcr, refs #34003 diff --git src/hg/hgPcr/hgPcr.c src/hg/hgPcr/hgPcr.c index 90f1f7a..9d0bf7f 100644 --- src/hg/hgPcr/hgPcr.c +++ src/hg/hgPcr/hgPcr.c @@ -206,37 +206,38 @@ hDisconnectCentral(&conn); hFreeConn(&conn2); slReverse(&serverList); return serverList; } void doHelp() /* Print up help page */ { puts( "In-Silico PCR searches a sequence database with a pair of\n" "PCR primers, using an indexing strategy for fast performance.\n" "See an example\n" "video\n" -"on our YouTube channel.\n" -"This tool is not guaranteed to find off-target locations for\n" -"primers, it is optimized for 100% identical matches. For\n" -"use in primer design consider additional validation with tools such as\n" +"on our YouTube channel.
\n" +"This tool is not guaranteed to find absolutely all off-target locations,\n" +"it is optimized for targets with higher identities. For\n" +"use in primer design, especially in repetitive regions, consider additional validation with tools such as\n" "" -"primer blast.\n" -"\n" +"primer blast.
\n" +"If you are looking for matches to RT-PCR primers, where primers often straddle intron-exon boundaries, change the Target option and select " +"a gene transcript set.
\n" "

Configuration Options

\n" "Genome and Assembly - The sequence database to search.
\n" "Target - If available, choose to query transcribed sequences.
\n" "Forward Primer - Must be at least 15 bases in length.
\n" "Reverse Primer - On the opposite strand from the forward primer. Minimum length of 15 bases.
\n" "Max Product Size - Maximum size of amplified region.
\n" "Min Perfect Match - Number of bases that match exactly on 3' end of primers. Minimum match size is 15.
\n" "Min Good Match - Number of bases on 3' end of primers where at least 2 out of 3 bases match.
\n" "Flip Reverse Primer - Invert the sequence order of the reverse primer and complement it.
\n" "Append to existing PCR result - Add this PCR result list to the currently existing track of PCR results.
\n" "\n" "

Output

\n" "When successful, the search returns a sequence output file in fasta format \n" "containing all sequence in the database that lie between and include the \n" "primer pair. The fasta header describes the region in the database\n" @@ -634,31 +635,33 @@ if (gpoList != NULL) { char urlFormat[2048]; safef(urlFormat, sizeof(urlFormat), "%s?%s&db=%s&position=%%s:%%d-%%d" "&hgPcrResult=pack", hgTracksName(), cartSidUrlString(cart), server->db); printf("
");
     gfPcrOutputWriteAll(gpoList, "fa", urlFormat, "stdout");
     printf("
"); printHelpLinks(gpoList); writePcrResultTrack(gpoList, server->db, NULL, appendToResults); } else { - printf("No matches to %s %s in %s %s", gpi->fPrimer, gpi->rPrimer, + printf("

No matches to %s %s in %s %s.

" + "

To find RT-PCR primers that straddle intron splice sites, go back and change the Target option to a gene transcript set.

", + gpi->fPrimer, gpi->rPrimer, server->genome, server->description); } gfDisconnect(&conn); } void doTargetQuery(struct targetPcrServer *server, struct gfPcrInput *gpi, int maxSize, int minPerfect, int minGood, boolean appendToResults) /* Send a query to a non-genomic target PCR server and print the results. */ { struct gfConnection *conn = gfConnect(server->host, server->port, NULL, NULL); struct gfPcrOutput *gpoList; char seqDir[PATH_LEN]; splitPath(server->targetDb->seqFile, seqDir, NULL, NULL); if (endsWith("/", seqDir)) seqDir[strlen(seqDir) - 1] = '\0';