25590f99da7cd6b2b029aafe6de0712f83ba1c48 tdreszer Fri Oct 29 13:55:58 2010 -0700 Moved mdb/cv terms white list to mdb library code. Now it can be used both by trackSearch and by metadata '...' table which will have links for select terms to hgEncodeVocab. diff --git src/hg/hgTracks/searchTracks.c src/hg/hgTracks/searchTracks.c index 41dee50..8db7846 100644 --- src/hg/hgTracks/searchTracks.c +++ src/hg/hgTracks/searchTracks.c @@ -168,125 +168,50 @@ { ix++; labels[ix] = pair->name; values[ix] = pair->val; freeMem(pair); } *pLabels = labels; *pTerms = values; return count; } static int metaDbVars(struct sqlConnection *conn, char *** metaVars, char *** metaLabels) // Search the assemblies metaDb table; If name == NULL, we search every metadata field. { char query[256]; -#define WHITE_LIST_COUNT 35 -#ifdef WHITE_LIST_COUNT -#define WHITE_LIST_VAR 0 -#define WHITE_LIST_LABEL 1 -char *whiteList[WHITE_LIST_COUNT][2] = { - {"age", "Age of experimental organism"}, - {"antibody", "Antibody or target protein"}, - {"origAssembly", "Assembly originally mapped to"}, - {"cell", "Cell, tissue or DNA sample"}, - {"localization", "Cell compartment"}, - {"control", "Control or Input for ChIPseq"}, - //{"controlId", "ControlId - explicit relationship"}, - {"dataType", "Experiment type"}, - {"dataVersion", "ENCODE release"}, - //{"fragLength", "Fragment Length for ChIPseq"}, - //{"freezeDate", "Gencode freeze date"}, - //{"level", "Gencode level"}, - //{"annotation", "Gencode annotation"}, - {"geoSample", "GEO accession"}, - {"growthProtocol", "Growth Protocol"}, - {"lab", "Lab producing data"}, - {"labVersion", "Lab specific details"}, - {"labExpId", "Lab specific identifier"}, - {"softwareVersion", "Lab specific informatics"}, - {"protocol", "Library Protocol"}, - {"mapAlgorithm", "Mapping algorithm"}, - {"readType", "Paired/Single reads lengths"}, - {"grant", "Principal Investigator"}, - {"replicate", "Replicate number"}, - //{"restrictionEnzyme","Restriction Enzyme used"}, - //{"ripAntibody", "RIP Antibody"}, - //{"ripTgtProtein", "RIP Target Protein"}, - {"rnaExtract", "RNA Extract"}, - {"seqPlatform", "Sequencing Platform"}, - {"setType", "Experiment or Input"}, - {"sex", "Sex of organism"}, - {"strain", "Strain of organism"}, - {"subId", "Submission Id"}, - {"treatment", "Treatment"}, - {"view", "View - Peaks or Signals"}, -}; -// FIXME: The whitelist should be a table or ra -// FIXME: The whitelist should be in list order -// FIXME: Should read in list, then verify that an mdb val exists. +struct slPair *oneTerm,*whiteList = mdbCvWhiteList(TRUE,FALSE); +int count =0, whiteCount = slCount(whiteList); +char **retVar = needMem(sizeof(char *) * whiteCount); +char **retLab = needMem(sizeof(char *) * whiteCount); -char **retVar = needMem(sizeof(char *) * WHITE_LIST_COUNT); -char **retLab = needMem(sizeof(char *) * WHITE_LIST_COUNT); -int ix,count; -for(ix=0,count=0;ix<WHITE_LIST_COUNT;ix++) +for(oneTerm=whiteList;oneTerm!=NULL;oneTerm=oneTerm->next) { - safef(query, sizeof(query), "select count(*) from metaDb where var = '%s'",whiteList[ix][WHITE_LIST_VAR]); + safef(query, sizeof(query), "select count(*) from metaDb where var = '%s'",oneTerm->name); if(sqlQuickNum(conn,query) > 0) { - retVar[count] = whiteList[ix][WHITE_LIST_VAR]; - retLab[count] = whiteList[ix][WHITE_LIST_LABEL]; + retVar[count] = oneTerm->name; + retLab[count] = oneTerm->val; count++; } } -if(count == 0) - { - freez(&retVar); - freez(&retLab); - } -*metaVars = retVar; -*metaLabels = retLab; -return count; +// Don't do it, unless you clone strings above: slPairFreeValsAndList(&whileList); -#else///ifndef WHITE_LIST_COUNT - -char **retVar; -char **retLab; -struct slName *el, *varList = NULL; -struct sqlResult *sr = NULL; -char **row = NULL; - -safef(query, sizeof(query), "select distinct var from metaDb order by var"); -sr = sqlGetResult(conn, query); -while ((row = sqlNextRow(sr)) != NULL) - slNameAddHead(&varList, row[0]); -sqlFreeResult(&sr); -retVar = needMem(sizeof(char *) * slCount(varList)); -retLab = needMem(sizeof(char *) * slCount(varList)); -slReverse(&varList); -//slNameSort(&varList); -int count = 0; -for (el = varList; el != NULL; el = el->next) - { - retVar[count] = el->name; - retLab[count] = el->name; - count++; - } *metaVars = retVar; -*whiteLabels = retLab; +*metaLabels = retLab; return count; -#endif///ndef WHITE_LIST_COUNT } static int printMdbSelects(struct sqlConnection *conn,struct cart *cart,boolean simpleSearch,char ***pMdbVar,char ***pMdbVal,int *numMetadataNonEmpty,int cols) // Prints a table of mdb selects if appropriate and returns number of them { // figure out how many metadata selects are visible. int delSearchSelect = cartUsualInt(cart, TRACK_SEARCH_DEL_ROW, 0); // 1-based row to delete int addSearchSelect = cartUsualInt(cart, TRACK_SEARCH_ADD_ROW, 0); // 1-based row to insert after int numMetadataSelects = 0; char **mdbVar = NULL; char **mdbVal = NULL; char **mdbVars = NULL; char **mdbVarLabels = NULL; int i, count = metaDbVars(conn, &mdbVars, &mdbVarLabels);