000226be7ecaa7674455d3968af3590ff2a047b3 kate Thu Apr 28 13:13:40 2016 -0700 Add GTEx gene expression boxplot to hg38 and hg19 hgGene pages. Remove old GTEx link. refs #17244 diff --git src/hg/hgGene/gtex.c src/hg/hgGene/gtex.c new file mode 100644 index 0000000..db90050 --- /dev/null +++ src/hg/hgGene/gtex.c @@ -0,0 +1,62 @@ +/* GTEx - Gene expression from the Genotype Tissue Expression project. */ + +/* Copyright (C) 2016 The Regents of the University of California + * See README in this or parent directory for licensing information. */ + +#include "common.h" +#include "hash.h" +#include "linefile.h" +#include "dystring.h" +#include "cart.h" +#include "cheapcgi.h" +#include "hdb.h" +#include "hgGene.h" +#include "gtexInfo.h" +#include "gtexUi.h" + +static boolean gtexExists(struct section *section, struct sqlConnection *conn, char *geneId) +/* Return TRUE if GTEx data exists for this gene */ +{ +// Lookup geneId in knownToEnsembl to get ENST (w/ version), look that up (w/o version) +// in ensGene to get ENSG (w/o version), and save it for printer +char query[512]; +if (!sqlTableExists(conn, "gtexGene")) + return FALSE; +sqlSafef(query, sizeof(query), + "SELECT ensGene.name2 FROM ensGene, knownToEnsembl WHERE " + "knownToEnsembl.name='%s' AND " + "ensGene.name=SUBSTRING_INDEX(knownToEnsembl.value,'.',1)", geneId); +char *ensGene = sqlQuickString(conn, query); +if (!ensGene) + return FALSE; +sqlSafef(query, sizeof(query), + "select geneId from gtexGene where geneId like '%s%%'", ensGene); +ensGene = sqlQuickString(conn, query); +if (!ensGene) + return FALSE; +section->items = cloneString(ensGene); +return TRUE; +} + +static void gtexPrint(struct section *section, struct sqlConnection *conn, char *geneId) +/* Print out GTEx gene expression boxplot */ +{ +struct tempName pngTn; +char *ensGene = section->items; +if (gtexGeneBoxplot(ensGene, NULL, GTEX_DEFAULT_VERSION, FALSE, &pngTn)) + hPrintf("<IMG SRC = \"%s\" BORDER=1><BR>\n", pngTn.forHtml); +gtexPortalLink(ensGene); +} + +struct section *gtexSection(struct sqlConnection *conn, struct hash *sectionRa) +/* Create GTEx gene expression section. */ +{ +struct section *section = sectionNew(sectionRa, "gtex"); +if (section != NULL) + { + section->exists = gtexExists; + section->print = gtexPrint; + } +return section; +} +