18f572b767889300089237bcada2073f46cd06f5 markd Wed Feb 8 11:59:16 2017 -0800 added more label options and made more readable diff --git src/hg/lib/bigTransMap.c src/hg/lib/bigTransMap.c index e248779..12de08c 100644 --- src/hg/lib/bigTransMap.c +++ src/hg/lib/bigTransMap.c @@ -1,28 +1,28 @@ /* bigTransMap.c was originally generated by the autoSql program, which also * generated bigTransMap.h and bigTransMap.sql. This module links the database and * the RAM representation of objects. */ #include "common.h" #include "linefile.h" #include "dystring.h" #include "jksql.h" #include "bigTransMap.h" -char *bigTransMapCommaSepFieldNames = "chrom,chromStart,chromEnd,name,score,strand,thickStart,thickEnd,reserved,blockCount,blockSizes,chromStarts,oChromStart,oChromEnd,oStrand,oChromSize,oChromStarts,oSequence,oCDS,chromSize,match,misMatch,repMatch,nCount,seqType,srcDb,srcChrom,srcChromStart,srcChromEnd,srcScore,srcAligned,geneName,geneId,geneType,transcriptType,chainType,commonName,scientificName,orgAbbrev"; +char *bigTransMapCommaSepFieldNames = "chrom,chromStart,chromEnd,name,score,strand,thickStart,thickEnd,reserved,blockCount,blockSizes,chromStarts,oChromStart,oChromEnd,oStrand,oChromSize,oChromStarts,oSequence,oCDS,chromSize,match,misMatch,repMatch,nCount,seqType,srcDb,srcTransId,srcChrom,srcChromStart,srcChromEnd,srcScore,srcAligned,geneName,geneId,geneType,transcriptType,chainType,commonName,scientificName,orgAbbrev"; struct bigTransMap *bigTransMapLoad(char **row) /* Load a bigTransMap from row fetched with select * from bigTransMap * from database. Dispose of this with bigTransMapFree(). */ { struct bigTransMap *ret; AllocVar(ret); ret->blockCount = sqlSigned(row[9]); ret->chrom = cloneString(row[0]); ret->chromStart = sqlUnsigned(row[1]); ret->chromEnd = sqlUnsigned(row[2]); ret->name = cloneString(row[3]); ret->score = sqlUnsigned(row[4]); safecpy(ret->strand, sizeof(ret->strand), row[5]); @@ -45,71 +45,72 @@ ret->oChromSize = sqlUnsigned(row[15]); { int sizeOne; sqlSignedDynamicArray(row[16], &ret->oChromStarts, &sizeOne); assert(sizeOne == ret->blockCount); } ret->oSequence = cloneString(row[17]); ret->oCDS = cloneString(row[18]); ret->chromSize = sqlUnsigned(row[19]); ret->match = sqlUnsigned(row[20]); ret->misMatch = sqlUnsigned(row[21]); ret->repMatch = sqlUnsigned(row[22]); ret->nCount = sqlUnsigned(row[23]); ret->seqType = sqlUnsigned(row[24]); ret->srcDb = cloneString(row[25]); -ret->srcChrom = cloneString(row[26]); -ret->srcChromStart = sqlUnsigned(row[27]); -ret->srcChromEnd = sqlUnsigned(row[28]); -ret->srcScore = sqlUnsigned(row[29]); -ret->srcAligned = sqlUnsigned(row[30]); -ret->geneName = cloneString(row[31]); -ret->geneId = cloneString(row[32]); -ret->geneType = cloneString(row[33]); -ret->transcriptType = cloneString(row[34]); -ret->chainType = cloneString(row[35]); -ret->commonName = cloneString(row[36]); -ret->scientificName = cloneString(row[37]); -ret->orgAbbrev = cloneString(row[38]); +ret->srcTransId = cloneString(row[26]); +ret->srcChrom = cloneString(row[27]); +ret->srcChromStart = sqlUnsigned(row[28]); +ret->srcChromEnd = sqlUnsigned(row[29]); +ret->srcScore = sqlUnsigned(row[30]); +ret->srcAligned = sqlUnsigned(row[31]); +ret->geneName = cloneString(row[32]); +ret->geneId = cloneString(row[33]); +ret->geneType = cloneString(row[34]); +ret->transcriptType = cloneString(row[35]); +ret->chainType = cloneString(row[36]); +ret->commonName = cloneString(row[37]); +ret->scientificName = cloneString(row[38]); +ret->orgAbbrev = cloneString(row[39]); return ret; } struct bigTransMap *bigTransMapLoadAll(char *fileName) /* Load all bigTransMap from a whitespace-separated file. * Dispose of this with bigTransMapFreeList(). */ { struct bigTransMap *list = NULL, *el; struct lineFile *lf = lineFileOpen(fileName, TRUE); -char *row[39]; +char *row[40]; while (lineFileRow(lf, row)) { el = bigTransMapLoad(row); slAddHead(&list, el); } lineFileClose(&lf); slReverse(&list); return list; } struct bigTransMap *bigTransMapLoadAllByChar(char *fileName, char chopper) /* Load all bigTransMap from a chopper separated file. * Dispose of this with bigTransMapFreeList(). */ { struct bigTransMap *list = NULL, *el; struct lineFile *lf = lineFileOpen(fileName, TRUE); -char *row[39]; +char *row[40]; while (lineFileNextCharRow(lf, chopper, row, ArraySize(row))) { el = bigTransMapLoad(row); slAddHead(&list, el); } lineFileClose(&lf); slReverse(&list); return list; } struct bigTransMap *bigTransMapCommaIn(char **pS, struct bigTransMap *ret) /* Create a bigTransMap out of a comma separated string. * This will fill in ret if non-null, otherwise will * return a new bigTransMap */ @@ -162,30 +163,31 @@ { ret->oChromStarts[i] = sqlSignedComma(&s); } s = sqlEatChar(s, '}'); s = sqlEatChar(s, ','); } ret->oSequence = sqlStringComma(&s); ret->oCDS = sqlStringComma(&s); ret->chromSize = sqlUnsignedComma(&s); ret->match = sqlUnsignedComma(&s); ret->misMatch = sqlUnsignedComma(&s); ret->repMatch = sqlUnsignedComma(&s); ret->nCount = sqlUnsignedComma(&s); ret->seqType = sqlUnsignedComma(&s); ret->srcDb = sqlStringComma(&s); +ret->srcTransId = sqlStringComma(&s); ret->srcChrom = sqlStringComma(&s); ret->srcChromStart = sqlUnsignedComma(&s); ret->srcChromEnd = sqlUnsignedComma(&s); ret->srcScore = sqlUnsignedComma(&s); ret->srcAligned = sqlUnsignedComma(&s); ret->geneName = sqlStringComma(&s); ret->geneId = sqlStringComma(&s); ret->geneType = sqlStringComma(&s); ret->transcriptType = sqlStringComma(&s); ret->chainType = sqlStringComma(&s); ret->commonName = sqlStringComma(&s); ret->scientificName = sqlStringComma(&s); ret->orgAbbrev = sqlStringComma(&s); *pS = s; return ret; @@ -194,30 +196,31 @@ void bigTransMapFree(struct bigTransMap **pEl) /* Free a single dynamically allocated bigTransMap such as created * with bigTransMapLoad(). */ { struct bigTransMap *el; if ((el = *pEl) == NULL) return; freeMem(el->chrom); freeMem(el->name); freeMem(el->blockSizes); freeMem(el->chromStarts); freeMem(el->oChromStarts); freeMem(el->oSequence); freeMem(el->oCDS); freeMem(el->srcDb); +freeMem(el->srcTransId); freeMem(el->srcChrom); freeMem(el->geneName); freeMem(el->geneId); freeMem(el->geneType); freeMem(el->transcriptType); freeMem(el->chainType); freeMem(el->commonName); freeMem(el->scientificName); freeMem(el->orgAbbrev); freez(pEl); } void bigTransMapFreeList(struct bigTransMap **pList) /* Free a list of dynamically allocated bigTransMap's */ { @@ -316,30 +319,34 @@ fprintf(f, "%u", el->match); fputc(sep,f); fprintf(f, "%u", el->misMatch); fputc(sep,f); fprintf(f, "%u", el->repMatch); fputc(sep,f); fprintf(f, "%u", el->nCount); fputc(sep,f); fprintf(f, "%u", el->seqType); fputc(sep,f); if (sep == ',') fputc('"',f); fprintf(f, "%s", el->srcDb); if (sep == ',') fputc('"',f); fputc(sep,f); if (sep == ',') fputc('"',f); +fprintf(f, "%s", el->srcTransId); +if (sep == ',') fputc('"',f); +fputc(sep,f); +if (sep == ',') fputc('"',f); fprintf(f, "%s", el->srcChrom); if (sep == ',') fputc('"',f); fputc(sep,f); fprintf(f, "%u", el->srcChromStart); fputc(sep,f); fprintf(f, "%u", el->srcChromEnd); fputc(sep,f); fprintf(f, "%u", el->srcScore); fputc(sep,f); fprintf(f, "%u", el->srcAligned); fputc(sep,f); if (sep == ',') fputc('"',f); fprintf(f, "%s", el->geneName); if (sep == ',') fputc('"',f); fputc(sep,f);