533112afe2a2005e80cdb1f82904ea65032d4302 braney Sat Oct 2 11:37:34 2021 -0700 split hg/lib into two separate libaries, one only used by the cgis diff --git src/hg/cgilib/trackTable.c src/hg/cgilib/trackTable.c new file mode 100644 index 0000000..f0174c8 --- /dev/null +++ src/hg/cgilib/trackTable.c @@ -0,0 +1,409 @@ +/* trackTable.c was originally generated by the autoSql program, which also + * generated trackTable.h and trackTable.sql. This module links the database and + * the RAM representation of objects. */ + +/* Copyright (C) 2014 The Regents of the University of California + * See README in this or parent directory for licensing information. */ + +#include "common.h" +#include "linefile.h" +#include "jksql.h" +#include "trackTable.h" +#include "hdb.h" + + +void trackTableStaticLoad(char **row, struct trackTable *ret) +/* Load a row from trackTable table into ret. The contents of ret will + * be replaced at the next call to this function. */ +{ + +ret->mapName = row[0]; +ret->tableName = row[1]; +ret->shortLabel = row[2]; +ret->longLabel = row[3]; +ret->visibility = sqlUnsigned(row[4]); +ret->colorR = sqlUnsigned(row[5]); +ret->colorG = sqlUnsigned(row[6]); +ret->colorB = sqlUnsigned(row[7]); +ret->altColorR = sqlUnsigned(row[8]); +ret->altColorG = sqlUnsigned(row[9]); +ret->altColorB = sqlUnsigned(row[10]); +ret->useScore = sqlUnsigned(row[11]); +ret->isSplit = sqlUnsigned(row[12]); +ret->private = sqlUnsigned(row[13]); +} + +struct trackTable *trackTableLoad(char **row) +/* Load a trackTable from row fetched with select * from trackTable + * from database. Dispose of this with trackTableFree(). */ +{ +struct trackTable *ret; + +AllocVar(ret); +ret->mapName = cloneString(row[0]); +ret->tableName = cloneString(row[1]); +ret->shortLabel = cloneString(row[2]); +ret->longLabel = cloneString(row[3]); +ret->visibility = sqlUnsigned(row[4]); +ret->colorR = sqlUnsigned(row[5]); +ret->colorG = sqlUnsigned(row[6]); +ret->colorB = sqlUnsigned(row[7]); +ret->altColorR = sqlUnsigned(row[8]); +ret->altColorG = sqlUnsigned(row[9]); +ret->altColorB = sqlUnsigned(row[10]); +ret->useScore = sqlUnsigned(row[11]); +ret->isSplit = sqlUnsigned(row[12]); +ret->private = sqlUnsigned(row[13]); +return ret; +} + +struct trackTable *trackTableLoadAll(char *fileName) +/* Load all trackTable from a tab-separated file. + * Dispose of this with trackTableFreeList(). */ +{ +struct trackTable *list = NULL, *el; +struct lineFile *lf = lineFileOpen(fileName, TRUE); +char *row[15]; + +while (lineFileRow(lf, row)) + { + el = trackTableLoad(row); + slAddHead(&list, el); + } +lineFileClose(&lf); +slReverse(&list); +return list; +} + +struct trackTable *trackTableCommaIn(char **pS, struct trackTable *ret) +/* Create a trackTable out of a comma separated string. + * This will fill in ret if non-null, otherwise will + * return a new trackTable */ +{ +char *s = *pS; + +if (ret == NULL) + AllocVar(ret); +ret->mapName = sqlStringComma(&s); +ret->tableName = sqlStringComma(&s); +ret->shortLabel = sqlStringComma(&s); +ret->longLabel = sqlStringComma(&s); +ret->visibility = sqlUnsignedComma(&s); +ret->colorR = sqlUnsignedComma(&s); +ret->colorG = sqlUnsignedComma(&s); +ret->colorB = sqlUnsignedComma(&s); +ret->altColorR = sqlUnsignedComma(&s); +ret->altColorG = sqlUnsignedComma(&s); +ret->altColorB = sqlUnsignedComma(&s); +ret->useScore = sqlUnsignedComma(&s); +ret->isSplit = sqlUnsignedComma(&s); +ret->private = sqlUnsignedComma(&s); +*pS = s; +return ret; +} + +void trackTableFree(struct trackTable **pEl) +/* Free a single dynamically allocated trackTable such as created + * with trackTableLoad(). */ +{ +struct trackTable *el; + +if ((el = *pEl) == NULL) return; +freeMem(el->mapName); +freeMem(el->tableName); +freeMem(el->shortLabel); +freeMem(el->longLabel); +freez(pEl); +} + +void trackTableFreeList(struct trackTable **pList) +/* Free a list of dynamically allocated trackTable's */ +{ +struct trackTable *el, *next; + +for (el = *pList; el != NULL; el = next) + { + next = el->next; + trackTableFree(&el); + } +*pList = NULL; +} + +void trackTableOutput(struct trackTable *el, FILE *f, char sep, char lastSep) +/* Print out trackTable. Separate fields with sep. Follow last field with lastSep. */ +{ +if (sep == ',') fputc('"',f); +fprintf(f, "%s", el->mapName); +if (sep == ',') fputc('"',f); +fputc(sep,f); +if (sep == ',') fputc('"',f); +fprintf(f, "%s", el->tableName); +if (sep == ',') fputc('"',f); +fputc(sep,f); +if (sep == ',') fputc('"',f); +fprintf(f, "%s", el->shortLabel); +if (sep == ',') fputc('"',f); +fputc(sep,f); +if (sep == ',') fputc('"',f); +fprintf(f, "%s", el->longLabel); +if (sep == ',') fputc('"',f); +fputc(sep,f); +fprintf(f, "%u", el->visibility); +fputc(sep,f); +fprintf(f, "%u", el->colorR); +fputc(sep,f); +fprintf(f, "%u", el->colorG); +fputc(sep,f); +fprintf(f, "%u", el->colorB); +fputc(sep,f); +fprintf(f, "%u", el->altColorR); +fputc(sep,f); +fprintf(f, "%u", el->altColorG); +fputc(sep,f); +fprintf(f, "%u", el->altColorB); +fputc(sep,f); +fprintf(f, "%u", el->useScore); +fputc(sep,f); +fprintf(f, "%u", el->isSplit); +fputc(sep,f); +fprintf(f, "%u", el->private); +fputc(sep,f); +} + +/* ---------------- End of AutoSQL generated code. ------------------ */ + +static struct trackTable builtIns[] = +{ + { + NULL, + "hgEst", /* mapName */ + "est", /* tableName */ + "Human ESTs", /* shortLabel */ + "Human ESTs", /* longLabel */ + 0, /* visibility */ + 0,0,0, /* color */ + 0,0,0, /* altColor */ + 0, /* useScore */ + 0, /* isSplit */ + 0, /* private */ + }, + { + NULL, + "hgMrna", /* mapName */ + "mrna", /* tableName */ + "Full MGC mRNAs", /* shortLabel */ + "Full Length MGC mRNAs", /* longLabel */ + 2, /* visibility */ + 0,0,0, /* color */ + 0,0,0, /* altColor */ + 0, /* useScore */ + 0, /* isSplit */ + 0, /* private */ + }, + { + NULL, + "BACends", /* mapName */ + "bacEnds", /* tableName */ + "BAC ends", /* shortLabel */ + "BAC end pairs", /* longLabel */ + 0, /* visibility */ + 0,0,0, /* color */ + 0,0,0, /* altColor */ + 0, /* useScore */ + 0, /* isSplit */ + 0, /* private */ + }, + { + NULL, + "hgEst", /* mapName */ + "est", /* tableName */ + "Human ESTs", /* shortLabel */ + "Human ESTs", /* longLabel */ + 0, /* visibility */ + 0,0,0, /* color */ + 0,0,0, /* altColor */ + 0, /* useScore */ + 1, /* isSplit */ + 0, /* private */ + }, + { + NULL, + "hgIntronEst", /* mapName */ + "intronEst", /* tableName */ + "Spliced ESTs", /* shortLabel */ + "Human ESTs That Have Been Spliced", /* longLabel */ + 1, /* visibility */ + 0,0,0, /* color */ + 0,0,0, /* altColor */ + 0, /* useScore */ + 1, /* isSplit */ + 0, /* private */ + }, + { + NULL, + "hgMrna", /* mapName */ + "mrna", /* tableName */ + "Sequenced mRNAs", /* shortLabel */ + "Sequenced mRNAs from Genbank", /* longLabel */ + 2, /* visibility */ + 0,0,0, /* color */ + 0,0,0, /* altColor */ + 0, /* useScore */ + 1, /* isSplit */ + 0, /* private */ + }, + { + NULL, + "hgRepeat", /* mapName */ + "rmsk", /* tableName */ + "RepeatMasker", /* shortLabel */ + "Repeating Elements by RepeatMasker", /* longLabel */ + 1, /* visibility */ + 0,0,0, /* color */ + 0,0,0, /* altColor */ + 1, /* useScore */ + 1, /* isSplit */ + 0, /* private */ + }, + { + NULL, + "hgBlatMouse", /* mapName */ + "blatMouse", /* tableName */ + "Mouse Blat", /* shortLabel */ + "Mouse Translated Blat Alignments", /* longLabel */ + 0, /* visibility */ + 100,50,0, /* color */ + 0,0,0, /* altColor */ + 0, /* useScore */ + 1, /* isSplit */ + 0, /* private */ + }, + { + NULL, + "hgContig", /* mapName */ + "ctgPos", /* tableName */ + "Chromosome Band", /* shortLabel */ + "Chromosome Bands Localized by FISH Mapping Clones", /* longLabel */ + 1, /* visibility */ + 150,0,0, /* color */ + 0,0,0, /* altColor */ + 0, /* useScore */ + 0, /* isSplit */ + 0, /* private */ + }, + { + NULL, + "hgCytoBands", /* mapName */ + "cytoBand", /* tableName */ + "Chromosome Band", /* shortLabel */ + "Chromosome Bands Localized by FISH Mapping Clones", /* longLabel */ + 1, /* visibility */ + 0,0,0, /* color */ + 150,50,50, /* altColor */ + 0, /* useScore */ + 0, /* isSplit */ + 0, /* private */ + }, + { + NULL, + "hgExoFish", /* mapName */ + "exoFish", /* tableName */ + "Exofish ecores", /* shortLabel */ + "Exofish Tetraodon/Human Conserved Regions (ecores)", /* longLabel */ + 1, /* visibility */ + 153,21,153, /* color */ + 0,0,255, /* altColor */ + 0, /* useScore */ + 0, /* isSplit */ + 0, /* private */ + }, + { + NULL, + "hgGcPercent", /* mapName */ + "gcPercent", /* tableName */ + "GC Percent", /* shortLabel */ + "Percentage GC in 20,000 Base Windows", /* longLabel */ + 0, /* visibility */ + 0,0,0, /* color */ + 0,0,0, /* altColor */ + 0, /* useScore */ + 0, /* isSplit */ + 0, /* private */ + }, + { + NULL, + "hgMusTest1", /* mapName */ + "musTest1", /* tableName */ + "Mouse Test 40", /* shortLabel */ + "Mouse Translated Blat Alignments Score > 40", /* longLabel */ + 0, /* visibility */ + 0,0,0, /* color */ + 0,0,0, /* altColor */ + 0, /* useScore */ + 0, /* isSplit */ + 1, /* private */ + }, + { + NULL, + "hgRefGene", /* mapName */ + "refGene", /* tableName */ + "RefSeq Genes", /* shortLabel */ + "GenBank RefSeq Genes", /* longLabel */ + 2, /* visibility */ + 20,20,170, /* color */ + 137,137,212, /* altColor */ + 0, /* useScore */ + 0, /* isSplit */ + 0, /* private */ + }, + { + NULL, + "hgRnaGene", /* mapName */ + "rnaGene", /* tableName */ + "RNA Genes", /* shortLabel */ + "Non-coding RNA Genes (dark) and Pseudogenes (light)", /* longLabel */ + 2, /* visibility */ + 170,80,130, /* color */ + 230,180,130, /* altColor */ + 0, /* useScore */ + 0, /* isSplit */ + 0, /* private */ + }, + { + NULL, + "hgStsMarker", /* mapName */ + "stsMarker", /* tableName */ + "STS Markers", /* shortLabel */ + "STS Markers on Genetic (blue), FISH (green) and Radiation Hybrid (black) Maps", /* longLabel */ + 1, /* visibility */ + 0,0,0, /* color */ + 128,128,255, /* altColor */ + 1, /* useScore */ + 0, /* isSplit */ + 0, /* private */ + }, +}; + +struct trackTable *hGetTracks(char *db) +/* Get track table for specified database. */ +{ +struct trackTable *ttList = NULL, *tt; +int i; +char table[256]; + +for (i=0; i<ArraySize(builtIns); ++i) + { + tt = builtIns+i; + if (tt->isSplit) + safef(table, sizeof(table), "chr22_%s", tt->tableName); + else + safef(table, sizeof(table), "%s", tt->tableName); + if (hTableExists(db, table)) + { + slAddHead(&ttList, tt); + } + } +slReverse(&ttList); +return ttList; +} +