@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 testGetAlVariants_polyphenSiftDescription() { for (String p : Arrays.asList("benign", "possibly damaging", "probably damaging", "unknown")) { queryResult = query(new Query(ANNOT_POLYPHEN.key(), p), null); assertThat(queryResult, everyResult(allVariants, hasAnnotation(hasAnyPolyphenDesc(equalTo(p))))); queryResult = query(new Query(ANNOT_PROTEIN_SUBSTITUTION.key(), "polyphen=" + p), null); assertThat(queryResult, everyResult(allVariants, hasAnnotation(hasAnyPolyphenDesc(equalTo(p))))); } for (String s : Arrays.asList("deleterious", "tolerated")) { queryResult = query(new Query(ANNOT_SIFT.key(), s), null); assertThat(queryResult, everyResult(allVariants, hasAnnotation(hasAnySiftDesc(equalTo(s))))); queryResult = query(new Query(ANNOT_PROTEIN_SUBSTITUTION.key(), "sift=" + s), null); assertThat(queryResult, everyResult(allVariants, hasAnnotation(hasAnySiftDesc(equalTo(s))))); } }
@Test public void testGetAllVariants_xref() { Query query = new Query(ANNOT_XREF.key(), "3:108634973:C:A,rs2032582,HP:0001250,VAR_048225,Q9BY64,ENSG00000250026,TMPRSS11B,COSM1421316"); queryResult = query(query, null); assertThat(queryResult, everyResult(allVariants, anyOf( hasAnnotation(at("3:108634973:C:A")), with("id", Variant::getId, is("rs2032582")), hasAnnotation(with("GeneTraitAssociation", VariantAnnotation::getGeneTraitAssociation, hasItem(with("HPO", GeneTraitAssociation::getHpo, is("HP:0001250"))))), hasAnnotation(with("ConsequenceType", VariantAnnotation::getConsequenceTypes, hasItem(with("ProteinVariantAnnotation", ConsequenceType::getProteinVariantAnnotation, with("UniprotVariantId", ProteinVariantAnnotation::getUniprotVariantId, is("VAR_048225")))))), hasAnnotation(with("ConsequenceType", VariantAnnotation::getConsequenceTypes, hasItem(with("ProteinVariantAnnotation", ConsequenceType::getProteinVariantAnnotation, with("UniprotName", ProteinVariantAnnotation::getUniprotAccession, is("Q9BY64")))))), hasAnnotation(with("ConsequenceType", VariantAnnotation::getConsequenceTypes, hasItem(with("EnsemblGene", ConsequenceType::getEnsemblGeneId, is("ENSG00000250026"))))), hasAnnotation(with("ConsequenceType", VariantAnnotation::getConsequenceTypes, hasItem(with("GeneName", ConsequenceType::getGeneName, is("TMPRSS11B"))))), hasAnnotation(with("VariantTraitAssociation", VariantAnnotation::getVariantTraitAssociation, with("Cosmic", VariantTraitAssociation::getCosmic, hasItem(with("MutationId", Cosmic::getMutationId, is("COSM1421316")))))) ))); }
@Test public void testGetAllVariants_clinicalSignificance() { for (ClinicalSignificance clinicalSignificance : ClinicalSignificance.values()) { if (ClinicalSignificance.uncertain_significance.equals(clinicalSignificance)) { continue; } Query query = new Query(ANNOT_CLINICAL_SIGNIFICANCE.key(), clinicalSignificance); queryResult = query(query, new QueryOptions()); assertThat(queryResult, everyResult(allVariants, hasAnnotation(with("clinicalSignificance", va -> va == null || va.getTraitAssociation() == null ? Collections.emptyList() : va.getTraitAssociation() .stream() .map(EvidenceEntry::getVariantClassification) .filter(Objects::nonNull) .map(VariantClassification::getClinicalSignificance) .filter(Objects::nonNull) .collect(Collectors.toList()), hasItem(clinicalSignificance))))); } }
private void queryGeneCT(String gene, String so, Query query, Matcher<VariantAnnotation> regionMatcher) { logger.info(query.toJson()); queryResult = query(query, null); logger.info(" -> numResults " + queryResult.getNumResults()); Matcher<String> geneMatcher; List<String> genes = Arrays.asList(gene.split(",")); if (gene.contains(",")) { geneMatcher = anyOf(genes.stream().map(CoreMatchers::is).collect(Collectors.toList())); } else { geneMatcher = is(gene); } assertThat(queryResult, everyResult(allVariants, hasAnnotation( anyOf( allOf( hasAnyGeneOf(genes), withAny("consequence type", VariantAnnotation::getConsequenceTypes, allOf( with("gene", ConsequenceType::getGeneName, geneMatcher), withAny("SO", ConsequenceType::getSequenceOntologyTerms, with("accession", SequenceOntologyTerm::getAccession, is(so)))))) , allOf( regionMatcher, // not(hasAnyGeneOf(genes)), hasSO(hasItem(so)) ))))); }
System.out.println("queryResult.getNumResults() = " + queryResult.getNumResults()); assertThat(queryResult, everyResult(allVariants, hasAnnotation(with("GeneTraitAssociation", VariantAnnotation::getGeneTraitAssociation, hasItem(with("GeneTraitId", GeneTraitAssociation::getId, is(anyOf(ids.stream().map(CoreMatchers::is).collect(Collectors.toList()))))))))); System.out.println("queryResult.getNumResults() = " + queryResult.getNumResults()); assertThat(queryResult, everyResult(allVariants, hasAnnotation(with("GeneTraitAssociation", VariantAnnotation::getGeneTraitAssociation, anyOf( hasItem(with("GeneTraitId", GeneTraitAssociation::getId, is(anyOf(ids.stream().map(CoreMatchers::is).collect(Collectors.toList()))))), hasItem(with("HPO", GeneTraitAssociation::getHpo, is(anyOf(hpos.stream().map(CoreMatchers::is).collect(Collectors.toList()))))) System.out.println("queryResult.getNumResults() = " + queryResult.getNumResults()); assertThat(queryResult, everyResult(allVariants, hasAnnotation(with("GeneTraitAssociation", VariantAnnotation::getGeneTraitAssociation, allOf(ids.stream().map(id -> hasItem(with("GeneTraitId", GeneTraitAssociation::getId, is(id)))).collect(Collectors.toList())))))); System.out.println("queryResult.getNumResults() = " + queryResult.getNumResults()); assertThat(queryResult, everyResult(allVariants, hasAnnotation(with("GeneTraitAssociation", VariantAnnotation::getGeneTraitAssociation, allOf( hasItem(with("GeneTraitId", GeneTraitAssociation::getId, is("umls:C0007131"))),
assertThat(queryResult, everyResult(allVariants, hasAnnotation(hasAnySift(m)))); assertThat(queryResult, everyResult(allVariants, hasAnnotation(hasAnyPolyphen(m)))); assertThat(queryResult, everyResult(allVariants, hasAnnotation(hasAnyPolyphen(m)))); assertThat(queryResult, everyResult(allVariants, hasAnnotation(hasAnySift(m)))); assertThat(queryResult, everyResult(allVariants, hasAnnotation(hasPolyphen(anyOf(hasItem(m), isEmpty()))))); assertThat(queryResult, everyResult(allVariants, hasAnnotation(hasSift(anyOf(hasItem(m), isEmpty())))));
@Test public void testGetAllVariants_genes() { Query query = new Query(GENE.key(), "FLG-AS1"); QueryResult<Variant> result = query(query, new QueryOptions()); assertThat(result, everyResult(allVariants, hasAnnotation(hasGenes(Collections.singletonList("FLG-AS1"))))); for (Variant variant : result.getResult()) { System.out.println("variant = " + variant); } query = new Query(GENE.key(), "WRONG_GENE"); VariantQueryException exception = VariantQueryException.geneNotFound("WRONG_GENE"); thrown.expect(exception.getClass()); thrown.expectMessage(exception.getMessage()); result = query(query, new QueryOptions()); }
@Test public void testGetAllVariants_populationFrequencyRef() { final PopulationFrequency defaultPopulation = new PopulationFrequency(null, null, null, null, 0F, 0F, 0F, 0F, 0F); Query query; query = new Query() .append(ANNOT_POPULATION_REFERENCE_FREQUENCY.key(), GENOMES_PHASE_3 + ":AFR<=0.05001"); queryResult = query(query, options); assertThat(queryResult, everyResult(allVariants, hasAnnotation(hasPopRefFreq(GENOMES_PHASE_3, "AFR", lte(0.05001))))); }
CellBaseUtils cellBaseUtils = variantStorageEngine.getCellBaseUtils(); genes = cellBaseUtils.getGenesByGo(query.getAsStringList(ANNOT_GO.key())); assertThat(result, everyResult(hasAnnotation(hasAnyGeneOf(genes)))); totalResults = result.getNumResults(); assertThat(result, everyResult(hasAnnotation(hasAnyGeneOf(genes)))); assertThat(result, everyResult(hasAnnotation(hasAnyGeneOf(genes)))); assertNotEquals(0, result.getNumResults()); totalResults += result.getNumResults(); assertThat(result, everyResult(hasAnnotation(hasAnyGeneOf(genes)))); assertNotEquals(0, result.getNumResults()); assertEquals(result.getNumResults(), totalResults);
@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)))); } }
.append(ANNOT_POPULATION_ALTERNATE_FREQUENCY.key(), ESP_6500 + ":AA>0.05001"); queryResult = query(query, options); assertThat(queryResult, everyResult(allVariants, hasAnnotation(hasPopAltFreq(ESP_6500, "AA", gt(0.05001))))); .append(ANNOT_POPULATION_ALTERNATE_FREQUENCY.key(), GENOMES_PHASE_3 + ":AFR<=0.05001"); queryResult = query(query, options); assertThat(queryResult, everyResult(allVariants, hasAnnotation(hasPopAltFreq(GENOMES_PHASE_3, "AFR", lte(0.05001))))); .append(ANNOT_POPULATION_ALTERNATE_FREQUENCY.key(), ESP_6500 + ":AA>0.05001;" + GENOMES_PHASE_3 + ":AFR<=0.05001"); queryResult = query(query, options); assertThat(queryResult, everyResult(allVariants, hasAnnotation(allOf( hasPopAltFreq(ESP_6500, "AA", gt(0.05001)), hasPopAltFreq(GENOMES_PHASE_3, "AFR", lte(0.05001)))))); queryResult = query(query, options); assertThat(queryResult, everyResult(allVariants, hasAnnotation(anyOf( hasPopAltFreq(ESP_6500, "AA", gt(0.05001)), hasPopAltFreq(GENOMES_PHASE_3, "AFR", lte(0.05001))))));
assertThat(queryResult, everyResult(allVariants, hasAnnotation(hasPopMaf(GENOMES_PHASE_3, "AFR", lte(0.05001))))); assertThat(queryResult, everyResult(allVariants, hasAnnotation(hasPopMaf(ESP_6500, "AA", gt(0.05001))))); assertThat(queryResult, everyResult(allVariants, hasAnnotation(hasPopMaf(GENOMES_PHASE_3, "ALL", lt(0.05001))))); assertThat(queryResult, everyResult(allVariants, hasAnnotation(allOf( hasPopMaf(ESP_6500, "AA", gt(0.0501)), hasPopMaf(GENOMES_PHASE_3, "AFR", lte(0.0501)))))); assertThat(queryResult, everyResult(allVariants, hasAnnotation(anyOf( hasPopMaf(ESP_6500, "AA", gt(0.0501)), hasPopMaf(GENOMES_PHASE_3, "AFR", lte(0.0501))))));
assertThat(queryResult, everyResult(allVariants, hasAnnotation(hasSO(hasItem("SO:0001566"))))); assertThat(queryResult, numResults(gt(0))); assertThat(queryResult, everyResult(allVariants, hasAnnotation(hasSO(hasItem("SO:0001566"))))); assertThat(queryResult, numResults(gt(0))); assertThat(queryResult, everyResult(allVariants, hasAnnotation(hasSO(anyOf(hasItem("SO:0001566"), hasItem("SO:0001583")))))); assertThat(queryResult, numResults(gt(0))); assertThat(queryResult, everyResult(allVariants, hasAnnotation(hasSO(anyOf(hasItem("SO:0001566"), hasItem("SO:0001583")))))); assertThat(queryResult, numResults(gt(0))); assertThat(queryResult, everyResult(allVariants, hasAnnotation(hasSO(anyOf(hasItem("SO:0001566"), hasItem("SO:0001583")))))); assertThat(queryResult, numResults(gt(0))); assertThat(queryResult, everyResult(allVariants, hasAnnotation(hasSO(allOf(hasItem("SO:0001566"), hasItem("SO:0001583")))))); assertThat(queryResult, numResults(gt(0)));
@Test public void testGetAllVariants_ct_gene() { queryGeneCT("BIRC6", "SO:0001566"); // Should return 0 results queryGeneCT("BIRC6", "SO:0001583"); queryGeneCT("DNAJC6", "SO:0001819"); queryGeneCT("SH2D5", "SO:0001632"); queryGeneCT("ERMAP,SH2D5", "SO:0001632"); queryGeneCT("ERMAP,SH2D5", "SO:0001632", new Query() .append(ANNOT_XREF.key(), "ERMAP,SH2D5,7:100807230:G:T") .append(ANNOT_CONSEQUENCE_TYPE.key(), "SO:0001632"), at("7:100807230:G:T")); queryGeneCT("ERMAP,SH2D5", "SO:0001632", new Query() .append(GENE.key(), "ERMAP") .append(ANNOT_XREF.key(), "SH2D5,rs12345") .append(ANNOT_CONSEQUENCE_TYPE.key(), "SO:0001632"), with("id", VariantAnnotation::getId, is("rs1171830"))); queryGeneCT("ERMAP,SH2D5", "SO:0001632", new Query() .append(ANNOT_XREF.key(), "ERMAP,rs1171830,SH2D5,RCV000036856,7:100807230:G:T,COSM3760638") .append(ANNOT_CONSEQUENCE_TYPE.key(), "SO:0001632"), anyOf( with("id", VariantAnnotation::getId, is("rs1171830")), at("7:100807230:G:T"))); assertThat(query(new Query(ANNOT_XREF.key(), "rs1171830").append(ANNOT_CONSEQUENCE_TYPE.key(), "SO:0001566"), null), everyResult(allVariants, allOf( with("id", Variant::getId, is("rs1171830")), hasAnnotation(hasSO(hasItem(is("SO:0001566"))))))); }