void copySelectedFasta(struct gbSelect* select) /* copy FASTA records that were selected for alignment, segregating by * native/xeno, and partitioning large files. */ { char inFasta[PATH_LEN]; struct gbFa* inFa; struct outFa* nativeFa = NULL; struct outFa* xenoFa = NULL; if (select->orgCats & GB_NATIVE) nativeFa = outFaNew(select, GB_NATIVE); if (select->orgCats & GB_XENO) xenoFa = outFaNew(select, GB_XENO); gbProcessedGetPath(select, "fa", inFasta); gbVerbEnter(2, "copying from %s", inFasta); inFa = gbFaOpen(inFasta, "r"); while (copyFastaRec(select, inFa, nativeFa, xenoFa)) continue; outFaFree(&nativeFa); outFaFree(&xenoFa); gbFaClose(&inFa); gbVerbLeave(2, "copying from %s", inFasta); }
void gbMetaDataProcess(struct sqlConnection *conn, struct gbStatusTbl* statusTbl, struct gbSelect* select) /* process metadata for an update */ { HGID faFileId, pepFaId = 0; char raPath[PATH_LEN], faPath[PATH_LEN]; /* need fasta file id */ gbProcessedGetPath(select, "fa", faPath); faFileId = getExtFileId(conn, faPath); if (select->release->srcDb == GB_REFSEQ) pepFaId = getPeptideFaId(conn, select); /* parse and save for loading metadata from this update */ gbProcessedGetPath(select, "ra.gz", raPath); metaDataProcess(conn, statusTbl, raPath, faFileId, pepFaId); }
void seqDataProcessUpdate(struct gbSelect* select) /* Get sequences for a partition and update. Partition processed index should * be loaded and selected versions flaged. */ { char inFasta[PATH_LEN]; struct gbFa* inFa; gbProcessedGetPath(select, "fa", inFasta); inFa = gbFaOpen(inFasta, "r"); while (gbFaReadNext(inFa)) processSeq(select, inFa); gbFaClose(&inFa); }