796941fcefa1a7ff1e5fa743cd360856e2f768ee
fanhsu
Fri Nov 5 16:41:21 2010 -0700
Updated for RGD Genes.
diff --git src/hg/hgc/hgc.c src/hg/hgc/hgc.c
index efc6fc5..3f9fd49 100644
--- src/hg/hgc/hgc.c
+++ src/hg/hgc/hgc.c
@@ -9835,30 +9835,199 @@
printf("%s
\n", jo.mouseSymbol);
}
sqlFreeResult(&sr);
}
if (startsWith("hg", database))
{
printf("\n");
printf("AceView: ");
printf("",
rl->name);
printf("%s
\n", rl->name);
}
printStanSource(rl->mrnaAcc, "mrna");
}
+void prKnownGeneInfo(struct sqlConnection *conn, char *rnaName,
+ char *sqlRnaName, struct refLink *rl)
+/* print basic details information and links for a Known Gene */
+{
+struct sqlResult *sr;
+char **row;
+char query[256];
+int ver = gbCdnaGetVersion(conn, rl->mrnaAcc);
+char *cdsCmpl = NULL;
+
+printf("
\n");
+
+printf("Known Gene %s\n", rl->name);
+printf("KnownGene: mrnaAcc);
+if (ver > 0)
+ printf("\" TARGET=_blank>%s.%d", rl->mrnaAcc, ver);
+else
+ printf("\" TARGET=_blank>%s", rl->mrnaAcc);
+fflush(stdout);
+
+puts(" ");
+char *desc = gbCdnaGetDescription(conn, rl->mrnaAcc);
+if (desc != NULL)
+ {
+ printf("Description: ");
+ htmlTextOut(desc);
+ printf(" \n");
+ }
+
+printCcdsForSrcDb(conn, rl->mrnaAcc);
+
+cdsCmpl = getRefSeqCdsCompleteness(conn, sqlRnaName);
+if (cdsCmpl != NULL)
+ {
+ printf("CDS: %s ", cdsCmpl);
+ }
+if (rl->omimId != 0)
+ {
+ printf("OMIM: omimId);
+ printf("\" TARGET=_blank>%d \n", rl->omimId);
+ }
+if (rl->locusLinkId != 0)
+ {
+ printf("Entrez Gene: ");
+ printf("",
+ rl->locusLinkId);
+ printf("%d \n", rl->locusLinkId);
+
+ if ( (strstr(database, "mm") != NULL) && hTableExists(database, "MGIid"))
+ {
+ char *mgiID;
+ safef(query, sizeof(query), "select MGIid from MGIid where LLid = '%d';",
+ rl->locusLinkId);
+
+ sr = sqlGetResult(conn, query);
+ if ((row = sqlNextRow(sr)) != NULL)
+ {
+ printf("Mouse Genome Informatics: ");
+ mgiID = cloneString(row[0]);
+
+ printf("%s \n",mgiID, mgiID);
+ }
+ else
+ {
+ /* per Carol Bult from Jackson Lab 4/12/02, JAX do not always agree
+ * with Locuslink on seq to gene association.
+ * Thus, not finding a MGIid even if a LocusLink ID
+ * exists is always a possibility. */
+ }
+ sqlFreeResult(&sr);
+ }
+ }
+printStanSource(rl->mrnaAcc, "mrna");
+}
+
+void doKnownGene(struct trackDb *tdb, char *rnaName)
+/* Process click on a known gene. */
+{
+struct sqlConnection *conn = hAllocConn(database);
+struct sqlResult *sr;
+char **row;
+char query[256];
+char *kgId = cartString(cart, "i");
+char *sqlRnaName = rnaName;
+char *summary = NULL;
+struct refLink rlR;
+struct refLink *rl;
+int start = cartInt(cart, "o");
+int left = cartInt(cart, "l");
+int right = cartInt(cart, "r");
+char *chrom = cartString(cart, "c");
+/* Make sure to escape single quotes for DB parseability */
+if (strchr(rnaName, '\''))
+ {
+ sqlRnaName = replaceChars(rnaName, "'", "''");
+ }
+/* get refLink entry */
+if (strstr(rnaName, "NM_") != NULL)
+ {
+ safef(query, sizeof(query), "select * from refLink where mrnaAcc = '%s'", sqlRnaName);
+ sr = sqlGetResult(conn, query);
+ if ((row = sqlNextRow(sr)) == NULL)
+ errAbort("Couldn't find %s in refLink table - database inconsistency.", rnaName);
+ rl = refLinkLoad(row);
+ sqlFreeResult(&sr);
+ }
+else
+ {
+ rlR.name = strdup(kgId);
+ rlR.mrnaAcc = strdup(kgId);
+ rlR.locusLinkId = 0;
+ rl = &rlR;
+ }
+
+cartWebStart(cart, database, "Known Gene");
+printf("\n\n");
+prKnownGeneInfo(conn, rnaName, sqlRnaName, rl);
+
+printf(" \n \n");
+
+/* optional summary text */
+summary = getRefSeqSummary(conn, kgId);
+if (summary != NULL)
+ {
+ htmlHorizontalLine();
+ printf("Summary of %s\n", kgId);
+ printf("%s \n", summary);
+ freeMem(summary);
+ }
+htmlHorizontalLine();
+
+/* print alignments that track was based on */
+{
+char *aliTbl;
+
+if (strstr(kgId, "NM_"))
+ {
+ aliTbl = strdup("refSeqAli");
+ }
+else
+ {
+ aliTbl = strdup("all_mrna");
+ }
+struct psl *pslList = getAlignments(conn, aliTbl, rl->mrnaAcc);
+printf("mRNA/Genomic Alignments");
+printAlignments(pslList, start, "htcCdnaAli", aliTbl, kgId);
+}
+htmlHorizontalLine();
+
+struct palInfo *palInfo = NULL;
+
+if (genbankIsRefSeqCodingMRnaAcc(rnaName))
+ {
+ AllocVar(palInfo);
+ palInfo->chrom = chrom;
+ palInfo->left = left;
+ palInfo->right = right;
+ palInfo->rnaName = rnaName;
+ }
+
+geneShowPosAndLinksPal(rl->mrnaAcc, rl->protAcc, tdb, "refPep", "htcTranslatedProtein",
+ "htcRefMrna", "htcGeneInGenome", "mRNA Sequence",palInfo);
+
+printTrackHtml(tdb);
+hFreeConn(&conn);
+}
+
void doRefGene(struct trackDb *tdb, char *rnaName)
/* Process click on a known RefSeq gene. */
{
struct sqlConnection *conn = hAllocConn(database);
struct sqlResult *sr;
char **row;
char query[256];
char *sqlRnaName = rnaName;
char *summary = NULL;
boolean isXeno = sameString(tdb->table, "xenoRefGene");
struct refLink *rl;
int start = cartInt(cart, "o");
int left = cartInt(cart, "l");
int right = cartInt(cart, "r");
char *chrom = cartString(cart, "c");
@@ -22826,30 +22995,34 @@
{
doRgdQtl(tdb, item);
}
else if (sameWord(table, "superfamily"))
{
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, "refGene"))
{
doRefGene(tdb, item);
}
else if (sameWord(table, "ccdsGene"))
{
doCcdsGene(tdb, item);
}
else if (sameWord(table, "mappedRefSeq"))
/* human refseqs on chimp browser */
{
doRefGene(tdb, item);
}
else if (sameWord(table, "mgcGenes") || sameWord(table, "mgcFullMrna"))
{
|