public static Matcher<VariantAnnotation> at(final String variant) { Variant v = new Variant(variant); return allOf(with("chromosome", VariantAnnotation::getChromosome, is(v.getChromosome())), with("position", VariantAnnotation::getStart, is(v.getStart())), with("reference", VariantAnnotation::getReference, is(v.getReference())), with("alternate", VariantAnnotation::getAlternate, is(v.getAlternate())) ); }
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)) ))))); }
@Test public void testGetByFilterMultiStudy() { query = new Query() .append(VariantQueryParam.FILTER.key(), "LowGQX;LowMQ") .append(VariantQueryParam.FILE.key(), file12877 + VariantQueryUtils.OR + file12882); queryResult = query(query, options); VariantQueryResult<Variant> allVariants = dbAdaptor.get(new Query() .append(VariantQueryParam.INCLUDE_SAMPLE.key(), "NA12877,NA12882") .append(VariantQueryParam.INCLUDE_FILE.key(), asList(file12877, file12882)), options); assertThat(queryResult, everyResult(allVariants, anyOf( withStudy("S_1", withFileId(file12877, with(FILTER, fileEntry -> fileEntry.getAttributes().get(FILTER), allOf(containsString("LowGQX"), containsString("LowMQ"))))), withStudy("S_2", withFileId(file12882, with(FILTER, fileEntry -> fileEntry.getAttributes().get(FILTER), allOf(containsString("LowGQX"), containsString("LowMQ"))))) ))); }
withFileId(file12877, with(FILTER, fileEntry -> fileEntry.getAttributes().get(FILTER), allOf(containsString("LowGQX"), containsString("LowMQ")))), not(withFileId(file12878)) ))));
withFileId(file12877, with(FILTER, fileEntry -> fileEntry.getAttributes().get(FILTER), allOf(containsString("LowGQX"), containsString("LowMQ")))), withFileId(file12878, with(FILTER, fileEntry -> fileEntry.getAttributes().get(FILTER), allOf(containsString("LowGQX"), containsString("LowMQ")))) )))); withFileId(file12877, with(FILTER, fileEntry -> fileEntry.getAttributes().get(FILTER), allOf(containsString("LowGQX"), containsString("LowMQ")))), withFileId(file12878, with(FILTER, fileEntry -> fileEntry.getAttributes().get(FILTER), allOf(containsString("LowGQX"), containsString("LowMQ")))) )))); withFileId(file12877, with(FILTER, fileEntry -> fileEntry.getAttributes().get(FILTER), containsString("LowGQX"))), withFileId(file12878, with(FILTER, fileEntry -> fileEntry.getAttributes().get(FILTER), containsString("LowGQX"))) ))));
withSampleData(sampleNA12877, "GT", anyOf(is("0/1"), is("1/1"))), withFileId(file12877, with(FILTER, fileEntry -> fileEntry.getAttributes().get(FILTER), allOf( containsString("LowGQX"), containsString("LowMQ"), withSampleData(sampleNA12877, "GT", anyOf(is("0/1"), is("1/1"))), withFileId(file12877, with(FILTER, fileEntry -> fileEntry.getAttributes().get(FILTER), anyOf( containsString("MaxDepth") ))) withSampleData(sampleNA12877, "GT", anyOf(is("0/1"), is("1/1"))), withFileId(file12877, with(FILTER, fileEntry -> fileEntry.getAttributes().get(FILTER), anyOf( containsString("LowGQX"), containsString("LowMQ") withSampleData(sampleNA12877, "GT", anyOf(is("0/1"), is("1/1"))), withFileId(file12877, with(FILTER, fileEntry -> fileEntry.getAttributes().get(FILTER), is("LowGQX;LowMQ;LowQD;TruthSensitivityTranche99.90to100.00"))))))); withSampleData(sampleNA12877, "GT", anyOf(is("0/1"), is("1/1"))), withFileId(file12877, with(FILTER, fileEntry -> fileEntry.getAttributes().get(FILTER), anyOf( is("LowGQX;LowMQ;LowQD;TruthSensitivityTranche99.90to100.00"), is("LowGQX;LowQD;SiteConflict")
@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 testGetByNegatedFilter() { VariantQueryResult<Variant> allVariants = dbAdaptor.get(new Query() .append(VariantQueryParam.INCLUDE_SAMPLE.key(), "NA12877") .append(VariantQueryParam.INCLUDE_FILE.key(), file12877), options); query = new Query() .append(VariantQueryParam.FILTER.key(), "LowGQX" + AND + "LowMQ" + AND + NOT + "SiteConflict") .append(VariantQueryParam.FILE.key(), file12877); queryResult = query(query, options); System.out.println("queryResult.getNumResults() = " + queryResult.getNumResults()); assertThat(queryResult, everyResult(allVariants, withStudy("S_1", withFileId(file12877, with(FILTER, fileEntry -> fileEntry.getAttributes().get(FILTER), allOf( containsString("LowGQX"), containsString("LowMQ"), not(containsString("SiteConflict")) )))))); query = new Query() .append(VariantQueryParam.FILTER.key(), "LowGQX" + AND + "LowQD" + AND + NOT + "\"LowGQX;LowQD;SiteConflict\"") .append(VariantQueryParam.FILE.key(), file12877); queryResult = query(query, options); System.out.println("queryResult.getNumResults() = " + queryResult.getNumResults()); assertThat(queryResult, everyResult(allVariants, withStudy("S_1", withFileId(file12877, with(FILTER, fileEntry -> fileEntry.getAttributes().get(FILTER), allOf( containsString("LowGQX"), containsString("LowQD"), not(is("LowGQX;LowQD;SiteConflict")) )))))); }
@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))))); } }
System.out.println(allVariants.first().toJson()); assertThat(queryResult, everyResult(allVariants, withStudy("S_1", withFileId(file12877, with(QUAL, fileEntry -> fileEntry.getAttributes().get(QUAL), allOf(notNullValue(), with("", Double::valueOf, gt(50)))))))); System.out.println("queryResult.getNumResults() = " + queryResult.getNumResults()); assertThat(queryResult, everyResult(allVariants, withStudy("S_1", withFileId(file12877, with(QUAL, fileEntry -> fileEntry.getAttributes().get(QUAL), allOf(notNullValue(), with("", Double::valueOf, lt(50)))))))); System.out.println("queryResult.getNumResults() = " + queryResult.getNumResults()); assertThat(queryResult, everyResult(allVariants, withStudy("S_1", withFileId(file12877, with(QUAL, fileEntry -> fileEntry.getAttributes().get(QUAL), anyOf(with("", Double::valueOf, lt(5)), nullValue())))))); assertThat(queryResult, everyResult(allVariants, withStudy("S_1", withFileId(file12877, allOf( with(QUAL, fileEntry -> fileEntry.getAttributes().get(QUAL), allOf(notNullValue(), with("", Double::valueOf, lt(50)))), with(FILTER, fileEntry -> fileEntry.getAttributes().get(FILTER), anyOf( containsString("LowGQX"), containsString("LowMQ")
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"))), hasItem(with("GeneTraitId", GeneTraitAssociation::getId, is("umls:C0000786"))), hasItem(with("HPO", GeneTraitAssociation::getHpo, is("HP:0002483"))) )))));
System.out.println("queryResult.getNumResults() = " + queryResult.getNumResults()); assertThat(queryResult, everyResult(allVariants, withStudy("S_1", withFileId(file12877, with(FILTER, fileEntry -> fileEntry.getAttributes().get(FILTER), allOf( containsString("LowGQX"), containsString("LowMQ"), System.out.println("queryResult.getNumResults() = " + queryResult.getNumResults()); assertThat(queryResult, everyResult(allVariants, withStudy("S_1", withFileId(file12877, with(FILTER, fileEntry -> fileEntry.getAttributes().get(FILTER), anyOf( containsString("MaxDepth") ))) System.out.println("queryResult.getNumResults() = " + queryResult.getNumResults()); assertThat(queryResult, everyResult(allVariants, withStudy("S_1", withFileId(file12877, with(FILTER, fileEntry -> fileEntry.getAttributes().get(FILTER), anyOf( containsString("LowGQX"), containsString("LowMQ") System.out.println("queryResult.getNumResults() = " + queryResult.getNumResults()); assertThat(queryResult, everyResult(allVariants, withStudy("S_1", withFileId(file12877, with(FILTER, fileEntry -> fileEntry.getAttributes().get(FILTER), is("LowGQX;LowMQ;LowQD;TruthSensitivityTranche99.90to100.00")))))); System.out.println("queryResult.getNumResults() = " + queryResult.getNumResults()); assertThat(queryResult, everyResult(allVariants, withStudy("S_1", withFileId(file12877, with(FILTER, fileEntry -> fileEntry.getAttributes().get(FILTER), anyOf( is("LowGQX;LowMQ;LowQD;TruthSensitivityTranche99.90to100.00"), is("LowGQX;LowQD;SiteConflict")
@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"))))))); }