public static boolean isIncludeCovered(QueryOptions options) { Set<VariantField> returnedFields = VariantField.getIncludeFields(options); for (VariantField unsupportedVariantField : UNSUPPORTED_VARIANT_FIELDS) { if (returnedFields.contains(unsupportedVariantField)) { return false; } } return true; }
public static List<Integer> getIncludeStudies(Query query, QueryOptions options, StudyConfigurationManager studyConfigurationManager) { return getIncludeStudies(query, options, studyConfigurationManager, VariantField.getIncludeFields(options)); }
public static List<String> getIncludeSamplesList(Query query, QueryOptions options) { return getIncludeSamplesList(query, VariantField.getIncludeFields(options)); }
public SelectVariantElements(StudyConfiguration studyConfiguration, List<Integer> samples, List<Integer> files) { this.fields = VariantField.getIncludeFields(null); this.studies = Collections.singletonList(studyConfiguration.getStudyId()); this.studyConfigurations = Collections.singletonMap(studyConfiguration.getStudyId(), studyConfiguration); this.samples = Collections.singletonMap(studyConfiguration.getStudyId(), samples); this.files = Collections.singletonMap(studyConfiguration.getStudyId(), files); }
public static Map<String, List<String>> getSamplesMetadata(Query query, QueryOptions options, StudyConfigurationManager studyConfigurationManager) { if (VariantField.getIncludeFields(options).contains(VariantField.STUDIES)) { List<Integer> includeStudies = getIncludeStudies(query, options, studyConfigurationManager); Function<Integer, StudyConfiguration> studyProvider = studyId -> studyConfigurationManager.getStudyConfiguration(studyId, options).first(); return getIncludeSamples(query, options, includeStudies, studyProvider, (sc, s) -> s, StudyConfiguration::getStudyName); } else { return Collections.emptyMap(); } }
public static SelectVariantElements parseSelectElements( Query query, QueryOptions options, StudyConfigurationManager studyConfigurationManager) { Set<VariantField> includeFields = VariantField.getIncludeFields(options); List<Integer> includeStudies = VariantQueryUtils.getIncludeStudies(query, options, studyConfigurationManager, includeFields); Map<Integer, StudyConfiguration> studyConfigurations = new HashMap<>(); for (Integer studyId : includeStudies) { StudyConfiguration sc = studyConfigurationManager.getStudyConfiguration(studyId, options).first(); if (sc == null) { throw VariantQueryException.studyNotFound(studyId, studyConfigurationManager.getStudyNames(options)); } studyConfigurations.put(studyId, sc); } Function<Integer, StudyConfiguration> provider = studyConfigurations::get; Map<Integer, List<Integer>> sampleIds = VariantQueryUtils.getIncludeSamples(query, options, includeStudies, provider); Map<Integer, List<Integer>> fileIds = VariantQueryUtils.getIncludeFiles(query, includeStudies, includeFields, provider); if (fileIds.values().stream().allMatch(List::isEmpty)) { includeFields.remove(VariantField.STUDIES_FILES); includeFields.removeAll(VariantField.STUDIES_FILES.getChildren()); } if (sampleIds.values().stream().allMatch(List::isEmpty)) { includeFields.remove(VariantField.STUDIES_SAMPLES_DATA); includeFields.removeAll(VariantField.STUDIES_SAMPLES_DATA.getChildren()); } return new SelectVariantElements(includeFields, includeStudies, studyConfigurations, sampleIds, fileIds); }
public static boolean isOutputMultiStudy(Query query, QueryOptions options, Collection<?> studies) { Set<VariantField> fields = VariantField.getIncludeFields(options); if (!fields.contains(VariantField.STUDIES)) { return false; } else if (isValidParam(query, INCLUDE_STUDY)) { String includeStudy = query.getString(VariantQueryParam.INCLUDE_STUDY.key()); if (NONE.equals(includeStudy)) { return false; } else if (ALL.equals(includeStudy)) { return studies.size() > 1; } else { return query.getAsList(VariantQueryParam.INCLUDE_STUDY.key()).size() > 1; } } else if (isValidParam(query, STUDY)) { String value = query.getString(VariantQueryParam.STUDY.key()); long numStudies = splitValue(value, checkOperator(value)).stream().filter(s -> !isNegated(s)).count(); return numStudies > 1; } else { return studies.size() > 1; } }
List<String> solrFields = new ArrayList<>(); Set<VariantField> incFields = VariantField.getIncludeFields(queryOptions); List<String> incStudies = VariantQueryUtils.getIncludeStudiesList(query, incFields); if (incStudies != null && incStudies.size() == 0) {
throws CatalogException { final Map<String, List<Sample>> samplesMap = new HashMap<>(); Set<VariantField> returnedFields = VariantField.getIncludeFields(queryOptions); if (!returnedFields.contains(VariantField.STUDIES)) {
/** * Return a Solr variant iterator to retrieve Variant objects from a Solr core/collection * according a given query. * * @param collection Collection name * @param query Query * @param queryOptions Query options * @return Solr VariantSearch iterator * @throws VariantSearchException VariantSearchException * @throws IOException IOException */ public VariantSolrIterator iterator(String collection, Query query, QueryOptions queryOptions) throws VariantSearchException, IOException { try { SolrQuery solrQuery = solrQueryParser.parse(query, queryOptions); return new VariantSolrIterator(solrManager.getSolrClient(), collection, solrQuery, new VariantSearchToVariantConverter(VariantField.getIncludeFields(queryOptions))); } catch (SolrServerException e) { throw new VariantSearchException("Error getting variant iterator", e); } }
/** * Return the list of Variant objects from a Solr core/collection * according a given query. * * @param collection Collection name * @param query Query * @param queryOptions Query options * @return List of Variant objects * @throws VariantSearchException VariantSearchException * @throws IOException IOException */ public VariantQueryResult<Variant> query(String collection, Query query, QueryOptions queryOptions) throws VariantSearchException, IOException { SolrQuery solrQuery = solrQueryParser.parse(query, queryOptions); SolrCollection solrCollection = solrManager.getCollection(collection); QueryResult<Variant> queryResult; try { queryResult = solrCollection.query(solrQuery, VariantSearchModel.class, new VariantSearchToVariantConverter(VariantField.getIncludeFields(queryOptions))); } catch (SolrServerException e) { throw new VariantSearchException("Error executing variant query", e); } return new VariantQueryResult<>("", queryResult.getDbTime(), queryResult.getNumResults(), queryResult.getNumTotalResults(), "", "", queryResult.getResult(), null, SEARCH_ENGINE_ID); }