e70152e44cc66cc599ff6b699eb8adc07f3e656a
kent
  Sat May 24 21:09:34 2014 -0700
Adding Copyright NNNN Regents of the University of California to all files I believe with reasonable certainty were developed under UCSC employ or as part of Genome Browser copyright assignment.
diff --git src/hg/lib/samAlignment.c src/hg/lib/samAlignment.c
index 2f41116..f3aa17a 100644
--- src/hg/lib/samAlignment.c
+++ src/hg/lib/samAlignment.c
@@ -1,211 +1,214 @@
 /* samAlignment.c was originally generated by the autoSql program, which also
  * generated samAlignment.h and samAlignment.sql.  This module links the database and
  * the RAM representation of objects. */
 
+/* Copyright (C) 2014 The Regents of the University of California 
+ * See README in this or parent directory for licensing information. */
+
 #include "common.h"
 #include "linefile.h"
 #include "dystring.h"
 #include "jksql.h"
 #include "samAlignment.h"
 
 
 void samAlignmentStaticLoad(char **row, struct samAlignment *ret)
 /* Load a row from samAlignment table into ret.  The contents of ret will
  * be replaced at the next call to this function. */
 {
 
 ret->qName = row[0];
 ret->flag = sqlUnsigned(row[1]);
 ret->rName = row[2];
 ret->pos = sqlUnsigned(row[3]);
 ret->mapQ = sqlUnsigned(row[4]);
 ret->cigar = row[5];
 ret->rNext = row[6];
 ret->pNext = sqlSigned(row[7]);
 ret->tLen = sqlSigned(row[8]);
 ret->seq = row[9];
 ret->qual = row[10];
 ret->tagTypeVals = row[11];
 }
 
 struct samAlignment *samAlignmentLoad(char **row)
 /* Load a samAlignment from row fetched with select * from samAlignment
  * from database.  Dispose of this with samAlignmentFree(). */
 {
 struct samAlignment *ret;
 
 AllocVar(ret);
 ret->qName = cloneString(row[0]);
 ret->flag = sqlUnsigned(row[1]);
 ret->rName = cloneString(row[2]);
 ret->pos = sqlUnsigned(row[3]);
 ret->mapQ = sqlUnsigned(row[4]);
 ret->cigar = cloneString(row[5]);
 ret->rNext = cloneString(row[6]);
 ret->pNext = sqlSigned(row[7]);
 ret->tLen = sqlSigned(row[8]);
 ret->seq = cloneString(row[9]);
 ret->qual = cloneString(row[10]);
 ret->tagTypeVals = cloneString(row[11]);
 return ret;
 }
 
 struct samAlignment *samAlignmentLoadAll(char *fileName)
 /* Load all samAlignment from a whitespace-separated file.
  * Dispose of this with samAlignmentFreeList(). */
 {
 struct samAlignment *list = NULL, *el;
 struct lineFile *lf = lineFileOpen(fileName, TRUE);
 char *row[12];
 
 while (lineFileRow(lf, row))
     {
     el = samAlignmentLoad(row);
     slAddHead(&list, el);
     }
 lineFileClose(&lf);
 slReverse(&list);
 return list;
 }
 
 struct samAlignment *samAlignmentLoadAllByChar(char *fileName, char chopper)
 /* Load all samAlignment from a chopper separated file.
  * Dispose of this with samAlignmentFreeList(). */
 {
 struct samAlignment *list = NULL, *el;
 struct lineFile *lf = lineFileOpen(fileName, TRUE);
 char *row[12];
 
 while (lineFileNextCharRow(lf, chopper, row, ArraySize(row)))
     {
     el = samAlignmentLoad(row);
     slAddHead(&list, el);
     }
 lineFileClose(&lf);
 slReverse(&list);
 return list;
 }
 
 struct samAlignment *samAlignmentCommaIn(char **pS, struct samAlignment *ret)
 /* Create a samAlignment out of a comma separated string.
  * This will fill in ret if non-null, otherwise will
  * return a new samAlignment */
 {
 char *s = *pS;
 
 if (ret == NULL)
     AllocVar(ret);
 ret->qName = sqlStringComma(&s);
 ret->flag = sqlUnsignedComma(&s);
 ret->rName = sqlStringComma(&s);
 ret->pos = sqlUnsignedComma(&s);
 ret->mapQ = sqlUnsignedComma(&s);
 ret->cigar = sqlStringComma(&s);
 ret->rNext = sqlStringComma(&s);
 ret->pNext = sqlSignedComma(&s);
 ret->tLen = sqlSignedComma(&s);
 ret->seq = sqlStringComma(&s);
 ret->qual = sqlStringComma(&s);
 ret->tagTypeVals = sqlStringComma(&s);
 *pS = s;
 return ret;
 }
 
 void samAlignmentFree(struct samAlignment **pEl)
 /* Free a single dynamically allocated samAlignment such as created
  * with samAlignmentLoad(). */
 {
 struct samAlignment *el;
 
 if ((el = *pEl) == NULL) return;
 freeMem(el->qName);
 freeMem(el->rName);
 freeMem(el->cigar);
 freeMem(el->rNext);
 freeMem(el->seq);
 freeMem(el->qual);
 freeMem(el->tagTypeVals);
 freez(pEl);
 }
 
 void samAlignmentFreeList(struct samAlignment **pList)
 /* Free a list of dynamically allocated samAlignment's */
 {
 struct samAlignment *el, *next;
 
 for (el = *pList; el != NULL; el = next)
     {
     next = el->next;
     samAlignmentFree(&el);
     }
 *pList = NULL;
 }
 
 void samAlignmentOutput(struct samAlignment *el, FILE *f, char sep, char lastSep)
 /* Print out samAlignment.  Separate fields with sep. Follow last field with lastSep. */
 {
 if (sep == ',') fputc('"',f);
 fprintf(f, "%s", el->qName);
 if (sep == ',') fputc('"',f);
 fputc(sep,f);
 fprintf(f, "%u", el->flag);
 fputc(sep,f);
 if (sep == ',') fputc('"',f);
 fprintf(f, "%s", el->rName);
 if (sep == ',') fputc('"',f);
 fputc(sep,f);
 fprintf(f, "%u", el->pos);
 fputc(sep,f);
 fprintf(f, "%u", el->mapQ);
 fputc(sep,f);
 if (sep == ',') fputc('"',f);
 fprintf(f, "%s", el->cigar);
 if (sep == ',') fputc('"',f);
 fputc(sep,f);
 if (sep == ',') fputc('"',f);
 fprintf(f, "%s", el->rNext);
 if (sep == ',') fputc('"',f);
 fputc(sep,f);
 fprintf(f, "%d", el->pNext);
 fputc(sep,f);
 fprintf(f, "%d", el->tLen);
 fputc(sep,f);
 if (sep == ',') fputc('"',f);
 fprintf(f, "%s", el->seq);
 if (sep == ',') fputc('"',f);
 fputc(sep,f);
 if (sep == ',') fputc('"',f);
 fprintf(f, "%s", el->qual);
 if (sep == ',') fputc('"',f);
 fputc(sep,f);
 if (sep == ',') fputc('"',f);
 fprintf(f, "%s", el->tagTypeVals);
 if (sep == ',') fputc('"',f);
 fputc(lastSep,f);
 }
 
 /* -------------------------------- End autoSql Generated Code -------------------------------- */
 static char *samAlignmentAutoSqlString =
 "table samAlignment\n"
 "\"The fields of a SAM short read alignment, the text version of BAM.\"\n"
     "(\n"
     "string qName;	\"Query template name - name of a read\"\n"
     "ushort flag;	\"Flags.  0x10 set for reverse complement.  See SAM docs for others.\"\n"
     "string rName;	\"Reference sequence name (often a chromosome)\"\n"
     "uint pos;		\"1 based position\"\n"
     "ubyte mapQ;		\"Mapping quality 0-255, 255 is best\"\n"
     "string cigar;	\"CIGAR encoded alignment string.\"\n"
     "string rNext;	\"Ref sequence for next (mate) read. '=' if same as rName, '*' if no mate\"\n"
     "int pNext;		\"Position (1-based) of next (mate) sequence. May be -1 or 0 if no mate\"\n"
     "int tLen;	        \"Size of DNA template for mated pairs.  -size for one of mate pairs\"\n"
     "string seq;		\"Query template sequence\"\n"
     "string qual;	\"ASCII of Phred-scaled base QUALity+33.  Just '*' if no quality scores\"\n"
     "string tagTypeVals; \"Tab-delimited list of tag:type:value optional extra fields\"\n"
     ")\n";
 
 struct asObject *samAsObj()
 // Return asObject describing fields of SAM/BAM
 {
 return asParseText(samAlignmentAutoSqlString);
 }