6aa2022b82fb742c780fec6dc197371c2f299f42
kent
  Mon Dec 28 20:49:54 2020 -0800
Making it so first word is expected to be in the new lables

diff --git src/utils/matrixRelabel/matrixRelabel.c src/utils/matrixRelabel/matrixRelabel.c
index 6097704..975a9c3 100644
--- src/utils/matrixRelabel/matrixRelabel.c
+++ src/utils/matrixRelabel/matrixRelabel.c
@@ -3,31 +3,30 @@
 #include "linefile.h"
 #include "hash.h"
 #include "options.h"
 #include "obscure.h"
 
 void usage()
 /* Explain usage and exit. */
 {
 errAbort(
   "matrixRelabel - Relabel rows and/or columns of a matrix\n"
   "usage:\n"
   "   matrixRelabel in.tsv out.tsv\n"
   "options:\n"
   "   -newCol=colLabels - one line per label in a file\n"
   "   -newRow=rowLabels - one line per label in a file\n"
-  "   -first=text - text to use as first word in file\n"
   );
 }
 
 /* Command line validation table. */
 static struct optionSpec options[] = {
    {"newCol", OPTION_STRING},
    {"newRow", OPTION_STRING},
    {"first", OPTION_STRING},
    {NULL, 0},
 };
 
 void readLineArray(char *fileName, int *retCount, char ***retLines)
 /* Return an array of strings, one for each line of file.  Return # of lines in file too */
 {
 /* This is sloppy with memory but it doesn't matter since we won't free it. */
@@ -60,62 +59,61 @@
 /* Set up stuff to relabel a row if new be */
 char **newRows = NULL;
 int newRowCount = 0;
 char *newRowFile = optionVal("newRow", NULL);
 if (newRowFile != NULL)
     readLineArray(newRowFile, &newRowCount, &newRows);
 
 struct lineFile *lf = lineFileOpen(input, TRUE);
 FILE *f = mustOpen(output, "w");
 
 /* Get first row.  Set colCount from it */
 char *line;
 int lineSize;
 lineFileNeedNext(lf, &line, &lineSize);
 int colCount = 0;
-char *word = nextTabWord(&line);
-char *first = optionVal("first", word);
-fprintf(f, "%s", first);
 if (newColumns != NULL)
     {
     colCount = newColumnCount;
+    fputs(newColumns[0], f);
     int i;
-    for (i=0; i<colCount; ++i)
+    for (i=1; i<colCount; ++i)
         fprintf(f, "\t%s", newColumns[i]);
     fputc('\n', f);
     }
 else
     {
+    char *word;
     while ((word = nextTabWord(&line)) != NULL)
          {
 	 fprintf(f, "\t%s", word);
 	 colCount += 1;
 	 }
     fputc('\n', f);
     }
 
 int rowIx = 0;
 while (lineFileNext(lf, &line, NULL))
     {
     if (newRows != NULL)
         {
+	++rowIx;
 	if (rowIx >= newRowCount)
 	    errAbort("Not enough lines in %s for %s", newRowFile, input);
 	fputs(newRows[rowIx], f);
-	nextTabWord(&line); // skip over old first word
 	fputc('\t', f);
-	++rowIx;
+	nextTabWord(&line); // skip over old first word
 	}
     fputs(line, f);
     fputc('\n', f);
     }
 }
 
 int main(int argc, char *argv[])
 /* Process command line. */
 {
 optionInit(&argc, argv, options);
 if (argc != 3)
     usage();
 matrixRelabel(argv[1], argv[2]);
 return 0;
 }