for (String id : variantQueryXref.getIds()) { regionFilters.add(buildFilter(VariantColumn.XREFS, "=", id)); for (String xrefs : variantQueryXref.getOtherXrefs()) { regionFilters.add(buildFilter(VariantColumn.XREFS, "=", xrefs)); if (!variantQueryXref.getVariants().isEmpty()) { regionFilters.add(getVariantFilter(variantQueryXref.getVariants())); if (!variantQueryXref.getGenes().isEmpty()) { List<String> geneRegionFilters = new ArrayList<>(); if (isValidParam(query, ANNOT_GENE_REGIONS)) { throw new VariantQueryException("Error building query by genes '" + variantQueryXref.getGenes() + "', missing gene regions"); List<String> genes = variantQueryXref.getGenes(); List<String> soList = query.getAsStringList(ANNOT_CONSEQUENCE_TYPE.key()); Set<String> gnSoSet = new HashSet<>(genes.size() * soList.size());
if (!variantQueryXref.getIds().isEmpty()) { addQueryStringFilter(DocumentToVariantConverter.ANNOTATION_FIELD + '.' + DocumentToVariantAnnotationConverter.XREFS_FIELD + '.' + DocumentToVariantAnnotationConverter.XREF_ID_FIELD, variantQueryXref.getIds(), builder, QueryOperation.OR); addQueryStringFilter(DocumentToVariantConverter.IDS_FIELD, variantQueryXref.getIds(), builder, QueryOperation.OR); if (!variantQueryXref.getOtherXrefs().isEmpty()) { nonGeneRegionFilter = true; addQueryStringFilter(DocumentToVariantConverter.ANNOTATION_FIELD + '.' + DocumentToVariantAnnotationConverter.XREFS_FIELD + '.' + DocumentToVariantAnnotationConverter.XREF_ID_FIELD, variantQueryXref.getOtherXrefs(), builder, QueryOperation.OR); if (!variantQueryXref.getVariants().isEmpty()) { nonGeneRegionFilter = true; List<String> mongoIds = new ArrayList<>(variantQueryXref.getVariants().size()); for (Variant variant : variantQueryXref.getVariants()) { mongoIds.add(STRING_ID_CONVERTER.buildId(variant)); if (!variantQueryXref.getGenes().isEmpty()) { if (isValidParam(query, ANNOT_CONSEQUENCE_TYPE)) { List<String> soList = query.getAsStringList(ANNOT_CONSEQUENCE_TYPE.key()); Set<String> gnSo = new HashSet<>(variantQueryXref.getGenes().size() * soList.size()); for (String gene : variantQueryXref.getGenes()) { for (String so : soList) { int soNumber = parseConsequenceType(so); + '.' + DocumentToVariantAnnotationConverter.XREFS_FIELD
public List<Scan> parseQueryMultiRegion(SelectVariantElements selectElements, Query query, QueryOptions options) { VariantQueryXref xrefs = VariantQueryUtils.parseXrefs(query); if (!xrefs.getOtherXrefs().isEmpty()) { throw VariantQueryException.unsupportedVariantQueryFilter(VariantQueryParam.ANNOT_XREF, HadoopVariantStorageEngine.STORAGE_ENGINE_ID, "Only variant ids are supported with HBase native query"); } else if (!xrefs.getIds().isEmpty()) { throw VariantQueryException.unsupportedVariantQueryFilter(VariantQueryParam.ID, HadoopVariantStorageEngine.STORAGE_ENGINE_ID, "Only variant ids are supported with HBase native query"); List<Variant> variants = xrefs.getVariants();
VariantQueryXref xrefs = new VariantQueryXref(); if (query == null) { return xrefs; xrefs.getGenes().addAll(query.getAsStringList(GENE.key(), OR)); Variant variant = toVariant(value); if (variant != null) { xrefs.getVariants().add(variant); } else { xrefs.getIds().add(value); Variant variant = toVariant(value); if (variant != null) { xrefs.getVariants().add(variant); } else { if (isVariantAccession(value) || isClinicalAccession(value) || isGeneAccession(value)) { xrefs.getOtherXrefs().add(value); } else { xrefs.getGenes().add(value); xrefs.getOtherXrefs().addAll(query.getAsStringList(ANNOT_COSMIC.key(), OR)); xrefs.getOtherXrefs().addAll(query.getAsStringList(ANNOT_CLINVAR.key(), OR));
if (!xref.getIds().isEmpty() || !xref.getVariants().isEmpty() || !xref.getOtherXrefs().isEmpty()) {
public static void convertGenesToRegionsQuery(Query query, CellBaseUtils cellBaseUtils) { VariantQueryXref variantQueryXref = VariantQueryUtils.parseXrefs(query); List<String> genes = variantQueryXref.getGenes(); if (!genes.isEmpty()) { List<Region> regions = cellBaseUtils.getGeneRegion(genes); regions = mergeRegions(regions); query.put(ANNOT_GENE_REGIONS.key(), regions); } }