src/hg/hgc/virusClick.c 1.7

1.7 2009/06/15 23:56:50 markd
get gisaid locations from hg.conf
Index: src/hg/hgc/virusClick.c
===================================================================
RCS file: /projects/compbio/cvsroot/kent/src/hg/hgc/virusClick.c,v
retrieving revision 1.6
retrieving revision 1.7
diff -b -B -U 4 -r1.6 -r1.7
--- src/hg/hgc/virusClick.c	15 Jun 2009 23:00:24 -0000	1.6
+++ src/hg/hgc/virusClick.c	15 Jun 2009 23:56:50 -0000	1.7
@@ -3,16 +3,19 @@
 #include "common.h"
 #include "hgc.h"
 #include "virusClick.h"
 #include "hCommon.h"
+#include "hgConfig.h"
 #include "linefile.h"
 #include "dystring.h"
 #include "lsSnpPdbChimera.h"
 #include "jksql.h"
 #include "net.h"
 #include "trashDir.h"
 #include "htmshell.h"
 
+static char const rcsid[] = "$Id$";
+
 static void h1n1DownloadPdb(char *item, char *pdbUrl, struct tempName *tmpPdb)
 /* uncompress PDB to trash */
 {
 int inFd = netOpenHttpExt(pdbUrl, "GET", TRUE);
@@ -112,11 +115,33 @@
 safecpy(name->forHtml, sizeof(name->forHtml), prefix->forHtml);
 safecat(name->forHtml, sizeof(name->forHtml), suffix);
 }
 
-/* location and url of h1n1 modeling directory */
-static char *h1n1StructDir = "/projects/compbio/experiments/protein-predict/h1n1";
-static char *h1n1StructUrl = "http://users.soe.ucsc.edu/~karplus/h1n1";
+static char *getH1n1StructDir()
+/* get location of h1n1 modeling directory */
+{
+static char *dir = NULL;
+if (dir == NULL)
+    {
+    dir = cfgOption("gisaid.structDir");
+    if (dir == NULL)
+        errAbort("gisaid.structDir not set in hg.conf");
+    }
+return dir;
+}
+
+static char *getH1n1StructUrl()
+/* get URL of h1n1 modeling directory */
+{
+static char *url = NULL;
+if (url == NULL)
+    {
+    url = cfgOption("gisaid.structUrl");
+    if (url == NULL)
+        errAbort("gisaid.structUrl not set in hg.conf");
+    }
+return url;
+}
 
 static boolean getH1n1Model(char *gene, char *pdbUrl)
 /* Find model PDB file URL, return false if does not exist.  URL is
  * return in pdbUrl if it is not NULL */
@@ -129,10 +154,10 @@
 else 
     return FALSE;
 
 if (pdbUrl != NULL)
-    safef(pdbUrl, PATH_LEN, "%s/%s", h1n1StructUrl, relPath);
-safef(pdbPath, sizeof(pdbPath), "%s/%s", h1n1StructDir, relPath);
+    safef(pdbUrl, PATH_LEN, "%s/%s", getH1n1StructUrl(), relPath);
+safef(pdbPath, sizeof(pdbPath), "%s/%s", getH1n1StructDir(), relPath);
 return fileExists(pdbPath);
 }
 
 static void mkH1n1StructData(char *gene, char *idPairFile, char *highlightId,
@@ -165,9 +190,9 @@
     }
 // dynamic_highlight.pl knows locations of model files
 safef(logFile, sizeof(logFile), "%s.log", prefix.forCgi);
 safef(cmd, sizeof(cmd), "%s/dynamic_highlight.pl --rasmol --chimera --protein %s --consensus 0602 %s --base %s >%s 2>&1",
-      h1n1StructDir, gene, idArg, prefix.forCgi, logFile);
+      getH1n1StructDir(), gene, idArg, prefix.forCgi, logFile);
 if (system(cmd) != 0)
     errAbort("creation of 3D structure highlight files failed: %s", cmd);
 
 // output names are all predefined by script relative to prefix
@@ -217,19 +242,19 @@
 
 printf("<H3>Protein Structure Analysis and Prediction</H3>");
 
 printf("<B>Comparison to 1918 Flu Virus:</B> ");
-printf("<A HREF=\"%s/%s/%s/1918_%s.mutate", h1n1StructUrl, gene, aaSeqId, aaSeqId);
+printf("<A HREF=\"%s/%s/%s/1918_%s.mutate", getH1n1StructUrl(), gene, aaSeqId, aaSeqId);
 printf("\" TARGET=_blank>%s</A><BR>\n", aaSeqId);
 
 printf("<B>Comparison to A H1N1 gene %s concensus:</B> ", gene);
