public static Map<Integer, List<Integer>> getIncludeSamples(Query query, QueryOptions options, Collection<StudyConfiguration> studies) { Map<Integer, StudyConfiguration> map = studies.stream() .collect(Collectors.toMap(StudyConfiguration::getStudyId, Function.identity())); return getIncludeSamples(query, options, map.keySet(), map::get); }
private static <T> Map<T, List<T>> getIncludeSamples( Query query, QueryOptions options, Collection<Integer> studyIds, Function<Integer, StudyConfiguration> studyProvider, BiFunction<StudyConfiguration, String, T> getSample, Function<StudyConfiguration, T> getStudyId) { List<String> includeFilesList = getIncludeFilesList(query); List<String> includeSamplesList = getIncludeSamplesList(query, options); LinkedHashSet<String> includeSamplesSet = includeSamplesList != null ? new LinkedHashSet<>(includeSamplesList) : null; boolean includeAllSamples = query.getString(VariantQueryParam.INCLUDE_SAMPLE.key()).equals(ALL); Map<T, List<T>> samples = new HashMap<>(studyIds.size()); for (Integer studyId : studyIds) { StudyConfiguration sc = studyProvider.apply(studyId); if (sc == null) { continue; } List<T> sampleNames; if (includeSamplesSet != null || includeAllSamples || includeFilesList == null || includeFilesList.isEmpty()) { LinkedHashMap<String, Integer> includeSamplesPosition = StudyConfiguration.getSamplesPosition(sc, includeSamplesSet); @SuppressWarnings("unchecked") T[] a = (T[]) new Object[includeSamplesPosition.size()]; sampleNames = Arrays.asList(a); includeSamplesPosition.forEach((sample, position) -> sampleNames.set(position, getSample.apply(sc, sample))); } else { Set<T> sampleSet = new LinkedHashSet<>(); for (String file : includeFilesList) { Integer fileId = StudyConfigurationManager.getFileIdFromStudy(file, sc); if (fileId == null) {
/** * Returns all the possible samples to be returned by an specific query. * * @param query Query to execute * @param options Query Options * @return Map key: StudyId, value: list of sampleIds */ default Map<Integer, List<Integer>> getReturnedSamples(Query query, QueryOptions options) { return VariantQueryUtils.getIncludeSamples(query, options, getStudyConfigurationManager()); }
public static Map<String, List<String>> getSamplesMetadata(Query query, StudyConfiguration studyConfiguration) { List<Integer> includeStudies = Collections.singletonList(studyConfiguration.getStudyId()); Function<Integer, StudyConfiguration> studyProvider = studyId -> studyConfiguration; return getIncludeSamples(query, null, includeStudies, studyProvider, (sc, s) -> s, StudyConfiguration::getStudyName); }
private List<String> getReturnedSamples(StudyConfiguration studyConfiguration, QueryOptions options) { Map<Integer, List<Integer>> returnedSamplesMap = VariantQueryUtils.getIncludeSamples(new Query(options), options, Collections.singletonList(studyConfiguration)); List<String> returnedSamples = returnedSamplesMap.get(studyConfiguration.getStudyId()).stream() .map(sampleId -> studyConfiguration.getSampleIds().inverse().get(sampleId)) .collect(Collectors.toList()); return returnedSamples; }
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); }
Map<Integer, List<Integer>> map = null; if (isIncludeSamplesDefined(query, fields)) { map = getIncludeSamples(query, options, studyIds, studyId -> studyConfigurationManager.getStudyConfiguration(studyId, null).first()); } else if (isIncludeFilesDefined(query, fields)) {