@GET @Path("/query") @Produces("application/json") public Response fetch(@QueryParam("storageEngine") String storageEngine, @QueryParam("dbName") String dbName, @QueryParam("region") String regionsCVS, @QueryParam("histogram") @DefaultValue("false") boolean histogram, @QueryParam("histogram_interval") @DefaultValue("2000") int interval ) { try { Query query = VariantStorageManager.getVariantQuery(params); VariantQueryResult<Variant> queryResult = StorageEngineFactory.get().getVariantStorageEngine(storageEngine, dbName).get(query, queryOptions); return createOkResponse(queryResult); } catch (Exception e) { e.printStackTrace(); return createErrorResponse(e.toString()); } }
@Test public void testExpressionQuery() throws StorageEngineException { Collection<String> genes; Query query = new Query(ANNOT_EXPRESSION.key(), "non_existing_tissue"); QueryResult<Variant> result = variantStorageEngine.get(query, null); assertEquals(0, result.getNumResults()); for (String tissue : Arrays.asList("umbilical cord", "midbrain")) { query = new Query(ANNOT_EXPRESSION.key(), tissue); result = variantStorageEngine.get(query, null); System.out.println("result.getNumResults() = " + result.getNumResults()); assertNotEquals(0, result.getNumResults()); assertNotEquals(allVariants.getNumResults(), result.getNumResults()); genes = variantStorageEngine.getCellBaseUtils() .getGenesByExpression(query.getAsStringList(ANNOT_EXPRESSION.key())); assertThat(result, everyResult(hasAnnotation(hasAnyGeneOf(genes)))); } }
public VariantQueryResult<Variant> get(Query query, QueryOptions queryOptions, String sessionId) throws CatalogException, StorageEngineException, IOException { return secure(query, queryOptions, sessionId, engine -> { addDefaultLimit(queryOptions); logger.debug("getVariants {}, {}", query, queryOptions); VariantQueryResult<Variant> result = engine.get(query, queryOptions); logger.debug("gotVariants {}, {}, in {}ms", result.getNumResults(), result.getNumTotalResults(), result.getDbTime()); return result; }); }
result = variantStorageEngine.get(query, null); assertEquals(0, result.getNumResults()); result = variantStorageEngine.get(query, null); System.out.println("numResults: " + result.getNumResults()); for (Variant variant : result.getResult()) { result = variantStorageEngine.get(query, null); System.out.println("numResults: " + result.getNumResults()); for (Variant variant : result.getResult()) { result = variantStorageEngine.get(query, null); System.out.println("numResults: " + result.getNumResults()); for (Variant variant : result.getResult()) { result = variantStorageEngine.get(query, null); System.out.println("numResults: " + result.getNumResults()); for (Variant variant : result.getResult()) {
@Override public VariantQueryResult<Variant> query(Query query, QueryOptions options) { try { if (options == null) { options = new QueryOptions(); } options.put(VariantSearchManager.USE_SEARCH_INDEX, VariantStorageEngine.UseSearchIndex.YES); return variantStorageEngine.get(query, options); } catch (Exception e) { throw Throwables.propagate(e); } }
private void skipLimit(Query query, QueryOptions options, int batchSize, boolean serverSideSkip) throws StorageEngineException, SolrServerException, IOException { Set<String> expectedResults = dbAdaptor.get(query, null).getResult().stream().map(Variant::toString).collect(Collectors.toSet()); Set<String> results = new HashSet<>(); int numQueries = (int) Math.ceil(expectedResults.size() / (float) batchSize); for (int i = 0; i < numQueries; i++) { QueryOptions thisOptions = new QueryOptions(options) .append(QueryOptions.SKIP, i * batchSize) .append(QueryOptions.LIMIT, batchSize); VariantQueryResult<Variant> result = variantStorageEngine.get(query, thisOptions); for (Variant variant : result.getResult()) { assertTrue(results.add(variant.toString())); } assertNotEquals(0, result.getNumResults()); } assertEquals(expectedResults, results); if (serverSideSkip) { long count = mockingDetails(solrClient).getInvocations() .stream() .filter(invocation -> invocation.getMethod().getName().equals("query")) .count(); System.out.println(SolrClient.class.getName() + ".query(...) invocations : " + count); verify(solrClient, atLeast(numQueries)).query(anyString(), any()); } else { verify(solrClient, times(numQueries)).query(anyString(), any()); } }
@Test public void testGetSummary() throws Exception { VariantQueryResult<Variant> result = variantStorageEngine.get(new Query(), new QueryOptions(VariantField.SUMMARY, true) .append(QueryOptions.LIMIT, 2000)); assertEquals(allVariants.getResult().size(), result.getResult().size()); }
@Test public void testGetNotFromSearch() throws Exception { Query query = new Query(ANNOT_PROTEIN_SUBSTITUTION.key(), "sift>0.1"); VariantQueryResult<Variant> result = variantStorageEngine.get(query, new QueryOptions()); verify(solrClient, never()).query(anyString(), any()); assertThat(result, everyResult(allVariants, hasAnnotation(hasSift(hasItem(gt(0.1)))))); }
@Test public void testGetFromSearch() throws Exception { Query query = new Query(ANNOT_CONSEQUENCE_TYPE.key(), 1631) .append(ANNOT_CONSERVATION.key(), "gerp>1") .append(ANNOT_PROTEIN_SUBSTITUTION.key(), "sift>0.01") .append(UNKNOWN_GENOTYPE.key(), "./."); QueryResult<Variant> queryResult = variantStorageEngine.get(query, new QueryOptions()); // for (Variant variant : queryResult.getResult()) { // System.out.println("variant = " + variant); // } assertEquals(queryResult.getNumResults(), queryResult.getNumTotalResults()); assertNotEquals(0, queryResult.getNumResults()); verify(solrClient, times(1)).query(anyString(), any()); }
public void testGetBySampleName(String expectedSource, QueryOptions options) throws Exception { query = new Query() .append(VariantQueryParam.STUDY.key(), "S_1") .append(VariantQueryParam.SAMPLE.key(), "NA12877"); // queryResult = dbAdaptor.get(query, options); queryResult = variantStorageEngine.get(query, options); VariantQueryResult<Variant> allVariants = dbAdaptor.get(new Query() .append(VariantQueryParam.INCLUDE_STUDY.key(), "S_1") .append(VariantQueryParam.INCLUDE_SAMPLE.key(), "NA12877") .append(VariantQueryParam.INCLUDE_FILE.key(), "1K.end.platinum-genomes-vcf-NA12877_S1.genome.vcf.gz"), options); assertEquals(expectedSource, queryResult.getSource()); assertThat(queryResult, everyResult(allVariants, withStudy("S_1", allOf(withFileId("1K.end.platinum-genomes-vcf-NA12877_S1.genome.vcf.gz"), withSampleData("NA12877", "GT", containsString("1")))))); }
public void testGetByGenotypes(String expectedSource, QueryOptions options) throws Exception { VariantQueryResult<Variant> allVariants = dbAdaptor.get(new Query() .append(VariantQueryParam.INCLUDE_STUDY.key(), "S_1") .append(VariantQueryParam.INCLUDE_SAMPLE.key(), "NA12877,NA12878") .append(VariantQueryParam.INCLUDE_FILE.key(), "1K.end.platinum-genomes-vcf-NA12877_S1.genome.vcf.gz,1K.end.platinum-genomes-vcf-NA12878_S1.genome.vcf.gz"), options); queryResult = variantStorageEngine.get(new Query() .append(VariantQueryParam.STUDY.key(), "S_1") .append(VariantQueryParam.GENOTYPE.key(), "NA12877:0/1,NA12878:1/1") .append(VariantQueryParam.INCLUDE_SAMPLE.key(), "NA12877,NA12878"), options); assertThat(queryResult, everyResult(allVariants, withStudy("S_1", anyOf( allOf( withFileId("1K.end.platinum-genomes-vcf-NA12877_S1.genome.vcf.gz"), withSampleData("NA12877", "GT", containsString("0/1"))), allOf( withFileId("1K.end.platinum-genomes-vcf-NA12878_S1.genome.vcf.gz"), withSampleData("NA12878", "GT", containsString("1/1"))))))); assertEquals(expectedSource, queryResult.getSource()); queryResult = variantStorageEngine.get(new Query() .append(VariantQueryParam.STUDY.key(), "S_1") .append(VariantQueryParam.GENOTYPE.key(), "NA12877:" + GenotypeClass.HET_REF + ",NA12878:" + GenotypeClass.HOM_ALT) .append(VariantQueryParam.INCLUDE_SAMPLE.key(), "NA12877,NA12878"), options); assertThat(queryResult, everyResult(allVariants, withStudy("S_1", anyOf( allOf( withFileId("1K.end.platinum-genomes-vcf-NA12877_S1.genome.vcf.gz"), withSampleData("NA12877", "GT", containsString("0/1"))), allOf( withFileId("1K.end.platinum-genomes-vcf-NA12878_S1.genome.vcf.gz"), withSampleData("NA12878", "GT", containsString("1/1"))))))); assertEquals(expectedSource, queryResult.getSource()); }
public void testGetBySamplesName(String expectedSource, QueryOptions options) throws Exception { query = new Query() .append(VariantQueryParam.STUDY.key(), "S_1") .append(VariantQueryParam.SAMPLE.key(), "NA12877;NA12878"); // queryResult = dbAdaptor.get(query, options); queryResult = variantStorageEngine.get(query, options); VariantQueryResult<Variant> allVariants = dbAdaptor.get(new Query() .append(VariantQueryParam.INCLUDE_STUDY.key(), "S_1") .append(VariantQueryParam.INCLUDE_SAMPLE.key(), "NA12877,NA12878") .append(VariantQueryParam.INCLUDE_FILE.key(), "1K.end.platinum-genomes-vcf-NA12877_S1.genome.vcf.gz,1K.end.platinum-genomes-vcf-NA12878_S1.genome.vcf.gz"), options); assertEquals(expectedSource, queryResult.getSource()); assertThat(queryResult, everyResult(allVariants, withStudy("S_1", allOf( allOf( withFileId("1K.end.platinum-genomes-vcf-NA12877_S1.genome.vcf.gz"), withSampleData("NA12877", "GT", containsString("1"))), allOf( withFileId("1K.end.platinum-genomes-vcf-NA12878_S1.genome.vcf.gz"), withSampleData("NA12878", "GT", containsString("1"))))))); }
public void testGetByFileName(String expectedSource, QueryOptions options) throws Exception { query = new Query() // .append(VariantQueryParam.STUDY.key(), "S_1") .append(VariantQueryParam.FILE.key(), "1K.end.platinum-genomes-vcf-NA12877_S1.genome.vcf.gz"); // queryResult = dbAdaptor.get(query, options); queryResult = variantStorageEngine.get(query, options); VariantQueryResult<Variant> allVariants = dbAdaptor.get(new Query() .append(VariantQueryParam.INCLUDE_STUDY.key(), "all") .append(VariantQueryParam.INCLUDE_SAMPLE.key(), "NA12877") .append(VariantQueryParam.INCLUDE_FILE.key(), "1K.end.platinum-genomes-vcf-NA12877_S1.genome.vcf.gz"), options); assertEquals(expectedSource, queryResult.getSource()); assertThat(queryResult, everyResult(allVariants, withStudy("S_1", withFileId("1K.end.platinum-genomes-vcf-NA12877_S1.genome.vcf.gz")))); }
public void testGetByGenotypesWithRefMix(String expectedSource, QueryOptions options) throws Exception { query = new Query() .append(VariantQueryParam.STUDY.key(), "S_1") .append(VariantQueryParam.GENOTYPE.key(), "NA12877:0/1;NA12878:0/0,0/1") .append(VariantQueryParam.INCLUDE_SAMPLE.key(), "NA12877,NA12878") .append(VariantQueryParam.UNKNOWN_GENOTYPE.key(), "0/0"); // queryResult = dbAdaptor.get(query, options); queryResult = variantStorageEngine.get(query, options); VariantQueryResult<Variant> allVariants = dbAdaptor.get(new Query() .append(VariantQueryParam.INCLUDE_STUDY.key(), "S_1") .append(VariantQueryParam.INCLUDE_SAMPLE.key(), "NA12877,NA12878") .append(VariantQueryParam.INCLUDE_FILE.key(), "1K.end.platinum-genomes-vcf-NA12877_S1.genome.vcf.gz,1K.end.platinum-genomes-vcf-NA12878_S1.genome.vcf.gz") .append(VariantQueryParam.UNKNOWN_GENOTYPE.key(), "0/0"), options); assertThat(queryResult, everyResult(allVariants, withStudy("S_1", allOf( allOf( withFileId("1K.end.platinum-genomes-vcf-NA12877_S1.genome.vcf.gz"), withSampleData("NA12877", "GT", containsString("0/1"))), anyOf( withSampleData("NA12878", "GT", containsString("0/0")), withSampleData("NA12878", "GT", containsString("0/1")) ) )))); assertEquals(expectedSource, queryResult.getSource()); }
public void testGetByGenotypesWithRef(String expectedSource, QueryOptions options) throws Exception { query = new Query() .append(VariantQueryParam.STUDY.key(), "S_1") .append(VariantQueryParam.GENOTYPE.key(), "NA12877:0/1;NA12878:0/0") .append(VariantQueryParam.INCLUDE_SAMPLE.key(), "NA12877,NA12878") .append(VariantQueryParam.UNKNOWN_GENOTYPE.key(), "0/0"); // queryResult = dbAdaptor.get(query, options); queryResult = variantStorageEngine.get(query, options); VariantQueryResult<Variant> allVariants = dbAdaptor.get(new Query() .append(VariantQueryParam.INCLUDE_STUDY.key(), "S_1") .append(VariantQueryParam.INCLUDE_SAMPLE.key(), "NA12877,NA12878") .append(VariantQueryParam.INCLUDE_FILE.key(), "1K.end.platinum-genomes-vcf-NA12877_S1.genome.vcf.gz,1K.end.platinum-genomes-vcf-NA12878_S1.genome.vcf.gz") .append(VariantQueryParam.UNKNOWN_GENOTYPE.key(), "0/0"), options); assertThat(queryResult, everyResult(allVariants, withStudy("S_1", allOf( allOf( withFileId("1K.end.platinum-genomes-vcf-NA12877_S1.genome.vcf.gz"), withSampleData("NA12877", "GT", containsString("0/1"))), withSampleData("NA12878", "GT", containsString("0/0")))))); assertEquals(expectedSource, queryResult.getSource()); }
public void testGetBySampleNameMultiRegion(String expectedSource, QueryOptions options) throws Exception { query = new Query() .append(VariantQueryParam.STUDY.key(), "S_1") .append(VariantQueryParam.SAMPLE.key(), "NA12877") .append(VariantQueryParam.REGION.key(), "1:1-12783,M"); // queryResult = dbAdaptor.get(query, options); queryResult = variantStorageEngine.get(query, options); VariantQueryResult<Variant> allVariants = dbAdaptor.get(new Query() .append(VariantQueryParam.INCLUDE_STUDY.key(), "S_1") .append(VariantQueryParam.INCLUDE_SAMPLE.key(), "NA12877") .append(VariantQueryParam.INCLUDE_FILE.key(), "1K.end.platinum-genomes-vcf-NA12877_S1.genome.vcf.gz"), options); assertEquals(expectedSource, queryResult.getSource()); assertThat(queryResult, everyResult(allVariants, allOf(anyOf(overlaps(new Region("1:1-12783")), overlaps(new Region("M"))), withStudy("S_1", allOf(withFileId("1K.end.platinum-genomes-vcf-NA12877_S1.genome.vcf.gz"), withSampleData("NA12877", "GT", containsString("1"))))))); }
public void testGetByGenotypeMultiRegion(String expectedSource, QueryOptions options) throws Exception { query = new Query() .append(VariantQueryParam.STUDY.key(), "S_1") .append(VariantQueryParam.GENOTYPE.key(), "NA12877:1/1") .append(VariantQueryParam.REGION.key(), "1:1-12783,M"); // queryResult = dbAdaptor.get(query, options); queryResult = variantStorageEngine.get(query, options); VariantQueryResult<Variant> allVariants = dbAdaptor.get(new Query() .append(VariantQueryParam.INCLUDE_STUDY.key(), "S_1") .append(VariantQueryParam.INCLUDE_SAMPLE.key(), "NA12877") .append(VariantQueryParam.INCLUDE_FILE.key(), "1K.end.platinum-genomes-vcf-NA12877_S1.genome.vcf.gz"), options); assertEquals(expectedSource, queryResult.getSource()); assertThat(queryResult, everyResult(allVariants, allOf(anyOf(overlaps(new Region("1:1-12783")), overlaps(new Region("M"))), withStudy("S_1", allOf(withFileId("1K.end.platinum-genomes-vcf-NA12877_S1.genome.vcf.gz"), withSampleData("NA12877", "GT", is("1/1"))))))); }