-printf("<A HREF=\"%s/%s/%s/consensus_%s.mutate", h1n1StructUrl, gene, aaSeqId, aaSeqId);
+printf("<A HREF=\"%s/%s/%s/consensus_%s.mutate", getH1n1StructUrl(), gene, aaSeqId, aaSeqId);
 printf("\" TARGET=_blank>%s</A><BR>\n", aaSeqId);
 
 printf("<BR><B>3D Structure Prediction of %s concensus sequence (with variation of sequence %s highlighted):", geneSymbol, item);
 printf("<BR>PDB file:</B> ");
 char pdbUrl[PATH_LEN];
-safef(pdbUrl, sizeof(pdbUrl), "%s/%s/decoys/%s.try1-opt3.pdb.gz", h1n1StructUrl, item, item);
+safef(pdbUrl, sizeof(pdbUrl), "%s/%s/decoys/%s.try1-opt3.pdb.gz", getH1n1StructUrl(), item, item);
 
 
 // Modeller stuff
 char modelPdbUrl[PATH_LEN];
@@ -255,24 +280,24 @@
 printf("<TD ALIGN=\"center\">Top</TD>\n");
 printf("<TD ALIGN=\"center\">Side</TD>\n");
 printf("</TR>\n");
 printf("<TR>\n");
-printf("<TD ALIGN=\"center\"><img src=\"%s/%s/%s.undertaker-align.view1_200.jpg\"></TD>", h1n1StructUrl, item, item);
-printf("<TD ALIGN=\"center\"><img src=\"%s/%s/%s.undertaker-align.view2_200.jpg\"></TD>", h1n1StructUrl, item, item);
-printf("<TD ALIGN=\"center\"><img src=\"%s/%s/%s.undertaker-align.view3_200.jpg\"></TD>", h1n1StructUrl, item, item);
+printf("<TD ALIGN=\"center\"><img src=\"%s/%s/%s.undertaker-align.view1_200.jpg\"></TD>", getH1n1StructUrl(), item, item);
+printf("<TD ALIGN=\"center\"><img src=\"%s/%s/%s.undertaker-align.view2_200.jpg\"></TD>", getH1n1StructUrl(), item, item);
+printf("<TD ALIGN=\"center\"><img src=\"%s/%s/%s.undertaker-align.view3_200.jpg\"></TD>", getH1n1StructUrl(), item, item);
 printf("</TR>\n");
 printf("<TR>\n");
 printf("<TD ALIGN=\"center\"><A HREF=\"%s/%s/%s.undertaker-align.view1_500.jpg\">500x500</A></TD>",
-	h1n1StructUrl, item, item);
+	getH1n1StructUrl(), item, item);
 printf("<TD ALIGN=\"center\"><A HREF=\"%s/%s/%s.undertaker-align.view2_500.jpg\">500x500</A></TD>",
-	h1n1StructUrl, item, item);
+	getH1n1StructUrl(), item, item);
 printf("<TD ALIGN=\"center\"><A HREF=\"%s/%s/%s.undertaker-align.view3_500.jpg\">500x500</A></TD>",
-	h1n1StructUrl, item, item);
+	getH1n1StructUrl(), item, item);
 printf("</TR>\n");
 printf("</TABLE>\n");
 
 printf("<BR><B>Detailed results of SAM-T02:</B> ");
-printf("<A HREF=\"%s/%s/summary.html", h1n1StructUrl, item);
+printf("<A HREF=\"%s/%s/summary.html", getH1n1StructUrl(), item);
 printf("\" TARGET=_blank>%s</A><BR>\n", item);
 
 /* by pass the following additional processing for now, until two necessary tables are built */
 hFreeConn(&conn2);
@@ -376,18 +401,18 @@
 printf("<A HREF=\"http://www.soe.ucsc.edu/research/compbio/SAM_T02/sam-t02-faq.html\"");
 printf(" TARGET=_blank>SAM-T02</A></H3>\n");
 
 printf("<B>Multiple Alignment:</B> ");
-printf("<A HREF=\"%s/%s/summary.html#alignment", h1n1StructUrl, item);
+printf("<A HREF=\"%s/%s/summary.html#alignment", getH1n1StructUrl(), item);
 printf("\" TARGET=_blank>%s</A><BR>\n", item);
 
 printf("<B>Secondary Structure Predictions:</B> ");
