5f9691856204ac8ee77795e1b9a89f82f825d2cd
angie
  Fri Jun 1 14:39:34 2012 -0700
Feature #6152 (Variant Annotation Integrator): added getHeader methodto annoStreamer so formatters can include primary source's header in
output -- header is a crucial part of some formats e.g. VCF.

diff --git src/lib/annoFormatTab.c src/lib/annoFormatTab.c
index 25d0e67..8961d28 100644
--- src/lib/annoFormatTab.c
+++ src/lib/annoFormatTab.c
@@ -34,31 +34,35 @@
     if (isFirst && i == 0)
 	fputc('#', f);
     else
 	fputc('\t', f);
     fputs(col->def->name, f);
     }
 }
 
 static void aftInitialize(struct annoFormatter *vSelf, struct annoGratorQuery *query)
 /* Print header, regardless of whether we get any data after this. */
 {
 vSelf->query = query;
 struct annoFormatTab *self = (struct annoFormatTab *)vSelf;
 if (self->needHeader)
     {
-    printHeaderColumns(self->f, query->primarySource, TRUE);
+    struct annoStreamer *primary = query->primarySource;
+    char *primaryHeader = primary->getHeader(primary);
+    if (isNotEmpty(primaryHeader))
+	printf("# Header from primary input:\n%s", primaryHeader);
+    printHeaderColumns(self->f, primary, TRUE);
     struct annoStreamer *grator = (struct annoStreamer *)(query->integrators);
     for (;  grator != NULL;  grator = grator->next)
 	printHeaderColumns(self->f, grator, FALSE);
     fputc('\n', self->f);
     self->needHeader = FALSE;
     }
 }
 
 static double wigRowAvg(struct annoRow *row)
 /* Return the average value of floats in row->data. */
 {
 float *vector = row->data;
 int len = row->end - row->start;
 double sum = 0.0;
 int i;