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("", nrl->mrnaAcc); printf("%s
\n", nrl->mrnaAcc); } if (differentWord(nrl->genbank, "") && differentWord(nrl->genbank,nrl->id)) { printf("Genbank: "); printf("", nrl->genbank); printf("%s
\n", nrl->genbank); } if (differentWord(nrl->protAcc, "")) { printf("Protein: "); printf("", nrl->protAcc); printf("%s
\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("MGI: " "%s
\n", nrl->hgnc, nrl->hgnc); } -else if (differentWord(nrl->hgnc, "")) + else { printf("HGNC: "); printf("", nrl->hgnc); + printf("%s
\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("%s: ", labelStr); + printf("%s
\n", + idUrl, nrl->externalId); + } + } + } + } if (differentWord(nrl->locusLinkId, "")) { printf("Entrez Gene: "); printf("", nrl->locusLinkId); printf("%s
\n", nrl->locusLinkId); } if (differentWord(nrl->name,"")) { printGeneCards(nrl->name); if (startsWith("hg", database)) { printf("AceView: ");