src/hg/instinct/extractData/extractData.c 1.4

1.4 2010/01/14 07:12:28 jsanborn
updated
Index: src/hg/instinct/extractData/extractData.c
===================================================================
RCS file: /projects/compbio/cvsroot/kent/src/hg/instinct/extractData/extractData.c,v
retrieving revision 1.3
retrieving revision 1.4
diff -b -B -U 4 -r1.3 -r1.4
--- src/hg/instinct/extractData/extractData.c	14 Jan 2010 05:45:49 -0000	1.3
+++ src/hg/instinct/extractData/extractData.c	14 Jan 2010 07:12:28 -0000	1.4
@@ -22,18 +22,21 @@
 /* Explain usage and exit. */
 {
 errAbort(
   "extractData \n"
-  "   extractData [OPTIONS] db table samplesgenes(s)\n"
+  "   extractData [OPTIONS] db table sample_id genes(s)\n"
   "options:\n"
   "   -median   Output median value if multiple probes\n"
+  "   -tcga     Handle TCGA ids, keeps only first 16 chars in sample_id\n"
   );
 }
 
 boolean median    = FALSE;
+boolean isTCGA = FALSE;
 
 static struct optionSpec options[] = {
     {"median", OPTION_BOOLEAN},
+    {"tcga", OPTION_BOOLEAN},
     {NULL, 0},
 };
 
 struct maGrouping *getMaGrouping(struct sqlConnection *hgConn, char *tableName)
@@ -171,8 +174,11 @@
 void extractData(char *tableName, char *sampleName, char *geneList)
 {
 if (!geneList)
     return;
+char *sample = sampleName;
+if (isTCGA)
+    sample = cloneStringZ(sampleName, 16);
 
 struct slName *genes = slNameListFromComma(geneList);
 
 struct hashEl *el;
@@ -185,15 +191,19 @@
 
 int i = 0, expId = -1;
 for (; i < allA->size; i++)
     {
-    if (!sameString(allA->names[i], sampleName))
+    char *maName = allA->names[i];
+    if (isTCGA)
+	maName = cloneStringZ(allA->names[i], 16);
+
+    if (!sameString(maName, sample))
 	continue;
     expId = allA->expIds[i];
     break;
     }
 if (expId < 0)
-    errAbort("Couldn't find sample %s in %s.\n", sampleName, tableName);
+    errAbort("Couldn't find sample %s in %s.\n", sample, tableName);
 
 struct hash *settings = getSettings(tableName);
 
 el = hashLookup(settings, "aliasTable");
@@ -245,8 +255,10 @@
     usage();
 
 if (optionExists("median"))
     median = TRUE;
+if (optionExists("tcga"))
+    isTCGA = TRUE;
 
 extractData(argv[1], argv[2], argv[3]);
 return 0;
 }