int main(int argc, char *argv[]) /* The program */ { struct psl *pslList = NULL, *psl; struct hash *queryHash, *targetHash; struct lineFile *vulg; aaSeq *querySeqs; struct dnaSeq *targetSeqs; if (argc != 5) usage(); /* Load up everything at beginning */ vulg = lineFileOpen(argv[1], TRUE); querySeqs = dnaLoadAll(argv[2]); targetSeqs = dnaLoadAll(argv[3]); queryHash = seqHash(querySeqs); targetHash = seqHash(targetSeqs); /* Main business */ pslList = vulgarToPsl(vulg, queryHash, targetHash); pslWriteAll(pslList, argv[4], FALSE); /* Free up everything */ freeDnaSeqList(&querySeqs); freeDnaSeqList(&targetSeqs); freeHash(&targetHash); freeHash(&queryHash); pslFreeList(&pslList); lineFileClose(&vulg); return 0; }
void pslRecalcMatch(char *inName, char *targetName, char *queryName, char *outName) /* pslRecalcMatch - Recalculate match,mismatch,repMatch columns in psl file. * This can be useful if the psl went through pslMap, or if you've added * lower-case repeat masking after the fact. */ { struct nibTwoCache *tCache = nibTwoCacheNew(targetName); struct dnaSeq *qSeqList = dnaLoadAll(queryName); struct hash *qHash = dnaSeqHash(qSeqList); struct psl *psl; struct lineFile *lf = pslFileOpen(inName); FILE *f = mustOpen(outName, "w"); while ((psl = pslNext(lf)) != NULL) { int tSize; struct dnaSeq *tSeqPart = nibTwoCacheSeqPart(tCache, psl->tName, psl->tStart, psl->tEnd - psl->tStart, &tSize); struct dnaSeq *qSeq = hashMustFindVal(qHash, getQName(psl->qName)); recalcMatches(psl, tSeqPart, psl->tStart, qSeq); pslTabOut(psl, f); dnaSeqFree(&tSeqPart); } carefulClose(&f); lineFileClose(&lf); }
int main(int argc, char *argv[]) /* The program */ { struct bed *bedList = NULL; struct dnaSeq *targets = NULL, *target; struct dnaSeq *queries = NULL, *query; if (argc != 4) usage(); targets = dnaLoadAll(argv[2]); queries = dnaLoadAll(argv[1]); for (target = targets; target != NULL; target = target->next) for (query = queries; query != NULL; query = query->next) { struct bed *oneList = oligoMatch(target, query); bedList = slCat(bedList, oneList); } outputBed6(bedList, argv[3]); bedFreeList(&bedList); dnaSeqFreeList(&targets); dnaSeqFreeList(&queries); return 0; }
void findCutters(char *gcgFile, char *genome, char *outputFile) /* findCutters - Find REBASE restriction enzymes using their GCG file. */ { struct cutter *cutters = readGcg(gcgFile); struct dnaSeq *seqs = dnaLoadAll(genome); struct slName *whiteList = NULL; if (justThis) whiteList = newSlName(justThis); if (justThese) { struct slName *listFromJustThese = getWhiteListFromFile(); whiteList = slCat(whiteList, listFromJustThese); } if (justThese || justThis) cullCutters(&cutters, TRUE, whiteList, 0); if (countsOnly) findCounts(cutters, seqs, outputFile); else findBeds(cutters, seqs, outputFile); cutterFreeList(&cutters); freeDnaSeqList(&seqs); slNameFreeList(&whiteList); }