default List<Integer> getReturnedStudies(Query query, QueryOptions options) { return VariantQueryUtils.getIncludeStudies(query, options, getStudyConfigurationManager()); } /**
public static List<Integer> getIncludeStudies(Query query, QueryOptions options, StudyConfigurationManager studyConfigurationManager) { return getIncludeStudies(query, options, studyConfigurationManager, VariantField.getIncludeFields(options)); }
protected StudyConfiguration getStudyConfiguration(Query query, boolean singleStudy) { List<Integer> studyIds = VariantQueryUtils.getIncludeStudies(query, QueryOptions.empty(), studyConfigurationManager); if (studyIds.isEmpty()) { studyIds = studyConfigurationManager.getStudyIds(null); if (studyIds == null) { throw new IllegalArgumentException(); } } if (singleStudy) { if (studyIds.size() > 1) { throw new IllegalArgumentException(); } } return studyConfigurationManager.getStudyConfiguration(studyIds.get(0), null).first(); }
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 Map<Integer, List<Integer>> getIncludeSamples(Query query, QueryOptions options, StudyConfigurationManager studyConfigurationManager) { List<Integer> includeStudies = getIncludeStudies(query, options, studyConfigurationManager); return getIncludeSamples(query, options, includeStudies, studyId -> studyConfigurationManager.getStudyConfiguration(studyId, options).first()); }
public static Map<String, List<String>> getSamplesMetadata(Query query, StudyConfigurationManager studyConfigurationManager) { List<Integer> includeStudies = getIncludeStudies(query, null, studyConfigurationManager); Function<Integer, StudyConfiguration> studyProvider = studyId -> studyConfigurationManager.getStudyConfiguration(studyId, null).first(); return getIncludeSamples(query, null, includeStudies, studyProvider, (sc, s) -> s, StudyConfiguration::getStudyName); }
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); }
List<String> returnedStudies = VariantQueryUtils.getIncludeStudies(query, queryOptions, scm) .stream() .map(scm.getStudies(null).inverse()::get)
public static Query getEngineQuery(Query query, QueryOptions options, StudyConfigurationManager scm) throws StorageEngineException { Collection<VariantQueryParam> uncoveredParams = uncoveredParams(query); Query engineQuery = new Query(); for (VariantQueryParam uncoveredParam : uncoveredParams) { engineQuery.put(uncoveredParam.key(), query.get(uncoveredParam.key())); } // Despite STUDIES is a covered filter, it has to be in the underlying // query to be used as defaultStudy if (isValidParam(query, STUDY)) { if (!uncoveredParams.isEmpty()) { // This will set the default study, if needed engineQuery.put(STUDY.key(), query.get(STUDY.key())); } else if (!isValidParam(query, INCLUDE_STUDY)) { // If returned studies is not defined, we need to define it with the values from STUDIES List<Integer> studies = VariantQueryUtils.getIncludeStudies(query, options, scm); engineQuery.put(INCLUDE_STUDY.key(), studies); } } return engineQuery; }