8d7997b0de6bd0f5c0dd7b4dd90c36742cec3812 hiram Thu Feb 4 16:08:41 2016 -0800 improving formatting of ncbiRefSeq click data refs #13673 diff --git src/hg/hgc/hgc.c src/hg/hgc/hgc.c index e6e685b..6d1657d 100644 --- src/hg/hgc/hgc.c +++ src/hg/hgc/hgc.c @@ -11407,162 +11407,135 @@ } htmlHorizontalLine(); return rl; } void doNcbiRefSeq(struct trackDb *tdb, char *rnaName) /* Process click on a NCBI RefSeq gene. */ { struct sqlConnection *conn = hAllocConn(database); struct sqlResult *sr; char **row; char query[256]; char *sqlRnaName = rnaName; struct ncbiRefSeqLink *nrl; -char noDot[1024]; struct dyString *dy = newDyString(1024); -dyStringPrintf(dy, "%s", tdb->longLabel); +dyStringPrintf(dy, "%s - %s ", tdb->longLabel, rnaName); struct trackVersion *trackVersion = getTrackVersion(database, "ncbiRefSeq"); if ((trackVersion != NULL) && !isEmpty(trackVersion->version)) dyStringPrintf(dy, "- Release %s\n", trackVersion->version); cartWebStart(cart, database, "%s", dy->string); -safecpy(noDot, sizeof noDot, rnaName); -char *ptr = strchr(noDot, '.'); -if (ptr) - *ptr++ = 0; /* get refLink entry */ sqlSafef(query, sizeof(query), "select * from ncbiRefSeqLink where id = '%s'", sqlRnaName); sr = sqlGetResult(conn, query); if ((row = sqlNextRow(sr)) == NULL) errAbort("Couldn't find %s in ncbiRefSeqLink table.", rnaName); nrl = ncbiRefSeqLinkLoad(row); sqlFreeResult(&sr); -/* print the first section with info */ -printf("<ul>\n"); -printf("<li>%s: %s</li>\n", "status", nrl->status); -printf("<li>%s: %s</li>\n", "name", nrl->name); -printf("<li>%s: %s</li>\n", "product", nrl->product); -printf("<li>%s: %s</li>\n", "mrnaAcc", nrl->mrnaAcc); -printf("<li>%s: %s</li>\n", "protAcc", nrl->protAcc); -printf("<li>%s: %s</li>\n", "locusLinkId", nrl->locusLinkId); -printf("<li>%s: %s</li>\n", "omimId", nrl->omimId); -printf("<li>%s: %s</li>\n", "hgnc", nrl->hgnc); -printf("<li>%s: %s</li>\n", "genbank", nrl->genbank); -printf("<li>%s: %s</li>\n", "pseudo", nrl->pseudo); -printf("<li>%s: %s</li>\n", "gbkey", nrl->gbkey); -printf("<li>%s: %s</li>\n", "source", nrl->source); -printf("<li>%s: %s</li>\n", "gene_biotype", nrl->gene_biotype); -printf("<li>%s: %s</li>\n", "gene_synonym", nrl->gene_synonym); -printf("<li>%s: %s</li>\n", "ncrna_class", nrl->ncrna_class); -printf("<li>%s: %s</li>\n", "note", nrl->note); -printf("<li>%s: %s</li>\n", "description", nrl->description); - -if ((trackVersion != NULL) && !isEmpty(trackVersion->version)) +printf("<h2>RefSeq Gene %s</h2><br>\n", nrl->name); +printf("<b>RefSeq:</b> <a href=\""); +printEntrezNucleotideUrl(stdout, nrl->id); +printf("\" target=_blank>%s</a>", nrl->id); +printf(" <b>Status: </b>%s<br>\n", nrl->status); +printf("<b>Description:</b> %s<br>\n", nrl->product); +if (differentWord(nrl->gbkey, "n/a")) { - printf("<B>Annotation Release:</B> <A HREF=\"%s\" TARGET=_blank> %s <BR></A>", trackVersion->comment, trackVersion->version); - htmlHorizontalLine(); + printf("<b>Molecule type:</b> %s<br>\n", nrl->gbkey); } - -printf("</tr>\n</table>\n"); - -printTrackHtml(tdb); -hFreeConn(&conn); +if (differentWord(nrl->pseudo, "n/a")) + { + printf("<b>Pseudogene:</b> %s<br>\n", nrl->pseudo); } - -void doNcbiRefGene(struct trackDb *tdb, char *rnaName) -/* Process click on a NCBI RefSeq gene. */ +if (differentWord(nrl->source, "n/a")) { -struct sqlConnection *conn = hAllocConn(database); -struct sqlResult *sr; -char **row; -char query[256]; -char *sqlRnaName = rnaName; -struct ncbiRefLink *nrl; -boolean isPredicted = sameString(tdb->table, "ncbiRefPredicted"); -int left = cartInt(cart, "l"); -int right = cartInt(cart, "r"); -char *chrom = cartString(cart, "c"); -char noDot[1024]; - -struct dyString *dy = newDyString(1024); -if (isPredicted) - dyStringPrintf(dy, "NCBI Predicted RefSeq Gene"); -else - dyStringPrintf(dy, "NCBI Curated RefSeq Gene"); - -struct trackVersion *trackVersion = getTrackVersion(database, "ncbiRefSeq"); -if ((trackVersion != NULL) && !isEmpty(trackVersion->version)) - dyStringPrintf(dy, "- Release %s\n", trackVersion->version); - -cartWebStart(cart, database, "%s", dy->string); -safecpy(noDot, sizeof noDot, rnaName); -char *ptr = strchr(noDot, '.'); -if (ptr) - *ptr++ = 0; - -// get info from Genbank (if any) -struct refLink *rl = printRefSeqInfo( conn, tdb, noDot, ptr); - -/* Make sure to escape single quotes for DB parseability */ -if (strchr(rnaName, '\'')) + printf("<b>Source:</b> %s<br>\n", nrl->source); + } +if (differentWord(nrl->gene_biotype, "n/a")) { - sqlRnaName = replaceChars(rnaName, "'", "''"); + printf("<b>Biotype:</b> %s<br>\n", nrl->gene_biotype); } - -/* get refLink entry */ -sqlSafef(query, sizeof(query), "select * from ncbiRefLink where id = '%s'", sqlRnaName); -sr = sqlGetResult(conn, query); -if ((row = sqlNextRow(sr)) == NULL) - errAbort("Couldn't find %s in ncbiRefLink table.", rnaName); -nrl = ncbiRefLinkLoad(row); -sqlFreeResult(&sr); - -/* print the first section with info */ -printf("<table border=0>\n<tr>\n"); -if (rl == NULL) +if (differentWord(nrl->gene_synonym, "n/a")) { - prNcbiRefGeneInfo(conn, rnaName, sqlRnaName, nrl, isPredicted); - htmlHorizontalLine(); + printf("<b>Synonyms:</b> %s<br>\n", nrl->gene_synonym); } +if (differentWord(nrl->ncrna_class, "n/a")) + { + printf("<b>ncRNA class:</b> %s<br>\n", nrl->ncrna_class); + } +if (differentWord(nrl->note, "n/a")) + { + printf("<b>Other notes:</b> %s<br>\n", nrl->note); + } +printf("<b>OMIM:</b> <a href=\""); +printEntrezOMIMUrl(stdout, sqlSigned(nrl->omimId)); +printf("\" target=_blank>%s</a><br>\n", nrl->omimId); -if ((trackVersion != NULL) && !isEmpty(trackVersion->version)) +if (nrl->locusLinkId != 0) { - printf("<B>Annotation Release:</B> <A HREF=\"%s\" TARGET=_blank> %s <BR></A>", trackVersion->comment, trackVersion->version); - htmlHorizontalLine(); + printf("<b>Entrez Gene:</b> "); + printf("<a href=\"http://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); } -printf("</tr>\n</table>\n"); +if (differentWord(nrl->name,"n/a")) + { + printGeneCards(nrl->name); + if (startsWith("hg", database)) + { + printf("<b>AceView:</b> "); + printf("<a href = \"http://www.ncbi.nlm.nih.gov/IEB/Research/Acembly/av.cgi?db=human&l=%s\" target=_blank>", + nrl->name); + printf("%s</a><br>\n", nrl->name); + } + } +printf("<hr>\n"); +printf("Summary of <b>%s</b><br>\n%s<br><hr>\n", nrl->name, nrl->description); -struct palInfo *palInfo = NULL; +/* print the first section with info */ +printf("<ul>\n"); +// printf("<li>%s: %s</li>\n", "status", nrl->status); +// printf("<li>%s: %s</li>\n", "name", nrl->name); +// printf("<li>%s: %s</li>\n", "product", nrl->product); +printf("<li>%s: %s</li>\n", "mrnaAcc", nrl->mrnaAcc); +printf("<li>%s: %s</li>\n", "protAcc", nrl->protAcc); +// printf("<li>%s: %s</li>\n", "locusLinkId", nrl->locusLinkId); +// printf("<li>%s: %s</li>\n", "omimId", nrl->omimId); +printf("<li>%s: %s</li>\n", "hgnc", nrl->hgnc); +printf("<li>%s: %s</li>\n", "genbank", nrl->genbank); +//printf("<li>%s: %s</li>\n", "pseudo", nrl->pseudo); +// printf("<li>%s: %s</li>\n", "gbkey", nrl->gbkey); +// printf("<li>%s: %s</li>\n", "source", nrl->source); +// printf("<li>%s: %s</li>\n", "gene_biotype", nrl->gene_biotype); +// printf("<li>%s: %s</li>\n", "gene_synonym", nrl->gene_synonym); +// printf("<li>%s: %s</li>\n", "ncrna_class", nrl->ncrna_class); +// printf("<li>%s: %s</li>\n", "note", nrl->note); +// printf("<li>%s: %s</li>\n", "description", nrl->description); -if (genbankIsRefSeqCodingMRnaAcc(rnaName)) +if ((trackVersion != NULL) && !isEmpty(trackVersion->version)) { - AllocVar(palInfo); - palInfo->chrom = chrom; - palInfo->left = left; - palInfo->right = right; - palInfo->rnaName = rnaName; + printf("<B>Annotation Release:</B> <A href=\"%s\" TARGET=_blank> %s <BR></A>", trackVersion->comment, trackVersion->version); + htmlHorizontalLine(); } -geneShowPosAndLinksPal(nrl->id, NULL, tdb, NULL, "htcTranslatedProtein", - "htcGeneMrna", "htcGeneInGenome", "mRNA Sequence",palInfo); +printf("</tr>\n</table>\n"); printTrackHtml(tdb); hFreeConn(&conn); } void doRefGene(struct trackDb *tdb, char *rnaName) /* Process click on a known RefSeq gene. */ { struct sqlConnection *conn = hAllocConn(database); int start = cartInt(cart, "o"); int left = cartInt(cart, "l"); int right = cartInt(cart, "r"); char *chrom = cartString(cart, "c"); boolean isXeno = sameString(tdb->table, "xenoRefGene"); @@ -24990,35 +24963,30 @@ { doSuperfamily(tdb, item, NULL); } else if (sameWord(table, "ensGene") || sameWord (table, "ensGeneNonCoding")) { doEnsemblGene(tdb, item, NULL); } else if (sameWord(table, "xenoRefGene")) { doRefGene(tdb, item); } else if (sameWord(table, "knownGene")) { doKnownGene(tdb, item); } -else if (sameWord(table, "ncbiRefPredicted") || - sameWord(table, "ncbiRefCurated") ) - { - doNcbiRefGene(tdb, item); - } else if (sameWord(table, "ncbiRefSeq") || sameWord(table, "ncbiRefSeqCurated") || sameWord(table, "ncbiRefSeqPredicted") || sameWord(table, "ncbiRefSeqOther") ) { doNcbiRefSeq(tdb, item); } else if (sameWord(table, "refGene") ) { doRefGene(tdb, item); } else if (sameWord(table, "ccdsGene")) { doCcdsGene(tdb, item); }