52fb15ea6cf361e9343022643c8a6184af71057e
pchan
  Fri Apr 5 23:58:37 2013 -0700
change Pfam track detail page for HMMER scan
diff --git src/hg/hgc/lowelab.c src/hg/hgc/lowelab.c
index c13105e..bf56d7e 100644
--- src/hg/hgc/lowelab.c
+++ src/hg/hgc/lowelab.c
@@ -496,31 +496,31 @@
 
 char pepTableName[64];
 char extraTableName[64];
 
 if (startsWith("annotRev", table))
 {
     sprintf(pepTableName, "%s%s", table, pepTable);
     sprintf(extraTableName, "%s%s", table, extraTable);
 }
 else
 {
     strcpy(pepTableName, pepTable);
     strcpy(extraTableName, extraTable);
 }
 
-spConn = sqlConnect( pdb);
+spConn = sqlConnect(UNIPROT_DB_NAME);
 genericHeader(tdb, item);
 wordCount = chopLine(dupe, words);
 if (wordCount > 1)
     num = atoi(words[1]);
 if (num < 3) num = 3;
 if (extraTableName != NULL && hTableExists(database, extraTableName))
 {
     sprintf(query, "select * from %s where name = '%s'", extraTableName, item);
     sr = sqlGetResult(conn, query);
     while ((row = sqlNextRow(sr)) != NULL)
     {
 		minGeneInfoStaticLoad(row, &ginfo);
 		gi = cloneString(ginfo.gi);
         if (ginfo.gene != NULL && differentString(ginfo.gene,"none"))
             printf("<B>Gene: </B>%s<BR>\n", ginfo.gene);
@@ -721,43 +721,42 @@
 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");
 printf("<tbody><tr><td style=\"background-color:#eee9e9;\">\n");
 printf("<a name=\"domain\"></a><b>Protein Domain and Structure Information</b><br></td></tr>\n");
 printf("<tr><td>\n");
 
 /* interpro domains */
 list = spExtDbAcc1List(spConn, spAcc, "InterPro");
 if (list != NULL)
 {
     char query[256], **row, **row2;
     struct sqlResult *sr, *sr2;
     printf("<B>InterPro Domains: </B> ");
-    printf("<A HREF=\"http://www.ebi.ac.uk/interpro/ISpy?mode=single&ac=%s\" TARGET=_blank>",
+    printf("<A HREF=\"http://www.ebi.ac.uk/interpro/IProteinStructures?ac=%s\" TARGET=_blank>",
         spAcc);
     printf("Graphical view of domain structure</A><BR>");
     safef(query, sizeof(query),
         "select extAcc1,extAcc2 from extDbRef,extDb"
     " where extDbRef.acc = '%s'"
     " and extDb.val = 'Interpro' and extDb.id = extDbRef.extDb"
     , spAcc);
     sr = sqlGetResult(spConn, query);
     while ((row = sqlNextRow(sr)) != NULL)
         {
         char interPro[256];
-        char *pdb = hPdbFromGdb(database);
         safef(interPro, 128, "%s.interProXref", pdb);
             if (hTableExists(database, interPro))
                 {
                 safef(query, sizeof(query),
                         "select description from %s where accession = '%s' and interProId = '%s'",
                         interPro, spAcc, row[0]);
                 sr2 = sqlGetResult(conn, query);
                 if ((row2 = sqlNextRow(sr2)) != NULL)
                     {
                     printf("<A HREF=\"http://www.ebi.ac.uk/interpro/IEntry?ac=%s\" TARGET=_blank>", row[0]);
                     printf("%s</A> - %s <BR>\n", row[0], row2[0]);
                     }
                 sqlFreeResult(&sr2);
             }
             else
@@ -1999,32 +1998,31 @@
 
 void doPfamHit(struct trackDb *tdb, char *hitName)
 /* Handle the Pfam hits track. */
 {
   struct lowelabPfamHits *pfamHit;
   char query[512];
   struct sqlConnection *conn = hAllocConn(database);
   struct sqlConnection *spConn = NULL;
   struct sqlResult *sr;
   char *dupe, *words[16];
   char **row;
   int wordCount;
   int rowOffset;
   char *description;
   int start = cartInt(cart, "o");
-  char *pdb = hPdbFromGdb(database);
-  spConn = sqlConnect(pdb);
+  spConn = sqlConnect(UNIPROT_DB_NAME);
 
   genericHeader(tdb,hitName);
   dupe = cloneString(tdb->type);
   wordCount = chopLine(dupe, words);
 
   rowOffset = hOffsetPastBin(database, seqName, tdb->table);
 
   sprintf(query, "select * from %s where name = '%s' and chrom = '%s' and chromStart = %d", tdb->table, hitName,seqName,start);
   sr = sqlGetResult(conn, query);
   while ((row = sqlNextRow(sr)) != NULL)
     {
       pfamHit = lowelabPfamHitsLoad(row+rowOffset);
 
       safef(query, sizeof(query), "select description from proteome.pfamDesc where pfamAC='%s'", pfamHit->pfamAC);
 
@@ -2035,35 +2033,42 @@
         "where extDbRef.acc = '%s' "
         "and extDbRef.extDb = extDb.id "
         "and extDb.val = '%s'"
         , pfamHit->pfamAC,pfamHit->pfamID);
         }
 
     description = sqlQuickString(spConn, query);
     if (description == NULL)
         description = cloneString("n/a");
 
     printf("<A HREF=\"http://pfam.sanger.ac.uk/family?acc=%s\" TARGET=_blank>",
            pfamHit->pfamAC );
     printf("%s</A> - %s<BR><BR>\n", pfamHit->pfamAC, description);
     freez(&description);
 
+    if (pfamHit->ident > 0)
     printf("<B>Domain assignment based on %d%% identity BlastP hit to Pfam-A SwissProt Sequence:</B><BR>\n"
            "<A HREF=\"http://www.expasy.org/uniprot/%s\">%s</A> (%s, %d%% full-length alignment) "
-         "<BR><A HREF=\"http://www.sanger.ac.uk/cgi-bin/Pfam/swisspfamget.pl?name=%s\">[Pfam Domain Structure]</A><BR>\n",
+         "<BR><A HREF=\"http://pfam.sanger.ac.uk/protein/%s\">[Pfam Domain Structure]</A><BR>\n",
          pfamHit->ident,pfamHit->swissAC,pfamHit->swissAC,pfamHit->protCoord,pfamHit->percLen,pfamHit->swissAC);
-
+    else
+    {
+	printf("<B>Gene:</B> %s<BR><BR>\n", pfamHit->pfamID); 
+	printf("<B>Domain assignment based on Pfam model search using HMMER 3.0</B><BR>\n"
+	     "E-value: %s<BR>(%s, %d%% full-length)<BR>\n",
+	     pfamHit->swissAC,pfamHit->protCoord,pfamHit->percLen);
+    }
       printf("<BR><B>Position:</B> "
              "<A HREF=\"%s&db=%s&position=%s%%3A%d-%d\">",
              hgTracksPathAndSettings(), database, pfamHit->chrom, pfamHit->chromStart + 1, pfamHit->chromEnd);
       printf("%s:%d-%d</A><BR>\n", pfamHit->chrom, pfamHit->chromStart + 1, pfamHit->chromEnd);
       printf("<B>Strand:</B> %s<BR>\n", pfamHit->strand);
       printf("<B>Genomic size: </B> %d nt<BR>\n", (pfamHit->chromEnd - pfamHit->chromStart));
       if (pfamHit->next != NULL)
         printf("<hr>\n");
     }
   sqlFreeResult(&sr);
   hFreeConn(&conn);
   printTrackHtml(tdb);
   lowelabPfamHitsFree(&pfamHit);
 }