d9a39b809c2df627f2148806102c4fc2c1290212
kate
Thu Feb 11 12:59:35 2016 -0800
Suppress links to hgGene when there's no page. Add transcript class and color it. refs #15645
diff --git src/hg/hgc/gtexClick.c src/hg/hgc/gtexClick.c
index c2aeee6..74de62d 100644
--- src/hg/hgc/gtexClick.c
+++ src/hg/hgc/gtexClick.c
@@ -19,30 +19,48 @@
struct tissueSampleVals
/* RPKM expression values for multiple samples */
{
struct tissueSampleVals *next;
char *name; /* GTEx tissue name */
char *description; /* GTEx tissue description */
int color; /* GTEx tissue color */
int count; /* number of samples */
double *vals; /* RPKM values */
double min, max; /* minimum, maximum value */
double q1, median, q3; /* quartiles */
struct slDouble *valList; /* used to create val array */
};
+char *gencodeTranscriptClassColorCode(char *transcriptClass)
+/* Get HTML color code used by GENCODE for transcript class
+ * WARNING: should share code with transcript color handling in hgTracks */
+{
+char *unknown = "#010101";
+if (transcriptClass == NULL)
+ return unknown;
+if (sameString(transcriptClass, "coding"))
+ return "#0C0C78";
+if (sameString(transcriptClass, "nonCoding"))
+ return "#006400";
+if (sameString(transcriptClass, "pseudo"))
+ return "#FF33FF";
+if (sameString(transcriptClass, "problem"))
+ return "#FE0000";
+return unknown;
+}
+
/********************************************************/
/* R implementation. Invokes R script */
void drawGtexRBoxplot(struct gtexGeneBed *gtexGene, struct tissueSampleVals *tsvList,
boolean doLogTransform, char *version)
/* Draw a box-and-whiskers plot from GTEx sample data, using R boxplot */
{
/* Create R data frame. This is a tab-sep file, one row per sample,
* with columns for sample, tissue, rpkm */
struct tempName dfTn;
trashDirFile(&dfTn, "hgc", "gtexGene", ".df.txt");
FILE *f = fopen(dfTn.forCgi, "w");
if (f == NULL)
errAbort("can't create temp file %s", dfTn.forCgi);
fprintf(f, "sample\ttissue\trpkm\n");
@@ -192,39 +210,45 @@
}
struct sqlConnection *conn = hAllocConn(database);
char *desc = sqlQuickString(conn, query);
hFreeConn(&conn);
return desc;
}
void doGtexGeneExpr(struct trackDb *tdb, char *item)
/* Details of GTEx gene expression item */
{
struct gtexGeneBed *gtexGene = getGtexGene(item, tdb->table);
if (gtexGene == NULL)
errAbort("Can't find gene %s in GTEx gene table %s\n", item, tdb->table);
genericHeader(tdb, item);
-// TODO: link to UCSC gene
-printf("Gene: %s
",
- hgGeneName(), database, gtexGene->name, gtexGene->name);
+printf("Gene: ");
char *desc = getGeneDescription(gtexGene);
-if (desc != NULL)
+if (desc == NULL)
+ printf("%s
\n", gtexGene->name);
+else
+ {
+ printf("%s
\n",
+ hgGeneName(), database, gtexGene->name, gtexGene->name);
printf("Description: %s
\n", desc);
+ }
printf("Ensembl Gene ID: %s
\n", gtexGene->geneId);
printf("Ensembl Transcript ID: %s
\n", gtexGene->transcriptId);
-printf("Genomic Position: %s:%d-%d
",
+printf("Ensembl Transcript Class: %s
\n",
+ gencodeTranscriptClassColorCode(gtexGene->transcriptClass), gtexGene->transcriptClass);
+printf("Genomic Position: %s:%d-%d
\n",
hgTracksPathAndSettings(), database,
gtexGene->chrom, gtexGene->chromStart+1, gtexGene->chromEnd,
gtexGene->chrom, gtexGene->chromStart+1, gtexGene->chromEnd);
printf("View at GTEx portal
\n", gtexGene->geneId);
puts("
"); boolean doLogTransform = cartUsualBooleanClosestToHome(cart, tdb, FALSE, GTEX_LOG_TRANSFORM, GTEX_LOG_TRANSFORM_DEFAULT); double maxVal = 0.0; char *versionSuffix = gtexVersionSuffix(tdb->table); struct tissueSampleVals *tsvs = getTissueSampleVals(gtexGene, doLogTransform, versionSuffix, &maxVal); char *version = gtexVersion(tdb->table); drawGtexRBoxplot(gtexGene, tsvs, doLogTransform, version);