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); }