25a1ed58b2f9fc2d9ad7fdbe9117f0b2f47253f3
fanhsu
Tue Nov 9 16:38:23 2010 -0800
Update for RGD Genes, Redmine issue #29.
diff --git src/hg/hgGene/pathways.c src/hg/hgGene/pathways.c
index 1a6fd7e..b0a9e4a 100644
--- src/hg/hgGene/pathways.c
+++ src/hg/hgGene/pathways.c
@@ -23,55 +23,76 @@
struct sqlConnection *conn, char *geneId);
/* Count number of items referring to this gene. */
void (*printLinks)(struct pathwayLink *pl,
struct sqlConnection *conn, char *geneId);
/* Print out links. */
};
static void keggLink(struct pathwayLink *pl, struct sqlConnection *conn,
char *geneId)
/* Print out kegg database link. */
{
char query[512], **row;
struct sqlResult *sr;
+if (isRgdGene(conn))
+{
+safef(query, sizeof(query),
+ "select k.locusID, k.mapID, keggMapDesc.description"
+ " from rgdGene2KeggPathway k, keggMapDesc, rgdGene2 x"
+ " where k.rgdId=x.name "
+ " and x.name='%s'"
+ " and k.mapID = keggMapDesc.mapID"
+ , geneId);
+}
+else
+{
safef(query, sizeof(query),
"select k.locusID, k.mapID, keggMapDesc.description"
" from keggPathway k, keggMapDesc, kgXref x"
" where k.kgID=x.kgId "
" and x.kgID='%s'"
" and k.mapID = keggMapDesc.mapID"
, geneId);
+}
sr = sqlGetResult(conn, query);
while ((row = sqlNextRow(sr)) != NULL)
{
hPrintf("",
row[1], row[0]);
hPrintf("%s - %s
", row[1], row[2]);
}
sqlFreeResult(&sr);
}
static int keggCount(struct pathwayLink *pl, struct sqlConnection *conn,
char *geneId)
/* Count up number of hits. */
{
char query[256];
+if (!isRgdGene(conn))
+ {
safef(query, sizeof(query),
"select count(*) from keggPathway k, kgXref x where k.kgID=x.kgId and x.kgId='%s'", geneId);
+ }
+else
+ {
+ safef(query, sizeof(query),
+ "select count(*) from rgdGene2KeggPathway k, rgdGene2 x where k.rgdId=x.name and x.name='%s'", geneId);
+ }
return sqlQuickNum(conn, query);
}
static void bioCycLink(struct pathwayLink *pl, struct sqlConnection *conn,
char *geneId)
/* Print out bioCyc database link. */
{
char query[512], **row;
struct sqlResult *sr;
char *oldMapId = cloneString("");
safef(query, sizeof(query),
"select bioCycPathway.mapId,description"
" from bioCycPathway,bioCycMapDesc"
" where bioCycPathway.kgId='%s'"
@@ -113,34 +134,49 @@
static void reactomeLink(struct pathwayLink *pl, struct sqlConnection *conn,
char *geneId)
{
char condStr[255];
char *spID, *chp;
struct sqlConnection *conn2;
char query2[256];
struct sqlResult *sr2;
char **row2;
char *eventDesc;
char *eventID;
/* check the existence of kgXref table first */
+if (isRgdGene(conn))
+ {
+ if (!sqlTableExists(conn, "rgdGene2Xref")) return;
+ }
+else
+ {
if (!sqlTableExists(conn, "kgXref")) return;
-
+ }
+if (isRgdGene(conn))
+ {
+ safef(condStr, sizeof(condStr), "name='%s'", geneId);
+ spID = sqlGetField(database, "rgdGene2ToUniProt", "value", condStr);
+ }
+else
+ {
safef(condStr, sizeof(condStr), "kgID='%s'", geneId);
spID = sqlGetField(database, "kgXref", "spID", condStr);
+ }
+
if (spID != NULL)
{
/* convert splice variant UniProt ID to its main root ID */
chp = strstr(spID, "-");
if (chp != NULL) *chp = '\0';
hPrintf(
"
Protein %s (Reactome details) participates in the following event(s):
"
, spID, spID);
conn2= hAllocConn(database);
safef(query2,sizeof(query2),
"select eventID, eventDesc from proteome.spReactomeEvent where spID='%s'", spID);
sr2 = sqlMustGetResult(conn2, query2);
row2 = sqlNextRow(sr2);
@@ -235,46 +271,70 @@
char query[256];
safef(query, sizeof(query),
"select count(*) from rgdGenePathway where geneId ='%s'", geneId);
return sqlQuickNum(conn, query);
}
static int reactomeCount(struct pathwayLink *pl, struct sqlConnection *conn,
char *geneId)
/* Count up number of hits. */
{
int ret = 0;
char query[256];
char *spID, *chp;
char condStr[256];
char *origSpID;
-
/* check the existence of kgXref table first */
+if (!isRgdGene(conn))
+ {
if (!sqlTableExists(conn, "kgXref")) return(0);
+ }
+else
+ {
+ if (!sqlTableExists(conn, "rgdGene2Xref")) return(0);
+ }
+if (isRgdGene(conn))
+ {
+ safef(condStr, sizeof(condStr), "name='%s'", geneId);
+ spID = sqlGetField(database, "rgdGene2ToUniProt", "value", condStr);
+ }
+else
+ {
safef(condStr, sizeof(condStr), "kgID='%s'", geneId);
spID = sqlGetField(database, "kgXref", "spID", condStr);
+ }
+
if (spID != NULL)
{
origSpID = cloneString(spID);
/* convert splice variant UniProt ID to its main root ID */
chp = strstr(spID, "-");
if (chp != NULL) *chp = '\0';
+ if (!isRgdGene(conn))
+ {
safef(query, sizeof(query),
"select count(*) from %s.spReactomeEvent, %s.spVariant, %s.kgXref where kgID='%s' and kgXref.spID=variant and variant = '%s' and spReactomeEvent.spID=parent",
PROTEOME_DB_NAME, PROTEOME_DB_NAME, database, geneId, origSpID);
+ }
+ else
+ {
+ safef(query, sizeof(query),
+ "select count(*) from %s.spReactomeEvent, %s.spVariant, %s.rgdGene2ToUniProt where name='%s' and value=variant and variant = '%s' and spReactomeEvent.spID=parent",
+ PROTEOME_DB_NAME, PROTEOME_DB_NAME, database, geneId, origSpID);
+ }
ret = sqlQuickNum(conn, query);
}
return ret;
}
struct pathwayLink pathwayLinks[] =
{
{ "kegg", "KEGG", "KEGG - Kyoto Encyclopedia of Genes and Genomes",
"keggPathway keggMapDesc",
keggCount, keggLink},
{ "bioCyc", "BioCyc", "BioCyc Knowledge Library",
"bioCycPathway bioCycMapDesc",
bioCycCount, bioCycLink},
{ "bioCarta", "BioCarta", "BioCarta from NCI Cancer Genome Anatomy Project",