4898794edd81be5285ea6e544acbedeaeb31bf78
max
  Tue Nov 23 08:10:57 2021 -0800
Fixing pointers to README file for license in all source code files. refs #27614

diff --git src/hg/encode3/encodeDataWarehouse/inc/encodeDataWarehouse.h src/hg/encode3/encodeDataWarehouse/inc/encodeDataWarehouse.h
index 9167bf4..6c65537 100644
--- src/hg/encode3/encodeDataWarehouse/inc/encodeDataWarehouse.h
+++ src/hg/encode3/encodeDataWarehouse/inc/encodeDataWarehouse.h
@@ -1,2016 +1,2016 @@
 /* encodeDataWarehouse.h was originally generated by the autoSql program, which also 
  * generated encodeDataWarehouse.c and encodeDataWarehouse.sql.  This header 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. */
+ * See kent/LICENSE or http://genome.ucsc.edu/license/ for licensing information. */
 
 #ifndef ENCODEDATAWAREHOUSE_H
 #define ENCODEDATAWAREHOUSE_H
 
 #include "jksql.h"
 #define EDWSETTINGS_NUM_COLS 3
 
 extern char *edwSettingsCommaSepFieldNames;
 
 struct edwSettings
 /* Settings used to configure warehouse */
     {
     struct edwSettings *next;  /* Next in singly linked list. */
     unsigned id;	/* Settings ID */
     char *name;	/* Settings name, can't be reused */
     char *val;	/* Settings value, some undefined but not huge thing */
     };
 
 void edwSettingsStaticLoad(char **row, struct edwSettings *ret);
 /* Load a row from edwSettings table into ret.  The contents of ret will
  * be replaced at the next call to this function. */
 
 struct edwSettings *edwSettingsLoadByQuery(struct sqlConnection *conn, char *query);
 /* Load all edwSettings 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 edwSettingsFreeList(). */
 
 void edwSettingsSaveToDb(struct sqlConnection *conn, struct edwSettings *el, char *tableName, int updateSize);
 /* Save edwSettings 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 edwSettings *edwSettingsLoad(char **row);
 /* Load a edwSettings from row fetched with select * from edwSettings
  * from database.  Dispose of this with edwSettingsFree(). */
 
 struct edwSettings *edwSettingsLoadAll(char *fileName);
 /* Load all edwSettings from whitespace-separated file.
  * Dispose of this with edwSettingsFreeList(). */
 
 struct edwSettings *edwSettingsLoadAllByChar(char *fileName, char chopper);
 /* Load all edwSettings from chopper separated file.
  * Dispose of this with edwSettingsFreeList(). */
 
 #define edwSettingsLoadAllByTab(a) edwSettingsLoadAllByChar(a, '\t');
 /* Load all edwSettings from tab separated file.
  * Dispose of this with edwSettingsFreeList(). */
 
 struct edwSettings *edwSettingsCommaIn(char **pS, struct edwSettings *ret);
 /* Create a edwSettings out of a comma separated string. 
  * This will fill in ret if non-null, otherwise will
  * return a new edwSettings */
 
 void edwSettingsFree(struct edwSettings **pEl);
 /* Free a single dynamically allocated edwSettings such as created
  * with edwSettingsLoad(). */
 
 void edwSettingsFreeList(struct edwSettings **pList);
 /* Free a list of dynamically allocated edwSettings's */
 
 void edwSettingsOutput(struct edwSettings *el, FILE *f, char sep, char lastSep);
 /* Print out edwSettings.  Separate fields with sep. Follow last field with lastSep. */
 
 #define edwSettingsTabOut(el,f) edwSettingsOutput(el,f,'\t','\n');
 /* Print out edwSettings as a line in a tab-separated file. */
 
 #define edwSettingsCommaOut(el,f) edwSettingsOutput(el,f,',',',');
 /* Print out edwSettings as a comma separated list including final comma. */
 
 #define EDWUSER_NUM_COLS 4
 
 extern char *edwUserCommaSepFieldNames;
 
 struct edwUser
 /* Someone who submits files to or otherwise interacts with big data warehouse */
     {
     struct edwUser *next;  /* Next in singly linked list. */
     unsigned id;	/* Autoincremented user ID */
     char *email;	/* Email address - required */
     char uuid[38];	/* Help to synchronize us with Stanford. */
     signed char isAdmin;	/* If true the use can modify other people's files too. */
     };
 
 void edwUserStaticLoad(char **row, struct edwUser *ret);
 /* Load a row from edwUser table into ret.  The contents of ret will
  * be replaced at the next call to this function. */
 
 struct edwUser *edwUserLoadByQuery(struct sqlConnection *conn, char *query);
 /* Load all edwUser 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 edwUserFreeList(). */
 
 void edwUserSaveToDb(struct sqlConnection *conn, struct edwUser *el, char *tableName, int updateSize);
 /* Save edwUser 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 edwUser *edwUserLoad(char **row);
 /* Load a edwUser from row fetched with select * from edwUser
  * from database.  Dispose of this with edwUserFree(). */
 
 struct edwUser *edwUserLoadAll(char *fileName);
 /* Load all edwUser from whitespace-separated file.
  * Dispose of this with edwUserFreeList(). */
 
 struct edwUser *edwUserLoadAllByChar(char *fileName, char chopper);
 /* Load all edwUser from chopper separated file.
  * Dispose of this with edwUserFreeList(). */
 
 #define edwUserLoadAllByTab(a) edwUserLoadAllByChar(a, '\t');
 /* Load all edwUser from tab separated file.
  * Dispose of this with edwUserFreeList(). */
 
 struct edwUser *edwUserCommaIn(char **pS, struct edwUser *ret);
 /* Create a edwUser out of a comma separated string. 
  * This will fill in ret if non-null, otherwise will
  * return a new edwUser */
 
 void edwUserFree(struct edwUser **pEl);
 /* Free a single dynamically allocated edwUser such as created
  * with edwUserLoad(). */
 
 void edwUserFreeList(struct edwUser **pList);
 /* Free a list of dynamically allocated edwUser's */
 
 void edwUserOutput(struct edwUser *el, FILE *f, char sep, char lastSep);
 /* Print out edwUser.  Separate fields with sep. Follow last field with lastSep. */
 
 #define edwUserTabOut(el,f) edwUserOutput(el,f,'\t','\n');
 /* Print out edwUser as a line in a tab-separated file. */
 
 #define edwUserCommaOut(el,f) edwUserOutput(el,f,',',',');
 /* Print out edwUser as a comma separated list including final comma. */
 
 #define EDWSCRIPTREGISTRY_NUM_COLS 6
 
 extern char *edwScriptRegistryCommaSepFieldNames;
 
 struct edwScriptRegistry
 /* A script that is authorized to submit on behalf of a user */
     {
     struct edwScriptRegistry *next;  /* Next in singly linked list. */
     unsigned id;	/* Autoincremented script ID */
     unsigned userId;	/* Associated user */
     char *name;	/* Script name - unique in system and autogenerated */
     char *description;	/* Script description */
     char *secretHash;	/* Hashed script password */
     int submitCount;	/* Number of submissions attempted */
     };
 
 void edwScriptRegistryStaticLoad(char **row, struct edwScriptRegistry *ret);
 /* Load a row from edwScriptRegistry table into ret.  The contents of ret will
  * be replaced at the next call to this function. */
 
 struct edwScriptRegistry *edwScriptRegistryLoadByQuery(struct sqlConnection *conn, char *query);
 /* Load all edwScriptRegistry 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 edwScriptRegistryFreeList(). */
 
 void edwScriptRegistrySaveToDb(struct sqlConnection *conn, struct edwScriptRegistry *el, char *tableName, int updateSize);
 /* Save edwScriptRegistry 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 edwScriptRegistry *edwScriptRegistryLoad(char **row);
 /* Load a edwScriptRegistry from row fetched with select * from edwScriptRegistry
  * from database.  Dispose of this with edwScriptRegistryFree(). */
 
 struct edwScriptRegistry *edwScriptRegistryLoadAll(char *fileName);
 /* Load all edwScriptRegistry from whitespace-separated file.
  * Dispose of this with edwScriptRegistryFreeList(). */
 
 struct edwScriptRegistry *edwScriptRegistryLoadAllByChar(char *fileName, char chopper);
 /* Load all edwScriptRegistry from chopper separated file.
  * Dispose of this with edwScriptRegistryFreeList(). */
 
 #define edwScriptRegistryLoadAllByTab(a) edwScriptRegistryLoadAllByChar(a, '\t');
 /* Load all edwScriptRegistry from tab separated file.
  * Dispose of this with edwScriptRegistryFreeList(). */
 
 struct edwScriptRegistry *edwScriptRegistryCommaIn(char **pS, struct edwScriptRegistry *ret);
 /* Create a edwScriptRegistry out of a comma separated string. 
  * This will fill in ret if non-null, otherwise will
  * return a new edwScriptRegistry */
 
 void edwScriptRegistryFree(struct edwScriptRegistry **pEl);
 /* Free a single dynamically allocated edwScriptRegistry such as created
  * with edwScriptRegistryLoad(). */
 
 void edwScriptRegistryFreeList(struct edwScriptRegistry **pList);
 /* Free a list of dynamically allocated edwScriptRegistry's */
 
 void edwScriptRegistryOutput(struct edwScriptRegistry *el, FILE *f, char sep, char lastSep);
 /* Print out edwScriptRegistry.  Separate fields with sep. Follow last field with lastSep. */
 
 #define edwScriptRegistryTabOut(el,f) edwScriptRegistryOutput(el,f,'\t','\n');
 /* Print out edwScriptRegistry as a line in a tab-separated file. */
 
 #define edwScriptRegistryCommaOut(el,f) edwScriptRegistryOutput(el,f,',',',');
 /* Print out edwScriptRegistry as a comma separated list including final comma. */
 
 #define EDWHOST_NUM_COLS 10
 
 extern char *edwHostCommaSepFieldNames;
 
 struct edwHost
 /* A web host we have collected files from - something like www.ncbi.nlm.gov or google.com */
     {
     struct edwHost *next;  /* Next in singly linked list. */
     unsigned id;	/* Autoincremented host id */
     char *name;	/* Name (before DNS lookup) */
     long long lastOkTime;	/* Last time host was ok in seconds since 1970 */
     long long lastNotOkTime;	/* Last time host was not ok in seconds since 1970 */
     long long firstAdded;	/* Time host was first seen */
     char *errorMessage;	/* If non-empty contains last error message from host. If empty host is ok */
     long long openSuccesses;	/* Number of times files have been opened ok from this host */
     long long openFails;	/* Number of times files have failed to open from this host */
     long long historyBits;	/* Open history with most recent in least significant bit. 0 for connection failed, 1 for success */
     int paraFetchStreams;	/* Number of open streams for paraFetch command.  10 for most places, 30 for Barcelona */
     };
 
 void edwHostStaticLoad(char **row, struct edwHost *ret);
 /* Load a row from edwHost table into ret.  The contents of ret will
  * be replaced at the next call to this function. */
 
 struct edwHost *edwHostLoadByQuery(struct sqlConnection *conn, char *query);
 /* Load all edwHost 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 edwHostFreeList(). */
 
 void edwHostSaveToDb(struct sqlConnection *conn, struct edwHost *el, char *tableName, int updateSize);
 /* Save edwHost 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 edwHost *edwHostLoad(char **row);
 /* Load a edwHost from row fetched with select * from edwHost
  * from database.  Dispose of this with edwHostFree(). */
 
 struct edwHost *edwHostLoadAll(char *fileName);
 /* Load all edwHost from whitespace-separated file.
  * Dispose of this with edwHostFreeList(). */
 
 struct edwHost *edwHostLoadAllByChar(char *fileName, char chopper);
 /* Load all edwHost from chopper separated file.
  * Dispose of this with edwHostFreeList(). */
 
 #define edwHostLoadAllByTab(a) edwHostLoadAllByChar(a, '\t');
 /* Load all edwHost from tab separated file.
  * Dispose of this with edwHostFreeList(). */
 
 struct edwHost *edwHostCommaIn(char **pS, struct edwHost *ret);
 /* Create a edwHost out of a comma separated string. 
  * This will fill in ret if non-null, otherwise will
  * return a new edwHost */
 
 void edwHostFree(struct edwHost **pEl);
 /* Free a single dynamically allocated edwHost such as created
  * with edwHostLoad(). */
 
 void edwHostFreeList(struct edwHost **pList);
 /* Free a list of dynamically allocated edwHost's */
 
 void edwHostOutput(struct edwHost *el, FILE *f, char sep, char lastSep);
 /* Print out edwHost.  Separate fields with sep. Follow last field with lastSep. */
 
 #define edwHostTabOut(el,f) edwHostOutput(el,f,'\t','\n');
 /* Print out edwHost as a line in a tab-separated file. */
 
 #define edwHostCommaOut(el,f) edwHostOutput(el,f,',',',');
 /* Print out edwHost as a comma separated list including final comma. */
 
 #define EDWSUBMITDIR_NUM_COLS 10
 
 extern char *edwSubmitDirCommaSepFieldNames;
 
 struct edwSubmitDir
 /* An external data directory we have collected a submit from */
     {
     struct edwSubmitDir *next;  /* Next in singly linked list. */
     unsigned id;	/* Autoincremented id */
     char *url;	/* Web-mounted directory. Includes protocol, host, and final '/' */
     unsigned hostId;	/* Id of host it's on */
     long long lastOkTime;	/* Last time submit dir was ok in seconds since 1970 */
     long long lastNotOkTime;	/* Last time submit dir was not ok in seconds since 1970 */
     long long firstAdded;	/* Time submit dir was first seen */
     char *errorMessage;	/* If non-empty contains last error message from dir. If empty dir is ok */
     long long openSuccesses;	/* Number of times files have been opened ok from this dir */
     long long openFails;	/* Number of times files have failed to open from this dir */
     long long historyBits;	/* Open history with most recent in least significant bit. 0 for upload failed, 1 for success */
     };
 
 void edwSubmitDirStaticLoad(char **row, struct edwSubmitDir *ret);
 /* Load a row from edwSubmitDir table into ret.  The contents of ret will
  * be replaced at the next call to this function. */
 
 struct edwSubmitDir *edwSubmitDirLoadByQuery(struct sqlConnection *conn, char *query);
 /* Load all edwSubmitDir 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 edwSubmitDirFreeList(). */
 
 void edwSubmitDirSaveToDb(struct sqlConnection *conn, struct edwSubmitDir *el, char *tableName, int updateSize);
 /* Save edwSubmitDir 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 edwSubmitDir *edwSubmitDirLoad(char **row);
 /* Load a edwSubmitDir from row fetched with select * from edwSubmitDir
  * from database.  Dispose of this with edwSubmitDirFree(). */
 
 struct edwSubmitDir *edwSubmitDirLoadAll(char *fileName);
 /* Load all edwSubmitDir from whitespace-separated file.
  * Dispose of this with edwSubmitDirFreeList(). */
 
 struct edwSubmitDir *edwSubmitDirLoadAllByChar(char *fileName, char chopper);
 /* Load all edwSubmitDir from chopper separated file.
  * Dispose of this with edwSubmitDirFreeList(). */
 
 #define edwSubmitDirLoadAllByTab(a) edwSubmitDirLoadAllByChar(a, '\t');
 /* Load all edwSubmitDir from tab separated file.
  * Dispose of this with edwSubmitDirFreeList(). */
 
 struct edwSubmitDir *edwSubmitDirCommaIn(char **pS, struct edwSubmitDir *ret);
 /* Create a edwSubmitDir out of a comma separated string. 
  * This will fill in ret if non-null, otherwise will
  * return a new edwSubmitDir */
 
 void edwSubmitDirFree(struct edwSubmitDir **pEl);
 /* Free a single dynamically allocated edwSubmitDir such as created
  * with edwSubmitDirLoad(). */
 
 void edwSubmitDirFreeList(struct edwSubmitDir **pList);
 /* Free a list of dynamically allocated edwSubmitDir's */
 
 void edwSubmitDirOutput(struct edwSubmitDir *el, FILE *f, char sep, char lastSep);
 /* Print out edwSubmitDir.  Separate fields with sep. Follow last field with lastSep. */
 
 #define edwSubmitDirTabOut(el,f) edwSubmitDirOutput(el,f,'\t','\n');
 /* Print out edwSubmitDir as a line in a tab-separated file. */
 
 #define edwSubmitDirCommaOut(el,f) edwSubmitDirOutput(el,f,',',',');
 /* Print out edwSubmitDir as a comma separated list including final comma. */
 
 #define EDWFILE_NUM_COLS 14
 
 extern char *edwFileCommaSepFieldNames;
 
 struct edwFile
 /* A file we are tracking that we intend to and maybe have uploaded */
     {
     struct edwFile *next;  /* Next in singly linked list. */
     unsigned id;	/* Autoincrementing file id */
     unsigned submitId;	/* Links to id in submit table */
     unsigned submitDirId;	/* Links to id in submitDir table */
     char *submitFileName;	/* File name in submit relative to submit dir */
     char *edwFileName;	/* File name in big data warehouse relative to edw root dir */
     long long startUploadTime;	/* Time when upload started - 0 if not started */
     long long endUploadTime;	/* Time when upload finished - 0 if not finished */
     long long updateTime;	/* Update time (on system it was uploaded from) */
     long long size;	/* File size in manifest */
     char md5[33];	/* md5 sum of file contents */
     char *tags;	/* CGI encoded name=val pairs from manifest */
     char *errorMessage;	/* If non-empty contains last error message from upload. If empty upload is ok */
     char *deprecated;	/* If non-empty why you shouldn't use this file any more. */
     unsigned replacedBy;	/* If non-zero id of file that replaces this one. */
     };
 
 void edwFileStaticLoad(char **row, struct edwFile *ret);
 /* Load a row from edwFile table into ret.  The contents of ret will
  * be replaced at the next call to this function. */
 
 struct edwFile *edwFileLoadByQuery(struct sqlConnection *conn, char *query);
 /* Load all edwFile 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 edwFileFreeList(). */
 
 void edwFileSaveToDb(struct sqlConnection *conn, struct edwFile *el, char *tableName, int updateSize);
 /* Save edwFile 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 edwFile *edwFileLoad(char **row);
 /* Load a edwFile from row fetched with select * from edwFile
  * from database.  Dispose of this with edwFileFree(). */
 
 struct edwFile *edwFileLoadAll(char *fileName);
 /* Load all edwFile from whitespace-separated file.
  * Dispose of this with edwFileFreeList(). */
 
 struct edwFile *edwFileLoadAllByChar(char *fileName, char chopper);
 /* Load all edwFile from chopper separated file.
  * Dispose of this with edwFileFreeList(). */
 
 #define edwFileLoadAllByTab(a) edwFileLoadAllByChar(a, '\t');
 /* Load all edwFile from tab separated file.
  * Dispose of this with edwFileFreeList(). */
 
 struct edwFile *edwFileCommaIn(char **pS, struct edwFile *ret);
 /* Create a edwFile out of a comma separated string. 
  * This will fill in ret if non-null, otherwise will
  * return a new edwFile */
 
 void edwFileFree(struct edwFile **pEl);
 /* Free a single dynamically allocated edwFile such as created
  * with edwFileLoad(). */
 
 void edwFileFreeList(struct edwFile **pList);
 /* Free a list of dynamically allocated edwFile's */
 
 void edwFileOutput(struct edwFile *el, FILE *f, char sep, char lastSep);
 /* Print out edwFile.  Separate fields with sep. Follow last field with lastSep. */
 
 #define edwFileTabOut(el,f) edwFileOutput(el,f,'\t','\n');
 /* Print out edwFile as a line in a tab-separated file. */
 
 #define edwFileCommaOut(el,f) edwFileOutput(el,f,',',',');
 /* Print out edwFile as a comma separated list including final comma. */
 
 #define EDWSUBMIT_NUM_COLS 16
 
 extern char *edwSubmitCommaSepFieldNames;
 
 struct edwSubmit
 /* A data submit, typically containing many files.  Always associated with a submit dir. */
     {
     struct edwSubmit *next;  /* Next in singly linked list. */
     unsigned id;	/* Autoincremented submit id */
     char *url;	/* Url to validated.txt format file. We copy this file over and give it a fileId if we can. */
     long long startUploadTime;	/* Time at start of submit */
     long long endUploadTime;	/* Time at end of upload - 0 if not finished */
     unsigned userId;	/* Connects to user table id field */
     unsigned submitFileId;	/* Points to validated.txt file for submit. */
     unsigned submitDirId;	/* Points to the submitDir */
     unsigned fileCount;	/* Number of files that will be in submit if it were complete. */
     unsigned oldFiles;	/* Number of files in submission that were already in warehouse. */
     unsigned newFiles;	/* Number of files in submission that are newly uploaded. */
     long long byteCount;	/* Total bytes in submission including old and new */
     long long oldBytes;	/* Bytes in old files. */
     long long newBytes;	/* Bytes in new files (so far). */
     char *errorMessage;	/* If non-empty contains last error message. If empty submit is ok */
     unsigned fileIdInTransit;	/* edwFile.id of file currently being transferred or zero */
     unsigned metaChangeCount;	/* Number of files where metadata changed by submission */
     };
 
 void edwSubmitStaticLoad(char **row, struct edwSubmit *ret);
 /* Load a row from edwSubmit table into ret.  The contents of ret will
  * be replaced at the next call to this function. */
 
 struct edwSubmit *edwSubmitLoadByQuery(struct sqlConnection *conn, char *query);
 /* Load all edwSubmit 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 edwSubmitFreeList(). */
 
 void edwSubmitSaveToDb(struct sqlConnection *conn, struct edwSubmit *el, char *tableName, int updateSize);
 /* Save edwSubmit 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 edwSubmit *edwSubmitLoad(char **row);
 /* Load a edwSubmit from row fetched with select * from edwSubmit
  * from database.  Dispose of this with edwSubmitFree(). */
 
 struct edwSubmit *edwSubmitLoadAll(char *fileName);
 /* Load all edwSubmit from whitespace-separated file.
  * Dispose of this with edwSubmitFreeList(). */
 
 struct edwSubmit *edwSubmitLoadAllByChar(char *fileName, char chopper);
 /* Load all edwSubmit from chopper separated file.
  * Dispose of this with edwSubmitFreeList(). */
 
 #define edwSubmitLoadAllByTab(a) edwSubmitLoadAllByChar(a, '\t');
 /* Load all edwSubmit from tab separated file.
  * Dispose of this with edwSubmitFreeList(). */
 
 struct edwSubmit *edwSubmitCommaIn(char **pS, struct edwSubmit *ret);
 /* Create a edwSubmit out of a comma separated string. 
  * This will fill in ret if non-null, otherwise will
  * return a new edwSubmit */
 
 void edwSubmitFree(struct edwSubmit **pEl);
 /* Free a single dynamically allocated edwSubmit such as created
  * with edwSubmitLoad(). */
 
 void edwSubmitFreeList(struct edwSubmit **pList);
 /* Free a list of dynamically allocated edwSubmit's */
 
 void edwSubmitOutput(struct edwSubmit *el, FILE *f, char sep, char lastSep);
 /* Print out edwSubmit.  Separate fields with sep. Follow last field with lastSep. */
 
 #define edwSubmitTabOut(el,f) edwSubmitOutput(el,f,'\t','\n');
 /* Print out edwSubmit as a line in a tab-separated file. */
 
 #define edwSubmitCommaOut(el,f) edwSubmitOutput(el,f,',',',');
 /* Print out edwSubmit as a comma separated list including final comma. */
 
 #define EDWSUBSCRIBER_NUM_COLS 7
 
 extern char *edwSubscriberCommaSepFieldNames;
 
 struct edwSubscriber
 /* Subscribers can have programs that are called at various points during data submission */
     {
     struct edwSubscriber *next;  /* Next in singly linked list. */
     unsigned id;	/* ID of subscriber */
     char *name;	/* Name of subscriber */
     double runOrder;	/* Determines order subscribers run in. In case of tie lowest id wins. */
     char *filePattern;	/* A string with * and ? wildcards to match files we care about */
     char *dirPattern;	/* A string with * and ? wildcards to match hub dir URLs we care about */
     char *tagPattern;	/* A cgi-encoded string of tag=wildcard pairs. */
     char *onFileEndUpload;	/* A unix command string to run with a %u where file id goes */
     };
 
 void edwSubscriberStaticLoad(char **row, struct edwSubscriber *ret);
 /* Load a row from edwSubscriber table into ret.  The contents of ret will
  * be replaced at the next call to this function. */
 
 struct edwSubscriber *edwSubscriberLoadByQuery(struct sqlConnection *conn, char *query);
 /* Load all edwSubscriber 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 edwSubscriberFreeList(). */
 
 void edwSubscriberSaveToDb(struct sqlConnection *conn, struct edwSubscriber *el, char *tableName, int updateSize);
 /* Save edwSubscriber 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 edwSubscriber *edwSubscriberLoad(char **row);
 /* Load a edwSubscriber from row fetched with select * from edwSubscriber
  * from database.  Dispose of this with edwSubscriberFree(). */
 
 struct edwSubscriber *edwSubscriberLoadAll(char *fileName);
 /* Load all edwSubscriber from whitespace-separated file.
  * Dispose of this with edwSubscriberFreeList(). */
 
 struct edwSubscriber *edwSubscriberLoadAllByChar(char *fileName, char chopper);
 /* Load all edwSubscriber from chopper separated file.
  * Dispose of this with edwSubscriberFreeList(). */
 
 #define edwSubscriberLoadAllByTab(a) edwSubscriberLoadAllByChar(a, '\t');
 /* Load all edwSubscriber from tab separated file.
  * Dispose of this with edwSubscriberFreeList(). */
 
 struct edwSubscriber *edwSubscriberCommaIn(char **pS, struct edwSubscriber *ret);
 /* Create a edwSubscriber out of a comma separated string. 
  * This will fill in ret if non-null, otherwise will
  * return a new edwSubscriber */
 
 void edwSubscriberFree(struct edwSubscriber **pEl);
 /* Free a single dynamically allocated edwSubscriber such as created
  * with edwSubscriberLoad(). */
 
 void edwSubscriberFreeList(struct edwSubscriber **pList);
 /* Free a list of dynamically allocated edwSubscriber's */
 
 void edwSubscriberOutput(struct edwSubscriber *el, FILE *f, char sep, char lastSep);
 /* Print out edwSubscriber.  Separate fields with sep. Follow last field with lastSep. */
 
 #define edwSubscriberTabOut(el,f) edwSubscriberOutput(el,f,'\t','\n');
 /* Print out edwSubscriber as a line in a tab-separated file. */
 
 #define edwSubscriberCommaOut(el,f) edwSubscriberOutput(el,f,',',',');
 /* Print out edwSubscriber as a comma separated list including final comma. */
 
 #define EDWASSEMBLY_NUM_COLS 8
 
 extern char *edwAssemblyCommaSepFieldNames;
 
 struct edwAssembly
 /* An assembly - includes reference to a two bit file, and a little name and summary info. */
     {
     struct edwAssembly *next;  /* Next in singly linked list. */
     unsigned id;	/* Assembly ID */
     unsigned taxon;	/* NCBI taxon number */
     char *name;	/* Some human readable name to distinguish this from other collections of DNA */
     char *ucscDb;	/* Which UCSC database (mm9?  hg19?) associated with it. */
     unsigned twoBitId;	/* File ID of associated twoBit file */
     long long baseCount;	/* Count of bases including N's */
     long long realBaseCount;	/* Count of non-N bases in assembly */
     unsigned seqCount;	/* Number of chromosomes or other distinct sequences in assembly */
     };
 
 void edwAssemblyStaticLoad(char **row, struct edwAssembly *ret);
 /* Load a row from edwAssembly table into ret.  The contents of ret will
  * be replaced at the next call to this function. */
 
 struct edwAssembly *edwAssemblyLoadByQuery(struct sqlConnection *conn, char *query);
 /* Load all edwAssembly 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 edwAssemblyFreeList(). */
 
 void edwAssemblySaveToDb(struct sqlConnection *conn, struct edwAssembly *el, char *tableName, int updateSize);
 /* Save edwAssembly 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 edwAssembly *edwAssemblyLoad(char **row);
 /* Load a edwAssembly from row fetched with select * from edwAssembly
  * from database.  Dispose of this with edwAssemblyFree(). */
 
 struct edwAssembly *edwAssemblyLoadAll(char *fileName);
 /* Load all edwAssembly from whitespace-separated file.
  * Dispose of this with edwAssemblyFreeList(). */
 
 struct edwAssembly *edwAssemblyLoadAllByChar(char *fileName, char chopper);
 /* Load all edwAssembly from chopper separated file.
  * Dispose of this with edwAssemblyFreeList(). */
 
 #define edwAssemblyLoadAllByTab(a) edwAssemblyLoadAllByChar(a, '\t');
 /* Load all edwAssembly from tab separated file.
  * Dispose of this with edwAssemblyFreeList(). */
 
 struct edwAssembly *edwAssemblyCommaIn(char **pS, struct edwAssembly *ret);
 /* Create a edwAssembly out of a comma separated string. 
  * This will fill in ret if non-null, otherwise will
  * return a new edwAssembly */
 
 void edwAssemblyFree(struct edwAssembly **pEl);
 /* Free a single dynamically allocated edwAssembly such as created
  * with edwAssemblyLoad(). */
 
 void edwAssemblyFreeList(struct edwAssembly **pList);
 /* Free a list of dynamically allocated edwAssembly's */
 
 void edwAssemblyOutput(struct edwAssembly *el, FILE *f, char sep, char lastSep);
 /* Print out edwAssembly.  Separate fields with sep. Follow last field with lastSep. */
 
 #define edwAssemblyTabOut(el,f) edwAssemblyOutput(el,f,'\t','\n');
 /* Print out edwAssembly as a line in a tab-separated file. */
 
 #define edwAssemblyCommaOut(el,f) edwAssemblyOutput(el,f,',',',');
 /* Print out edwAssembly as a comma separated list including final comma. */
 
 #define EDWBIOSAMPLE_NUM_COLS 4
 
 extern char *edwBiosampleCommaSepFieldNames;
 
 struct edwBiosample
 /* A biosample - not much info here, just enough to drive analysis pipeline */
     {
     struct edwBiosample *next;  /* Next in singly linked list. */
     unsigned id;	/* Biosample id */
     char *term;	/* Human readable.  Shared with ENCODE2. */
     unsigned taxon;	/* NCBI taxon number - 9606 for human. */
     char *sex;	/* One letter code: M male, F female, B both, U unknown */
     };
 
 void edwBiosampleStaticLoad(char **row, struct edwBiosample *ret);
 /* Load a row from edwBiosample table into ret.  The contents of ret will
  * be replaced at the next call to this function. */
 
 struct edwBiosample *edwBiosampleLoadByQuery(struct sqlConnection *conn, char *query);
 /* Load all edwBiosample 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 edwBiosampleFreeList(). */
 
 void edwBiosampleSaveToDb(struct sqlConnection *conn, struct edwBiosample *el, char *tableName, int updateSize);
 /* Save edwBiosample 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 edwBiosample *edwBiosampleLoad(char **row);
 /* Load a edwBiosample from row fetched with select * from edwBiosample
  * from database.  Dispose of this with edwBiosampleFree(). */
 
 struct edwBiosample *edwBiosampleLoadAll(char *fileName);
 /* Load all edwBiosample from whitespace-separated file.
  * Dispose of this with edwBiosampleFreeList(). */
 
 struct edwBiosample *edwBiosampleLoadAllByChar(char *fileName, char chopper);
 /* Load all edwBiosample from chopper separated file.
  * Dispose of this with edwBiosampleFreeList(). */
 
 #define edwBiosampleLoadAllByTab(a) edwBiosampleLoadAllByChar(a, '\t');
 /* Load all edwBiosample from tab separated file.
  * Dispose of this with edwBiosampleFreeList(). */
 
 struct edwBiosample *edwBiosampleCommaIn(char **pS, struct edwBiosample *ret);
 /* Create a edwBiosample out of a comma separated string. 
  * This will fill in ret if non-null, otherwise will
  * return a new edwBiosample */
 
 void edwBiosampleFree(struct edwBiosample **pEl);
 /* Free a single dynamically allocated edwBiosample such as created
  * with edwBiosampleLoad(). */
 
 void edwBiosampleFreeList(struct edwBiosample **pList);
 /* Free a list of dynamically allocated edwBiosample's */
 
 void edwBiosampleOutput(struct edwBiosample *el, FILE *f, char sep, char lastSep);
 /* Print out edwBiosample.  Separate fields with sep. Follow last field with lastSep. */
 
 #define edwBiosampleTabOut(el,f) edwBiosampleOutput(el,f,'\t','\n');
 /* Print out edwBiosample as a line in a tab-separated file. */
 
 #define edwBiosampleCommaOut(el,f) edwBiosampleOutput(el,f,',',',');
 /* Print out edwBiosample as a comma separated list including final comma. */
 
 #define EDWEXPERIMENT_NUM_COLS 8
 
 extern char *edwExperimentCommaSepFieldNames;
 
 struct edwExperiment
 /* An experiment - ideally will include a couple of biological replicates. Downloaded from Stanford. */
     {
     struct edwExperiment *next;  /* Next in singly linked list. */
     char accession[17];	/* Something like ENCSR000CFA. ID shared with Stanford. */
     char *dataType;	/* Something liek RNA-seq, DNase-seq, ChIP-seq. Computed at UCSC. */
     char *lab;	/* Lab PI name and institution. Is lab.title at Stanford. */
     char *biosample;	/* Cell line name, tissue source, etc. Is biosample_term_name at Stanford. */
     char *rfa;	/* Something like 'ENCODE2' or 'ENCODE3'.  Is award.rfa at Stanford. */
     char *assayType;	/* Similar to dataType. Is assay_term_name at Stanford. */
     char *ipTarget;	/* The target for the immunoprecipitation in ChIP & RIP. */
     char *control;	/* Primary control for experiment.  Usually another experiment accession. */
     };
 
 void edwExperimentStaticLoad(char **row, struct edwExperiment *ret);
 /* Load a row from edwExperiment table into ret.  The contents of ret will
  * be replaced at the next call to this function. */
 
 struct edwExperiment *edwExperimentLoadByQuery(struct sqlConnection *conn, char *query);
 /* Load all edwExperiment 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 edwExperimentFreeList(). */
 
 void edwExperimentSaveToDb(struct sqlConnection *conn, struct edwExperiment *el, char *tableName, int updateSize);
 /* Save edwExperiment 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 edwExperiment *edwExperimentLoad(char **row);
 /* Load a edwExperiment from row fetched with select * from edwExperiment
  * from database.  Dispose of this with edwExperimentFree(). */
 
 struct edwExperiment *edwExperimentLoadAll(char *fileName);
 /* Load all edwExperiment from whitespace-separated file.
  * Dispose of this with edwExperimentFreeList(). */
 
 struct edwExperiment *edwExperimentLoadAllByChar(char *fileName, char chopper);
 /* Load all edwExperiment from chopper separated file.
  * Dispose of this with edwExperimentFreeList(). */
 
 #define edwExperimentLoadAllByTab(a) edwExperimentLoadAllByChar(a, '\t');
 /* Load all edwExperiment from tab separated file.
  * Dispose of this with edwExperimentFreeList(). */
 
 struct edwExperiment *edwExperimentCommaIn(char **pS, struct edwExperiment *ret);
 /* Create a edwExperiment out of a comma separated string. 
  * This will fill in ret if non-null, otherwise will
  * return a new edwExperiment */
 
 void edwExperimentFree(struct edwExperiment **pEl);
 /* Free a single dynamically allocated edwExperiment such as created
  * with edwExperimentLoad(). */
 
 void edwExperimentFreeList(struct edwExperiment **pList);
 /* Free a list of dynamically allocated edwExperiment's */
 
 void edwExperimentOutput(struct edwExperiment *el, FILE *f, char sep, char lastSep);
 /* Print out edwExperiment.  Separate fields with sep. Follow last field with lastSep. */
 
 #define edwExperimentTabOut(el,f) edwExperimentOutput(el,f,'\t','\n');
 /* Print out edwExperiment as a line in a tab-separated file. */
 
 #define edwExperimentCommaOut(el,f) edwExperimentOutput(el,f,',',',');
 /* Print out edwExperiment as a comma separated list including final comma. */
 
 #define EDWVALIDFILE_NUM_COLS 24
 
 extern char *edwValidFileCommaSepFieldNames;
 
 struct edwValidFile
 /* A file that has been uploaded, the format checked, and for which at least minimal metadata exists */
     {
     struct edwValidFile *next;  /* Next in singly linked list. */
     unsigned id;	/* ID of validated file */
     char licensePlate[17];	/* A abc123 looking license-platish thing. */
     unsigned fileId;	/* Pointer to file in main file table */
     char *format;	/* What format it's in from manifest */
     char *outputType;	/* What output_type it is from manifest */
     char *experiment;	/* What experiment it's in from manifest */
     char *replicate;	/* What replicate it is from manifest.  Values 1,2,3... pooled, or '' */
     char *validKey;	/* The valid_key tag from manifest */
     char *enrichedIn;	/* The enriched_in tag from manifest */
     char *ucscDb;	/* Something like hg19 or mm9 */
     long long itemCount;	/* # of items in file: reads for fastqs, lines for beds, bases w/data for wig. */
     long long basesInItems;	/* # of bases in items */
     long long sampleCount;	/* # of items in sample if we are just subsampling as we do for reads. */
     long long basesInSample;	/* # of bases in our sample */
     char *sampleBed;	/* Path to a temporary bed file holding sample items */
     double mapRatio;	/* Proportion of items that map to genome */
     double sampleCoverage;	/* Proportion of assembly covered by at least one item in sample */
     double depth;	/* Estimated genome-equivalents covered by possibly overlapping data */
     signed char singleQaStatus;	/* 0 = untested, 1 =  pass, -1 = fail, 2 = forced pass, -2 = forced fail */
     signed char replicateQaStatus;	/* 0 = untested, 1 = pass, -1 = fail, 2 = forced pass, -2 = forced fail */
     char *technicalReplicate;	/* Manifest's technical_replicate tag. Values 1,2,3... pooled or '' */
     char *pairedEnd;	/* The paired_end tag from the manifest.  Values 1,2 or '' */
     signed char qaVersion;	/* Version of QA pipeline making status decisions */
     double uniqueMapRatio;	/* Fraction of reads that map uniquely to genome for bams and fastqs */
     };
 
 void edwValidFileStaticLoad(char **row, struct edwValidFile *ret);
 /* Load a row from edwValidFile table into ret.  The contents of ret will
  * be replaced at the next call to this function. */
 
 struct edwValidFile *edwValidFileLoadByQuery(struct sqlConnection *conn, char *query);
 /* Load all edwValidFile 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 edwValidFileFreeList(). */
 
 void edwValidFileSaveToDb(struct sqlConnection *conn, struct edwValidFile *el, char *tableName, int updateSize);
 /* Save edwValidFile 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 edwValidFile *edwValidFileLoad(char **row);
 /* Load a edwValidFile from row fetched with select * from edwValidFile
  * from database.  Dispose of this with edwValidFileFree(). */
 
 struct edwValidFile *edwValidFileLoadAll(char *fileName);
 /* Load all edwValidFile from whitespace-separated file.
  * Dispose of this with edwValidFileFreeList(). */
 
 struct edwValidFile *edwValidFileLoadAllByChar(char *fileName, char chopper);
 /* Load all edwValidFile from chopper separated file.
  * Dispose of this with edwValidFileFreeList(). */
 
 #define edwValidFileLoadAllByTab(a) edwValidFileLoadAllByChar(a, '\t');
 /* Load all edwValidFile from tab separated file.
  * Dispose of this with edwValidFileFreeList(). */
 
 struct edwValidFile *edwValidFileCommaIn(char **pS, struct edwValidFile *ret);
 /* Create a edwValidFile out of a comma separated string. 
  * This will fill in ret if non-null, otherwise will
  * return a new edwValidFile */
 
 void edwValidFileFree(struct edwValidFile **pEl);
 /* Free a single dynamically allocated edwValidFile such as created
  * with edwValidFileLoad(). */
 
 void edwValidFileFreeList(struct edwValidFile **pList);
 /* Free a list of dynamically allocated edwValidFile's */
 
 void edwValidFileOutput(struct edwValidFile *el, FILE *f, char sep, char lastSep);
 /* Print out edwValidFile.  Separate fields with sep. Follow last field with lastSep. */
 
 #define edwValidFileTabOut(el,f) edwValidFileOutput(el,f,'\t','\n');
 /* Print out edwValidFile as a line in a tab-separated file. */
 
 #define edwValidFileCommaOut(el,f) edwValidFileOutput(el,f,',',',');
 /* Print out edwValidFile as a comma separated list including final comma. */
 
 #define EDWFASTQFILE_NUM_COLS 29
 
 extern char *edwFastqFileCommaSepFieldNames;
 
 struct edwFastqFile
 /* info on a file in fastq short read format beyond what's in edwValidFile */
     {
     struct edwFastqFile *next;  /* Next in singly linked list. */
     unsigned id;	/* ID in this table */
     unsigned fileId;	/* ID in edwFile table */
     long long sampleCount;	/* # of reads in sample. */
     long long basesInSample;	/* # of bases in sample. */
     char *sampleFileName;	/* Name of file containing sampleCount randomly selected items from file. */
     long long readCount;	/* # of reads in file */
     long long baseCount;	/* # of bases in all reads added up */
     double readSizeMean;	/* Average read size */
     double readSizeStd;	/* Standard deviation of read size */
     int readSizeMin;	/* Minimum read size */
     int readSizeMax;	/* Maximum read size */
     double qualMean;	/* Mean quality scored as 10*-log10(errorProbability) or close to it.  >25 is good */
     double qualStd;	/* Standard deviation of quality */
     double qualMin;	/* Minimum observed quality */
     double qualMax;	/* Maximum observed quality */
     char *qualType;	/* For fastq files either 'sanger' or 'illumina' */
     int qualZero;	/* For fastq files offset to get to zero value in ascii encoding */
     double atRatio;	/* Ratio of A+T to total sequence (not including Ns) */
     double aRatio;	/* Ratio of A to total sequence (including Ns) */
     double cRatio;	/* Ratio of C to total sequence (including Ns) */
     double gRatio;	/* Ratio of G to total sequence (including Ns) */
     double tRatio;	/* Ratio of T to total sequence (including Ns) */
     double nRatio;	/* Ratio of N or . to total sequence */
     double *qualPos;	/* Mean value for each position in a read up to some max. */
     double *aAtPos;	/* % of As at each pos */
     double *cAtPos;	/* % of Cs at each pos */
     double *gAtPos;	/* % of Gs at each pos */
     double *tAtPos;	/* % of Ts at each pos */
     double *nAtPos;	/* % of '.' or 'N' at each pos */
     };
 
 struct edwFastqFile *edwFastqFileLoadByQuery(struct sqlConnection *conn, char *query);
 /* Load all edwFastqFile 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 edwFastqFileFreeList(). */
 
 void edwFastqFileSaveToDb(struct sqlConnection *conn, struct edwFastqFile *el, char *tableName, int updateSize);
 /* Save edwFastqFile 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 edwFastqFile *edwFastqFileLoad(char **row);
 /* Load a edwFastqFile from row fetched with select * from edwFastqFile
  * from database.  Dispose of this with edwFastqFileFree(). */
 
 struct edwFastqFile *edwFastqFileLoadAll(char *fileName);
 /* Load all edwFastqFile from whitespace-separated file.
  * Dispose of this with edwFastqFileFreeList(). */
 
 struct edwFastqFile *edwFastqFileLoadAllByChar(char *fileName, char chopper);
 /* Load all edwFastqFile from chopper separated file.
  * Dispose of this with edwFastqFileFreeList(). */
 
 #define edwFastqFileLoadAllByTab(a) edwFastqFileLoadAllByChar(a, '\t');
 /* Load all edwFastqFile from tab separated file.
  * Dispose of this with edwFastqFileFreeList(). */
 
 struct edwFastqFile *edwFastqFileCommaIn(char **pS, struct edwFastqFile *ret);
 /* Create a edwFastqFile out of a comma separated string. 
  * This will fill in ret if non-null, otherwise will
  * return a new edwFastqFile */
 
 void edwFastqFileFree(struct edwFastqFile **pEl);
 /* Free a single dynamically allocated edwFastqFile such as created
  * with edwFastqFileLoad(). */
 
 void edwFastqFileFreeList(struct edwFastqFile **pList);
 /* Free a list of dynamically allocated edwFastqFile's */
 
 void edwFastqFileOutput(struct edwFastqFile *el, FILE *f, char sep, char lastSep);
 /* Print out edwFastqFile.  Separate fields with sep. Follow last field with lastSep. */
 
 #define edwFastqFileTabOut(el,f) edwFastqFileOutput(el,f,'\t','\n');
 /* Print out edwFastqFile as a line in a tab-separated file. */
 
 #define edwFastqFileCommaOut(el,f) edwFastqFileOutput(el,f,',',',');
 /* Print out edwFastqFile as a comma separated list including final comma. */
 
 #define EDWBAMFILE_NUM_COLS 17
 
 extern char *edwBamFileCommaSepFieldNames;
 
 struct edwBamFile
 /* Info on what is in a bam file beyond whet's in edwValidFile */
     {
     struct edwBamFile *next;  /* Next in singly linked list. */
     unsigned id;	/* ID in this table */
     unsigned fileId;	/* ID in edwFile table. */
     signed char isPaired;	/* Set to 1 if paired reads, 0 if single */
     signed char isSortedByTarget;	/* Set to 1 if sorted by target,pos */
     long long readCount;	/* # of reads in file */
     long long readBaseCount;	/* # of bases in all reads added up */
     long long mappedCount;	/* # of reads that map */
     long long uniqueMappedCount;	/* # of reads that map to a unique position */
     double readSizeMean;	/* Average read size */
     double readSizeStd;	/* Standard deviation of read size */
     int readSizeMin;	/* Minimum read size */
     int readSizeMax;	/* Maximum read size */
     int u4mReadCount;	/* Uniquely-mapped 4 million read actual read # (usually 4M) */
     int u4mUniquePos;	/* Unique positions in target of the 4M reads that map to single pos */
     double u4mUniqueRatio;	/* u4mUniqPos/u4mReadCount - measures library diversity */
     long long targetBaseCount;	/* Count of bases in mapping target */
     unsigned targetSeqCount;	/* Number of chromosomes or other distinct sequences in mapping target */
     };
 
 void edwBamFileStaticLoad(char **row, struct edwBamFile *ret);
 /* Load a row from edwBamFile table into ret.  The contents of ret will
  * be replaced at the next call to this function. */
 
 struct edwBamFile *edwBamFileLoadByQuery(struct sqlConnection *conn, char *query);
 /* Load all edwBamFile 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 edwBamFileFreeList(). */
 
 void edwBamFileSaveToDb(struct sqlConnection *conn, struct edwBamFile *el, char *tableName, int updateSize);
 /* Save edwBamFile 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 edwBamFile *edwBamFileLoad(char **row);
 /* Load a edwBamFile from row fetched with select * from edwBamFile
  * from database.  Dispose of this with edwBamFileFree(). */
 
 struct edwBamFile *edwBamFileLoadAll(char *fileName);
 /* Load all edwBamFile from whitespace-separated file.
  * Dispose of this with edwBamFileFreeList(). */
 
 struct edwBamFile *edwBamFileLoadAllByChar(char *fileName, char chopper);
 /* Load all edwBamFile from chopper separated file.
  * Dispose of this with edwBamFileFreeList(). */
 
 #define edwBamFileLoadAllByTab(a) edwBamFileLoadAllByChar(a, '\t');
 /* Load all edwBamFile from tab separated file.
  * Dispose of this with edwBamFileFreeList(). */
 
 struct edwBamFile *edwBamFileCommaIn(char **pS, struct edwBamFile *ret);
 /* Create a edwBamFile out of a comma separated string. 
  * This will fill in ret if non-null, otherwise will
  * return a new edwBamFile */
 
 void edwBamFileFree(struct edwBamFile **pEl);
 /* Free a single dynamically allocated edwBamFile such as created
  * with edwBamFileLoad(). */
 
 void edwBamFileFreeList(struct edwBamFile **pList);
 /* Free a list of dynamically allocated edwBamFile's */
 
 void edwBamFileOutput(struct edwBamFile *el, FILE *f, char sep, char lastSep);
 /* Print out edwBamFile.  Separate fields with sep. Follow last field with lastSep. */
 
 #define edwBamFileTabOut(el,f) edwBamFileOutput(el,f,'\t','\n');
 /* Print out edwBamFile as a line in a tab-separated file. */
 
 #define edwBamFileCommaOut(el,f) edwBamFileOutput(el,f,',',',');
 /* Print out edwBamFile as a comma separated list including final comma. */
 
 #define EDWQAFAIL_NUM_COLS 4
 
 extern char *edwQaFailCommaSepFieldNames;
 
 struct edwQaFail
 /* Record of a QA failure. */
     {
     struct edwQaFail *next;  /* Next in singly linked list. */
     unsigned id;	/* ID of failure */
     unsigned fileId;	/* File that failed */
     unsigned qaVersion;	/* QA pipeline version */
     char *reason;	/* reason for failure */
     };
 
 void edwQaFailStaticLoad(char **row, struct edwQaFail *ret);
 /* Load a row from edwQaFail table into ret.  The contents of ret will
  * be replaced at the next call to this function. */
 
 struct edwQaFail *edwQaFailLoadByQuery(struct sqlConnection *conn, char *query);
 /* Load all edwQaFail 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 edwQaFailFreeList(). */
 
 void edwQaFailSaveToDb(struct sqlConnection *conn, struct edwQaFail *el, char *tableName, int updateSize);
 /* Save edwQaFail 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 edwQaFail *edwQaFailLoad(char **row);
 /* Load a edwQaFail from row fetched with select * from edwQaFail
  * from database.  Dispose of this with edwQaFailFree(). */
 
 struct edwQaFail *edwQaFailLoadAll(char *fileName);
 /* Load all edwQaFail from whitespace-separated file.
  * Dispose of this with edwQaFailFreeList(). */
 
 struct edwQaFail *edwQaFailLoadAllByChar(char *fileName, char chopper);
 /* Load all edwQaFail from chopper separated file.
  * Dispose of this with edwQaFailFreeList(). */
 
 #define edwQaFailLoadAllByTab(a) edwQaFailLoadAllByChar(a, '\t');
 /* Load all edwQaFail from tab separated file.
  * Dispose of this with edwQaFailFreeList(). */
 
 struct edwQaFail *edwQaFailCommaIn(char **pS, struct edwQaFail *ret);
 /* Create a edwQaFail out of a comma separated string. 
  * This will fill in ret if non-null, otherwise will
  * return a new edwQaFail */
 
 void edwQaFailFree(struct edwQaFail **pEl);
 /* Free a single dynamically allocated edwQaFail such as created
  * with edwQaFailLoad(). */
 
 void edwQaFailFreeList(struct edwQaFail **pList);
 /* Free a list of dynamically allocated edwQaFail's */
 
 void edwQaFailOutput(struct edwQaFail *el, FILE *f, char sep, char lastSep);
 /* Print out edwQaFail.  Separate fields with sep. Follow last field with lastSep. */
 
 #define edwQaFailTabOut(el,f) edwQaFailOutput(el,f,'\t','\n');
 /* Print out edwQaFail as a line in a tab-separated file. */
 
 #define edwQaFailCommaOut(el,f) edwQaFailOutput(el,f,',',',');
 /* Print out edwQaFail as a comma separated list including final comma. */
 
 #define EDWQAENRICHTARGET_NUM_COLS 5
 
 extern char *edwQaEnrichTargetCommaSepFieldNames;
 
 struct edwQaEnrichTarget
 /* A target for our enrichment analysis. */
     {
     struct edwQaEnrichTarget *next;  /* Next in singly linked list. */
     unsigned id;	/* ID of this enrichment target */
     unsigned assemblyId;	/* Which assembly this goes to */
     char *name;	/* Something like 'exon' or 'promoter' */
     unsigned fileId;	/* A simple BED 3 format file that defines target. Bases covered are unique */
     long long targetSize;	/* Total number of bases covered by target */
     };
 
 void edwQaEnrichTargetStaticLoad(char **row, struct edwQaEnrichTarget *ret);
 /* Load a row from edwQaEnrichTarget table into ret.  The contents of ret will
  * be replaced at the next call to this function. */
 
 struct edwQaEnrichTarget *edwQaEnrichTargetLoadByQuery(struct sqlConnection *conn, char *query);
 /* Load all edwQaEnrichTarget 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 edwQaEnrichTargetFreeList(). */
 
 void edwQaEnrichTargetSaveToDb(struct sqlConnection *conn, struct edwQaEnrichTarget *el, char *tableName, int updateSize);
 /* Save edwQaEnrichTarget 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 edwQaEnrichTarget *edwQaEnrichTargetLoad(char **row);
 /* Load a edwQaEnrichTarget from row fetched with select * from edwQaEnrichTarget
  * from database.  Dispose of this with edwQaEnrichTargetFree(). */
 
 struct edwQaEnrichTarget *edwQaEnrichTargetLoadAll(char *fileName);
 /* Load all edwQaEnrichTarget from whitespace-separated file.
  * Dispose of this with edwQaEnrichTargetFreeList(). */
 
 struct edwQaEnrichTarget *edwQaEnrichTargetLoadAllByChar(char *fileName, char chopper);
 /* Load all edwQaEnrichTarget from chopper separated file.
  * Dispose of this with edwQaEnrichTargetFreeList(). */
 
 #define edwQaEnrichTargetLoadAllByTab(a) edwQaEnrichTargetLoadAllByChar(a, '\t');
 /* Load all edwQaEnrichTarget from tab separated file.
  * Dispose of this with edwQaEnrichTargetFreeList(). */
 
 struct edwQaEnrichTarget *edwQaEnrichTargetCommaIn(char **pS, struct edwQaEnrichTarget *ret);
 /* Create a edwQaEnrichTarget out of a comma separated string. 
  * This will fill in ret if non-null, otherwise will
  * return a new edwQaEnrichTarget */
 
 void edwQaEnrichTargetFree(struct edwQaEnrichTarget **pEl);
 /* Free a single dynamically allocated edwQaEnrichTarget such as created
  * with edwQaEnrichTargetLoad(). */
 
 void edwQaEnrichTargetFreeList(struct edwQaEnrichTarget **pList);
 /* Free a list of dynamically allocated edwQaEnrichTarget's */
 
 void edwQaEnrichTargetOutput(struct edwQaEnrichTarget *el, FILE *f, char sep, char lastSep);
 /* Print out edwQaEnrichTarget.  Separate fields with sep. Follow last field with lastSep. */
 
 #define edwQaEnrichTargetTabOut(el,f) edwQaEnrichTargetOutput(el,f,'\t','\n');
 /* Print out edwQaEnrichTarget as a line in a tab-separated file. */
 
 #define edwQaEnrichTargetCommaOut(el,f) edwQaEnrichTargetOutput(el,f,',',',');
 /* Print out edwQaEnrichTarget as a comma separated list including final comma. */
 
 #define EDWQAENRICH_NUM_COLS 8
 
 extern char *edwQaEnrichCommaSepFieldNames;
 
 struct edwQaEnrich
 /* An enrichment analysis applied to file. */
     {
     struct edwQaEnrich *next;  /* Next in singly linked list. */
     unsigned id;	/* ID of this enrichment analysis */
     unsigned fileId;	/* File we are looking at skeptically */
     unsigned qaEnrichTargetId;	/* Information about a target for this analysis */
     long long targetBaseHits;	/* Number of hits to bases in target */
     long long targetUniqHits;	/* Number of unique bases hit in target */
     double coverage;	/* Coverage of target - just targetUniqHits/targetSize */
     double enrichment;	/* Amount we hit target/amount we hit genome */
     double uniqEnrich;	/* coverage/sampleCoverage */
     };
 
 void edwQaEnrichStaticLoad(char **row, struct edwQaEnrich *ret);
 /* Load a row from edwQaEnrich table into ret.  The contents of ret will
  * be replaced at the next call to this function. */
 
 struct edwQaEnrich *edwQaEnrichLoadByQuery(struct sqlConnection *conn, char *query);
 /* Load all edwQaEnrich 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 edwQaEnrichFreeList(). */
 
 void edwQaEnrichSaveToDb(struct sqlConnection *conn, struct edwQaEnrich *el, char *tableName, int updateSize);
 /* Save edwQaEnrich 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 edwQaEnrich *edwQaEnrichLoad(char **row);
 /* Load a edwQaEnrich from row fetched with select * from edwQaEnrich
  * from database.  Dispose of this with edwQaEnrichFree(). */
 
 struct edwQaEnrich *edwQaEnrichLoadAll(char *fileName);
 /* Load all edwQaEnrich from whitespace-separated file.
  * Dispose of this with edwQaEnrichFreeList(). */
 
 struct edwQaEnrich *edwQaEnrichLoadAllByChar(char *fileName, char chopper);
 /* Load all edwQaEnrich from chopper separated file.
  * Dispose of this with edwQaEnrichFreeList(). */
 
 #define edwQaEnrichLoadAllByTab(a) edwQaEnrichLoadAllByChar(a, '\t');
 /* Load all edwQaEnrich from tab separated file.
  * Dispose of this with edwQaEnrichFreeList(). */
 
 struct edwQaEnrich *edwQaEnrichCommaIn(char **pS, struct edwQaEnrich *ret);
 /* Create a edwQaEnrich out of a comma separated string. 
  * This will fill in ret if non-null, otherwise will
  * return a new edwQaEnrich */
 
 void edwQaEnrichFree(struct edwQaEnrich **pEl);
 /* Free a single dynamically allocated edwQaEnrich such as created
  * with edwQaEnrichLoad(). */
 
 void edwQaEnrichFreeList(struct edwQaEnrich **pList);
 /* Free a list of dynamically allocated edwQaEnrich's */
 
 void edwQaEnrichOutput(struct edwQaEnrich *el, FILE *f, char sep, char lastSep);
 /* Print out edwQaEnrich.  Separate fields with sep. Follow last field with lastSep. */
 
 #define edwQaEnrichTabOut(el,f) edwQaEnrichOutput(el,f,'\t','\n');
 /* Print out edwQaEnrich as a line in a tab-separated file. */
 
 #define edwQaEnrichCommaOut(el,f) edwQaEnrichOutput(el,f,',',',');
 /* Print out edwQaEnrich as a comma separated list including final comma. */
 
 #define EDWQACONTAMTARGET_NUM_COLS 2
 
 extern char *edwQaContamTargetCommaSepFieldNames;
 
 struct edwQaContamTarget
 /* A target for our contamination analysis. */
     {
     struct edwQaContamTarget *next;  /* Next in singly linked list. */
     unsigned id;	/* ID of this contamination target */
     unsigned assemblyId;	/* Assembly we're aligning against to check  for contamination. */
     };
 
 void edwQaContamTargetStaticLoad(char **row, struct edwQaContamTarget *ret);
 /* Load a row from edwQaContamTarget table into ret.  The contents of ret will
  * be replaced at the next call to this function. */
 
 struct edwQaContamTarget *edwQaContamTargetLoadByQuery(struct sqlConnection *conn, char *query);
 /* Load all edwQaContamTarget 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 edwQaContamTargetFreeList(). */
 
 void edwQaContamTargetSaveToDb(struct sqlConnection *conn, struct edwQaContamTarget *el, char *tableName, int updateSize);
 /* Save edwQaContamTarget 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 edwQaContamTarget *edwQaContamTargetLoad(char **row);
 /* Load a edwQaContamTarget from row fetched with select * from edwQaContamTarget
  * from database.  Dispose of this with edwQaContamTargetFree(). */
 
 struct edwQaContamTarget *edwQaContamTargetLoadAll(char *fileName);
 /* Load all edwQaContamTarget from whitespace-separated file.
  * Dispose of this with edwQaContamTargetFreeList(). */
 
 struct edwQaContamTarget *edwQaContamTargetLoadAllByChar(char *fileName, char chopper);
 /* Load all edwQaContamTarget from chopper separated file.
  * Dispose of this with edwQaContamTargetFreeList(). */
 
 #define edwQaContamTargetLoadAllByTab(a) edwQaContamTargetLoadAllByChar(a, '\t');
 /* Load all edwQaContamTarget from tab separated file.
  * Dispose of this with edwQaContamTargetFreeList(). */
 
 struct edwQaContamTarget *edwQaContamTargetCommaIn(char **pS, struct edwQaContamTarget *ret);
 /* Create a edwQaContamTarget out of a comma separated string. 
  * This will fill in ret if non-null, otherwise will
  * return a new edwQaContamTarget */
 
 void edwQaContamTargetFree(struct edwQaContamTarget **pEl);
 /* Free a single dynamically allocated edwQaContamTarget such as created
  * with edwQaContamTargetLoad(). */
 
 void edwQaContamTargetFreeList(struct edwQaContamTarget **pList);
 /* Free a list of dynamically allocated edwQaContamTarget's */
 
 void edwQaContamTargetOutput(struct edwQaContamTarget *el, FILE *f, char sep, char lastSep);
 /* Print out edwQaContamTarget.  Separate fields with sep. Follow last field with lastSep. */
 
 #define edwQaContamTargetTabOut(el,f) edwQaContamTargetOutput(el,f,'\t','\n');
 /* Print out edwQaContamTarget as a line in a tab-separated file. */
 
 #define edwQaContamTargetCommaOut(el,f) edwQaContamTargetOutput(el,f,',',',');
 /* Print out edwQaContamTarget as a comma separated list including final comma. */
 
 #define EDWQACONTAM_NUM_COLS 4
 
 extern char *edwQaContamCommaSepFieldNames;
 
 struct edwQaContam
 /* Results of contamination analysis of one file against one target */
     {
     struct edwQaContam *next;  /* Next in singly linked list. */
     unsigned id;	/* ID of this contamination analysis */
     unsigned fileId;	/* File we are looking at skeptically */
     unsigned qaContamTargetId;	/* Information about a target for this analysis */
     double mapRatio;	/* Proportion of items that map to target */
     };
 
 void edwQaContamStaticLoad(char **row, struct edwQaContam *ret);
 /* Load a row from edwQaContam table into ret.  The contents of ret will
  * be replaced at the next call to this function. */
 
 struct edwQaContam *edwQaContamLoadByQuery(struct sqlConnection *conn, char *query);
 /* Load all edwQaContam 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 edwQaContamFreeList(). */
 
 void edwQaContamSaveToDb(struct sqlConnection *conn, struct edwQaContam *el, char *tableName, int updateSize);
 /* Save edwQaContam 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 edwQaContam *edwQaContamLoad(char **row);
 /* Load a edwQaContam from row fetched with select * from edwQaContam
  * from database.  Dispose of this with edwQaContamFree(). */
 
 struct edwQaContam *edwQaContamLoadAll(char *fileName);
 /* Load all edwQaContam from whitespace-separated file.
  * Dispose of this with edwQaContamFreeList(). */
 
 struct edwQaContam *edwQaContamLoadAllByChar(char *fileName, char chopper);
 /* Load all edwQaContam from chopper separated file.
  * Dispose of this with edwQaContamFreeList(). */
 
 #define edwQaContamLoadAllByTab(a) edwQaContamLoadAllByChar(a, '\t');
 /* Load all edwQaContam from tab separated file.
  * Dispose of this with edwQaContamFreeList(). */
 
 struct edwQaContam *edwQaContamCommaIn(char **pS, struct edwQaContam *ret);
 /* Create a edwQaContam out of a comma separated string. 
  * This will fill in ret if non-null, otherwise will
  * return a new edwQaContam */
 
 void edwQaContamFree(struct edwQaContam **pEl);
 /* Free a single dynamically allocated edwQaContam such as created
  * with edwQaContamLoad(). */
 
 void edwQaContamFreeList(struct edwQaContam **pList);
 /* Free a list of dynamically allocated edwQaContam's */
 
 void edwQaContamOutput(struct edwQaContam *el, FILE *f, char sep, char lastSep);
 /* Print out edwQaContam.  Separate fields with sep. Follow last field with lastSep. */
 
 #define edwQaContamTabOut(el,f) edwQaContamOutput(el,f,'\t','\n');
 /* Print out edwQaContam as a line in a tab-separated file. */
 
 #define edwQaContamCommaOut(el,f) edwQaContamOutput(el,f,',',',');
 /* Print out edwQaContam as a comma separated list including final comma. */
 
 #define EDWQAREPEAT_NUM_COLS 4
 
 extern char *edwQaRepeatCommaSepFieldNames;
 
 struct edwQaRepeat
 /* What percentage of data set aligns to various repeat classes. */
     {
     struct edwQaRepeat *next;  /* Next in singly linked list. */
     unsigned id;	/* ID of this repeat analysis. */
     unsigned fileId;	/* File we are analysing. */
     char *repeatClass;	/* RepeatMasker high end classification,  or 'total' for all repeats. */
     double mapRatio;	/* Proportion that map to this repeat. */
     };
 
 void edwQaRepeatStaticLoad(char **row, struct edwQaRepeat *ret);
 /* Load a row from edwQaRepeat table into ret.  The contents of ret will
  * be replaced at the next call to this function. */
 
 struct edwQaRepeat *edwQaRepeatLoadByQuery(struct sqlConnection *conn, char *query);
 /* Load all edwQaRepeat 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 edwQaRepeatFreeList(). */
 
 void edwQaRepeatSaveToDb(struct sqlConnection *conn, struct edwQaRepeat *el, char *tableName, int updateSize);
 /* Save edwQaRepeat 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 edwQaRepeat *edwQaRepeatLoad(char **row);
 /* Load a edwQaRepeat from row fetched with select * from edwQaRepeat
  * from database.  Dispose of this with edwQaRepeatFree(). */
 
 struct edwQaRepeat *edwQaRepeatLoadAll(char *fileName);
 /* Load all edwQaRepeat from whitespace-separated file.
  * Dispose of this with edwQaRepeatFreeList(). */
 
 struct edwQaRepeat *edwQaRepeatLoadAllByChar(char *fileName, char chopper);
 /* Load all edwQaRepeat from chopper separated file.
  * Dispose of this with edwQaRepeatFreeList(). */
 
 #define edwQaRepeatLoadAllByTab(a) edwQaRepeatLoadAllByChar(a, '\t');
 /* Load all edwQaRepeat from tab separated file.
  * Dispose of this with edwQaRepeatFreeList(). */
 
 struct edwQaRepeat *edwQaRepeatCommaIn(char **pS, struct edwQaRepeat *ret);
 /* Create a edwQaRepeat out of a comma separated string. 
  * This will fill in ret if non-null, otherwise will
  * return a new edwQaRepeat */
 
 void edwQaRepeatFree(struct edwQaRepeat **pEl);
 /* Free a single dynamically allocated edwQaRepeat such as created
  * with edwQaRepeatLoad(). */
 
 void edwQaRepeatFreeList(struct edwQaRepeat **pList);
 /* Free a list of dynamically allocated edwQaRepeat's */
 
 void edwQaRepeatOutput(struct edwQaRepeat *el, FILE *f, char sep, char lastSep);
 /* Print out edwQaRepeat.  Separate fields with sep. Follow last field with lastSep. */
 
 #define edwQaRepeatTabOut(el,f) edwQaRepeatOutput(el,f,'\t','\n');
 /* Print out edwQaRepeat as a line in a tab-separated file. */
 
 #define edwQaRepeatCommaOut(el,f) edwQaRepeatOutput(el,f,',',',');
 /* Print out edwQaRepeat as a comma separated list including final comma. */
 
 #define EDWQAPAIRSAMPLEOVERLAP_NUM_COLS 7
 
 extern char *edwQaPairSampleOverlapCommaSepFieldNames;
 
 struct edwQaPairSampleOverlap
 /* A comparison of the amount of overlap between two samples that cover ~0.1% to 10% of target. */
     {
     struct edwQaPairSampleOverlap *next;  /* Next in singly linked list. */
     unsigned id;	/* Id of this qa pair */
     unsigned elderFileId;	/* Id of elder (smaller fileId) in correlated pair */
     unsigned youngerFileId;	/* Id of younger (larger fileId) in correlated pair */
     long long elderSampleBases;	/* Number of bases in elder sample */
     long long youngerSampleBases;	/* Number of bases in younger sample */
     long long sampleOverlapBases;	/* Number of bases that overlap between younger and elder sample */
     double sampleSampleEnrichment;	/* Amount samples overlap more than expected. */
     };
 
 void edwQaPairSampleOverlapStaticLoad(char **row, struct edwQaPairSampleOverlap *ret);
 /* Load a row from edwQaPairSampleOverlap table into ret.  The contents of ret will
  * be replaced at the next call to this function. */
 
 struct edwQaPairSampleOverlap *edwQaPairSampleOverlapLoadByQuery(struct sqlConnection *conn, char *query);
 /* Load all edwQaPairSampleOverlap 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 edwQaPairSampleOverlapFreeList(). */
 
 void edwQaPairSampleOverlapSaveToDb(struct sqlConnection *conn, struct edwQaPairSampleOverlap *el, char *tableName, int updateSize);
 /* Save edwQaPairSampleOverlap 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 edwQaPairSampleOverlap *edwQaPairSampleOverlapLoad(char **row);
 /* Load a edwQaPairSampleOverlap from row fetched with select * from edwQaPairSampleOverlap
  * from database.  Dispose of this with edwQaPairSampleOverlapFree(). */
 
 struct edwQaPairSampleOverlap *edwQaPairSampleOverlapLoadAll(char *fileName);
 /* Load all edwQaPairSampleOverlap from whitespace-separated file.
  * Dispose of this with edwQaPairSampleOverlapFreeList(). */
 
 struct edwQaPairSampleOverlap *edwQaPairSampleOverlapLoadAllByChar(char *fileName, char chopper);
 /* Load all edwQaPairSampleOverlap from chopper separated file.
  * Dispose of this with edwQaPairSampleOverlapFreeList(). */
 
 #define edwQaPairSampleOverlapLoadAllByTab(a) edwQaPairSampleOverlapLoadAllByChar(a, '\t');
 /* Load all edwQaPairSampleOverlap from tab separated file.
  * Dispose of this with edwQaPairSampleOverlapFreeList(). */
 
 struct edwQaPairSampleOverlap *edwQaPairSampleOverlapCommaIn(char **pS, struct edwQaPairSampleOverlap *ret);
 /* Create a edwQaPairSampleOverlap out of a comma separated string. 
  * This will fill in ret if non-null, otherwise will
  * return a new edwQaPairSampleOverlap */
 
 void edwQaPairSampleOverlapFree(struct edwQaPairSampleOverlap **pEl);
 /* Free a single dynamically allocated edwQaPairSampleOverlap such as created
  * with edwQaPairSampleOverlapLoad(). */
 
 void edwQaPairSampleOverlapFreeList(struct edwQaPairSampleOverlap **pList);
 /* Free a list of dynamically allocated edwQaPairSampleOverlap's */
 
 void edwQaPairSampleOverlapOutput(struct edwQaPairSampleOverlap *el, FILE *f, char sep, char lastSep);
 /* Print out edwQaPairSampleOverlap.  Separate fields with sep. Follow last field with lastSep. */
 
 #define edwQaPairSampleOverlapTabOut(el,f) edwQaPairSampleOverlapOutput(el,f,'\t','\n');
 /* Print out edwQaPairSampleOverlap as a line in a tab-separated file. */
 
 #define edwQaPairSampleOverlapCommaOut(el,f) edwQaPairSampleOverlapOutput(el,f,',',',');
 /* Print out edwQaPairSampleOverlap as a comma separated list including final comma. */
 
 #define EDWQAPAIRCORRELATION_NUM_COLS 6
 
 extern char *edwQaPairCorrelationCommaSepFieldNames;
 
 struct edwQaPairCorrelation
 /* A correlation between two files of the same type. */
     {
     struct edwQaPairCorrelation *next;  /* Next in singly linked list. */
     unsigned id;	/* Id of this correlation pair */
     unsigned elderFileId;	/* Id of elder (smaller fileId) in correlated pair */
     unsigned youngerFileId;	/* Id of younger (larger fileId) in correlated pair */
     double pearsonInEnriched;	/* Pearson's R inside enriched areas where there is overlap */
     double pearsonOverall;	/* Pearson's R over all places where both have data */
     double pearsonClipped;	/* Pearson's R clipped at two standard deviations up from the mean */
     };
 
 void edwQaPairCorrelationStaticLoad(char **row, struct edwQaPairCorrelation *ret);
 /* Load a row from edwQaPairCorrelation table into ret.  The contents of ret will
  * be replaced at the next call to this function. */
 
 struct edwQaPairCorrelation *edwQaPairCorrelationLoadByQuery(struct sqlConnection *conn, char *query);
 /* Load all edwQaPairCorrelation 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 edwQaPairCorrelationFreeList(). */
 
 void edwQaPairCorrelationSaveToDb(struct sqlConnection *conn, struct edwQaPairCorrelation *el, char *tableName, int updateSize);
 /* Save edwQaPairCorrelation 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 edwQaPairCorrelation *edwQaPairCorrelationLoad(char **row);
 /* Load a edwQaPairCorrelation from row fetched with select * from edwQaPairCorrelation
  * from database.  Dispose of this with edwQaPairCorrelationFree(). */
 
 struct edwQaPairCorrelation *edwQaPairCorrelationLoadAll(char *fileName);
 /* Load all edwQaPairCorrelation from whitespace-separated file.
  * Dispose of this with edwQaPairCorrelationFreeList(). */
 
 struct edwQaPairCorrelation *edwQaPairCorrelationLoadAllByChar(char *fileName, char chopper);
 /* Load all edwQaPairCorrelation from chopper separated file.
  * Dispose of this with edwQaPairCorrelationFreeList(). */
 
 #define edwQaPairCorrelationLoadAllByTab(a) edwQaPairCorrelationLoadAllByChar(a, '\t');
 /* Load all edwQaPairCorrelation from tab separated file.
  * Dispose of this with edwQaPairCorrelationFreeList(). */
 
 struct edwQaPairCorrelation *edwQaPairCorrelationCommaIn(char **pS, struct edwQaPairCorrelation *ret);
 /* Create a edwQaPairCorrelation out of a comma separated string. 
  * This will fill in ret if non-null, otherwise will
  * return a new edwQaPairCorrelation */
 
 void edwQaPairCorrelationFree(struct edwQaPairCorrelation **pEl);
 /* Free a single dynamically allocated edwQaPairCorrelation such as created
  * with edwQaPairCorrelationLoad(). */
 
 void edwQaPairCorrelationFreeList(struct edwQaPairCorrelation **pList);
 /* Free a list of dynamically allocated edwQaPairCorrelation's */
 
 void edwQaPairCorrelationOutput(struct edwQaPairCorrelation *el, FILE *f, char sep, char lastSep);
 /* Print out edwQaPairCorrelation.  Separate fields with sep. Follow last field with lastSep. */
 
 #define edwQaPairCorrelationTabOut(el,f) edwQaPairCorrelationOutput(el,f,'\t','\n');
 /* Print out edwQaPairCorrelation as a line in a tab-separated file. */
 
 #define edwQaPairCorrelationCommaOut(el,f) edwQaPairCorrelationOutput(el,f,',',',');
 /* Print out edwQaPairCorrelation as a comma separated list including final comma. */
 
 #define EDWQAPAIREDENDFASTQ_NUM_COLS 9
 
 extern char *edwQaPairedEndFastqCommaSepFieldNames;
 
 struct edwQaPairedEndFastq
 /* Information about two paired-end fastqs */
     {
     struct edwQaPairedEndFastq *next;  /* Next in singly linked list. */
     unsigned id;	/* Id of this set of paired end files */
     unsigned fileId1;	/* Id of first in pair */
     unsigned fileId2;	/* Id of second in pair */
     double concordance;	/* % of uniquely aligning reads where pairs nearby and point right way */
     double distanceMean;	/* Average distance between reads */
     double distanceStd;	/* Standard deviation of distance */
     double distanceMin;	/* Minimum distance */
     double distanceMax;	/* Maximum distatnce */
     signed char recordComplete;	/* Flag to avoid a race condition. Ignore record if this is 0 */
     };
 
 void edwQaPairedEndFastqStaticLoad(char **row, struct edwQaPairedEndFastq *ret);
 /* Load a row from edwQaPairedEndFastq table into ret.  The contents of ret will
  * be replaced at the next call to this function. */
 
 struct edwQaPairedEndFastq *edwQaPairedEndFastqLoadByQuery(struct sqlConnection *conn, char *query);
 /* Load all edwQaPairedEndFastq 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 edwQaPairedEndFastqFreeList(). */
 
 void edwQaPairedEndFastqSaveToDb(struct sqlConnection *conn, struct edwQaPairedEndFastq *el, char *tableName, int updateSize);
 /* Save edwQaPairedEndFastq 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 edwQaPairedEndFastq *edwQaPairedEndFastqLoad(char **row);
 /* Load a edwQaPairedEndFastq from row fetched with select * from edwQaPairedEndFastq
  * from database.  Dispose of this with edwQaPairedEndFastqFree(). */
 
 struct edwQaPairedEndFastq *edwQaPairedEndFastqLoadAll(char *fileName);
 /* Load all edwQaPairedEndFastq from whitespace-separated file.
  * Dispose of this with edwQaPairedEndFastqFreeList(). */
 
 struct edwQaPairedEndFastq *edwQaPairedEndFastqLoadAllByChar(char *fileName, char chopper);
 /* Load all edwQaPairedEndFastq from chopper separated file.
  * Dispose of this with edwQaPairedEndFastqFreeList(). */
 
 #define edwQaPairedEndFastqLoadAllByTab(a) edwQaPairedEndFastqLoadAllByChar(a, '\t');
 /* Load all edwQaPairedEndFastq from tab separated file.
  * Dispose of this with edwQaPairedEndFastqFreeList(). */
 
 struct edwQaPairedEndFastq *edwQaPairedEndFastqCommaIn(char **pS, struct edwQaPairedEndFastq *ret);
 /* Create a edwQaPairedEndFastq out of a comma separated string. 
  * This will fill in ret if non-null, otherwise will
  * return a new edwQaPairedEndFastq */
 
 void edwQaPairedEndFastqFree(struct edwQaPairedEndFastq **pEl);
 /* Free a single dynamically allocated edwQaPairedEndFastq such as created
  * with edwQaPairedEndFastqLoad(). */
 
 void edwQaPairedEndFastqFreeList(struct edwQaPairedEndFastq **pList);
 /* Free a list of dynamically allocated edwQaPairedEndFastq's */
 
 void edwQaPairedEndFastqOutput(struct edwQaPairedEndFastq *el, FILE *f, char sep, char lastSep);
 /* Print out edwQaPairedEndFastq.  Separate fields with sep. Follow last field with lastSep. */
 
 #define edwQaPairedEndFastqTabOut(el,f) edwQaPairedEndFastqOutput(el,f,'\t','\n');
 /* Print out edwQaPairedEndFastq as a line in a tab-separated file. */
 
 #define edwQaPairedEndFastqCommaOut(el,f) edwQaPairedEndFastqOutput(el,f,',',',');
 /* Print out edwQaPairedEndFastq as a comma separated list including final comma. */
 
 #define EDWQAWIGSPOT_NUM_COLS 9
 
 extern char *edwQaWigSpotCommaSepFieldNames;
 
 struct edwQaWigSpot
 /* Information about proportion of signal in a wig that lands under spots in a peak or bed file */
     {
     struct edwQaWigSpot *next;  /* Next in singly linked list. */
     unsigned id;	/* Id of this wig/spot intersection */
     unsigned wigId;	/* Id of bigWig file */
     unsigned spotId;	/* Id of a bigBed file probably broadPeak or narrowPeak */
     double spotRatio;	/* Ratio of signal in spots to total signal,  between 0 and 1 */
     double enrichment;	/* Enrichment in spots compared to genome overall */
     long long basesInGenome;	/* Number of bases in genome */
     long long basesInSpots;	/* Number of bases in spots */
     double sumSignal;	/* Total signal */
     double spotSumSignal;	/* Total signal in spots */
     };
 
 void edwQaWigSpotStaticLoad(char **row, struct edwQaWigSpot *ret);
 /* Load a row from edwQaWigSpot table into ret.  The contents of ret will
  * be replaced at the next call to this function. */
 
 struct edwQaWigSpot *edwQaWigSpotLoadByQuery(struct sqlConnection *conn, char *query);
 /* Load all edwQaWigSpot 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 edwQaWigSpotFreeList(). */
 
 void edwQaWigSpotSaveToDb(struct sqlConnection *conn, struct edwQaWigSpot *el, char *tableName, int updateSize);
 /* Save edwQaWigSpot 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 edwQaWigSpot *edwQaWigSpotLoad(char **row);
 /* Load a edwQaWigSpot from row fetched with select * from edwQaWigSpot
  * from database.  Dispose of this with edwQaWigSpotFree(). */
 
 struct edwQaWigSpot *edwQaWigSpotLoadAll(char *fileName);
 /* Load all edwQaWigSpot from whitespace-separated file.
  * Dispose of this with edwQaWigSpotFreeList(). */
 
 struct edwQaWigSpot *edwQaWigSpotLoadAllByChar(char *fileName, char chopper);
 /* Load all edwQaWigSpot from chopper separated file.
  * Dispose of this with edwQaWigSpotFreeList(). */
 
 #define edwQaWigSpotLoadAllByTab(a) edwQaWigSpotLoadAllByChar(a, '\t');
 /* Load all edwQaWigSpot from tab separated file.
  * Dispose of this with edwQaWigSpotFreeList(). */
 
 struct edwQaWigSpot *edwQaWigSpotCommaIn(char **pS, struct edwQaWigSpot *ret);
 /* Create a edwQaWigSpot out of a comma separated string. 
  * This will fill in ret if non-null, otherwise will
  * return a new edwQaWigSpot */
 
 void edwQaWigSpotFree(struct edwQaWigSpot **pEl);
 /* Free a single dynamically allocated edwQaWigSpot such as created
  * with edwQaWigSpotLoad(). */
 
 void edwQaWigSpotFreeList(struct edwQaWigSpot **pList);
 /* Free a list of dynamically allocated edwQaWigSpot's */
 
 void edwQaWigSpotOutput(struct edwQaWigSpot *el, FILE *f, char sep, char lastSep);
 /* Print out edwQaWigSpot.  Separate fields with sep. Follow last field with lastSep. */
 
 #define edwQaWigSpotTabOut(el,f) edwQaWigSpotOutput(el,f,'\t','\n');
 /* Print out edwQaWigSpot as a line in a tab-separated file. */
 
 #define edwQaWigSpotCommaOut(el,f) edwQaWigSpotOutput(el,f,',',',');
 /* Print out edwQaWigSpot as a comma separated list including final comma. */
 
 #define EDWQADNASESINGLESTATS5M_NUM_COLS 18
 
 extern char *edwQaDnaseSingleStats5mCommaSepFieldNames;
 
 struct edwQaDnaseSingleStats5m
 /* Statistics calculated based on a 5M sample of DNAse aligned reads from a bam file. */
     {
     struct edwQaDnaseSingleStats5m *next;  /* Next in singly linked list. */
     unsigned id;	/* Id of this row in table. */
     unsigned fileId;	/* Id of bam file this is calculated from */
     unsigned sampleReads;	/* Number of mapped reads  */
     double spotRatio;	/* Ratio of signal in spots to total signal,  between 0 and 1 */
     double enrichment;	/* Enrichment in spots compared to genome overall */
     long long basesInGenome;	/* Number of bases in genome */
     long long basesInSpots;	/* Number of bases in spots */
     double sumSignal;	/* Total signal */
     double spotSumSignal;	/* Total signal in spots */
     char *estFragLength;	/* Up to three comma separated strand cross-correlation peaks */
     char *corrEstFragLen;	/* Up to three cross strand correlations at the given peaks */
     int phantomPeak;	/* Read length/phantom peak strand shift */
     double corrPhantomPeak;	/* Correlation value at phantom peak */
     int argMinCorr;	/* strand shift at which cross-correlation is lowest */
     double minCorr;	/* minimum value of cross-correlation */
     double nsc;	/* Normalized strand cross-correlation coefficient (NSC) = corrEstFragLen/minCorr */
     double rsc;	/* Relative strand cross-correlation coefficient (RSC) */
     int rscQualityTag;	/* based on thresholded RSC (codes: -2:veryLow,-1:Low,0:Medium,1:High,2:veryHigh) */
     };
 
 void edwQaDnaseSingleStats5mStaticLoad(char **row, struct edwQaDnaseSingleStats5m *ret);
 /* Load a row from edwQaDnaseSingleStats5m table into ret.  The contents of ret will
  * be replaced at the next call to this function. */
 
 struct edwQaDnaseSingleStats5m *edwQaDnaseSingleStats5mLoadByQuery(struct sqlConnection *conn, char *query);
 /* Load all edwQaDnaseSingleStats5m 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 edwQaDnaseSingleStats5mFreeList(). */
 
 void edwQaDnaseSingleStats5mSaveToDb(struct sqlConnection *conn, struct edwQaDnaseSingleStats5m *el, char *tableName, int updateSize);
 /* Save edwQaDnaseSingleStats5m 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 edwQaDnaseSingleStats5m *edwQaDnaseSingleStats5mLoad(char **row);
 /* Load a edwQaDnaseSingleStats5m from row fetched with select * from edwQaDnaseSingleStats5m
  * from database.  Dispose of this with edwQaDnaseSingleStats5mFree(). */
 
 struct edwQaDnaseSingleStats5m *edwQaDnaseSingleStats5mLoadAll(char *fileName);
 /* Load all edwQaDnaseSingleStats5m from whitespace-separated file.
  * Dispose of this with edwQaDnaseSingleStats5mFreeList(). */
 
 struct edwQaDnaseSingleStats5m *edwQaDnaseSingleStats5mLoadAllByChar(char *fileName, char chopper);
 /* Load all edwQaDnaseSingleStats5m from chopper separated file.
  * Dispose of this with edwQaDnaseSingleStats5mFreeList(). */
 
 #define edwQaDnaseSingleStats5mLoadAllByTab(a) edwQaDnaseSingleStats5mLoadAllByChar(a, '\t');
 /* Load all edwQaDnaseSingleStats5m from tab separated file.
  * Dispose of this with edwQaDnaseSingleStats5mFreeList(). */
 
 struct edwQaDnaseSingleStats5m *edwQaDnaseSingleStats5mCommaIn(char **pS, struct edwQaDnaseSingleStats5m *ret);
 /* Create a edwQaDnaseSingleStats5m out of a comma separated string. 
  * This will fill in ret if non-null, otherwise will
  * return a new edwQaDnaseSingleStats5m */
 
 void edwQaDnaseSingleStats5mFree(struct edwQaDnaseSingleStats5m **pEl);
 /* Free a single dynamically allocated edwQaDnaseSingleStats5m such as created
  * with edwQaDnaseSingleStats5mLoad(). */
 
 void edwQaDnaseSingleStats5mFreeList(struct edwQaDnaseSingleStats5m **pList);
 /* Free a list of dynamically allocated edwQaDnaseSingleStats5m's */
 
 void edwQaDnaseSingleStats5mOutput(struct edwQaDnaseSingleStats5m *el, FILE *f, char sep, char lastSep);
 /* Print out edwQaDnaseSingleStats5m.  Separate fields with sep. Follow last field with lastSep. */
 
 #define edwQaDnaseSingleStats5mTabOut(el,f) edwQaDnaseSingleStats5mOutput(el,f,'\t','\n');
 /* Print out edwQaDnaseSingleStats5m as a line in a tab-separated file. */
 
 #define edwQaDnaseSingleStats5mCommaOut(el,f) edwQaDnaseSingleStats5mOutput(el,f,',',',');
 /* Print out edwQaDnaseSingleStats5m as a comma separated list including final comma. */
 
 #define EDWJOB_NUM_COLS 7
 
 extern char *edwJobCommaSepFieldNames;
 
 struct edwJob
 /* A job to be run asynchronously and not too many all at once. */
     {
     struct edwJob *next;  /* Next in singly linked list. */
     unsigned id;	/* Job id */
     char *commandLine;	/* Command line of job */
     long long startTime;	/* Start time in seconds since 1970 */
     long long endTime;	/* End time in seconds since 1970 */
     char *stderr;	/* The output to stderr of the run - may be nonempty even with success */
     int returnCode;	/* The return code from system command - 0 for success */
     int pid;	/* Process ID for running processes */
     };
 
 void edwJobStaticLoad(char **row, struct edwJob *ret);
 /* Load a row from edwJob table into ret.  The contents of ret will
  * be replaced at the next call to this function. */
 
 struct edwJob *edwJobLoadByQuery(struct sqlConnection *conn, char *query);
 /* Load all edwJob 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 edwJobFreeList(). */
 
 void edwJobSaveToDb(struct sqlConnection *conn, struct edwJob *el, char *tableName, int updateSize);
 /* Save edwJob 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 edwJob *edwJobLoad(char **row);
 /* Load a edwJob from row fetched with select * from edwJob
  * from database.  Dispose of this with edwJobFree(). */
 
 struct edwJob *edwJobLoadAll(char *fileName);
 /* Load all edwJob from whitespace-separated file.
  * Dispose of this with edwJobFreeList(). */
 
 struct edwJob *edwJobLoadAllByChar(char *fileName, char chopper);
 /* Load all edwJob from chopper separated file.
  * Dispose of this with edwJobFreeList(). */
 
 #define edwJobLoadAllByTab(a) edwJobLoadAllByChar(a, '\t');
 /* Load all edwJob from tab separated file.
  * Dispose of this with edwJobFreeList(). */
 
 struct edwJob *edwJobCommaIn(char **pS, struct edwJob *ret);
 /* Create a edwJob out of a comma separated string. 
  * This will fill in ret if non-null, otherwise will
  * return a new edwJob */
 
 void edwJobFree(struct edwJob **pEl);
 /* Free a single dynamically allocated edwJob such as created
  * with edwJobLoad(). */
 
 void edwJobFreeList(struct edwJob **pList);
 /* Free a list of dynamically allocated edwJob's */
 
 void edwJobOutput(struct edwJob *el, FILE *f, char sep, char lastSep);
 /* Print out edwJob.  Separate fields with sep. Follow last field with lastSep. */
 
 #define edwJobTabOut(el,f) edwJobOutput(el,f,'\t','\n');
 /* Print out edwJob as a line in a tab-separated file. */
 
 #define edwJobCommaOut(el,f) edwJobOutput(el,f,',',',');
 /* Print out edwJob as a comma separated list including final comma. */
 
 #define EDWSUBMITJOB_NUM_COLS 7
 
 extern char *edwSubmitJobCommaSepFieldNames;
 
 struct edwSubmitJob
 /* A submission job to be run asynchronously and not too many all at once. */
     {
     struct edwSubmitJob *next;  /* Next in singly linked list. */
     unsigned id;	/* Job id */
     char *commandLine;	/* Command line of job */
     long long startTime;	/* Start time in seconds since 1970 */
     long long endTime;	/* End time in seconds since 1970 */
     char *stderr;	/* The output to stderr of the run - may be nonempty even with success */
     int returnCode;	/* The return code from system command - 0 for success */
     int pid;	/* Process ID for running processes */
     };
 
 void edwSubmitJobStaticLoad(char **row, struct edwSubmitJob *ret);
 /* Load a row from edwSubmitJob table into ret.  The contents of ret will
  * be replaced at the next call to this function. */
 
 struct edwSubmitJob *edwSubmitJobLoadByQuery(struct sqlConnection *conn, char *query);
 /* Load all edwSubmitJob 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 edwSubmitJobFreeList(). */
 
 void edwSubmitJobSaveToDb(struct sqlConnection *conn, struct edwSubmitJob *el, char *tableName, int updateSize);
 /* Save edwSubmitJob 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 edwSubmitJob *edwSubmitJobLoad(char **row);
 /* Load a edwSubmitJob from row fetched with select * from edwSubmitJob
  * from database.  Dispose of this with edwSubmitJobFree(). */
 
 struct edwSubmitJob *edwSubmitJobLoadAll(char *fileName);
 /* Load all edwSubmitJob from whitespace-separated file.
  * Dispose of this with edwSubmitJobFreeList(). */
 
 struct edwSubmitJob *edwSubmitJobLoadAllByChar(char *fileName, char chopper);
 /* Load all edwSubmitJob from chopper separated file.
  * Dispose of this with edwSubmitJobFreeList(). */
 
 #define edwSubmitJobLoadAllByTab(a) edwSubmitJobLoadAllByChar(a, '\t');
 /* Load all edwSubmitJob from tab separated file.
  * Dispose of this with edwSubmitJobFreeList(). */
 
 struct edwSubmitJob *edwSubmitJobCommaIn(char **pS, struct edwSubmitJob *ret);
 /* Create a edwSubmitJob out of a comma separated string. 
  * This will fill in ret if non-null, otherwise will
  * return a new edwSubmitJob */
 
 void edwSubmitJobFree(struct edwSubmitJob **pEl);
 /* Free a single dynamically allocated edwSubmitJob such as created
  * with edwSubmitJobLoad(). */
 
 void edwSubmitJobFreeList(struct edwSubmitJob **pList);
 /* Free a list of dynamically allocated edwSubmitJob's */
 
 void edwSubmitJobOutput(struct edwSubmitJob *el, FILE *f, char sep, char lastSep);
 /* Print out edwSubmitJob.  Separate fields with sep. Follow last field with lastSep. */
 
 #define edwSubmitJobTabOut(el,f) edwSubmitJobOutput(el,f,'\t','\n');
 /* Print out edwSubmitJob as a line in a tab-separated file. */
 
 #define edwSubmitJobCommaOut(el,f) edwSubmitJobOutput(el,f,',',',');
 /* Print out edwSubmitJob as a comma separated list including final comma. */
 
 /* -------------------------------- End autoSql Generated Code -------------------------------- */
 
 #endif /* ENCODEDATAWAREHOUSE_H */