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))