void appendNewExperiment(char *file, struct hash *bedHash, struct hash *pslHash, struct expRecord **erList, int expNum) { struct expRecord *er = NULL; char buff[256]; int count = 0; struct bed *bed = NULL; struct stanMad *smList = NULL, *sm = NULL; smList = stanMadLoadAll(file); er = createExpRec(file, expNum); slAddHead(erList, er); for(sm = smList; sm != NULL; sm = sm->next) { count++; snprintf(buff,sizeof(buff), "%d-%s-%d", sm->clid, sm->prow, sm->pcol); bed = hashFindVal(bedHash, buff); if(bed != NULL) { bed->expIds[expNum] = expNum; bed->expScores[expNum] = safeLog2(sm->rat2n); } else { if(sm->clid != 0) { struct psl *psl = NULL; snprintf(buff,sizeof(buff), "%d", sm->clid); psl = hashFindVal(pslHash, buff); if(psl != NULL) errAbort("Counldn't find hash entry at line %d in %s for %s, %d, %d.\n", count, file, buff, sm->clid, sm->spot); } } } stanMadFreeList(&smList); }
void findStanAlignments(char *db, char *stan, char *image, char *pslOut) { struct hash *iHash = newHash(5); struct stanMad *smList = NULL, *sm = NULL; FILE *out = mustOpen(pslOut, "w"); int count =0; struct sqlConnection *conn = NULL; warn("Getting sql Connection..."); conn = hAllocConn(db); warn("Reading in image clones..."); readInImageHash(iHash, image); warn("Loading Stanford Alignments.."); smList = stanMadLoadAll(stan); warn("Finding best Alignments..."); for(sm = smList; sm != NULL; sm = sm->next) { if(differentString(sm->type,"Control")) { if((count++ % 10000) ==0) { printf("."); fflush(stdout); } outputAlignmentForStan(conn, sm, iHash, out); } } printf("\n"); warn("Done. Cleaning up..."); stanMadFreeList(&smList); freeHash(&iHash); hFreeConn(&conn); }
void createBeds(struct hash *bedHash, struct hash *pslHash, char *file, int numExps) { struct stanMad *smList=NULL, *sm=NULL; struct psl *psl = NULL; struct bed *bed = NULL; char buff[256]; warn("File is %s", file); smList = stanMadLoadAll(file); for(sm=smList; sm != NULL; sm = sm->next) { sprintf(buff, "%d", sm->clid); psl = hashFindVal(pslHash, buff); if(psl != NULL) { snprintf(buff,sizeof(buff), "%d-%s-%d", sm->clid, sm->prow, sm->pcol); bed = pslToBed(psl); bed->expCount = numExps; bed->expIds = needMem(sizeof(int) * numExps); bed->expScores = needMem(sizeof(float) * numExps); hashAddUnique(bedHash, buff, bed); } } }