src/hg/hgTracks/expRatioTracks.c 1.48
1.48 2010/01/22 22:52:02 aamp
Microarray tracks and custom microarray tracks now support the "expColor" trackDb setting which can be "redGreen" (default), "redBlue", "redBlueOnWhite", "yellowBlue", or "redBlueOnYellow". Some things wre changed around so that adding more color options in the future is a cinch.
Index: src/hg/hgTracks/expRatioTracks.c
===================================================================
RCS file: /projects/compbio/cvsroot/kent/src/hg/hgTracks/expRatioTracks.c,v
retrieving revision 1.47
retrieving revision 1.48
diff -b -B -U 4 -r1.47 -r1.48
--- src/hg/hgTracks/expRatioTracks.c 5 Dec 2009 01:29:00 -0000 1.47
+++ src/hg/hgTracks/expRatioTracks.c 22 Jan 2010 22:52:02 -0000 1.48
@@ -896,25 +896,15 @@
float absVal = fabs(val);
int colorIndex = 0;
float maxDeviation = 1.0;
char colorVarName[256];
-boolean redGreen = TRUE;
-boolean redBlueOnWhite = FALSE;
-safef(colorVarName, sizeof(colorVarName), "%s.color", tg->tdb->tableName);
+char *tdbSetting = trackDbSettingOrDefault(tg->tdb, "expColor", "redGreen");
+char *colorVal = NULL;
+enum expColorType expColor;
-/* decide color scheme flags */
-if (!sameString(cartUsualString(cart, colorVarName, "redGreen"), "redGreen"))
- {
- if (sameString(cartUsualString(cart, colorVarName, "redGreen"), "redBlueOnWhite"))
- {
- redBlueOnWhite = TRUE;
- redGreen = FALSE;
- }
- else
- {
- redGreen = FALSE;
- }
- }
+safef(colorVarName, sizeof(colorVarName), "%s.color", tg->tdb->tableName);
+colorVal = cartUsualString(cart, colorVarName, tdbSetting);
+expColor = getExpColorType(colorVal);
/* if val is error value show make it gray */
if(val <= -10000)
return shadesOfGray[5];
@@ -926,12 +916,9 @@
/* if(tg->limitedVis == tvDense) */
/* absVal = absVal/1000; */
if(!exprBedColorsMade)
- {
makeRedGreenShades(hvg);
- makeRedBlueShadesOnWhiteBackground(hvg);
- }
/* cap the value to be less than or equal to maxDeviation */
if (tg->limitedVis == tvFull || tg->limitedVis == tvPack || tg->limitedVis == tvSquish)
maxDeviation = fullMax;
@@ -949,41 +936,27 @@
*/
colorIndex = (int)(absVal * maxRGBShade/maxDeviation);
if(val > 0)
{
- if (redGreen)
- {
- return (shadesOfRed[colorIndex]);
- }
- else
- {
- if (redBlueOnWhite)
- {
- return (shadesOfRedOnWhite[colorIndex]);
- }
+ if (expColor == yellowBlue)
+ return shadesOfYellow[colorIndex];
+ else if (expColor == redBlueOnWhite)
+ return shadesOfRedOnWhite[colorIndex];
+ else if (expColor == redBlueOnYellow)
+ return shadesOfRedOnYellow[colorIndex];
else
- {
- return (shadesOfYellow[colorIndex]);
- }
- }
+ return shadesOfRed[colorIndex];
}
else
{
- if (redGreen)
- {
- return (shadesOfGreen[colorIndex]);
- }
- else
- {
- if (redBlueOnWhite)
- {
- return (shadesOfBlueOnWhite[colorIndex]);
- }
+ if (expColor == redGreen)
+ return shadesOfGreen[colorIndex];
+ else if (expColor == redBlueOnWhite)
+ return shadesOfBlueOnWhite[colorIndex];
+ else if (expColor == redBlueOnYellow)
+ return shadesOfBlueOnYellow[colorIndex];
else
- {
- return (shadesOfBlue[colorIndex]);
- }
- }
+ return shadesOfBlue[colorIndex];
}
}
void makeLoweShades(struct hvGfx *hvg)