void doReplicateQa(struct sqlConnection *conn, struct edwFile *ef) /* Try and do replicate level QA - find matching file and do correlation-like * things. */ { /* Get validated file info. If not validated we don't bother. */ struct edwValidFile *vf = edwValidFileFromFileId(conn, ef->id); if (vf == NULL) return; char *replicate = vf->replicate; if (!isEmpty(replicate) && !sameString(replicate, "n/a") && !sameString(replicate, "pooled")) // If expanding this, to expand bits in edwWebBrowse as well { /* Try to find other replicates of same experiment, format, and output type. */ struct edwValidFile *elder, *elderList = edwFindElderReplicates(conn, vf); if (elderList != NULL) { struct edwAssembly *assembly = edwAssemblyForUcscDb(conn, vf->ucscDb); for (elder = elderList; elder != NULL; elder = elder->next) { doReplicatePair(conn, assembly, edwFileFromIdOrDie(conn, elder->fileId), elder, ef, vf); } edwAssemblyFree(&assembly); } } edwValidFileFree(&vf); }
struct edwQaContamTarget *getContamTargets(struct sqlConnection *conn, struct edwFile *ef, struct edwValidFile *vf) /* Get list of contamination targets for file - basically all targets that aren't in same * taxon as self. */ { assert(vf->ucscDb != NULL); struct edwAssembly *origAsm = edwAssemblyForUcscDb(conn, vf->ucscDb); assert(origAsm != NULL); char query[256]; sqlSafef(query, sizeof(query), "select edwQaContamTarget.* from edwQaContamTarget,edwAssembly " "where edwQaContamTarget.assemblyId = edwAssembly.id " " and edwAssembly.taxon != %d", origAsm->taxon); struct edwQaContamTarget *targetList = edwQaContamTargetLoadByQuery(conn, query); edwAssemblyFree(&origAsm); return targetList; }
void doEnrichments(struct sqlConnection *conn, struct edwFile *ef, char *path, struct hash *assemblyToTarget) /* Calculate enrichments on for all targets file. The targetList and the * grtList are in the same order. */ { /* Get validFile from database. */ struct edwValidFile *vf = edwValidFileFromFileId(conn, ef->id); if (vf == NULL) return; /* We can only work if have validFile table entry */ if (!isEmpty(vf->enrichedIn)) { /* Get our assembly */ char *format = vf->format; char *ucscDb = vf->ucscDb; struct edwAssembly *assembly = edwAssemblyForUcscDb(conn, ucscDb); struct target *targetList = hashFindVal(assemblyToTarget, assembly->name); if (targetList == NULL) { targetList = targetsForAssembly(conn, assembly); if (targetList == NULL) errAbort("No targets for assembly %s", assembly->name); hashAdd(assemblyToTarget, assembly->name, targetList); } /* Loop through targetList zeroing out existing ovelaps. */ struct target *target; boolean allSkip = TRUE; for (target = targetList; target != NULL; target = target->next) { target->overlapBases = target->uniqOverlapBases = 0; target->skip = enrichmentExists(conn, ef, target->target); if (!target->skip) allSkip = FALSE; } /* Do a big dispatch based on format. */ if (!allSkip) { if (sameString(format, "fastq")) doEnrichmentsFromSampleBed(conn, ef, vf, assembly, targetList); else if (sameString(format, "bigWig")) doEnrichmentsFromBigWig(conn, ef, vf, assembly, targetList); else if (edwIsSupportedBigBedFormat(format)) doEnrichmentsFromBigBed(conn, ef, vf, assembly, targetList); else if (sameString(format, "gtf")) doEnrichmentsFromSampleBed(conn, ef, vf, assembly, targetList); else if (sameString(format, "gff")) doEnrichmentsFromSampleBed(conn, ef, vf, assembly, targetList); else if (sameString(format, "bam")) doEnrichmentsFromSampleBed(conn, ef, vf, assembly, targetList); else if (sameString(format, "unknown")) verbose(2, "Unknown format in doEnrichments(%s), that's chill.", ef->edwFileName); else errAbort("Unrecognized format %s in doEnrichments(%s)", format, path); } /* Clean up and go home. */ edwAssemblyFree(&assembly); } edwValidFileFree(&vf); }