void saveDataTable(struct expData *data) /* Create the expression table the cheesey way by loading a temp tab file. */ { FILE *f = hgCreateTabFile(".", table); struct expData *cur; struct sqlConnection *conn = sqlConnect(database); expDataCreateTable(conn, table); for (cur = data; cur != NULL; cur = cur->next) expDataTabOut(cur, f); hgLoadTabFile(conn, ".", table, &f); hgRemoveTabFile(".", table); sqlDisconnect(&conn); }
void hgRatioMicroarray(char *absTable, char *relTable) /* hgRatioMicroarray - Create a ratio form of microarray. */ { struct maMedSpec *clumpList = NULL; struct sqlConnection *conn = sqlConnect(database); struct sqlResult *sr; char **row; char query[512]; struct expData *ex; struct expData *expList = NULL; FILE *f = hgCreateTabFile(tabDir, relTable); int rowCount = 0; if (clump != NULL) clumpList = maMedSpecReadAll(clump); sqlSafef(query, sizeof(query), "select * from %s", absTable); sr = sqlGetResult(conn, query); while ((row = sqlNextRow(sr)) != NULL) { ex = expDataLoad(row); slAddHead(&expList, ex); if (limit != 0 && rowCount >= limit) break; } sqlFreeResult(&sr); slReverse(&expList); maExpDataClipMin(expList, minAbsVal, minAbsVal * 0.5); maExpDataAddConstant(expList, c); if (transpose) maExpDataDoLogRatioTranspose(expList, doAverage); else maExpDataDoLogRatioGivenMedSpec(expList, clumpList, (doAverage) ? useMean : useMedian); for (ex = expList; ex != NULL; ex = ex->next) expDataTabOut(ex, f); if (doLoad) { expDataCreateTable(conn, relTable); hgLoadTabFile(conn, tabDir, relTable, &f); hgRemoveTabFile(tabDir, relTable); } expDataFreeList(&expList); sqlDisconnect(&conn); }
void makeNewDataTable(char *database, char *oldTable, struct maMedSpec *medList, char *newTable) /* Create new table in database based on medians of data * in old table as defined by medList. */ { struct sqlConnection *conn = sqlConnect(database); FILE *f = hgCreateTabFile(tabDir, newTable); struct expData *expList, *medianExpList, *exp; expList = expDataLoadTableLimit(conn, oldTable, limit); medianExpList = maExpDataMedianFromSpec(expList, medList, minExps); for (exp = medianExpList; exp != NULL; exp = exp->next) expDataTabOut(exp, f); if (doLoad) { expDataCreateTable(conn, newTable); hgLoadTabFile(conn, tabDir, newTable, &f); hgRemoveTabFile(tabDir, newTable); } expDataFreeList(&expList); expDataFreeList(&medianExpList); sqlDisconnect(&conn); }