@Override public String toString() { return fieldName(); }
private static boolean transformVariantAnnotationField(String key, QueryOptions queryOptions) { StringBuilder sb = new StringBuilder(); final String annotation = VariantField.ANNOTATION.fieldName(); for (String field : queryOptions.getAsStringList(key)) { String newField; if (field.startsWith(annotation + '.') || field.equals(annotation)) { newField = field; } else { newField = annotation + '.' + field; } if (VariantField.get(newField) == null) { throw VariantQueryException.unknownVariantAnnotationField(key, field); } sb.append(newField); sb.append(','); } if (sb.length() > 0) { queryOptions.put(key, sb.toString()); return true; } else { return false; } }
@Test public void checkAnnotationSubFields() throws Exception { Set<String> expectedFields = VariantAnnotation.getClassSchema().getFields().stream().map(Schema.Field::name) .collect(Collectors.toCollection(TreeSet::new)); Set<String> actual = VariantField.ANNOTATION.getChildren().stream().map(f -> f.fieldName().split("\\.")[1]) .collect(Collectors.toCollection(TreeSet::new)); assertEquals(expectedFields, actual); }
protected Iterator<String> variantIdIteratorFromSearch(Query query, int limit, int skip, AtomicLong numTotalResults) throws StorageEngineException { Iterator<String> variantsIterator; QueryOptions queryOptions = new QueryOptions() .append(QueryOptions.LIMIT, limit) .append(QueryOptions.SKIP, skip) .append(QueryOptions.INCLUDE, VariantField.ID.fieldName()); try { // Do not iterate for small queries if (limit < 10000) { VariantQueryResult<VariantSearchModel> nativeResult = getVariantSearchManager().nativeQuery(dbName, query, queryOptions); if (numTotalResults != null) { numTotalResults.set(nativeResult.getNumTotalResults()); } variantsIterator = nativeResult.getResult() .stream() .map(VariantSearchModel::getId) .iterator(); } else { VariantSearchSolrIterator nativeIterator = getVariantSearchManager().nativeIterator(dbName, query, queryOptions); if (numTotalResults != null) { numTotalResults.set(nativeIterator.getNumFound()); } variantsIterator = Iterators.transform(nativeIterator, VariantSearchModel::getId); } } catch (VariantSearchException | IOException e) { throw new VariantQueryException("Error querying " + VariantSearchManager.SEARCH_ENGINE_ID, e); } return variantsIterator; }
public void testQueries(VariantStorageEngine variantStorageEngine) throws StorageEngineException { long count = variantStorageEngine.count(new Query()).first(); long partialCount = 0; int batchSize = (int) Math.ceil(count / 10.0); for (int i = 0; i < 10; i++) { partialCount += variantStorageEngine.getAnnotation("v2", null, new QueryOptions(QueryOptions.LIMIT, batchSize) .append(QueryOptions.SKIP, batchSize * i)).getResult().size(); } assertEquals(count, partialCount); for (int chr = 1; chr < 22; chr += 2) { Query query = new Query(VariantQueryParam.REGION.key(), chr + "," + (chr + 1)); count = variantStorageEngine.count(query).first(); partialCount = variantStorageEngine.getAnnotation("v2", query, new QueryOptions()).getResult().size(); assertEquals(count, partialCount); } String consequenceTypes = VariantField.ANNOTATION_CONSEQUENCE_TYPES.fieldName().replace(VariantField.ANNOTATION.fieldName() + ".", ""); for (VariantAnnotation annotation : variantStorageEngine.getAnnotation("v2", null, new QueryOptions(QueryOptions.INCLUDE, consequenceTypes)).getResult()) { assertEquals(1, annotation.getConsequenceTypes().size()); } for (VariantAnnotation annotation : variantStorageEngine.getAnnotation("v2", null, new QueryOptions(QueryOptions.EXCLUDE, consequenceTypes)).getResult()) { assertTrue(annotation.getConsequenceTypes() == null || annotation.getConsequenceTypes().isEmpty()); } // Get annotations from a deleted snapshot thrown.expectMessage("Variant Annotation snapshot \"v1\" not found!"); assertEquals(0, variantStorageEngine.getAnnotation("v1", null, null).getResult().size()); }
.append(INCLUDE_GENOTYPE.key(), true) .append(INCLUDE_FORMAT.key(), ALL) .append(INCLUDE_FILE.key(), NONE), new QueryOptions(QueryOptions.INCLUDE, STUDIES.fieldName())); checkEqualDocuments(expected, projection); expected.append(IDS_FIELD, 1); projection = parser.createProjection(new Query().append(INCLUDE_SAMPLE.key(), ALL) .append(INCLUDE_FILE.key(), NONE), new QueryOptions(QueryOptions.EXCLUDE, ANNOTATION.fieldName())); checkEqualDocuments(expected, projection); .append(INCLUDE_FILE.key(), NONE).append(INCLUDE_GENOTYPE.key(), true), new QueryOptions(QueryOptions.EXCLUDE, ANNOTATION.fieldName())); checkEqualDocuments(expected, projection);