diff --git a/src/main/sources/CoverageDataSource.js b/src/main/sources/CoverageDataSource.js index ab796239..92ff4ba3 100644 --- a/src/main/sources/CoverageDataSource.js +++ b/src/main/sources/CoverageDataSource.js @@ -40,7 +40,7 @@ function keyFunction(p: PositionCount): string { } function filterFunction(range: ContigInterval, p: PositionCount): boolean { - return range.chrContainsLocus(p.contig, p.start); + return range.chrIntersects(new ContigInterval(p.contig, p.start, p.end)); } function createFromCoverageUrl(remoteSource: RemoteRequest): CoverageDataSource { diff --git a/src/main/sources/VariantDataSource.js b/src/main/sources/VariantDataSource.js index 9e8a603e..fb6cad7a 100644 --- a/src/main/sources/VariantDataSource.js +++ b/src/main/sources/VariantDataSource.js @@ -41,7 +41,7 @@ function keyFunction(vc: VariantContext): string { } function filterFunction(range: ContigInterval, vc: VariantContext): boolean { - return range.chrContainsLocus(vc.variant.contig, vc.variant.position); + return range.chrIntersects(new ContigInterval(vc.variant.contig, vc.variant.position, vc.variant.end)); } function createFromVariantUrl(remoteSource: RemoteRequest, @@ -79,6 +79,14 @@ function createFromVariantUrl(remoteSource: RemoteRequest, if (response !== null) { // parse VariantContexts var variants = _.map(response, v => JSON.parse(v)); + + // GA4GH schemas are 0-based, so we adjust the variant position + // by 1 to display correctly + variants = _.map(variants, v => { + v.variant.position += 1; + v.variant.end += 1; + return v; + }); variants.forEach(v => cache.put(v, resolution)); } console.info(`Fetched variants from server:", ${new Date().getTime() - startTimeMilliseconds}`);