fd85559cf680f17b7c31e6d0028149afecc49bb7 braney Fri Aug 11 10:50:47 2023 -0700 add bigChainToChain command diff --git src/hg/utils/bigChainToChain/bigChainToChain.c src/hg/utils/bigChainToChain/bigChainToChain.c new file mode 100644 index 0000000..e999f5d --- /dev/null +++ src/hg/utils/bigChainToChain/bigChainToChain.c @@ -0,0 +1,50 @@ +/* bigChainToChain - convert bigChain files back into a chain file. */ +#include "common.h" +#include "linefile.h" +#include "hash.h" +#include "chain.h" +#include "bigBed.h" +#include "bigChain.h" +#include "chainNetDbLoad.h" +#include "options.h" + +void usage() +/* Explain usage and exit. */ +{ +errAbort( + "bigChainToChain - convert bigChain files back into a chain file\n" + "usage:\n" + " bigChainToChain bigChain.bb bigLinks.bb output.chain\n" + "options:\n" + " -xxx=XXX\n" + ); +} + +/* Command line validation table. */ +static struct optionSpec options[] = { + {NULL, 0}, +}; + +void bigChainToChain(char *inChain, char *inLinks, char *out) +/* bigChainArrange - output a set of rearrangement breakpoints. */ +{ +struct bbiFile *chainBbi = bigBedFileOpen(inChain); +struct bbiChromInfo *chrom, *chromList = bbiChromList(chainBbi); +FILE *f = mustOpen(out, "w"); + +for (chrom = chromList; chrom != NULL; chrom = chrom->next) + { + struct chain *chains = chainLoadIdRangeHub(NULL, inChain, inLinks, chrom->name, 0, chrom->size, -1); + chainWriteAll(chains, f); + } +} + +int main(int argc, char *argv[]) +/* Process command line. */ +{ +optionInit(&argc, argv, options); +if (argc != 4) + usage(); +bigChainToChain(argv[1], argv[2], argv[3]); +return 0; +}