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: ");