a44421a79fb36cc2036fe116b97ea3bc9590cd0c
braney
  Fri Dec 2 09:34:39 2011 -0800
removed rcsid (#295)
diff --git src/hg/lib/hapmapSnpsCombined.c src/hg/lib/hapmapSnpsCombined.c
index a6c194c..b48c31f 100644
--- src/hg/lib/hapmapSnpsCombined.c
+++ src/hg/lib/hapmapSnpsCombined.c
@@ -1,331 +1,330 @@
 /* hapmapSnpsCombined.c was originally generated by the autoSql program, which also 
  * generated hapmapSnpsCombined.h and hapmapSnpsCombined.sql.  This module links the database and
  * the RAM representation of objects. */
 
 #include "common.h"
 #include "linefile.h"
 #include "dystring.h"
 #include "jksql.h"
 #include "hapmapSnpsCombined.h"
 
-static char const rcsid[] = "$Id: hapmapSnpsCombined.c,v 1.3 2007/03/26 17:14:12 heather Exp $";
 
 void hapmapSnpsCombinedStaticLoad(char **row, struct hapmapSnpsCombined *ret)
 /* Load a row from hapmapSnpsCombined table into ret.  The contents of ret will
  * be replaced at the next call to this function. */
 {
 
 ret->chrom = row[0];
 ret->chromStart = sqlUnsigned(row[1]);
 ret->chromEnd = sqlUnsigned(row[2]);
 ret->name = row[3];
 ret->score = sqlUnsigned(row[4]);
 safecpy(ret->strand, sizeof(ret->strand), row[5]);
 ret->observed = row[6];
 safecpy(ret->allele1, sizeof(ret->allele1), row[7]);
 ret->homoCount1CEU = sqlUnsigned(row[8]);
 ret->homoCount1CHB = sqlUnsigned(row[9]);
 ret->homoCount1JPT = sqlUnsigned(row[10]);
 ret->homoCount1YRI = sqlUnsigned(row[11]);
 ret->allele2 = row[12];
 ret->homoCount2CEU = sqlUnsigned(row[13]);
 ret->homoCount2CHB = sqlUnsigned(row[14]);
 ret->homoCount2JPT = sqlUnsigned(row[15]);
 ret->homoCount2YRI = sqlUnsigned(row[16]);
 ret->heteroCountCEU = sqlUnsigned(row[17]);
 ret->heteroCountCHB = sqlUnsigned(row[18]);
 ret->heteroCountJPT = sqlUnsigned(row[19]);
 ret->heteroCountYRI = sqlUnsigned(row[20]);
 }
 
 struct hapmapSnpsCombined *hapmapSnpsCombinedLoad(char **row)
 /* Load a hapmapSnpsCombined from row fetched with select * from hapmapSnpsCombined
  * from database.  Dispose of this with hapmapSnpsCombinedFree(). */
 {
 struct hapmapSnpsCombined *ret;
 
 AllocVar(ret);
 ret->chrom = cloneString(row[0]);
 ret->chromStart = sqlUnsigned(row[1]);
 ret->chromEnd = sqlUnsigned(row[2]);
 ret->name = cloneString(row[3]);
 ret->score = sqlUnsigned(row[4]);
 safecpy(ret->strand, sizeof(ret->strand), row[5]);
 ret->observed = cloneString(row[6]);
 safecpy(ret->allele1, sizeof(ret->allele1), row[7]);
 ret->homoCount1CEU = sqlUnsigned(row[8]);
 ret->homoCount1CHB = sqlUnsigned(row[9]);
 ret->homoCount1JPT = sqlUnsigned(row[10]);
 ret->homoCount1YRI = sqlUnsigned(row[11]);
 ret->allele2 = cloneString(row[12]);
 ret->homoCount2CEU = sqlUnsigned(row[13]);
 ret->homoCount2CHB = sqlUnsigned(row[14]);
 ret->homoCount2JPT = sqlUnsigned(row[15]);
 ret->homoCount2YRI = sqlUnsigned(row[16]);
 ret->heteroCountCEU = sqlUnsigned(row[17]);
 ret->heteroCountCHB = sqlUnsigned(row[18]);
 ret->heteroCountJPT = sqlUnsigned(row[19]);
 ret->heteroCountYRI = sqlUnsigned(row[20]);
 return ret;
 }
 
 struct hapmapSnpsCombined *hapmapSnpsCombinedLoadAll(char *fileName) 
 /* Load all hapmapSnpsCombined from a whitespace-separated file.
  * Dispose of this with hapmapSnpsCombinedFreeList(). */
 {
 struct hapmapSnpsCombined *list = NULL, *el;
 struct lineFile *lf = lineFileOpen(fileName, TRUE);
 char *row[21];
 
 while (lineFileRow(lf, row))
     {
     el = hapmapSnpsCombinedLoad(row);
     slAddHead(&list, el);
     }
 lineFileClose(&lf);
 slReverse(&list);
 return list;
 }
 
 struct hapmapSnpsCombined *hapmapSnpsCombinedLoadAllByChar(char *fileName, char chopper) 
 /* Load all hapmapSnpsCombined from a chopper separated file.
  * Dispose of this with hapmapSnpsCombinedFreeList(). */
 {
 struct hapmapSnpsCombined *list = NULL, *el;
 struct lineFile *lf = lineFileOpen(fileName, TRUE);
 char *row[21];
 
 while (lineFileNextCharRow(lf, chopper, row, ArraySize(row)))
     {
     el = hapmapSnpsCombinedLoad(row);
     slAddHead(&list, el);
     }
 lineFileClose(&lf);
 slReverse(&list);
 return list;
 }
 
 struct hapmapSnpsCombined *hapmapSnpsCombinedCommaIn(char **pS, struct hapmapSnpsCombined *ret)
 /* Create a hapmapSnpsCombined out of a comma separated string. 
  * This will fill in ret if non-null, otherwise will
  * return a new hapmapSnpsCombined */
 {
 char *s = *pS;
 
 if (ret == NULL)
     AllocVar(ret);
 ret->chrom = sqlStringComma(&s);
 ret->chromStart = sqlUnsignedComma(&s);
 ret->chromEnd = sqlUnsignedComma(&s);
 ret->name = sqlStringComma(&s);
 ret->score = sqlUnsignedComma(&s);
 sqlFixedStringComma(&s, ret->strand, sizeof(ret->strand));
 ret->observed = sqlStringComma(&s);
 sqlFixedStringComma(&s, ret->allele1, sizeof(ret->allele1));
 ret->homoCount1CEU = sqlUnsignedComma(&s);
 ret->homoCount1CHB = sqlUnsignedComma(&s);
 ret->homoCount1JPT = sqlUnsignedComma(&s);
 ret->homoCount1YRI = sqlUnsignedComma(&s);
 ret->allele2 = sqlStringComma(&s);
 ret->homoCount2CEU = sqlUnsignedComma(&s);
 ret->homoCount2CHB = sqlUnsignedComma(&s);
 ret->homoCount2JPT = sqlUnsignedComma(&s);
 ret->homoCount2YRI = sqlUnsignedComma(&s);
 ret->heteroCountCEU = sqlUnsignedComma(&s);
 ret->heteroCountCHB = sqlUnsignedComma(&s);
 ret->heteroCountJPT = sqlUnsignedComma(&s);
 ret->heteroCountYRI = sqlUnsignedComma(&s);
 *pS = s;
 return ret;
 }
 
 void hapmapSnpsCombinedFree(struct hapmapSnpsCombined **pEl)
 /* Free a single dynamically allocated hapmapSnpsCombined such as created
  * with hapmapSnpsCombinedLoad(). */
 {
 struct hapmapSnpsCombined *el;
 
 if ((el = *pEl) == NULL) return;
 freeMem(el->chrom);
 freeMem(el->name);
 freeMem(el->observed);
 freeMem(el->allele2);
 freez(pEl);
 }
 
 void hapmapSnpsCombinedFreeList(struct hapmapSnpsCombined **pList)
 /* Free a list of dynamically allocated hapmapSnpsCombined's */
 {
 struct hapmapSnpsCombined *el, *next;
 
 for (el = *pList; el != NULL; el = next)
     {
     next = el->next;
     hapmapSnpsCombinedFree(&el);
     }
 *pList = NULL;
 }
 
 void hapmapSnpsCombinedOutput(struct hapmapSnpsCombined *el, FILE *f, char sep, char lastSep) 
 /* Print out hapmapSnpsCombined.  Separate fields with sep. Follow last field with lastSep. */
 {
 if (sep == ',') fputc('"',f);
 fprintf(f, "%s", el->chrom);
 if (sep == ',') fputc('"',f);
 fputc(sep,f);
 fprintf(f, "%u", el->chromStart);
 fputc(sep,f);
 fprintf(f, "%u", el->chromEnd);
 fputc(sep,f);
 if (sep == ',') fputc('"',f);
 fprintf(f, "%s", el->name);
 if (sep == ',') fputc('"',f);
 fputc(sep,f);
 fprintf(f, "%u", el->score);
 fputc(sep,f);
 if (sep == ',') fputc('"',f);
 fprintf(f, "%s", el->strand);
 if (sep == ',') fputc('"',f);
 fputc(sep,f);
 if (sep == ',') fputc('"',f);
 fprintf(f, "%s", el->observed);
 if (sep == ',') fputc('"',f);
 fputc(sep,f);
 if (sep == ',') fputc('"',f);
 fprintf(f, "%s", el->allele1);
 if (sep == ',') fputc('"',f);
 fputc(sep,f);
 fprintf(f, "%u", el->homoCount1CEU);
 fputc(sep,f);
 fprintf(f, "%u", el->homoCount1CHB);
 fputc(sep,f);
 fprintf(f, "%u", el->homoCount1JPT);
 fputc(sep,f);
 fprintf(f, "%u", el->homoCount1YRI);
 fputc(sep,f);
 if (sep == ',') fputc('"',f);
 fprintf(f, "%s", el->allele2);
 if (sep == ',') fputc('"',f);
 fputc(sep,f);
 fprintf(f, "%u", el->homoCount2CEU);
 fputc(sep,f);
 fprintf(f, "%u", el->homoCount2CHB);
 fputc(sep,f);
 fprintf(f, "%u", el->homoCount2JPT);
 fputc(sep,f);
 fprintf(f, "%u", el->homoCount2YRI);
 fputc(sep,f);
 fprintf(f, "%u", el->heteroCountCEU);
 fputc(sep,f);
 fprintf(f, "%u", el->heteroCountCHB);
 fputc(sep,f);
 fprintf(f, "%u", el->heteroCountJPT);
 fputc(sep,f);
 fprintf(f, "%u", el->heteroCountYRI);
 fputc(lastSep,f);
 }
 
 /* -------------------------------- End autoSql Generated Code -------------------------------- */
 
 
 int getPopCount(struct hapmapSnpsCombined *thisItem)
 {
 int ret = 0;
 if (thisItem->homoCount1CEU > 0 || thisItem->homoCount2CEU > 0 || thisItem->heteroCountCEU > 0) ret++;
 if (thisItem->homoCount1CHB > 0 || thisItem->homoCount2CHB > 0 || thisItem->heteroCountJPT > 0) ret++;
 if (thisItem->homoCount1JPT > 0 || thisItem->homoCount2JPT > 0 || thisItem->heteroCountCHB > 0) ret++;
 if (thisItem->homoCount1YRI > 0 || thisItem->homoCount2YRI > 0 || thisItem->heteroCountYRI > 0) ret++;
 return ret;
 }
 
 
 boolean isMixed(struct hapmapSnpsCombined *thisItem)
 /* return TRUE if different populations have a different major allele */
 /* don't need to consider heteroCount */
 {
 int allele1Count = 0;
 int allele2Count = 0;
 
 if (thisItem->homoCount1CEU >= thisItem->homoCount2CEU && thisItem->homoCount1CEU > 0) 
     allele1Count++;
 else if (thisItem->homoCount2CEU > 0)
     allele2Count++;
 
 if (thisItem->homoCount1CHB >= thisItem->homoCount2CHB && thisItem->homoCount1CHB > 0) 
     allele1Count++;
 else if (thisItem->homoCount2CHB > 0)
     allele2Count++;
 
 if (thisItem->homoCount1JPT >= thisItem->homoCount2JPT && thisItem->homoCount1JPT > 0) 
     allele1Count++;
 else if (thisItem->homoCount2JPT > 0)
     allele2Count++;
 
 if (thisItem->homoCount1YRI >= thisItem->homoCount2YRI && thisItem->homoCount1YRI > 0) 
     allele1Count++;
 else if (thisItem->homoCount2YRI > 0)
     allele2Count++;
 
 if (allele1Count > 0 && allele2Count > 0) return TRUE;
 
 return FALSE;
 }
 
 void printOne(struct hapmapSnpsCombined *thisItem)
 {
 verbose(1, "chrom = %s\n", thisItem->chrom);
 verbose(1, "chromStart = %d\n", thisItem->chromStart);
 verbose(1, "chromEnd = %d\n", thisItem->chromEnd);
 verbose(1, "name = %s\n", thisItem->name);
 verbose(1, "score = %d\n", thisItem->score);
 verbose(1, "strand = %s\n", thisItem->strand);
 verbose(1, "observed = %s\n", thisItem->observed);
 verbose(1, "allele1 = %s\n", thisItem->allele1);
 verbose(1, "homoCount1CEU = %d\n", thisItem->homoCount1CEU);
 verbose(1, "homoCount1CHB = %d\n", thisItem->homoCount1CHB);
 verbose(1, "homoCount1JPT = %d\n", thisItem->homoCount1JPT);
 verbose(1, "homoCount1YRI = %d\n", thisItem->homoCount1YRI);
 verbose(1, "allele2 = %s\n", thisItem->allele2);
 verbose(1, "homoCount2CEU = %d\n", thisItem->homoCount2CEU);
 verbose(1, "homoCount2CHB = %d\n", thisItem->homoCount2CHB);
 verbose(1, "homoCount2JPT = %d\n", thisItem->homoCount2JPT);
 verbose(1, "homoCount2YRI = %d\n", thisItem->homoCount2YRI);
 verbose(1, "heteroCountCEU = %d\n", thisItem->heteroCountCEU);
 verbose(1, "heteroCountCHB = %d\n", thisItem->heteroCountCHB);
 verbose(1, "heteroCountJPT = %d\n", thisItem->heteroCountJPT);
 verbose(1, "heteroCountYRI = %d\n", thisItem->heteroCountYRI);
 }
 
 
 int calcHet(struct hapmapSnpsCombined *thisItem)
 /* calculate heterozygosity (2pq) */
 /* convert from individuals to alleles */
 {
 int allele1Count = 0;
 int allele2Count = 0;
 int total = 0;
 float p = 0.0; // freq1
 float q = 0.0; // freq2
 
 allele1Count = allele1Count + (2 * thisItem->homoCount1CEU) + thisItem->heteroCountCEU;
 allele1Count = allele1Count + (2 * thisItem->homoCount1CHB) + thisItem->heteroCountCHB;
 allele1Count = allele1Count + (2 * thisItem->homoCount1JPT) + thisItem->heteroCountJPT;
 allele1Count = allele1Count + (2 * thisItem->homoCount1YRI) + thisItem->heteroCountYRI;
 
 allele2Count = allele2Count + (2 * thisItem->homoCount2CEU) + thisItem->heteroCountCEU;
 allele2Count = allele2Count + (2 * thisItem->homoCount2CHB) + thisItem->heteroCountCHB;
 allele2Count = allele2Count + (2 * thisItem->homoCount2JPT) + thisItem->heteroCountJPT;
 allele2Count = allele2Count + (2 * thisItem->homoCount2YRI) + thisItem->heteroCountYRI;
 
 total = allele1Count + allele2Count;
 
 if (total == 0) return 0;
 
 p = (float)allele1Count / (float)total;
 q = (float)allele2Count / (float)total;
 
 /* 1000 is to normalize to store as integer */
 return (int)1000*2*p*q;
 }