/* pseudoGene descriptions. */ #include "common.h" #include "hash.h" #include "linefile.h" #include "dystring.h" #include "spDb.h" #include "hdb.h" #include "web.h" #include "genePred.h" #include "bed.h" #include "hgGene.h" static boolean pseudoGeneExists(struct section *section, struct sqlConnection *conn, char *geneId) /* Return TRUE if mrna on this one. */ { boolean result; result = FALSE; if (hTableExists(sqlGetDatabase(conn), "ucscRetroInfo")) { struct sqlResult *sr; char **row; char query[255]; safef(query, sizeof(query), "select name from ucscRetroInfo where name='%s' or kgName='%s' or refseq='%s'", geneId, geneId, geneId); sr = sqlGetResult(conn, query); if ((row = sqlNextRow(sr)) != NULL) { result = TRUE; } sqlFreeResult(&sr); } return(result); } static void pseudoGenePrint(struct section *section, struct sqlConnection *conn, char *geneId) /* Print out mrna descriptions annotations. */ { struct sqlResult *sr; char **row; char condStr[255]; char *descID, *desc; char *emptyStr; char query[255]; char *name, *chrom, *chromStart, *chromEnd, *refseq, *rtype; int score; webPrintLinkTableStart(); webPrintLabelCell("Retro Id"); webPrintLabelCell("Type"); webPrintLabelCell("Score "); webPrintLabelCell("Genome Location"); webPrintLabelCell("Description"); hPrintf("\n"); emptyStr = cloneString(""); safef(query, sizeof(query), "select distinct name, chrom, chromStart, chromEnd, refseq, type, score from ucscRetroInfo where name='%s' or kgName='%s' or refseq='%s'", geneId, geneId, geneId); sr = sqlGetResult(conn, query); while ((row = sqlNextRow(sr)) != NULL) { name = row[0]; chrom = row[1]; chromStart = row[2]; chromEnd = row[3]; refseq = row[4]; rtype = row[5]; score = sqlUnsigned(row[6]); desc = emptyStr; safef(condStr, sizeof(condStr), "acc='%s'", refseq); descID= sqlGetField(database, "gbCdnaInfo", "description", condStr); if (descID != NULL) { safef(condStr, sizeof(condStr), "id=%s", descID); desc = sqlGetField(database, "description", "name", condStr); if (desc == NULL) desc = emptyStr; } webPrintLinkCellStart(); hPrintf("%s", name, name); webPrintLinkCellEnd(); webPrintLinkCellStart(); hPrintf("%s ", rtype); webPrintLinkCellEnd(); webPrintLinkCellStart(); hPrintf("%d ", score); webPrintLinkCellEnd(); webPrintLinkCellStart(); hPrintf("%s:%s-%s", chrom, chromStart, chromEnd, name, chrom, chromStart, chromEnd); webPrintLinkCellEnd(); webPrintLinkCellStart(); hPrintf("%s\n", desc); webPrintLinkCellEnd(); hPrintf("\n"); } sqlFreeResult(&sr); } struct section *pseudoGeneSection(struct sqlConnection *conn, struct hash *sectionRa) /* Create pseudoGene section. */ { struct section *section = sectionNew(sectionRa, "pseudoGene"); section->exists = pseudoGeneExists; section->print = pseudoGenePrint; return section; }