src/hg/instinct/raToDb/raToDb.c 1.11

1.11 2010/04/23 19:43:06 jsanborn
added series of checks for mistakes in microarrayGroups.ra
Index: src/hg/instinct/raToDb/raToDb.c
===================================================================
RCS file: /projects/compbio/cvsroot/kent/src/hg/instinct/raToDb/raToDb.c,v
retrieving revision 1.10
retrieving revision 1.11
diff -b -B -U 4 -r1.10 -r1.11
--- src/hg/instinct/raToDb/raToDb.c	23 Apr 2010 18:57:22 -0000	1.10
+++ src/hg/instinct/raToDb/raToDb.c	23 Apr 2010 19:43:06 -0000	1.11
@@ -238,9 +238,9 @@
 
 struct hash *mainGroup = (struct hash *)(hashFindVal(allGroups, groupings));
 if (!mainGroup)
     {
-    printf("%s not found\n", groupings);
+    printf("maGroups: %s not found\n", groupings);
     return NULL;
     }
 
 char *s = (char *)(hashFindVal(mainGroup, "all"));
@@ -250,8 +250,43 @@
 struct hash *tmpGroup = (struct hash *)(hashFindVal(allGroups, s));
 if (!tmpGroup)
     return NULL;
 
+struct slName *wordList;
+s = hashMustFindVal(tmpGroup, "expIds");
+wordList = slNameListFromComma(s);
+int numExpIds = slCount(wordList);
+if (numExpIds == 0)
+    {
+    printf("maGroups: expIds is empty\n");
+    return NULL;
+    }
+
+s = hashMustFindVal(tmpGroup, "names");
+wordList = slNameListFromComma(s);
+int numNames = slCount(wordList);
+if (numNames == 0)
+    {
+    printf("maGroups: names is empty\n");
+    return NULL;
+    }
+
+s = hashMustFindVal(tmpGroup, "groupSizes");
+wordList = slNameListFromComma(s);
+int numGroups = slCount(wordList);
+if (numGroups == 0)
+    {
+    printf("maGroups: groupSizes is empty\n");
+    return NULL;
+    }
+
+if (numGroups != numNames)
+    {
+    printf("maGroups: Bad format (groupSizes size "
+	   "= %d, != to names size = %d)\n", numGroups, numNames);
+    return NULL;
+    }
+
 AllocVar(ret);
 ret->allArrays = maHashToMaGrouping(tmpGroup);
 
 hashFreeList(&hashList);
@@ -489,9 +524,9 @@
 if (ra->aliasTable && !sqlTableExists(conn, ra->aliasTable))
     {
     printf("  WARN\t%s\taliasTable '%s' not in db.\n", ra->name, ra->aliasTable);
     ra->aliasTable = NULL;
-    }
+}
 
 ra->displayNameTable = getOptionalString(raHash, "displayNameTable", NULL);
 if (ra->displayNameTable && !sqlTableExists(conn, ra->displayNameTable))
     {