struct expData *expDataLoadTableLimit(struct sqlConnection *conn, char *table, int limitRows) /* Same as expDataLoadTable, but limit to only loading limitRows # of rows. */ { char query[256]; char **row; int numLoaded = 0; struct expData *exps = NULL; struct sqlResult *sr = NULL; if (limitRows < 0) return NULL; sqlSafef(query, sizeof(query), "select name, expCount, expScores from %s", table); sr = sqlGetResult(conn, query); if (limitRows > 0) { while (((row = sqlNextRow(sr)) != NULL) && (numLoaded < limitRows)) { struct expData *addMe = expDataLoad(row); slAddHead(&exps, addMe); numLoaded++; } } else { while ((row = sqlNextRow(sr)) != NULL) { struct expData *addMe = expDataLoad(row); slAddHead(&exps, addMe); } } slReverse(&exps); sqlFreeResult(&sr); return exps; }
struct expData *expDataLoadAllByChar(char *fileName, char chopper) /* Load all expData from a chopper separated file. * Dispose of this with expDataFreeList(). */ { struct expData *list = NULL, *el; struct lineFile *lf = lineFileOpen(fileName, TRUE); char *row[3]; while (lineFileNextCharRow(lf, chopper, row, ArraySize(row))) { el = expDataLoad(row); slAddHead(&list, el); } lineFileClose(&lf); slReverse(&list); return list; }
struct expData *expDataLoadAll(char *fileName) /* Load all expData from a whitespace-separated file. * Dispose of this with expDataFreeList(). */ { struct expData *list = NULL, *el; struct lineFile *lf = lineFileOpen(fileName, TRUE); char *row[3]; while (lineFileRow(lf, row)) { el = expDataLoad(row); slAddHead(&list, el); } lineFileClose(&lf); slReverse(&list); return list; }
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); }