-printf("<A HREF=\"%s/%s/summary.html#secondary-structure", h1n1StructUrl, item);
+printf("<A HREF=\"%s/%s/summary.html#secondary-structure", getH1n1StructUrl(), item);
 printf("\" TARGET=_blank>%s</A><BR>\n", item);
 
 printf("<B>3D Structure Prediction (PDB file):</B> ");
 char pdbUrl[PATH_LEN];
-safef(pdbUrl, sizeof(pdbUrl), "%s/%s/decoys/%s.try1-opt3.pdb.gz", h1n1StructUrl, item, item);
+safef(pdbUrl, sizeof(pdbUrl), "%s/%s/decoys/%s.try1-opt3.pdb.gz", getH1n1StructUrl(), item, item);
 struct tempName chimerax;
 mkChimerax(item, pdbUrl, NULL, &chimerax);
 
 printf("<A HREF=\"%s\" TARGET=_blank>%s</A>, view with <A HREF=\"%s\">Chimera</A><BR>\n", pdbUrl, item, chimerax.forHtml);
@@ -400,24 +425,24 @@
 printf("<TD ALIGN=\"center\">Top</TD>\n");
 printf("<TD ALIGN=\"center\">Side</TD>\n");
 printf("</TR>\n");
 printf("<TR>\n");
-printf("<TD ALIGN=\"center\"><img src=\"%s/%s/%s.undertaker-align.view1_200.jpg\"></TD>", h1n1StructUrl, item, item);
-printf("<TD ALIGN=\"center\"><img src=\"%s/%s/%s.undertaker-align.view2_200.jpg\"></TD>", h1n1StructUrl, item, item);
-printf("<TD ALIGN=\"center\"><img src=\"%s/%s/%s.undertaker-align.view3_200.jpg\"></TD>", h1n1StructUrl, item, item);
+printf("<TD ALIGN=\"center\"><img src=\"%s/%s/%s.undertaker-align.view1_200.jpg\"></TD>", getH1n1StructUrl(), item, item);
+printf("<TD ALIGN=\"center\"><img src=\"%s/%s/%s.undertaker-align.view2_200.jpg\"></TD>", getH1n1StructUrl(), item, item);
+printf("<TD ALIGN=\"center\"><img src=\"%s/%s/%s.undertaker-align.view3_200.jpg\"></TD>", getH1n1StructUrl(), item, item);
 printf("</TR>\n");
 printf("<TR>\n");
 printf("<TD ALIGN=\"center\"><A HREF=\"%s/%s/%s.undertaker-align.view1_500.jpg\">500x500</A></TD>",
-	h1n1StructUrl, item, item);
+	getH1n1StructUrl(), item, item);
 printf("<TD ALIGN=\"center\"><A HREF=\"%s/%s/%s.undertaker-align.view2_500.jpg\">500x500</A></TD>",
-	h1n1StructUrl, item, item);
+	getH1n1StructUrl(), item, item);
 printf("<TD ALIGN=\"center\"><A HREF=\"%s/%s/%s.undertaker-align.view3_500.jpg\">500x500</A></TD>",
-	h1n1StructUrl, item, item);
+	getH1n1StructUrl(), item, item);
 printf("</TR>\n");
 printf("</TABLE>\n");
 
 printf("<BR><B>Detailed results of SAM-T02:</B> ");
-printf("<A HREF=\"%s/%s/summary.html", h1n1StructUrl, item);
+printf("<A HREF=\"%s/%s/summary.html", getH1n1StructUrl(), item);
 printf("\" TARGET=_blank>%s</A><BR>\n", item);
 
 /* by pass the following additional processing for now, until two necessary tables are built */
 hFreeConn(&conn2);
@@ -573,9 +598,9 @@
 printf("<B>3D Structure Prediction of consensus sequence (with variations of all selected sequences highlighted):");
 printf("<BR>PDB file:</B> ");
 
 char pdbUrl[PATH_LEN];
-safef(pdbUrl, sizeof(pdbUrl), "%s/%s/decoys/%s.try1-opt3.pdb.gz", h1n1StructUrl, item, item);
+safef(pdbUrl, sizeof(pdbUrl), "%s/%s/decoys/%s.try1-opt3.pdb.gz", getH1n1StructUrl(), item, item);
 
 // Modeller stuff
 char modelPdbUrl[PATH_LEN];
 if (getH1n1Model(gene, modelPdbUrl))