2797186e7d69a8b79b92e30118bed55548f04caf hiram Thu Feb 8 14:39:16 2018 -0800 adding externalId column to ncbiRefSeqLink table refs #20215 diff --git src/hg/hgc/hgc.c src/hg/hgc/hgc.c index eb4d55b..835a66a 100644 --- src/hg/hgc/hgc.c +++ src/hg/hgc/hgc.c @@ -1578,31 +1578,31 @@ } int extraFieldsPrint(struct trackDb *tdb,struct sqlResult *sr,char **fields,int fieldCount) // Any extra bed or bigBed fields (defined in as and occurring after N in bed N + types. // sr may be null for bigBeds. // Returns number of extra fields actually printed. { struct asObject *as = asForDb(tdb, database); if (as == NULL) return 0; // We are trying to print extra fields so we need to figure out how many fields to skip int start = extraFieldsStart(tdb, fieldCount, as); struct asColumn *col = as->columnList; -char *urlsStr = trackDbSetting(tdb, "urls"); +char *urlsStr = trackDbSettingClosestToHomeOrDefault(tdb, "urls", NULL); struct hash* fieldToUrl = hashFromString(urlsStr); boolean skipEmptyFields = trackDbSettingOn(tdb, "skipEmptyFields"); // make list of fields to skip char *skipFieldsStr = trackDbSetting(tdb, "skipFields"); struct slName *skipIds = NULL; if (skipFieldsStr) skipIds = slNameListFromComma(skipFieldsStr); // make list of fields that are separated from other fields char *sepFieldsStr = trackDbSetting(tdb, "sepFields"); struct slName *sepFields = NULL; if (sepFieldsStr) sepFields = slNameListFromComma(sepFieldsStr); @@ -11884,42 +11884,81 @@ printf("<a href='https://www.ncbi.nlm.nih.gov/nuccore/%s' target=_blank>", nrl->mrnaAcc); printf("%s</a><br>\n", nrl->mrnaAcc); } if (differentWord(nrl->genbank, "") && differentWord(nrl->genbank,nrl->id)) { printf("<b>Genbank:</b> "); printf("<a href='https://www.ncbi.nlm.nih.gov/nuccore/%s' target=_blank>", nrl->genbank); printf("%s</a><br>\n", nrl->genbank); } if (differentWord(nrl->protAcc, "")) { printf("<b>Protein:</b> "); printf("<a href='https://www.ncbi.nlm.nih.gov/protein/%s' target=_blank>", nrl->protAcc); printf("%s</a><br>\n", nrl->protAcc); } + +if (differentWord(nrl->hgnc, "")) + { /* legacy support of mm10 override of hgnc column until this table + * is updated on the RR */ if (startsWith("MGI", nrl->hgnc)) { printf("<b>MGI:</b> " "<a href=\"http://www.informatics.jax.org/marker/%s\" target=_blank>%s</a><br>\n", nrl->hgnc, nrl->hgnc); } -else if (differentWord(nrl->hgnc, "")) + else { printf("<b>HGNC:</b> "); printf("<a href='http://www.genenames.org/cgi-bin/gene_symbol_report?hgnc_id=HGNC:%s' target=_blank>", nrl->hgnc); + printf("%s</a><br>\n", nrl->hgnc); } + } + +if (sqlColumnExists(conn, "ncbiRefSeqLink", "externalId")) + { + if (differentWord(nrl->externalId, "")) + { + char *urlsStr = trackDbSetting(tdb, "dbPrefixUrls"); + struct hash* dbToUrl = hashFromString(urlsStr); + char *labelsStr = trackDbSetting(tdb, "dbPrefixLabels"); + struct hash* dbToLabel = hashFromString(labelsStr); + if (dbToUrl) + { + if (!dbToLabel) + errAbort("can not find trackDb dbPrefixLabels to correspond with dbPrefixUrls\n"); + char *databasePrefix = cloneString(database); + while (strlen(databasePrefix) && isdigit(lastChar(databasePrefix))) + trimLastChar(databasePrefix); + struct hashEl *hel = hashLookup(dbToUrl, databasePrefix); + if (hel) + { + struct hashEl *label = hashLookup(dbToLabel, databasePrefix); + if (!label) + errAbort("missing trackDb dbPrefixLabels for database prefix: '%s'\n", databasePrefix); + char *url = (char *)hel->val; + char *labelStr = (char *)label->val; + char *idUrl = replaceInUrl(url, nrl->externalId, cart, database, + nrl->externalId, winStart, winEnd, tdb->track, TRUE); + printf("<b>%s:</b> ", labelStr); + printf("<a href='%s' target='_blank'>%s</a><br>\n", + idUrl, nrl->externalId); + } + } + } + } if (differentWord(nrl->locusLinkId, "")) { printf("<b>Entrez Gene:</b> "); printf("<a href='https://www.ncbi.nlm.nih.gov/entrez/query.fcgi?db=gene&cmd=Retrieve&dopt=Graphics&list_uids=%s' TARGET=_blank>", nrl->locusLinkId); printf("%s</a><br>\n", nrl->locusLinkId); } if (differentWord(nrl->name,"")) { printGeneCards(nrl->name); if (startsWith("hg", database)) { printf("<b>AceView:</b> ");