0c2b4c9307ddc336c33246496e27eaf813348386 braney Fri Apr 17 11:18:31 2015 -0700 hgTracks and trackDb changes for NCBI Genes track diff --git src/hg/hgTracks/simpleTracks.c src/hg/hgTracks/simpleTracks.c index eb6b1da..70b062d 100644 --- src/hg/hgTracks/simpleTracks.c +++ src/hg/hgTracks/simpleTracks.c @@ -5823,78 +5823,87 @@ char *refGeneMapName(struct track *tg, void *item) /* Return un-abbreviated gene name. */ { struct linkedFeatures *lf = item; char buffer[1024]; safecpy(buffer, sizeof buffer, lf->name); chopSuffix(buffer); return cloneString(buffer); } void lookupRefNames(struct track *tg) /* This converts the refSeq accession to a gene name where possible. */ { struct linkedFeatures *lf; struct sqlConnection *conn = hAllocConn(database); -boolean isNative = sameString(tg->table, "refGene"); +boolean isNative = !sameString(tg->table, "xenoRefGene"); boolean labelStarted = FALSE; boolean useGeneName = FALSE; boolean useAcc = FALSE; boolean useMim = FALSE; +char trackLabel[1024]; +char *labelString = tg->table; +boolean isRefGene = TRUE; +if (sameString(labelString, "ncbiRefCurated") || sameString(labelString, "ncbiRefPredicted")) + { + labelString="ncbiGene"; + isRefGene = FALSE; + } +safef(trackLabel, sizeof trackLabel, "%s.label", labelString); -struct hashEl *refGeneLabels = cartFindPrefix(cart, (isNative ? "refGene.label" : "xenoRefGene.label")); +struct hashEl *refGeneLabels = cartFindPrefix(cart, trackLabel); struct hashEl *label; char omimLabel[48]; safef(omimLabel, sizeof(omimLabel), "omim%s", cartString(cart, "db")); if (refGeneLabels == NULL) { useGeneName = TRUE; /* default to gene name */ - /* set cart to match what doing */ - if (isNative) cartSetBoolean(cart, "refGene.label.gene", TRUE); - else cartSetBoolean(cart, "xenoRefGene.label.gene", TRUE); } for (label = refGeneLabels; label != NULL; label = label->next) { if (endsWith(label->name, "gene") && differentString(label->val, "0")) useGeneName = TRUE; else if (endsWith(label->name, "acc") && differentString(label->val, "0")) useAcc = TRUE; else if (endsWith(label->name, omimLabel) && differentString(label->val, "0")) useMim = TRUE; else if (!endsWith(label->name, "gene") && !endsWith(label->name, "acc") && !endsWith(label->name, omimLabel) ) { useGeneName = TRUE; - cartRemove(cart, label->name); } } for (lf = tg->items; lf != NULL; lf = lf->next) { struct dyString *name = dyStringNew(SMALLDYBUF); labelStarted = FALSE; /* reset for each item in track */ if ((useGeneName || useAcc || useMim) && !isNative) { char *org = getOrganismShort(conn, lf->name); if (org != NULL) dyStringPrintf(name, "%s ", org); } if (useGeneName) { - char *gene = getGeneName(conn, lf->name); + char *gene; + if (isRefGene) + gene = getGeneName(conn, lf->name); + else + gene = lf->extra; if (gene != NULL) { dyStringAppend(name, gene); } labelStarted = TRUE; } if (useAcc) { if (labelStarted) dyStringAppendC(name, '/'); else labelStarted = TRUE; dyStringAppend(name, lf->name); } if (useMim) { char *mimId; @@ -6013,30 +6022,32 @@ } hFreeConn(&conn); } } } else for (lf = tg->items; lf != NULL; lf = lf->next) lf->extra = cloneString(lf->name); } void loadNcbiGene(struct track *tg) /* Load up RefSeq known genes. */ { enum trackVisibility vis = tg->visibility; loadGenePredWithName2(tg); +if (vis != tvDense) + lookupRefNames(tg); vis = limitVisibility(tg); } void loadRefGene(struct track *tg) /* Load up RefSeq known genes. */ { enum trackVisibility vis = tg->visibility; tg->items = lfFromGenePredInRange(tg, tg->table, chromName, winStart, winEnd); if (vis != tvDense) { lookupRefNames(tg); } vis = limitVisibility(tg); }