d6ca123aefad1ef858ed599214d6fc32496cc348
kate
Wed Aug 21 09:33:04 2013 -0700
Special handling of antibody target ('factor') CV links. As a single factor may have multiple antibodies, show all for the factor. Response to QA question 6, note 52. refs #100097
diff --git src/hg/hgc/peakClusters.c src/hg/hgc/peakClusters.c
index b2aa75f..9eb22e5 100644
--- src/hg/hgc/peakClusters.c
+++ src/hg/hgc/peakClusters.c
@@ -194,30 +194,39 @@
char **row;
while ((row = sqlNextRow(sr)) != NULL)
{
printf("
\n");
webPrintIntCell(++displayNo);
printControlledVocabFields(row+1, fieldCount, fieldList, vocabFile, vocabHash);
printMetadataForTable(row[0]);
}
sqlFreeResult(&sr);
freez(&vocabFile);
dyStringFree(&query);
}
+static char *factorSourceVocabLink(char *vocabFile, char *fieldName, char *fieldVal)
+/* Add link to show controlled vocabulary entry for term.
+ * Handles 'target' (factor) which is a special case, derived from Antibody entries */
+{
+char *vocabType = (sameString(fieldName, "target") || sameString(fieldName, "factor")) ?
+ "target" : "term";
+return controlledVocabLink(vocabFile, vocabType, fieldVal, fieldVal, fieldVal, "");
+}
+
static void printFactorSourceTableHits(struct factorSource *cluster, struct sqlConnection *conn,
char *sourceTable, char *inputTrackTable,
struct slName *fieldList, boolean invert, char *vocab)
/* Put out a lines in an html table that shows assayed sources that have hits in this
* cluster, or if invert is set, that have misses. */
{
char *vocabFile = NULL;
if (vocab)
{
vocabFile = cloneFirstWord(vocab);
}
/* Make the monster SQL query to get all assays*/
struct dyString *query = dyStringNew(0);
sqlDyStringPrintf(query, "select %s.id,%s.name,%s.tableName", sourceTable, sourceTable,
@@ -243,38 +252,40 @@
{
if (cluster->expNums[i] == sourceId)
{
hit = TRUE;
signal = cluster->expScores[i];
break;
}
}
if (hit ^ invert)
{
printf("
\n");
webPrintIntCell(++displayNo);
if (!invert)
webPrintDoubleCell(signal);
webPrintLinkCell(row[1]);
- int i;
- for (i=0; inext)
{
- char *fieldVal = row[i+3];
+ char *fieldVal = row[i+offset];
if (vocab)
{
- char *link = controlledVocabLink(vocabFile, "term",
- fieldVal, fieldVal, fieldVal, "");
+ char *link = cloneString(factorSourceVocabLink(vocabFile, field->name, fieldVal));
webPrintLinkCell(link);
}
else
webPrintLinkCell(fieldVal);
}
printMetadataForTable(row[2]);
}
}
sqlFreeResult(&sr);
freez(&vocabFile);
dyStringFree(&query);
}
void doPeakClusterListItemsAssayed()
/* Put up a page that shows all experiments associated with a cluster track. */