Skip to content

Commit

Permalink
Re-apply caching to all study view service methods (#11091)
Browse files Browse the repository at this point in the history
  • Loading branch information
alisman authored Oct 18, 2024
1 parent 38a398d commit eee49e0
Show file tree
Hide file tree
Showing 4 changed files with 96 additions and 6 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
import org.cbioportal.service.ClinicalDataDensityPlotService;
import org.cbioportal.web.columnar.StudyViewColumnStoreController;
import org.cbioportal.web.util.DensityPlotParameters;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service;

import java.math.BigDecimal;
Expand All @@ -18,8 +19,14 @@
import java.util.Map;
import java.util.stream.Collectors;


@Service
public class ClinicalDataDensityPlotServiceImpl implements ClinicalDataDensityPlotService {

@Cacheable(
cacheResolver = "staticRepositoryCacheOneResolver",
condition = "@cacheEnabledConfig.getEnabled()"
)
@Override
public DensityPlotData getDensityPlotData(List<ClinicalData> sampleClinicalData, DensityPlotParameters densityPlotParameters) {
DensityPlotData result = new DensityPlotData();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,43 +52,75 @@ public StudyViewColumnarServiceImpl(StudyViewRepository studyViewRepository, Alt
this.customDataFilterUtil = customDataFilterUtil;
}

@Cacheable(cacheResolver = "generalRepositoryCacheResolver", condition = "@cacheEnabledConfig.getEnabled()")
// should condition = "@cacheEnabledConfig.getEnabled() && #singleStudyUnfiltered"
@Cacheable(
cacheResolver = "staticRepositoryCacheOneResolver",
condition = "@cacheEnabledConfig.getEnabled()"
)
@Override
public List<Sample> getFilteredSamples(StudyViewFilter studyViewFilter) {

return studyViewRepository.getFilteredSamples(createContext(studyViewFilter));
}

@Cacheable(
cacheResolver = "staticRepositoryCacheOneResolver",
condition = "@cacheEnabledConfig.getEnabled()"
)
@Override
public List<AlterationCountByGene> getMutatedGenes(StudyViewFilter studyViewFilter) throws StudyNotFoundException {
return alterationCountService.getMutatedGenes(createContext(studyViewFilter));
}

@Cacheable(
cacheResolver = "staticRepositoryCacheOneResolver",
condition = "@cacheEnabledConfig.getEnabled()"
)
@Override
public List<GenomicDataCount> getMolecularProfileSampleCounts(StudyViewFilter studyViewFilter) {
return studyViewRepository.getMolecularProfileSampleCounts(createContext(studyViewFilter));
}

@Cacheable(
cacheResolver = "staticRepositoryCacheOneResolver",
condition = "@cacheEnabledConfig.getEnabled()"
)
@Override
public List<ClinicalEventTypeCount> getClinicalEventTypeCounts(StudyViewFilter studyViewFilter) {
return studyViewRepository.getClinicalEventTypeCounts(createContext(studyViewFilter));
}

@Cacheable(
cacheResolver = "staticRepositoryCacheOneResolver",
condition = "@cacheEnabledConfig.getEnabled()"
)
@Override
public PatientTreatmentReport getPatientTreatmentReport(StudyViewFilter studyViewFilter) {
return treatmentCountReportService.getPatientTreatmentReport(createContext(studyViewFilter));
}

@Cacheable(
cacheResolver = "staticRepositoryCacheOneResolver",
condition = "@cacheEnabledConfig.getEnabled()"
)
@Override
public SampleTreatmentReport getSampleTreatmentReport(StudyViewFilter studyViewFilter) {
return treatmentCountReportService.getSampleTreatmentReport(createContext(studyViewFilter));
}

@Cacheable(
cacheResolver = "staticRepositoryCacheOneResolver",
condition = "@cacheEnabledConfig.getEnabled()"
)
@Override
public List<ClinicalDataCountItem> getGenomicDataBinCounts(StudyViewFilter studyViewFilter, List<GenomicDataBinFilter> genomicDataBinFilters) {
return generateDataCountItemsFromDataCounts(studyViewRepository.getGenomicDataBinCounts(createContext(studyViewFilter), genomicDataBinFilters));
}

@Cacheable(
cacheResolver = "staticRepositoryCacheOneResolver",
condition = "@cacheEnabledConfig.getEnabled()"
)
@Override
public List<ClinicalDataCountItem> getGenericAssayDataBinCounts(StudyViewFilter studyViewFilter, List<GenericAssayDataBinFilter> genericAssayDataBinFilters) {
return generateDataCountItemsFromDataCounts(studyViewRepository.getGenericAssayDataBinCounts(createContext(studyViewFilter), genericAssayDataBinFilters));
Expand All @@ -98,16 +130,28 @@ public List<CopyNumberCountByGene> getCnaGenes(StudyViewFilter studyViewFilter)
return alterationCountService.getCnaGenes(createContext(studyViewFilter));
}

@Cacheable(
cacheResolver = "staticRepositoryCacheOneResolver",
condition = "@cacheEnabledConfig.getEnabled()"
)
@Override
public List<AlterationCountByGene> getStructuralVariantGenes(StudyViewFilter studyViewFilter) throws StudyNotFoundException {
return alterationCountService.getStructuralVariantGenes(createContext(studyViewFilter));
}

@Cacheable(
cacheResolver = "staticRepositoryCacheOneResolver",
condition = "@cacheEnabledConfig.getEnabled()"
)
@Override
public Map<String, ClinicalDataType> getClinicalAttributeDatatypeMap() {
return studyViewRepository.getClinicalAttributeDatatypeMap();
}


@Cacheable(
cacheResolver = "staticRepositoryCacheOneResolver",
condition = "@cacheEnabledConfig.getEnabled()"
)
@Override
public List<ClinicalDataCountItem> getClinicalDataCounts(StudyViewFilter studyViewFilter, List<String> filteredAttributes) {
StudyViewFilterContext studyViewFilterContext = createContext(studyViewFilter);
Expand All @@ -123,34 +167,58 @@ public List<ClinicalDataCountItem> getClinicalDataCounts(StudyViewFilter studyVi
);
}

@Cacheable(
cacheResolver = "staticRepositoryCacheOneResolver",
condition = "@cacheEnabledConfig.getEnabled()"
)
@Override
public List<CaseListDataCount> getCaseListDataCounts(StudyViewFilter studyViewFilter) {
// the study view merges case lists by type across studies
// type is determined by the suffix of case list name (after study name)
var caseListDataCountsPerStudy = studyViewRepository.getCaseListDataCountsPerStudy(createContext(studyViewFilter));
return mergeCaseListCounts(caseListDataCountsPerStudy);
}


@Cacheable(
cacheResolver = "staticRepositoryCacheOneResolver",
condition = "@cacheEnabledConfig.getEnabled()"
)
@Override
public List<ClinicalData> getPatientClinicalData(StudyViewFilter studyViewFilter, List<String> attributeIds) {
return studyViewRepository.getPatientClinicalData(createContext(studyViewFilter), attributeIds);
}

@Cacheable(
cacheResolver = "staticRepositoryCacheOneResolver",
condition = "@cacheEnabledConfig.getEnabled()"
)
@Override
public List<ClinicalData> getSampleClinicalData(StudyViewFilter studyViewFilter, List<String> attributeIds) {
return studyViewRepository.getSampleClinicalData(createContext(studyViewFilter), attributeIds);
}

@Cacheable(
cacheResolver = "staticRepositoryCacheOneResolver",
condition = "@cacheEnabledConfig.getEnabled()"
)
@Override
public List<GenomicDataCountItem> getCNACountsByGeneSpecific(StudyViewFilter studyViewFilter, List<GenomicDataFilter> genomicDataFilters) {
return studyViewRepository.getCNACounts(createContext(studyViewFilter), genomicDataFilters);
}

@Cacheable(
cacheResolver = "staticRepositoryCacheOneResolver",
condition = "@cacheEnabledConfig.getEnabled()"
)
@Override
public List<GenericAssayDataCountItem> getGenericAssayDataCounts(StudyViewFilter studyViewFilter, List<GenericAssayDataFilter> genericAssayDataFilters) {
return studyViewRepository.getGenericAssayDataCounts(createContext(studyViewFilter), genericAssayDataFilters);
}


@Cacheable(
cacheResolver = "staticRepositoryCacheOneResolver",
condition = "@cacheEnabledConfig.getEnabled()"
)
@Override
public List<GenomicDataCountItem> getMutationCountsByGeneSpecific(StudyViewFilter studyViewFilter, List<GenomicDataFilter> genomicDataFilters) {
List<GenomicDataCountItem> genomicDataCountItemList = new ArrayList<>();
Expand All @@ -168,11 +236,16 @@ public List<GenomicDataCountItem> getMutationCountsByGeneSpecific(StudyViewFilte
return genomicDataCountItemList;
}

@Cacheable(
cacheResolver = "staticRepositoryCacheOneResolver",
condition = "@cacheEnabledConfig.getEnabled()"
)
@Override
public List<GenomicDataCountItem> getMutationTypeCountsByGeneSpecific(StudyViewFilter studyViewFilter, List<GenomicDataFilter> genomicDataFilters) {
return studyViewRepository.getMutationCountsByType(createContext(studyViewFilter), genomicDataFilters);
}


private StudyViewFilterContext createContext(StudyViewFilter studyViewFilter) {
List<CustomSampleIdentifier> customSampleIdentifiers = customDataFilterUtil.extractCustomDataSamples(studyViewFilter);
return new StudyViewFilterContext(studyViewFilter, customSampleIdentifiers);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import org.apache.commons.math3.stat.descriptive.rank.Percentile;
import org.cbioportal.model.*;
import org.cbioportal.service.ViolinPlotService;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service;

import java.math.BigDecimal;
Expand All @@ -16,7 +17,11 @@ public class ViolinPlotServiceImpl implements ViolinPlotService {
// If a row has less than this many points, do not compute a
// violin, because it doesn't make sense.
static final int SHOW_ONLY_POINTS_THRESHOLD = 7;


@Cacheable(
cacheResolver = "staticRepositoryCacheOneResolver",
condition = "@cacheEnabledConfig.getEnabled()"
)
public ClinicalViolinPlotData getClinicalViolinPlotData(
List<ClinicalData> sampleClinicalDataForViolinPlot,
List<Sample> samplesForSampleCounts,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
import org.cbioportal.web.parameter.StudyViewFilter;
import org.cbioportal.web.util.DataBinner;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Component;

import java.util.*;
Expand Down Expand Up @@ -41,7 +42,11 @@ private List<ClinicalData> convertCountsToData(List<ClinicalDataCount> clinicalD
.flatMap(Collection::stream)
.toList();
}


@Cacheable(
cacheResolver = "staticRepositoryCacheOneResolver",
condition = "@cacheEnabledConfig.getEnabled()"
)
public List<ClinicalDataBin> fetchClinicalDataBinCounts(
DataBinMethod dataBinMethod,
ClinicalDataBinCountFilter dataBinCountFilter,
Expand Down

0 comments on commit eee49e0

Please sign in to comment.