4ba0a7d92cc93673915bb6f24ae81435ea179ce3 hiram Wed Jan 31 17:02:58 2024 -0800 beginning to add a searchable table of genome meta data refs #23589; diff --git src/hg/lib/genomeData.c src/hg/lib/genomeData.c new file mode 100644 index 0000000..0fd338b --- /dev/null +++ src/hg/lib/genomeData.c @@ -0,0 +1,856 @@ +/* genomeData.c was originally generated by the autoSql program, which also + * generated genomeData.h and genomeData.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 "genomeData.h" + + + +char *genomeDataCommaSepFieldNames = "assemblyAccession,bioproject,biosample,wgsMaster,refseqCategory,taxId,speciesTaxid,organismName,infraspecificName,isolate,versionStatus,assemblyLevel,releaseType,genomeRep,seqRelDate,asmName,asmSubmitter,gbrsPairedAsm,pairedAsmComp,ftpPath,excludedFromRefseq,relationToTypeMaterial,assemblyType,phyloGroup,genomeSize,genomeSizeUngapped,gcPercent,repliconCount,scaffoldCount,contigCount,annotationProvider,annotationName,annotationDate,totalGeneCount,proteinCodingGeneCount,nonCodingGeneCount,pubmedId"; + +void genomeDataStaticLoadWithNull(char **row, struct genomeData *ret) +/* Load a row from genomeData table into ret. The contents of ret will + * be replaced at the next call to this function. */ +{ + +ret->assemblyAccession = row[0]; +ret->bioproject = row[1]; +ret->biosample = row[2]; +ret->wgsMaster = row[3]; +ret->refseqCategory = row[4]; +if (row[5] != NULL) + { + ret->taxId = needMem(sizeof(*(ret->taxId))); + *(ret->taxId) = sqlUnsigned(row[5]); + } +else + { + ret->taxId = NULL; + } +if (row[6] != NULL) + { + ret->speciesTaxid = needMem(sizeof(*(ret->speciesTaxid))); + *(ret->speciesTaxid) = sqlUnsigned(row[6]); + } +else + { + ret->speciesTaxid = NULL; + } +ret->organismName = row[7]; +ret->infraspecificName = row[8]; +ret->isolate = row[9]; +ret->versionStatus = row[10]; +ret->assemblyLevel = row[11]; +ret->releaseType = row[12]; +ret->genomeRep = row[13]; +ret->seqRelDate = row[14]; +ret->asmName = row[15]; +ret->asmSubmitter = row[16]; +ret->gbrsPairedAsm = row[17]; +ret->pairedAsmComp = row[18]; +ret->ftpPath = row[19]; +ret->excludedFromRefseq = row[20]; +ret->relationToTypeMaterial = row[21]; +if (row[22] != NULL) + { + ret->assemblyType = needMem(sizeof(*(ret->assemblyType))); + *(ret->assemblyType) = sqlUnsigned(row[22]); + } +else + { + ret->assemblyType = NULL; + } +ret->phyloGroup = row[23]; +if (row[24] != NULL) + { + ret->genomeSize = needMem(sizeof(*(ret->genomeSize))); + *(ret->genomeSize) = sqlLongLong(row[24]); + } +else + { + ret->genomeSize = NULL; + } +if (row[25] != NULL) + { + ret->genomeSizeUngapped = needMem(sizeof(*(ret->genomeSizeUngapped))); + *(ret->genomeSizeUngapped) = sqlLongLong(row[25]); + } +else + { + ret->genomeSizeUngapped = NULL; + } +if (row[26] != NULL) + { + ret->gcPercent = needMem(sizeof(float)); + *(ret->gcPercent) = sqlFloat(row[26]); + } +if (row[27] != NULL) + { + ret->repliconCount = needMem(sizeof(*(ret->repliconCount))); + *(ret->repliconCount) = sqlUnsigned(row[27]); + } +else + { + ret->repliconCount = NULL; + } +if (row[28] != NULL) + { + ret->scaffoldCount = needMem(sizeof(*(ret->scaffoldCount))); + *(ret->scaffoldCount) = sqlUnsigned(row[28]); + } +else + { + ret->scaffoldCount = NULL; + } +if (row[29] != NULL) + { + ret->contigCount = needMem(sizeof(*(ret->contigCount))); + *(ret->contigCount) = sqlUnsigned(row[29]); + } +else + { + ret->contigCount = NULL; + } +ret->annotationProvider = row[30]; +ret->annotationName = row[31]; +ret->annotationDate = row[32]; +ret->totalGeneCount = row[33]; +if (row[34] != NULL) + { + ret->proteinCodingGeneCount = needMem(sizeof(*(ret->proteinCodingGeneCount))); + *(ret->proteinCodingGeneCount) = sqlUnsigned(row[34]); + } +else + { + ret->proteinCodingGeneCount = NULL; + } +ret->nonCodingGeneCount = row[35]; +ret->pubmedId = row[36]; +} + +struct genomeData *genomeDataLoadByQuery(struct sqlConnection *conn, char *query) +/* Load all genomeData from table that satisfy the query given. + * Where query is of the form 'select * from example where something=something' + * or 'select example.* from example, anotherTable where example.something = + * anotherTable.something'. + * Dispose of this with genomeDataFreeList(). */ +{ +struct genomeData *list = NULL, *el; +struct sqlResult *sr; +char **row; + +sr = sqlGetResult(conn, query); +while ((row = sqlNextRow(sr)) != NULL) + { + el = genomeDataLoadWithNull(row); + slAddHead(&list, el); + } +slReverse(&list); +sqlFreeResult(&sr); +return list; +} + +void genomeDataSaveToDb(struct sqlConnection *conn, struct genomeData *el, char *tableName, int updateSize) +/* Save genomeData as a row to the table specified by tableName. + * As blob fields may be arbitrary size updateSize specifies the approx size + * of a string that would contain the entire query. Arrays of native types are + * converted to comma separated strings and loaded as such, User defined types are + * inserted as NULL. This function automatically escapes quoted strings for mysql. */ +{ +struct dyString *update = dyStringNew(updateSize); +sqlDyStringPrintf(update, "insert into %s values ( '%s','%s','%s','%s','%s',%u,%u,'%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s',%u,'%s',%lld,%lld,%g,%u,%u,%u,'%s','%s','%s','%s',%u,'%s','%s')", + tableName, el->assemblyAccession, el->bioproject, el->biosample, el->wgsMaster, el->refseqCategory, *(el->taxId), *(el->speciesTaxid), el->organismName, el->infraspecificName, el->isolate, el->versionStatus, el->assemblyLevel, el->releaseType, el->genomeRep, el->seqRelDate, el->asmName, el->asmSubmitter, el->gbrsPairedAsm, el->pairedAsmComp, el->ftpPath, el->excludedFromRefseq, el->relationToTypeMaterial, *(el->assemblyType), el->phyloGroup, *(el->genomeSize), *(el->genomeSizeUngapped), *(el->gcPercent), *(el->repliconCount), *(el->scaffoldCount), *(el->contigCount), el->annotationProvider, el->annotationName, el->annotationDate, el->totalGeneCount, *(el->proteinCodingGeneCount), el->nonCodingGeneCount, el->pubmedId); +sqlUpdate(conn, update->string); +dyStringFree(&update); +} + +struct genomeData *genomeDataLoadWithNull(char **row) +/* Load a genomeData from row fetched with select * from genomeData + * from database. Dispose of this with genomeDataFree(). */ +{ +struct genomeData *ret; + +AllocVar(ret); +ret->assemblyAccession = cloneString(row[0]); +ret->bioproject = cloneString(row[1]); +ret->biosample = cloneString(row[2]); +ret->wgsMaster = cloneString(row[3]); +ret->refseqCategory = cloneString(row[4]); +if (row[5] != NULL) + { + ret->taxId = needMem(sizeof(*(ret->taxId))); + *(ret->taxId) = sqlUnsigned(row[5]); + } +else + { + ret->taxId = NULL; + } +if (row[6] != NULL) + { + ret->speciesTaxid = needMem(sizeof(*(ret->speciesTaxid))); + *(ret->speciesTaxid) = sqlUnsigned(row[6]); + } +else + { + ret->speciesTaxid = NULL; + } +ret->organismName = cloneString(row[7]); +ret->infraspecificName = cloneString(row[8]); +ret->isolate = cloneString(row[9]); +ret->versionStatus = cloneString(row[10]); +ret->assemblyLevel = cloneString(row[11]); +ret->releaseType = cloneString(row[12]); +ret->genomeRep = cloneString(row[13]); +ret->seqRelDate = cloneString(row[14]); +ret->asmName = cloneString(row[15]); +ret->asmSubmitter = cloneString(row[16]); +ret->gbrsPairedAsm = cloneString(row[17]); +ret->pairedAsmComp = cloneString(row[18]); +ret->ftpPath = cloneString(row[19]); +ret->excludedFromRefseq = cloneString(row[20]); +ret->relationToTypeMaterial = cloneString(row[21]); +if (row[22] != NULL) + { + ret->assemblyType = needMem(sizeof(*(ret->assemblyType))); + *(ret->assemblyType) = sqlUnsigned(row[22]); + } +else + { + ret->assemblyType = NULL; + } +ret->phyloGroup = cloneString(row[23]); +if (row[24] != NULL) + { + ret->genomeSize = needMem(sizeof(*(ret->genomeSize))); + *(ret->genomeSize) = sqlLongLong(row[24]); + } +else + { + ret->genomeSize = NULL; + } +if (row[25] != NULL) + { + ret->genomeSizeUngapped = needMem(sizeof(*(ret->genomeSizeUngapped))); + *(ret->genomeSizeUngapped) = sqlLongLong(row[25]); + } +else + { + ret->genomeSizeUngapped = NULL; + } +if (row[26] != NULL) + { + ret->gcPercent = needMem(sizeof(float)); + *(ret->gcPercent) = sqlFloat(row[26]); + } +if (row[27] != NULL) + { + ret->repliconCount = needMem(sizeof(*(ret->repliconCount))); + *(ret->repliconCount) = sqlUnsigned(row[27]); + } +else + { + ret->repliconCount = NULL; + } +if (row[28] != NULL) + { + ret->scaffoldCount = needMem(sizeof(*(ret->scaffoldCount))); + *(ret->scaffoldCount) = sqlUnsigned(row[28]); + } +else + { + ret->scaffoldCount = NULL; + } +if (row[29] != NULL) + { + ret->contigCount = needMem(sizeof(*(ret->contigCount))); + *(ret->contigCount) = sqlUnsigned(row[29]); + } +else + { + ret->contigCount = NULL; + } +ret->annotationProvider = cloneString(row[30]); +ret->annotationName = cloneString(row[31]); +ret->annotationDate = cloneString(row[32]); +ret->totalGeneCount = cloneString(row[33]); +if (row[34] != NULL) + { + ret->proteinCodingGeneCount = needMem(sizeof(*(ret->proteinCodingGeneCount))); + *(ret->proteinCodingGeneCount) = sqlUnsigned(row[34]); + } +else + { + ret->proteinCodingGeneCount = NULL; + } +ret->nonCodingGeneCount = cloneString(row[35]); +ret->pubmedId = cloneString(row[36]); +return ret; +} + +struct genomeData *genomeDataLoadAll(char *fileName) +/* Load all genomeData from a whitespace-separated file. + * Dispose of this with genomeDataFreeList(). */ +{ +struct genomeData *list = NULL, *el; +struct lineFile *lf = lineFileOpen(fileName, TRUE); +char *row[37]; + +while (lineFileRow(lf, row)) + { + el = genomeDataLoadWithNull(row); + slAddHead(&list, el); + } +lineFileClose(&lf); +slReverse(&list); +return list; +} + +struct genomeData *genomeDataLoadAllByChar(char *fileName, char chopper) +/* Load all genomeData from a chopper separated file. + * Dispose of this with genomeDataFreeList(). */ +{ +struct genomeData *list = NULL, *el; +struct lineFile *lf = lineFileOpen(fileName, TRUE); +char *row[37]; + +while (lineFileNextCharRow(lf, chopper, row, ArraySize(row))) + { + el = genomeDataLoadWithNull(row); + slAddHead(&list, el); + } +lineFileClose(&lf); +slReverse(&list); +return list; +} + +struct genomeData *genomeDataCommaIn(char **pS, struct genomeData *ret) +/* Create a genomeData out of a comma separated string. + * This will fill in ret if non-null, otherwise will + * return a new genomeData */ +{ +char *s = *pS; + +if (ret == NULL) + AllocVar(ret); +ret->assemblyAccession = sqlStringComma(&s); +ret->bioproject = sqlStringComma(&s); +ret->biosample = sqlStringComma(&s); +ret->wgsMaster = sqlStringComma(&s); +ret->refseqCategory = sqlStringComma(&s); +ret->taxId = needMem(sizeof(unsigned)); +*(ret->taxId) = sqlUnsignedComma(&s); +ret->speciesTaxid = needMem(sizeof(unsigned)); +*(ret->speciesTaxid) = sqlUnsignedComma(&s); +ret->organismName = sqlStringComma(&s); +ret->infraspecificName = sqlStringComma(&s); +ret->isolate = sqlStringComma(&s); +ret->versionStatus = sqlStringComma(&s); +ret->assemblyLevel = sqlStringComma(&s); +ret->releaseType = sqlStringComma(&s); +ret->genomeRep = sqlStringComma(&s); +ret->seqRelDate = sqlStringComma(&s); +ret->asmName = sqlStringComma(&s); +ret->asmSubmitter = sqlStringComma(&s); +ret->gbrsPairedAsm = sqlStringComma(&s); +ret->pairedAsmComp = sqlStringComma(&s); +ret->ftpPath = sqlStringComma(&s); +ret->excludedFromRefseq = sqlStringComma(&s); +ret->relationToTypeMaterial = sqlStringComma(&s); +ret->assemblyType = needMem(sizeof(unsigned)); +*(ret->assemblyType) = sqlUnsignedComma(&s); +ret->phyloGroup = sqlStringComma(&s); +ret->genomeSize = needMem(sizeof(*(ret->genomeSize))); +*(ret->genomeSize) = sqlLongLongComma(&s); +ret->genomeSizeUngapped = needMem(sizeof(*(ret->genomeSizeUngapped))); +*(ret->genomeSizeUngapped) = sqlLongLongComma(&s); +ret->gcPercent = needMem(sizeof(*(ret->gcPercent))); +*(ret->gcPercent) = sqlFloatComma(&s); +ret->repliconCount = needMem(sizeof(unsigned)); +*(ret->repliconCount) = sqlUnsignedComma(&s); +ret->scaffoldCount = needMem(sizeof(unsigned)); +*(ret->scaffoldCount) = sqlUnsignedComma(&s); +ret->contigCount = needMem(sizeof(unsigned)); +*(ret->contigCount) = sqlUnsignedComma(&s); +ret->annotationProvider = sqlStringComma(&s); +ret->annotationName = sqlStringComma(&s); +ret->annotationDate = sqlStringComma(&s); +ret->totalGeneCount = sqlStringComma(&s); +ret->proteinCodingGeneCount = needMem(sizeof(unsigned)); +*(ret->proteinCodingGeneCount) = sqlUnsignedComma(&s); +ret->nonCodingGeneCount = sqlStringComma(&s); +ret->pubmedId = sqlStringComma(&s); +*pS = s; +return ret; +} + +void genomeDataFree(struct genomeData **pEl) +/* Free a single dynamically allocated genomeData such as created + * with genomeDataLoad(). */ +{ +struct genomeData *el; + +if ((el = *pEl) == NULL) return; +freeMem(el->assemblyAccession); +freeMem(el->bioproject); +freeMem(el->biosample); +freeMem(el->wgsMaster); +freeMem(el->refseqCategory); +freeMem(el->organismName); +freeMem(el->infraspecificName); +freeMem(el->isolate); +freeMem(el->versionStatus); +freeMem(el->assemblyLevel); +freeMem(el->releaseType); +freeMem(el->genomeRep); +freeMem(el->seqRelDate); +freeMem(el->asmName); +freeMem(el->asmSubmitter); +freeMem(el->gbrsPairedAsm); +freeMem(el->pairedAsmComp); +freeMem(el->ftpPath); +freeMem(el->excludedFromRefseq); +freeMem(el->relationToTypeMaterial); +freeMem(el->phyloGroup); +freeMem(el->annotationProvider); +freeMem(el->annotationName); +freeMem(el->annotationDate); +freeMem(el->totalGeneCount); +freeMem(el->nonCodingGeneCount); +freeMem(el->pubmedId); +freez(pEl); +} + +void genomeDataFreeList(struct genomeData **pList) +/* Free a list of dynamically allocated genomeData's */ +{ +struct genomeData *el, *next; + +for (el = *pList; el != NULL; el = next) + { + next = el->next; + genomeDataFree(&el); + } +*pList = NULL; +} + +void genomeDataOutput(struct genomeData *el, FILE *f, char sep, char lastSep) +/* Print out genomeData. Separate fields with sep. Follow last field with lastSep. */ +{ +if (sep == ',') fputc('"',f); +fprintf(f, "%s", el->assemblyAccession); +if (sep == ',') fputc('"',f); +fputc(sep,f); +if (sep == ',') fputc('"',f); +fprintf(f, "%s", el->bioproject); +if (sep == ',') fputc('"',f); +fputc(sep,f); +if (sep == ',') fputc('"',f); +fprintf(f, "%s", el->biosample); +if (sep == ',') fputc('"',f); +fputc(sep,f); +if (sep == ',') fputc('"',f); +fprintf(f, "%s", el->wgsMaster); +if (sep == ',') fputc('"',f); +fputc(sep,f); +if (sep == ',') fputc('"',f); +fprintf(f, "%s", el->refseqCategory); +if (sep == ',') fputc('"',f); +fputc(sep,f); +fprintf(f, "%u", *(el->taxId)); +fputc(sep,f); +fprintf(f, "%u", *(el->speciesTaxid)); +fputc(sep,f); +if (sep == ',') fputc('"',f); +fprintf(f, "%s", el->organismName); +if (sep == ',') fputc('"',f); +fputc(sep,f); +if (sep == ',') fputc('"',f); +fprintf(f, "%s", el->infraspecificName); +if (sep == ',') fputc('"',f); +fputc(sep,f); +if (sep == ',') fputc('"',f); +fprintf(f, "%s", el->isolate); +if (sep == ',') fputc('"',f); +fputc(sep,f); +if (sep == ',') fputc('"',f); +fprintf(f, "%s", el->versionStatus); +if (sep == ',') fputc('"',f); +fputc(sep,f); +if (sep == ',') fputc('"',f); +fprintf(f, "%s", el->assemblyLevel); +if (sep == ',') fputc('"',f); +fputc(sep,f); +if (sep == ',') fputc('"',f); +fprintf(f, "%s", el->releaseType); +if (sep == ',') fputc('"',f); +fputc(sep,f); +if (sep == ',') fputc('"',f); +fprintf(f, "%s", el->genomeRep); +if (sep == ',') fputc('"',f); +fputc(sep,f); +if (sep == ',') fputc('"',f); +fprintf(f, "%s", el->seqRelDate); +if (sep == ',') fputc('"',f); +fputc(sep,f); +if (sep == ',') fputc('"',f); +fprintf(f, "%s", el->asmName); +if (sep == ',') fputc('"',f); +fputc(sep,f); +if (sep == ',') fputc('"',f); +fprintf(f, "%s", el->asmSubmitter); +if (sep == ',') fputc('"',f); +fputc(sep,f); +if (sep == ',') fputc('"',f); +fprintf(f, "%s", el->gbrsPairedAsm); +if (sep == ',') fputc('"',f); +fputc(sep,f); +if (sep == ',') fputc('"',f); +fprintf(f, "%s", el->pairedAsmComp); +if (sep == ',') fputc('"',f); +fputc(sep,f); +if (sep == ',') fputc('"',f); +fprintf(f, "%s", el->ftpPath); +if (sep == ',') fputc('"',f); +fputc(sep,f); +if (sep == ',') fputc('"',f); +fprintf(f, "%s", el->excludedFromRefseq); +if (sep == ',') fputc('"',f); +fputc(sep,f); +if (sep == ',') fputc('"',f); +fprintf(f, "%s", el->relationToTypeMaterial); +if (sep == ',') fputc('"',f); +fputc(sep,f); +fprintf(f, "%u", *(el->assemblyType)); +fputc(sep,f); +if (sep == ',') fputc('"',f); +fprintf(f, "%s", el->phyloGroup); +if (sep == ',') fputc('"',f); +fputc(sep,f); +fprintf(f, "%lld", *(el->genomeSize)); +fputc(sep,f); +fprintf(f, "%lld", *(el->genomeSizeUngapped)); +fputc(sep,f); +fprintf(f, "%g", *(el->gcPercent)); +fputc(sep,f); +fprintf(f, "%u", *(el->repliconCount)); +fputc(sep,f); +fprintf(f, "%u", *(el->scaffoldCount)); +fputc(sep,f); +fprintf(f, "%u", *(el->contigCount)); +fputc(sep,f); +if (sep == ',') fputc('"',f); +fprintf(f, "%s", el->annotationProvider); +if (sep == ',') fputc('"',f); +fputc(sep,f); +if (sep == ',') fputc('"',f); +fprintf(f, "%s", el->annotationName); +if (sep == ',') fputc('"',f); +fputc(sep,f); +if (sep == ',') fputc('"',f); +fprintf(f, "%s", el->annotationDate); +if (sep == ',') fputc('"',f); +fputc(sep,f); +if (sep == ',') fputc('"',f); +fprintf(f, "%s", el->totalGeneCount); +if (sep == ',') fputc('"',f); +fputc(sep,f); +fprintf(f, "%u", *(el->proteinCodingGeneCount)); +fputc(sep,f); +if (sep == ',') fputc('"',f); +fprintf(f, "%s", el->nonCodingGeneCount); +if (sep == ',') fputc('"',f); +fputc(sep,f); +if (sep == ',') fputc('"',f); +fprintf(f, "%s", el->pubmedId); +if (sep == ',') fputc('"',f); +fputc(lastSep,f); +} + +void genomeDataJsonOutput(struct genomeData *el, FILE *f) +/* Print out genomeData in JSON format. */ +{ +fputc('{',f); +fputc('"',f); +fprintf(f,"assemblyAccession"); +fputc('"',f); +fputc(':',f); +fputc('"',f); +fprintf(f, "%s", el->assemblyAccession); +fputc('"',f); +fputc(',',f); +fputc('"',f); +fprintf(f,"bioproject"); +fputc('"',f); +fputc(':',f); +fputc('"',f); +fprintf(f, "%s", el->bioproject); +fputc('"',f); +fputc(',',f); +fputc('"',f); +fprintf(f,"biosample"); +fputc('"',f); +fputc(':',f); +fputc('"',f); +fprintf(f, "%s", el->biosample); +fputc('"',f); +fputc(',',f); +fputc('"',f); +fprintf(f,"wgsMaster"); +fputc('"',f); +fputc(':',f); +fputc('"',f); +fprintf(f, "%s", el->wgsMaster); +fputc('"',f); +fputc(',',f); +fputc('"',f); +fprintf(f,"refseqCategory"); +fputc('"',f); +fputc(':',f); +fputc('"',f); +fprintf(f, "%s", el->refseqCategory); +fputc('"',f); +fputc(',',f); +fputc('"',f); +fprintf(f,"taxId"); +fputc('"',f); +fputc(':',f); +fprintf(f, "%u", *(el->taxId)); +fputc(',',f); +fputc('"',f); +fprintf(f,"speciesTaxid"); +fputc('"',f); +fputc(':',f); +fprintf(f, "%u", *(el->speciesTaxid)); +fputc(',',f); +fputc('"',f); +fprintf(f,"organismName"); +fputc('"',f); +fputc(':',f); +fputc('"',f); +fprintf(f, "%s", el->organismName); +fputc('"',f); +fputc(',',f); +fputc('"',f); +fprintf(f,"infraspecificName"); +fputc('"',f); +fputc(':',f); +fputc('"',f); +fprintf(f, "%s", el->infraspecificName); +fputc('"',f); +fputc(',',f); +fputc('"',f); +fprintf(f,"isolate"); +fputc('"',f); +fputc(':',f); +fputc('"',f); +fprintf(f, "%s", el->isolate); +fputc('"',f); +fputc(',',f); +fputc('"',f); +fprintf(f,"versionStatus"); +fputc('"',f); +fputc(':',f); +fputc('"',f); +fprintf(f, "%s", el->versionStatus); +fputc('"',f); +fputc(',',f); +fputc('"',f); +fprintf(f,"assemblyLevel"); +fputc('"',f); +fputc(':',f); +fputc('"',f); +fprintf(f, "%s", el->assemblyLevel); +fputc('"',f); +fputc(',',f); +fputc('"',f); +fprintf(f,"releaseType"); +fputc('"',f); +fputc(':',f); +fputc('"',f); +fprintf(f, "%s", el->releaseType); +fputc('"',f); +fputc(',',f); +fputc('"',f); +fprintf(f,"genomeRep"); +fputc('"',f); +fputc(':',f); +fputc('"',f); +fprintf(f, "%s", el->genomeRep); +fputc('"',f); +fputc(',',f); +fputc('"',f); +fprintf(f,"seqRelDate"); +fputc('"',f); +fputc(':',f); +fputc('"',f); +fprintf(f, "%s", el->seqRelDate); +fputc('"',f); +fputc(',',f); +fputc('"',f); +fprintf(f,"asmName"); +fputc('"',f); +fputc(':',f); +fputc('"',f); +fprintf(f, "%s", el->asmName); +fputc('"',f); +fputc(',',f); +fputc('"',f); +fprintf(f,"asmSubmitter"); +fputc('"',f); +fputc(':',f); +fputc('"',f); +fprintf(f, "%s", el->asmSubmitter); +fputc('"',f); +fputc(',',f); +fputc('"',f); +fprintf(f,"gbrsPairedAsm"); +fputc('"',f); +fputc(':',f); +fputc('"',f); +fprintf(f, "%s", el->gbrsPairedAsm); +fputc('"',f); +fputc(',',f); +fputc('"',f); +fprintf(f,"pairedAsmComp"); +fputc('"',f); +fputc(':',f); +fputc('"',f); +fprintf(f, "%s", el->pairedAsmComp); +fputc('"',f); +fputc(',',f); +fputc('"',f); +fprintf(f,"ftpPath"); +fputc('"',f); +fputc(':',f); +fputc('"',f); +fprintf(f, "%s", el->ftpPath); +fputc('"',f); +fputc(',',f); +fputc('"',f); +fprintf(f,"excludedFromRefseq"); +fputc('"',f); +fputc(':',f); +fputc('"',f); +fprintf(f, "%s", el->excludedFromRefseq); +fputc('"',f); +fputc(',',f); +fputc('"',f); +fprintf(f,"relationToTypeMaterial"); +fputc('"',f); +fputc(':',f); +fputc('"',f); +fprintf(f, "%s", el->relationToTypeMaterial); +fputc('"',f); +fputc(',',f); +fputc('"',f); +fprintf(f,"assemblyType"); +fputc('"',f); +fputc(':',f); +fprintf(f, "%u", *(el->assemblyType)); +fputc(',',f); +fputc('"',f); +fprintf(f,"phyloGroup"); +fputc('"',f); +fputc(':',f); +fputc('"',f); +fprintf(f, "%s", el->phyloGroup); +fputc('"',f); +fputc(',',f); +fputc('"',f); +fprintf(f,"genomeSize"); +fputc('"',f); +fputc(':',f); +fprintf(f, "%lld", *(el->genomeSize)); +fputc(',',f); +fputc('"',f); +fprintf(f,"genomeSizeUngapped"); +fputc('"',f); +fputc(':',f); +fprintf(f, "%lld", *(el->genomeSizeUngapped)); +fputc(',',f); +fputc('"',f); +fprintf(f,"gcPercent"); +fputc('"',f); +fputc(':',f); +fprintf(f, "%g", *(el->gcPercent)); +fputc(',',f); +fputc('"',f); +fprintf(f,"repliconCount"); +fputc('"',f); +fputc(':',f); +fprintf(f, "%u", *(el->repliconCount)); +fputc(',',f); +fputc('"',f); +fprintf(f,"scaffoldCount"); +fputc('"',f); +fputc(':',f); +fprintf(f, "%u", *(el->scaffoldCount)); +fputc(',',f); +fputc('"',f); +fprintf(f,"contigCount"); +fputc('"',f); +fputc(':',f); +fprintf(f, "%u", *(el->contigCount)); +fputc(',',f); +fputc('"',f); +fprintf(f,"annotationProvider"); +fputc('"',f); +fputc(':',f); +fputc('"',f); +fprintf(f, "%s", el->annotationProvider); +fputc('"',f); +fputc(',',f); +fputc('"',f); +fprintf(f,"annotationName"); +fputc('"',f); +fputc(':',f); +fputc('"',f); +fprintf(f, "%s", el->annotationName); +fputc('"',f); +fputc(',',f); +fputc('"',f); +fprintf(f,"annotationDate"); +fputc('"',f); +fputc(':',f); +fputc('"',f); +fprintf(f, "%s", el->annotationDate); +fputc('"',f); +fputc(',',f); +fputc('"',f); +fprintf(f,"totalGeneCount"); +fputc('"',f); +fputc(':',f); +fputc('"',f); +fprintf(f, "%s", el->totalGeneCount); +fputc('"',f); +fputc(',',f); +fputc('"',f); +fprintf(f,"proteinCodingGeneCount"); +fputc('"',f); +fputc(':',f); +fprintf(f, "%u", *(el->proteinCodingGeneCount)); +fputc(',',f); +fputc('"',f); +fprintf(f,"nonCodingGeneCount"); +fputc('"',f); +fputc(':',f); +fputc('"',f); +fprintf(f, "%s", el->nonCodingGeneCount); +fputc('"',f); +fputc(',',f); +fputc('"',f); +fprintf(f,"pubmedId"); +fputc('"',f); +fputc(':',f); +fputc('"',f); +fprintf(f, "%s", el->pubmedId); +fputc('"',f); +fputc('}',f); +} + +/* -------------------------------- End autoSql Generated Code -------------------------------- */ +