WiggleIterator * BamReader(char * filename, bool holdFire) { BamReaderData * data = (BamReaderData *) calloc(1, sizeof(BamReaderData)); setSamtoolsDefaultConf(data); OpenBamFile(data, filename); if (!holdFire) launchBufferedReader(&downloadBamFile, data, &(data->bufferedReaderData)); return newWiggleIterator(data, &BamReaderPop, &BamReaderSeek, 0); }
void openBigBed(BigBedReaderData * data, char * filename, bool holdFire) { if(!bbIsBigBed(filename, NULL)) { printf("File %s is not in BigBed format", filename); exit(1); } data->fp = bbOpen(filename, NULL); if (!holdFire) launchBufferedReader(&readBigBed, data, &(data->bufferedReaderData)); }
void BcfReaderSeek(WiggleIterator * wi, const char * chrom, int start, int finish) { BCFReaderData * data = (BCFReaderData *) wi->data; killBufferedReader(data->bufferedReaderData); data->tabix_iterator = ti_query(data->tabix_file, chrom, start, finish); launchBufferedReader(&downloadTabixFile, data, &(data->bufferedReaderData)); wi->done = false; BCFReaderPop(wi); while (!wi->done && (strcmp(wi->chrom, chrom) < 0 || (strcmp(chrom, wi->chrom) == 0 && wi->finish <= start))) BCFReaderPop(wi); data->chrom = chrom; data->stop = finish; }
void BigBedReaderSeek(WiggleIterator * wi, const char * chrom, int start, int finish) { BigBedReaderData * data = (BigBedReaderData *) wi->data; if (data->bufferedReaderData) { killBufferedReader(data->bufferedReaderData); free(data->bufferedReaderData); data->bufferedReaderData = NULL; } data->chrom = chrom; data->start = start; data->stop = finish; launchBufferedReader(&readBigBed, data, &(data->bufferedReaderData)); wi->done = false; BigBedReaderPop(wi); while (!wi->done && (strcmp(wi->chrom, chrom) < 0 || (strcmp(chrom, wi->chrom) == 0 && wi->finish <= start))) BigBedReaderPop(wi); if (!wi->done && strcmp(chrom, wi->chrom) == 0 && wi->start < start) wi->start = start; }
void BamReaderSeek(WiggleIterator * wi, const char * chrom, int start, int finish) { BamReaderData * data = (BamReaderData *) wi->data; char region[1000]; if (data->bufferedReaderData) { killBufferedReader(data->bufferedReaderData); free(data->bufferedReaderData); data->bufferedReaderData = NULL; } data->chrom = chrom; data->stop = finish; sprintf(region, "%s:%i-%i", chrom, start, finish); data->conf->reg = region; seekRegion(data); launchBufferedReader(&downloadBamFile, data, &(data->bufferedReaderData)); wi->done = false; BamReaderPop(wi); while (!wi->done && (strcmp(wi->chrom, chrom) < 0 || (strcmp(wi->chrom, chrom) == 0 && wi->finish <= start))) BamReaderPop(wi); }
WiggleIterator * BcfReader(char * filename) { BCFReaderData * data = (BCFReaderData *) calloc(1, sizeof(BCFReaderData)); OpenTabixFile(data, filename); launchBufferedReader(&downloadTabixFile, data, &(data->bufferedReaderData)); return newWiggleIterator(data, &BCFReaderPop, &BcfReaderSeek); }