src/hg/hgTracks/encode.c 1.18

1.18 2009/02/27 19:08:45 tdreszer
Changed encodePeak support for individual filters: qValue, pValue, signalValue and score
Index: src/hg/hgTracks/encode.c
===================================================================
RCS file: /projects/compbio/cvsroot/kent/src/hg/hgTracks/encode.c,v
retrieving revision 1.17
retrieving revision 1.18
diff -b -B -U 4 -r1.17 -r1.18
--- src/hg/hgTracks/encode.c	21 Feb 2009 02:49:25 -0000	1.17
+++ src/hg/hgTracks/encode.c	27 Feb 2009 19:08:45 -0000	1.18
@@ -2,8 +2,9 @@
 
 #include "common.h"
 #include "hCommon.h"
 #include "hdb.h"
+#include "hui.h"
 #include "hgTracks.h"
 #include "customTrack.h"
 #include "encode.h"
 #include "encode/encodeRna.h"
@@ -153,43 +154,17 @@
 lf->components = sfList;
 return lf;
 }
 
+
 static char *encodePeakFilter(char *trackName, struct trackDb *tdb, boolean isCustom)
 {
 struct dyString *extraWhere = newDyString(128);
-boolean useScore = FALSE;
-if (!trackDbSettingClosestToHomeOn(tdb, "filterPvalQval"))
-    useScore = TRUE;
-if (useScore && cartVarExistsAnyLevel(cart,tdb,FALSE,ENCODE_PEAK_SCORE_FILTER_SUFFIX))
-    {
-    int score = cartUsualIntClosestToHome(cart,tdb,FALSE,ENCODE_PEAK_SCORE_FILTER_SUFFIX, -1);
-    if ((score < 0) || (score > 1000))
-        {
-        warn("invalid score %d set in filter for track %s", score, trackName);
-        cartRemoveVariableClosestToHome(cart,tdb,FALSE,ENCODE_PEAK_SCORE_FILTER_SUFFIX);
-        }
-    else
-    	dyStringPrintf(extraWhere, "(score >= %d)", score);
-    }
-else if (!useScore)
-    {
-    double pVal = cartUsualDoubleClosestToHome(cart,tdb,FALSE,ENCODE_PEAK_PVAL_FILTER_SUFFIX, 0);
-    if (pVal < 0)
-        {
-        warn("invalid p-value %lf set in filter for track %s", pVal, trackName);
-        cartRemoveVariableClosestToHome(cart,tdb,FALSE,ENCODE_PEAK_PVAL_FILTER_SUFFIX);
-        pVal = 0;
-        }
-    double qVal = cartUsualDoubleClosestToHome(cart,tdb,FALSE,ENCODE_PEAK_QVAL_FILTER_SUFFIX, 0);
-    if ((qVal < 0) || (qVal > 1))
-        {
-        warn("invalid q-value %lf set in filter for track %s", qVal, trackName);
-        cartRemoveVariableClosestToHome(cart,tdb,FALSE,ENCODE_PEAK_QVAL_FILTER_SUFFIX);
-        qVal = 0;
-        }
-    dyStringPrintf(extraWhere, "((pValue >= %f) or (pValue = -1)) and ((qValue >= %f) or (qValue = -1))", pVal, qVal);
-    }
+boolean and = FALSE;
+extraWhere = dyAddFilterAsInt(cart,tdb,extraWhere,SCORE_FILTER,"0:1000","score",&and);
+extraWhere = dyAddFilterAsDouble(cart,tdb,extraWhere,SIGNAL_FILTER,NULL,"signalValue",&and);
+extraWhere = dyAddFilterAsDouble(cart,tdb,extraWhere,PVALUE_FILTER,NULL,"pValue",&and);
+extraWhere = dyAddFilterAsDouble(cart,tdb,extraWhere,QVALUE_FILTER,NULL,"qValue",&and);
 
 if (sameString(extraWhere->string, ""))
     return NULL;
 return dyStringCannibalize(&extraWhere);