78f5fa0481441bdffe2792e1ec3ff0ac4deb0e4f
pchan
  Mon Aug 22 11:38:28 2011 -0700
change arCOG code to link to arCOGs browser instead of local table
diff --git src/hg/hgc/lowelab.c src/hg/hgc/lowelab.c
index ff3baf9..9d0eef7 100644
--- src/hg/hgc/lowelab.c
+++ src/hg/hgc/lowelab.c
@@ -465,30 +465,34 @@
 struct sqlConnection *conn = hAllocConn(database);
 struct sqlConnection *conn2;
 struct sqlConnection *spConn = NULL;
 struct COG *COG=NULL;
 struct COGXra *COGXra=NULL;
 char *temparray[160];
 char *giwords[5];
 char *spAcc = NULL;
 struct slName *el, *list;
 char *table = tdb->table;
 char *pdb = hPdbFromGdb(database);
 struct genePred *gpList = NULL, *gp = NULL;
 char tableName[64];
 boolean hasBin;
 int itemCount = 0;
+int arcogCount = 0;
+char genome[50] = "";
+char clade[50] = "";
+boolean hasArCOG;
 
 char treeFileName[256];
 char treeTmpPsFileName[256];
 char treePsFileName[256];
 char treePngFileName[256];
 char treePdfFileName[256];
 char command[512];
 char buffer[512];
 char searchTerm[256];
 
 struct blastTab *blastpHitsList;
 
 char pepTableName[64];
 char extraTableName[64];
 
@@ -603,47 +607,48 @@
     {
     COG = COGLoad(row);
     if(COG!=NULL)
     {
         length=chopString(COG->COG, "," , temparray, 999);
         for(x=0; x<length; x++)
         {
 	        conn2 = hAllocConn(database);
 	        sprintf(query2, "select * from COGXra where name = '%s'", temparray[x]);
                 sr2 = sqlGetResult(conn2, query2);
 	        while ((row2 = sqlNextRow(sr2)) != NULL)
             {
 	            COGXra=COGXraLoad(row2);
 	            if(COGXra!=NULL)
 	              printf("<B>COG:</B> "
-                 "<A HREF=\"http://www.ncbi.nlm.nih.gov/COG/grace/wiew.cgi?%s\" "
+                 "<A HREF=\"http://www.ncbi.nlm.nih.gov/COG/grace/wiew.cgi?%s\"  target=\"_blank\" "
                  ">%s</A>&nbsp; "
-                 "<A HREF=\"http://www.ncbi.nlm.nih.gov/COG/grace/wiew.cgi?fun=%s\" "
+                 "<A HREF=\"http://www.ncbi.nlm.nih.gov/COG/grace/wiew.cgi?fun=%s\"  target=\"_blank\" "
                  ">Code %s</A>&nbsp;\n",
                  COGXra->name, COGXra->name, COG->code,COG->code);
 	            printf(" %s<BR>\n", COGXra->info);
 				itemCount++;
             }
             sqlFreeResult(&sr2);
             hFreeConn(&conn2);
             }
         }
     }
     sqlFreeResult(&sr);
     //hFreeConn(&conn2);
 }
 
+/*
 if (hTableExists(database, "arCOGs"))
 {
     struct arCOGs *infoload = NULL;
     struct arcogdesc *description = NULL;
     int rowOffset = hOffsetPastBin(database, seqName, "arCOGs");
     //infoload = arCOGsLoad(row);
 
     row = NULL;
     sprintf(query, "select * from arCOGs where gene = '%s'", item);
     sr = sqlGetResult(conn, query);
     conn2 = hAllocConn(database);
     while ((row = sqlNextRow(sr)) != NULL)
     {
         infoload = arCOGsLoad(row+rowOffset);
         if(infoload!=NULL)
@@ -653,30 +658,66 @@
             while ((row2 = sqlNextRow(sr2)) != NULL)
             {
                 description=arcogdescLoad(row2);
                 if(description!=NULL)
                 {
                     printf("<B>arCOG:</B> %s Code %s",infoload->name, description->code);
                     printf("  %s<BR/>\n", description->description);
 					itemCount++;
                 }
             }
             sqlFreeResult(&sr2);
             hFreeConn(&conn2);
          }
      }
 }
+*/
+
+arcogCount = 0;
+hasArCOG = false;
+row = NULL;
+sprintf(query, "show databases like 'arCogsDb'");
+sr = sqlGetResult(conn, query);
+if ((row = sqlNextRow(sr)) != NULL)
+{
+	hasArCOG = true;
+}
+sqlFreeResult(&sr);
+
+if (hasArCOG)
+{
+	/* Get species info */
+	memset(genome, 0, 50);
+	memset(clade, 0, 50);
+	getGenomeClade(conn, database, genome, clade);
+
+	sprintf(query, "select distinct a.arcog_id, a.anntation, c.class_id from arCogsDb.arcogDef a, arCogsDb.arcog b, arCogsDb.arcogFun c where a.arcog_id = b.arcog_id and a.arcog_id = c.arcog_id and db_name = '%s' and name = '%s'",
+			database, item);
+	sr = sqlGetResult(conn, query);
+	while ((row = sqlNextRow(sr)) != NULL)
+	{
+		printf("<B>arCOG:</B> <A HREF=\"/arCOGsBrowser/#Tax_Tree;ArcogsId=%s\" target=\"_blank\">%s</A> <A HREF=\"/arCOGsBrowser/#MainAdvance;Genome=%s,FunId=%s,Limit=50,Index=0,Load=true\" target=\"_blank\">Code %s</A> ",
+			   row[0], row[0], genome, row[2], row[2]);
+		printf("  %s<BR/>\n", row[1]);
+		arcogCount++;
+		itemCount++;		
+	}
+	sqlFreeResult(&sr);
+	if (arcogCount  > 0)
+		printf("<A HREF=\"/arCOGsBrowser/#MainGene;Genome=%s,Gene=%s\" target=\"_blank\">arCOG Gene Annotation</A><BR/>", genome, item);
+}
+
 if (itemCount == 0) printf("Not available\n");
 printf("</td></tr></tbody></table><br>\n");
 
 /* GO */
 printf("<table style=\"text-align: left; width: 99%%;\" border=\"1\" cellpadding=\"5\" cellspacing=\"0\">\n");
 printf("<tbody><tr><td style=\"background-color:#eee9e9;\">\n");
 printf("<a name=\"GO\"></a><b>Gene Ontology</b><br></td></tr>\n");
 printf("<tr><td>\n");
 
 /* print go terms */
 goPrint( conn, item, spAcc);
 printf("</td></tr></tbody></table><br>\n");
 
 /* Protein domain and structure information */
 printf("<table style=\"text-align: left; width: 99%%;\" border=\"1\" cellpadding=\"5\" cellspacing=\"0\">\n");