Пример #1
0
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;
}
Пример #2
0
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;
}
Пример #3
0
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);

}