387377eb3982c570bc06728b9e0380c3d1c006ec
max
  Wed Jan 25 05:30:25 2023 -0800
adding linkout to primer3 RT-QPCR primer designer from hgGene, refs #30545

diff --git src/hg/hgGene/primers.c src/hg/hgGene/primers.c
new file mode 100644
index 0000000..c46cf2c
--- /dev/null
+++ src/hg/hgGene/primers.c
@@ -0,0 +1,49 @@
+/* primers - do primers section. */
+
+/* Copyright (C) 2013 The Regents of the University of California 
+ * See kent/LICENSE or http://genome.ucsc.edu/license/ for licensing information. */
+
+#include "common.h"
+#include "hash.h"
+#include "linefile.h"
+#include "dystring.h"
+#include "cheapcgi.h"
+#include "spDb.h"
+#include "hgGene.h"
+#include "hdb.h"
+#include "net.h"
+
+
+static boolean primersExist(struct section *section, 
+	struct sqlConnection *conn, char *geneId)
+/* Return TRUE */
+{
+return(TRUE);
+}
+
+static void primersPrint(struct section *section, 
+	struct sqlConnection *conn, char *geneId)
+/* Print out primers section. */
+{
+puts("<p style='margin:0'>Primer3Plus can design qPCR Primers that straddle exon-exon-junctions, which amplify only cDNA, not genomic DNA.<br>");
+printPrimer3Anchor(globalTdb->table, curGeneId, curGeneChrom, curGeneStart, curGeneEnd);
+puts("Click here to load the transcript sequence and exon structure into Primer3Plus</a></p>");
+
+puts("<p style='margin-top:0.3em; margin-bottom:0.3em'>Exonprimer can design one pair of Sanger sequencing primers around every exon, located in non-genic sequence.<br>");
+printf("<a href='https://ihg.helmholtz-muenchen.de/cgi-bin/primer/ExonPrimerUCSC.pl?db=%s&acc=%s'>Click here to open Exonprimer with this transcript</a></p>", database, geneId);
+}
+
+struct section *primersSection(struct sqlConnection *conn, 
+	struct hash *sectionRa)
+/* Create primers section. */
+{
+struct section *section = sectionNew(sectionRa, "primers");
+if (!section)
+    return NULL;
+
+section->exists = primersExist;
+section->print = primersPrint;
+
+return section;
+}
+