582e9ba06d359ee167ca2a60b495cd6d4fe9d69f
angie
  Wed Feb 12 10:56:52 2014 -0800
In snp125+ track controls, don't show options for class and validationcodes that don't appear in the table.  For example, validation codes
by-hapmap and by-1000genomes are not applicable for non-human genomes;
and only a subset of the class codes are used, sometimes a small subset.
refs #12490

diff --git src/hg/hgTracks/variation.c src/hg/hgTracks/variation.c
index 1aed8d7..2497fd4 100644
--- src/hg/hgTracks/variation.c
+++ src/hg/hgTracks/variation.c
@@ -674,31 +674,31 @@
 
 snp125MolTypeFilter = snp125FilterFromCart(cart, track, "molType", &snp125MolTypeFilterOn);
 snp125ClassFilter = snp125FilterFromCart(cart, track, "class", &snp125ClassFilterOn);
 snp125ValidFilter = snp125FilterFromCart(cart, track, "valid", &snp125ValidFilterOn);
 snp125FuncFilter = snp125FilterFromCart(cart, track, "func", &snp125FuncFilterOn);
 snp125LocTypeFilter = snp125FilterFromCart(cart, track, "locType", &snp125LocTypeFilterOn);
 snp132ExceptionFilter = snp125FilterFromCart(cart, track, "exceptions", &snp132ExceptionFilterOn);
 snp132BitfieldFilter = snp125FilterFromCart(cart, track, "bitfields", &snp132BitfieldFilterOn);
 
 snp125ColorSource = snp125ColorSourceFromCart(cart, tdb);
 snp125MolTypeCart = snp125ColorsFromCart(track, "molType", snp125MolTypeOldColorVars, TRUE,
 					 snp125MolTypeDefault, snp125MolTypeArraySize);
 snp125ClassCart = snp125ColorsFromCart(track, "class", snp125ClassOldColorVars, TRUE,
 				       snp125ClassDefault, snp125ClassArraySize);
 snp125ValidCart = snp125ColorsFromCart(track, "valid", snp125ValidOldColorVars, TRUE,
-				       snp125ValidDefault, snp125ValidArraySize);
+				       snp125ValidDefault, snp125ValidArraySizeHuman);
 snp125LocTypeCart = snp125ColorsFromCart(track, "locType", snp125LocTypeOldColorVars, TRUE,
 					 snp125LocTypeDefault, snp125LocTypeArraySize);
 snp132ExceptionsCart = snp125ColorsFromCart(track, "exception", snp132ExceptionVarName, FALSE,
 					    snp132ExceptionDefault, snp132ExceptionArraySize);
 snp132BitfieldsCart = snp125ColorsFromCart(track, "bitfields", snp132BitfieldVarName, FALSE,
 					   snp132BitfieldDefault, snp132BitfieldArraySize);
 
 snp125FuncCartColorHash = hashNew(0);
 snp125FuncCartNameHash = hashNew(0);
 int i;
 for (i=0; i < snp125FuncArraySize; i++)
     {
     safef(cartVar, sizeof(cartVar), "%s.func%s",
 	  track, snp125OldColorVarToNew(snp125FuncOldColorVars[i], "func"));
     char *cartVal = cartUsualString(cart, cartVar,
@@ -775,31 +775,31 @@
     switch (snp125ColorSource)
 	{
 	case snp125ColorSourceMolType:
 	    valIx = stringArrayIx(snp->molType, snp125MolTypeDataName, snp125MolTypeArraySize);
 	    if (valIx < 0)
 		valIx = 0;
 	    color = snp125MolTypeCart[valIx];
 	    break;
 	case snp125ColorSourceClass:
 	    valIx = stringArrayIx(snp->class, snp125ClassDataName, snp125ClassArraySize);
 	    if (valIx < 0)
 		valIx = 0;
 	    color = snp125ClassCart[valIx];
 	    break;
 	case snp125ColorSourceValid:
-	    for (i=0; i < snp125ValidArraySize; i++)
+	    for (i=0; i < snp125ValidArraySizeHuman; i++)
 		if (containsStringNoCase(snp->valid, snp125ValidDataName[i]))
 		    color = snp125ValidCart[i];
 	    break;
 	case snp125ColorSourceFunc:
 	    {
 	    safecpy(buf, sizeof(buf), snp->func);
 	    wordCount = chopCommas(buf, words);
 	    for (i = 0;  i < wordCount;  i++)
 		{
 		enum snp125Color wordColor = hashIntVal(snp125FuncCartColorHash, words[i]);
 		if (snp125ColorCmpRaw(snp125ColorToMg((enum snpColorEnum)wordColor), "wordColor",
 				      snp125ColorToMg((enum snpColorEnum)color), "color") > 0)
 		    color = wordColor;
 		}
 	    }