@Override public void before() throws Exception { boolean preFileIndexed = VariantDBAdaptorTest.fileIndexed; solr.configure(variantStorageEngine); super.before(); if (!preFileIndexed) { variantStorageEngine.searchIndex(); } }
@Override public void limitSkip(Query query, QueryOptions options) { Assume.assumeTrue("Unable to paginate queries without sorting", options.getBoolean(QueryOptions.SORT, false)); super.limitSkip(query, options); }
@Override public void after() throws IOException { super.after(); closeConnections(); } }
@Test public void rank_gene() throws Exception { QueryResult<Map<String, Object>> queryResult_rank = rank(40, new Query(), "gene", false); System.out.println(new ObjectMapper().writerWithDefaultPrettyPrinter().writeValueAsString(queryResult_rank)); assertEquals(40, queryResult_rank.getNumResults()); for (Map<String, Object> map : queryResult_rank.getResult()) { Long variantQueryResult = count(new Query(GENE.key(), map.get("id"))); assertEquals((variantQueryResult).intValue(), ((Number) map.get("count")).intValue()); } }
dbAdaptor = getVariantStorageEngine().getDBAdaptor(); if (!fileIndexed) { studyConfiguration = newStudyConfiguration(); clearDB(DB_NAME); ObjectMap params = new ObjectMap(VariantStorageEngine.Options.STUDY_TYPE.key(), SampleSetType.FAMILY) .append(VariantStorageEngine.Options.ANNOTATE.key(), true) .append(VariantAnnotationManager.VARIANT_ANNOTATOR_CLASSNAME, CellBaseRestVariantAnnotator.class.getName()) .append(VariantStorageEngine.Options.CALCULATE_STATS.key(), true); params.putAll(getOtherParams()); FORMAT = new HashSet<>(); if (!params.getBoolean(VariantStorageEngine.Options.EXCLUDE_GENOTYPES.key(), StoragePipelineResult etlResult = runDefaultETL(smallInputUri, getVariantStorageEngine(), studyConfiguration, params); fileMetadata = variantStorageEngine.getVariantReaderUtils().readVariantFileMetadata(Paths.get(etlResult.getTransformResult().getPath()).toUri()); NUM_VARIANTS = getExpectedNumLoadedVariants(fileMetadata); fileIndexed = true; Integer indexedFileId = studyConfiguration.getIndexedFiles().iterator().next(); if (getOtherParams().getBoolean(VariantStorageEngine.Options.CALCULATE_STATS.key(), true)) { QueryOptions options = new QueryOptions(VariantStorageEngine.Options.STUDY.key(), STUDY_NAME) .append(VariantStorageEngine.Options.LOAD_BATCH_SIZE.key(), 100) assertEquals(count(new Query(ANNOTATION_EXISTS.key(), true)), count(new Query())); homAlt = getHomAltGT(); homRef = getHomRefGT(); het = getHetGT();
assertEquals(combinedKeywordsOr, count(query).intValue()); query = new Query(ANNOT_PROTEIN_KEYWORD.key(), "Complete proteome;Transmembrane helix"); assertEquals(combinedKeywordsAnd, count(query).intValue()); query = new Query(ANNOT_PROTEIN_KEYWORD.key(), "Complete proteome;!Transmembrane helix"); assertEquals(combinedKeywordsAndNot, count(query).intValue()); System.out.println(entry); query = new Query(ANNOT_PROTEIN_KEYWORD.key(), entry.getKey()); queryResult = query(query, null); assertEquals(entry.getValue().intValue(), queryResult.getNumResults()); if (++i > QUERIES_LIM) {
long phastCons = countConservationScore("phastCons", allVariants, s -> s > 0.5); assertTrue(phastCons > 0); checkConservationScore(new Query(ANNOT_CONSERVATION.key(), "phylop>0.5"), s -> s > 0.5, "phylop"); checkConservationScore(new Query(ANNOT_CONSERVATION.key(), "phastCons<0.5"), s1 -> s1 < 0.5, "phastCons"); checkConservationScore(new Query(ANNOT_CONSERVATION.key(), "gerp<=0.5"), s -> s <= 0.5, "gerp"); checkScore(new Query(ANNOT_CONSERVATION.key(), "gerp<=0.5,phastCons<0.5"), ((Predicate<List<Score>>) scores -> scores.stream().anyMatch(s -> s.getSource().equalsIgnoreCase("gerp") && s.getScore() <= 0.5)) .or(scores -> scores.stream().anyMatch(s -> s.getSource().equalsIgnoreCase("phastCons") && s.getScore() < 0.5)), VariantAnnotation::getConservation); checkScore(new Query(ANNOT_CONSERVATION.key(), "gerp<=0.5;phastCons<0.5"), ((Predicate<List<Score>>) scores -> scores.stream().anyMatch(s -> s.getSource().equalsIgnoreCase("gerp") && s.getScore() <= 0.5)) .and(scores -> scores.stream().anyMatch(s -> s.getSource().equalsIgnoreCase("phastCons") && s.getScore() < 0.5)), VariantAnnotation::getConservation); checkScore(new Query(ANNOT_CONSERVATION.key(), "gerp<<0.5"), scores -> scores.stream().anyMatch(s -> s.getSource().equalsIgnoreCase("gerp") && s.getScore() < 0.5) checkScore(new Query(ANNOT_CONSERVATION.key(), "phastCons>>=0.5"), scores -> scores.stream().anyMatch(s -> s.getSource().equalsIgnoreCase("phastCons") && s.getScore() >= 0.5) checkScore(new Query(ANNOT_CONSERVATION.key(), "gerp<<=0.5;phastCons<0.5"), scores -> (scores.stream().anyMatch(s -> s.getSource().equalsIgnoreCase("gerp") && s.getScore() <= 0.5) || scores.stream().noneMatch(s -> s.getSource().equalsIgnoreCase("gerp")))
assertTrue(countFunctionalScore("cadd_scaled", allVariants, s -> s > 5.0) > 0); System.out.println("countFunctionalScore(\"cadd_scaled\", allVariants, s -> s > 5.0) = " + countFunctionalScore("cadd_scaled", allVariants, s -> s > 5.0)); checkFunctionalScore(new Query(ANNOT_FUNCTIONAL_SCORE.key(), "cadd_scaled>5"), s -> s > 5.0, "cadd_scaled"); checkFunctionalScore(new Query(ANNOT_FUNCTIONAL_SCORE.key(), "cadd_raw<0.5"), s1 -> s1 < 0.5, "cadd_raw"); checkFunctionalScore(new Query(ANNOT_FUNCTIONAL_SCORE.key(), "cadd_scaled<=0.5"), s -> s <= 0.5, "cadd_scaled"); checkScore(new Query(ANNOT_FUNCTIONAL_SCORE.key(), "cadd_scaled<<0.5"), ((Predicate<List<Score>>) scores -> scores.stream() .anyMatch(s -> s.getSource().equalsIgnoreCase("cadd_scaled") && s.getScore() < 0.5)) VariantAnnotation::getFunctionalScore); checkScore(new Query(ANNOT_FUNCTIONAL_SCORE.key(), "cadd_scaled<<=0.5"), ((Predicate<List<Score>>) scores -> scores.stream() .anyMatch(s -> s.getSource().equalsIgnoreCase("cadd_scaled") && s.getScore() <= 0.5)) VariantAnnotation::getFunctionalScore); checkScore(new Query(ANNOT_FUNCTIONAL_SCORE.key(), "cadd_raw>>0.5"), ((Predicate<List<Score>>) scores -> scores.stream() .anyMatch(s -> s.getSource().equalsIgnoreCase("cadd_raw") && s.getScore() > 0.5)) checkScore(new Query(ANNOT_FUNCTIONAL_SCORE.key(), "cadd_raw>>=0.5"), ((Predicate<List<Score>>) scores -> scores.stream() .anyMatch(s -> s.getSource().equalsIgnoreCase("cadd_raw") && s.getScore() >= 0.5))
@Test public void testGetAllVariants() { long numResults = count(null); assertEquals(NUM_VARIANTS, numResults); }
@Test public void testGetAllVariants_region() { Query query = new Query(REGION.key(), "1:13910417-13910417,1:165389129-165389129"); queryResult = query(query, options); assertEquals(2, queryResult.getNumResults()); queryResult = query(query, options); assertEquals(2, queryResult.getNumResults()); queryResult = query(query, options); assertEquals(2, queryResult.getNumResults()); queryResult = query(query, options); assertThat(queryResult, everyResult(allVariants, overlaps(new Region("1:14000000-160000000")))); checkRegion(new Region("1:1000000-2000000")); checkRegion(new Region("1:10000000-20000000")); checkRegion(new Region("1:14000000-160000000")); checkRegion(new Region("1"), new Region("1")); checkRegion(new Region("ch1"), new Region("1")); checkRegion(new Region("chr1"), new Region("1")); checkRegion(new Region("chrm1"), new Region("1")); checkRegion(new Region("chrom1"), new Region("1")); checkRegion(new Region("2")); checkRegion(new Region("X")); checkRegion(new Region("30")); checkRegion(new Region("3:1-200000000")); checkRegion(new Region("X:1-200000000")); checkRegion(new Region("20:238441-7980390"));
public void checkConservationScore(Query query, Predicate<Double> doublePredicate, String source) { checkScore(query, doublePredicate, source, VariantAnnotation::getConservation); }
public void checkRegion(Region region) { checkRegion(region, region); }
@Test public void testGetAllVariants_include_samples() { checkSamplesData("NA19600"); checkSamplesData("NA19660"); checkSamplesData("NA19661"); checkSamplesData("NA19685"); checkSamplesData("NA19600,NA19685"); checkSamplesData("NA19685,NA19600"); checkSamplesData("NA19660,NA19661,NA19600"); checkSamplesData(null); checkSamplesData(VariantQueryUtils.ALL); checkSamplesData(VariantQueryUtils.NONE); }
queryResult = query(query, new QueryOptions()); assertEquals(282, queryResult.getNumResults()); queryResult.getResult().forEach(v -> v.getStudiesMap().forEach((s, vse) -> assertEquals(homAlt, vse.getSampleData("NA19600", "GT") queryResult = query(query, new QueryOptions()); assertEquals(282, queryResult.getNumResults()); queryResult.getResult().forEach(v -> v.getStudiesMap().forEach((s, vse) -> assertEquals(homAlt, vse.getSampleData("NA19600", "GT") queryResult = query(query, new QueryOptions()); assertEquals(282, queryResult.getNumResults()); queryResult.getResult().forEach(v -> v.getStudiesMap().forEach((s, vse) -> assertEquals(homAlt, vse.getSampleData("NA19600", "GT") queryResult = query(query, new QueryOptions()); assertEquals(282, queryResult.getNumResults()); queryResult.getResult().forEach(v -> v.getStudiesMap().forEach((s, vse) -> assertEquals(homAlt, vse.getSampleData("NA19600", "GT") queryResult = query(query, new QueryOptions()); assertEquals(282, queryResult.getNumResults()); queryResult.getResult().forEach(v -> v.getStudiesMap().forEach((s, vse) -> assertEquals(homAlt, vse.getSampleData("NA19600", "GT") long numResults = count(query); assertEquals(NUM_VARIANTS, numResults); numResults = count(query); assertEquals(NUM_VARIANTS, numResults); queryResult = query(query, new QueryOptions()); assertEquals(9, queryResult.getNumResults()); queryResult.getResult().forEach(v -> v.getStudiesMap().forEach((s, vse) -> {
@Test public void rank_ct() throws Exception { int limit = 20; QueryResult<Map<String, Object>> queryResult_rank = rank(limit, new Query(), "ct", false); System.out.println(new ObjectMapper().writerWithDefaultPrettyPrinter().writeValueAsString(queryResult_rank)); assertEquals(limit, queryResult_rank.getNumResults()); for (Map<String, Object> map : queryResult_rank.getResult()) { Long variantQueryResult = count(new Query(ANNOT_CONSEQUENCE_TYPE.key(), map.get("id"))); assertEquals((variantQueryResult).intValue(), ((Number) map.get("count")).intValue()); } }
@Test public void testGetAllVariants_filterNoFile() { // FILTER Query query = new Query(FILTER.key(), "PASS"); long numResults = count(query); assertEquals(NUM_VARIANTS, numResults); query.append(FILTER.key(), "NO_PASS"); assertEquals(0, count(query).longValue()); // FILTER+STUDY query = new Query(STUDY.key(), studyConfiguration.getStudyId()).append(FILTER.key(), "PASS"); numResults = count(query); assertEquals(NUM_VARIANTS, numResults); query.append(FILTER.key(), "NO_PASS"); assertEquals(0, count(query).longValue()); }
public void checkFunctionalScore(Query query, Predicate<Double> doublePredicate, String source) { checkScore(query, doublePredicate, source, VariantAnnotation::getFunctionalScore); }
@Test public void testGetAllVariants_limit_skip() { limitSkip(new Query(), new QueryOptions()); }
queryResult = query(new Query(STATS_MAF.key(), STUDY_NAME + ":" + StudyEntry.DEFAULT_COHORT + ">0.2"), null); assertThat(queryResult, everyResult(allVariants, withStudy(STUDY_NAME, withStats(StudyEntry.DEFAULT_COHORT, withMaf(gt(0.2)))))); numResults = count(new Query(STATS_MAF.key(), STUDY_NAME + ":cohort1>0.2")); assertEquals(expectedCount, numResults); numResults = count(new Query(STATS_MAF.key(), "1:10>0.2")); assertEquals(expectedCount, numResults); numResults = count(new Query(STATS_MAF.key(), STUDY_NAME + ":10>0.2")); assertEquals(expectedCount, numResults); queryResult = query(new Query(STATS_MAF.key(), "1:cohort1>0.2"), null); assertEquals(expectedCount, queryResult.getNumResults()); queryResult = query(new Query(STUDY.key(), STUDY_NAME).append(STATS_MAF.key(), "cohort1>0.2"), null); assertEquals(expectedCount, queryResult.getNumResults()); queryResult = query(new Query(STUDY.key(), STUDY_NAME).append(STATS_MAF.key(), "10>0.2"), null); assertEquals(expectedCount, queryResult.getNumResults()); queryResult = query(new Query(STUDY.key(), 1).append(STATS_MAF.key(), "10>0.2"), null); assertEquals(expectedCount, queryResult.getNumResults()); assertThat(queryResult, everyResult(allVariants, withStudy(STUDY_NAME, withStats("cohort1", withMaf(gt(0.2)))))); queryResult = query(new Query(STATS_MAF.key(), STUDY_NAME + ":cohort2>0.2"), null); assertThat(queryResult, everyResult(allVariants, withStudy(STUDY_NAME, withStats("cohort2", withMaf(gt(0.2)))))); queryResult = query(new Query(STATS_MAF.key(), STUDY_NAME + ":cohort2>0.2," + STUDY_NAME + ":cohort2<=0.2"), null); assertThat(queryResult, numResults(is(allVariants.getNumResults()))); queryResult = query(new Query(STATS_MAF.key(), STUDY_NAME + ":cohort2>0.2;" + STUDY_NAME + ":cohort2<=0.2"), null); assertThat(queryResult, numResults(is(0))); queryResult = query(new Query(STATS_MAF.key(), STUDY_NAME + ":cohort2>0.2;" + STUDY_NAME + ":cohort1<0.2"), null);
super.before(); } finally { try {