diff --git a/src/main/java/org/cbioportal/service/impl/StudyViewColumnarServiceImpl.java b/src/main/java/org/cbioportal/service/impl/StudyViewColumnarServiceImpl.java index d0eed47401a..998a5e5bd63 100644 --- a/src/main/java/org/cbioportal/service/impl/StudyViewColumnarServiceImpl.java +++ b/src/main/java/org/cbioportal/service/impl/StudyViewColumnarServiceImpl.java @@ -110,17 +110,7 @@ public Map getClinicalAttributeDatatypeMap() { @Override public List getClinicalDataCounts(StudyViewFilter studyViewFilter, List filteredAttributes) { - StudyViewFilterContext studyViewFilterContext = createContext(studyViewFilter); - //List dataCounts = studyViewRepository.getClinicalDataCounts(studyViewFilterContext, filteredAttributes); - //List clinicalDataCountItems = generateDataCountItemsFromDataCounts(dataCounts); - return studyViewRepository.getClinicalDataCounts(studyViewFilterContext, filteredAttributes); -// return calculateMissingNaCountsForClinicalDataCountItems( -// clinicalDataCountItems, -// filteredAttributes, -// this.getClinicalAttributeDatatypeMap(), -// studyViewRepository.getFilteredSamplesCount(studyViewFilterContext), -// studyViewRepository.getFilteredPatientCount(studyViewFilterContext) -// ); + return studyViewRepository.getClinicalDataCounts(createContext(studyViewFilter), filteredAttributes); } @Override @@ -239,83 +229,6 @@ private List normalizeDataCounts(List data return new ArrayList<>(normalizedDataCounts); } - public static List calculateMissingNaCountsForClinicalDataCountItems( - List clinicalDataCountItems, - List filteredAttributes, - Map clinicalAttributeDatatypeMap, - int filteredSamplesCount, - int filteredPatientsCount - ) { - // Postprocess clinical data count items to adjust NA counts - List combinedClinicalDataCountItems = new ArrayList<>(); - - Map clinicalDataCountItemMap = clinicalDataCountItems - .stream() - .collect(Collectors.toMap( - ClinicalDataCountItem::getAttributeId, - item -> item - )); - - // go over all filtered attributes, not just attributes found in clinicalDataCountItems - for (String attributeId: filteredAttributes) { - ClinicalDataCountItem clinicalDataCountItem = clinicalDataCountItemMap.get(attributeId); - boolean isItemMissing = false; - - if (clinicalDataCountItem == null) { - isItemMissing = true; - clinicalDataCountItem = new ClinicalDataCountItem(); - clinicalDataCountItem.setAttributeId(attributeId); - clinicalDataCountItem.setCounts(new ArrayList<>()); - } - - Integer totalClinicalDataCount = clinicalDataCountItem - .getCounts() - .stream() - .map(ClinicalDataCount::getCount) - .reduce(0, Integer::sum); - // depending on clinical data type we either use filtered sample count or filtered patient count - int filteredCount = clinicalAttributeDatatypeMap.get(clinicalDataCountItem.getAttributeId()) == ClinicalDataType.SAMPLE ? - filteredSamplesCount: filteredPatientsCount; - int casesWithoutClinicalData = filteredCount - totalClinicalDataCount; - - if (casesWithoutClinicalData > 0) { - // some of these attributes may be completely missing in clinicalDataCountItem - // in case the only attribute value is NA. - // we need to manually add those missing items to make sure we have NA counts. - if (isItemMissing) { - combinedClinicalDataCountItems.add(clinicalDataCountItem); - } - - // find "NA" or else create a new one - Optional naClinicalDataCountOptional = clinicalDataCountItem - .getCounts() - .stream() - .filter(c -> c.getValue().equals("NA")) - .findFirst(); - - ClinicalDataCount naClinicalDataCount = naClinicalDataCountOptional - .orElseGet(() -> { - // this should only happen when there are multiple studies - ClinicalDataCount count = new ClinicalDataCount(); - count.setAttributeId(attributeId); - count.setValue("NA"); - count.setCount(0); - return count; - }); - - // if not present we need to add naClinicalDataCount to the existing counts - if (naClinicalDataCountOptional.isEmpty()) { - clinicalDataCountItem.getCounts().add(naClinicalDataCount); - } - - naClinicalDataCount.setCount(naClinicalDataCount.getCount() + casesWithoutClinicalData); - } - } - - combinedClinicalDataCountItems.addAll(clinicalDataCountItems); - return combinedClinicalDataCountItems; - } - public static List mergeCaseListCounts(List counts) { Map> countsPerListType = counts.stream() .collect((Collectors.groupingBy(CaseListDataCount::getValue))); diff --git a/src/main/resources/org/cbioportal/persistence/mybatisclickhouse/StudyViewMapper.xml b/src/main/resources/org/cbioportal/persistence/mybatisclickhouse/StudyViewMapper.xml index 2adb8b5dcfb..85c5c7a7cd8 100644 --- a/src/main/resources/org/cbioportal/persistence/mybatisclickhouse/StudyViewMapper.xml +++ b/src/main/resources/org/cbioportal/persistence/mybatisclickhouse/StudyViewMapper.xml @@ -226,62 +226,6 @@ ) - - SELECT - attribute_name as attributeId, - - - as value, - count(value) as count - FROM clinical_data_derived - - type='sample' AND - - - - - AND UPPER(value) NOT IN - - #{filteredAttributeValue} - - - AND attribute_name IN - - #{attributeId} - - - GROUP BY attribute_name, - value - - - - SELECT - attribute_name as attributeId, - - - as value, - count(value) as count - FROM clinical_data_derived - - type='patient' AND - - - - - AND UPPER(value) NOT IN - - #{filteredAttributeValue} - - - AND attribute_name IN - - #{attributeId} - - - GROUP BY attribute_name, - value - - SELECT count(distinct sample_unique_id) as count FROM sample_derived