From 4d5187037d509c39ea6d61f6c21a1071d978d858 Mon Sep 17 00:00:00 2001 From: Charles Haynes Date: Tue, 18 Feb 2025 13:55:02 -0500 Subject: [PATCH] Move tests for domain specific Repositories --- .../clickhouse}/AbstractTestcontainers.java | 4 +- .../ClickhouseAlterationMapperTest.java | 265 +++++++++++++++++ .../ClickhouseClinicalDataMapperTest.java} | 147 +++++----- .../ClickhouseClinicalEventMapperTest.java} | 34 +-- .../clickhouse}/config/MyBatisConfig.java | 26 +- .../ClickhouseGenericAssayMapperTest.java} | 61 ++-- .../ClickhouseGenomicDataMapperTest.java | 267 ++++++++++++++++++ .../patient/ClickhousePatientMapperTest.java} | 50 ++-- .../sample/ClickhouseSampleMapperTest.java} | 140 ++++----- .../ClickhouseTreatmentMapperTest.java | 106 +++++++ .../mybatisclickhouse/CNAGenesTest.java | 76 ----- .../GenomicDataCountsTest.java | 73 ----- .../MolecularProfileCountTest.java | 119 -------- .../mybatisclickhouse/MutatedGenesTest.java | 89 ------ .../MutationDataCountsTest.java | 72 ----- .../PatientTreatmentCountsTest.java | 67 ----- .../mybatisclickhouse/ProfiledCountsTest.java | 145 ---------- .../ProteinExpressionCountsTest.java | 99 ------- .../SampleTreatmentCountsTest.java | 71 ----- .../StructuralVariantGenesTest.java | 56 ---- 20 files changed, 874 insertions(+), 1093 deletions(-) rename src/test/java/org/cbioportal/{legacy/persistence/mybatisclickhouse => infrastructure/repository/clickhouse}/AbstractTestcontainers.java (95%) create mode 100644 src/test/java/org/cbioportal/infrastructure/repository/clickhouse/alteration/ClickhouseAlterationMapperTest.java rename src/test/java/org/cbioportal/{legacy/persistence/mybatisclickhouse/StudyViewMapperClinicalDataCountTest.java => infrastructure/repository/clickhouse/clinical_data/ClickhouseClinicalDataMapperTest.java} (76%) rename src/test/java/org/cbioportal/{legacy/persistence/mybatisclickhouse/ClinicalEventTypeCountsTest.java => infrastructure/repository/clickhouse/clinical_event/ClickhouseClinicalEventMapperTest.java} (67%) rename src/test/java/org/cbioportal/{legacy/persistence/mybatisclickhouse => infrastructure/repository/clickhouse}/config/MyBatisConfig.java (54%) rename src/test/java/org/cbioportal/{legacy/persistence/mybatisclickhouse/GenericAssayDataCountsTest.java => infrastructure/repository/clickhouse/generic_assay/ClickhouseGenericAssayMapperTest.java} (53%) create mode 100644 src/test/java/org/cbioportal/infrastructure/repository/clickhouse/genomic_data/ClickhouseGenomicDataMapperTest.java rename src/test/java/org/cbioportal/{legacy/persistence/mybatisclickhouse/StudyViewCaseListSamplesCountsTest.java => infrastructure/repository/clickhouse/patient/ClickhousePatientMapperTest.java} (70%) rename src/test/java/org/cbioportal/{legacy/persistence/mybatisclickhouse/FilteredSamplesTest.java => infrastructure/repository/clickhouse/sample/ClickhouseSampleMapperTest.java} (54%) create mode 100644 src/test/java/org/cbioportal/infrastructure/repository/clickhouse/treatment/ClickhouseTreatmentMapperTest.java delete mode 100644 src/test/java/org/cbioportal/legacy/persistence/mybatisclickhouse/CNAGenesTest.java delete mode 100644 src/test/java/org/cbioportal/legacy/persistence/mybatisclickhouse/GenomicDataCountsTest.java delete mode 100644 src/test/java/org/cbioportal/legacy/persistence/mybatisclickhouse/MolecularProfileCountTest.java delete mode 100644 src/test/java/org/cbioportal/legacy/persistence/mybatisclickhouse/MutatedGenesTest.java delete mode 100644 src/test/java/org/cbioportal/legacy/persistence/mybatisclickhouse/MutationDataCountsTest.java delete mode 100644 src/test/java/org/cbioportal/legacy/persistence/mybatisclickhouse/PatientTreatmentCountsTest.java delete mode 100644 src/test/java/org/cbioportal/legacy/persistence/mybatisclickhouse/ProfiledCountsTest.java delete mode 100644 src/test/java/org/cbioportal/legacy/persistence/mybatisclickhouse/ProteinExpressionCountsTest.java delete mode 100644 src/test/java/org/cbioportal/legacy/persistence/mybatisclickhouse/SampleTreatmentCountsTest.java delete mode 100644 src/test/java/org/cbioportal/legacy/persistence/mybatisclickhouse/StructuralVariantGenesTest.java diff --git a/src/test/java/org/cbioportal/legacy/persistence/mybatisclickhouse/AbstractTestcontainers.java b/src/test/java/org/cbioportal/infrastructure/repository/clickhouse/AbstractTestcontainers.java similarity index 95% rename from src/test/java/org/cbioportal/legacy/persistence/mybatisclickhouse/AbstractTestcontainers.java rename to src/test/java/org/cbioportal/infrastructure/repository/clickhouse/AbstractTestcontainers.java index fb1d8117aff..2b05d1282ea 100644 --- a/src/test/java/org/cbioportal/legacy/persistence/mybatisclickhouse/AbstractTestcontainers.java +++ b/src/test/java/org/cbioportal/infrastructure/repository/clickhouse/AbstractTestcontainers.java @@ -1,7 +1,6 @@ -package org.cbioportal.legacy.persistence.mybatisclickhouse; +package org.cbioportal.infrastructure.repository.clickhouse; import org.junit.BeforeClass; - import org.junit.ClassRule; import org.springframework.boot.test.util.TestPropertyValues; import org.springframework.context.ApplicationContextInitializer; @@ -32,6 +31,7 @@ public static class Initializer implements ApplicationContextInitializer Objects.equals(a.getHugoGeneSymbol(), "BRCA1")).findFirst(); + assert (testBrca1AlterationCount.isPresent()); + assertEquals(Integer.valueOf(5), testBrca1AlterationCount.get().getTotalCount()); + } + + @Test + public void getMutatedGenesWithAlterationFilter() { + StudyViewFilter studyViewFilter = new StudyViewFilter(); + studyViewFilter.setStudyIds(List.of(STUDY_TCGA_PUB)); + + // Create AlterationFilter + AlterationFilter alterationFilter = new AlterationFilter(); + Map mutationEventTypeFilterMap = new HashMap<>(); + mutationEventTypeFilterMap.put(MutationEventType.nonsense_mutation, Boolean.TRUE); + mutationEventTypeFilterMap.put(MutationEventType.other, Boolean.FALSE); + alterationFilter.setMutationEventTypes(mutationEventTypeFilterMap); + + var alterationCountByGenes = mapper.getMutatedGenes(StudyViewFilterFactory.make(studyViewFilter, null, studyViewFilter.getStudyIds(), null), + AlterationFilterHelper.build(alterationFilter)); + assertEquals(2, alterationCountByGenes.size()); + + AlterationFilter onlyMutationStatusFilter = new AlterationFilter(); + onlyMutationStatusFilter.setMutationEventTypes(new HashMap<>()); + onlyMutationStatusFilter.setIncludeGermline(false); + onlyMutationStatusFilter.setIncludeSomatic(false); + onlyMutationStatusFilter.setIncludeUnknownStatus(true); + + var alterationCountByGenes1 = mapper.getMutatedGenes(StudyViewFilterFactory.make(studyViewFilter, null, studyViewFilter.getStudyIds(), null), + AlterationFilterHelper.build(onlyMutationStatusFilter)); + assertEquals(1, alterationCountByGenes1.size()); + + AlterationFilter mutationTypeAndStatusFilter = new AlterationFilter(); + mutationTypeAndStatusFilter.setMutationEventTypes(mutationEventTypeFilterMap); + mutationTypeAndStatusFilter.setMutationEventTypes(new HashMap<>()); + mutationTypeAndStatusFilter.setIncludeGermline(false); + mutationTypeAndStatusFilter.setIncludeSomatic(false); + mutationTypeAndStatusFilter.setIncludeUnknownStatus(true); + + var alterationCountByGenes2 = mapper.getMutatedGenes(StudyViewFilterFactory.make(studyViewFilter, null, studyViewFilter.getStudyIds(), null), + AlterationFilterHelper.build(onlyMutationStatusFilter)); + assertEquals(1, alterationCountByGenes2.size()); + } + + @Test + public void getCnaGenes() { + StudyViewFilter studyViewFilter = new StudyViewFilter(); + studyViewFilter.setStudyIds(List.of(STUDY_TCGA_PUB)); + var alterationCountByGenes = mapper.getCnaGenes(StudyViewFilterFactory.make(studyViewFilter, null, + studyViewFilter.getStudyIds(), null), + AlterationFilterHelper.build(studyViewFilter.getAlterationFilter())); + assertEquals(3, alterationCountByGenes.size()); + + // Test cna count for akt1 + var testAKT1AlterationCount = alterationCountByGenes.stream().filter(a -> Objects.equals(a.getHugoGeneSymbol(), "AKT1")) + .mapToInt(c -> c.getTotalCount().intValue()) + .sum(); + assertEquals(3, testAKT1AlterationCount); + } + + @Test + public void getCnaGenesWithAlterationFilter() { + StudyViewFilter studyViewFilter = new StudyViewFilter(); + studyViewFilter.setStudyIds(List.of(STUDY_TCGA_PUB)); + + // Create AlterationFilter + AlterationFilter alterationFilter = new AlterationFilter(); + Map cnaEventTypeFilterMap = new HashMap<>(); + cnaEventTypeFilterMap.put(CNA.HOMDEL, false); + cnaEventTypeFilterMap.put(CNA.AMP, true); + alterationFilter.setCopyNumberAlterationEventTypes(cnaEventTypeFilterMap); + + var alterationCountByGenes = mapper.getCnaGenes(StudyViewFilterFactory.make(studyViewFilter, null, + studyViewFilter.getStudyIds(), null), + AlterationFilterHelper.build(alterationFilter)); + assertEquals(2, alterationCountByGenes.size()); + + // Test cna count for akt1 filtering for AMP + var testAKT1AlterationCount = alterationCountByGenes.stream().filter(a -> Objects.equals(a.getHugoGeneSymbol(), "AKT1")) + .mapToInt(c -> c.getTotalCount().intValue()) + .sum(); + assertEquals(2, testAKT1AlterationCount); + } + + @Test + public void getStructuralVariantGenes() { + StudyViewFilter studyViewFilter = new StudyViewFilter(); + studyViewFilter.setStudyIds(List.of(STUDY_TCGA_PUB, STUDY_ACC_TCGA)); + var alterationCountByGenes = mapper.getStructuralVariantGenes(StudyViewFilterFactory.make(studyViewFilter, null, + studyViewFilter.getStudyIds(), null), + AlterationFilterHelper.build(studyViewFilter.getAlterationFilter())); + assertEquals(8, alterationCountByGenes.size()); + + // Test sv count for eml4 which is in one study + var testeml4AlterationCount = alterationCountByGenes.stream().filter(a -> Objects.equals(a.getHugoGeneSymbol(), "eml4")) + .mapToInt(c -> c.getTotalCount().intValue()) + .sum(); + assertEquals(1, testeml4AlterationCount); + + // Test sv count for ncoa4 which is in both studies + var testncoa4AlterationCount = alterationCountByGenes.stream().filter(a -> Objects.equals(a.getHugoGeneSymbol(), "ncoa4")) + .mapToInt(c -> c.getTotalCount().intValue()) + .sum(); + assertEquals(3, testncoa4AlterationCount); + } + + @Test + public void getTotalProfiledCountsByGene() { + StudyViewFilter studyViewFilter = new StudyViewFilter(); + studyViewFilter.setStudyIds(List.of(STUDY_TCGA_PUB)); + + // Testing profiled counts on samples with gene panel data and WES for one study + var totalProfiledCountsForMutationsMap = mapper.getTotalProfiledCounts(StudyViewFilterFactory.make(studyViewFilter, null, studyViewFilter.getStudyIds(), null), + "MUTATION_EXTENDED", List.of()); + var totalProfiledCountsForCnaMap = mapper.getTotalProfiledCounts(StudyViewFilterFactory.make(studyViewFilter, null, studyViewFilter.getStudyIds(), null), + "COPY_NUMBER_ALTERATION", List.of()); + var sampleProfiledCountsForMutationsWithoutPanelDataMap = mapper.getSampleProfileCountWithoutPanelData(StudyViewFilterFactory.make(studyViewFilter, null, studyViewFilter.getStudyIds(), null), + "MUTATION_EXTENDED"); + var sampleProfiledCountsForCnaWithoutPanelDataMap = mapper.getSampleProfileCountWithoutPanelData(StudyViewFilterFactory.make(studyViewFilter, null, studyViewFilter.getStudyIds(), null), + "COPY_NUMBER_ALTERATION"); + + // Assert the count of genes with profiled cases for mutations + assertEquals(5, totalProfiledCountsForMutationsMap.size()); + // Assert the count of genes with profiled cases for CNA + assertEquals(5, totalProfiledCountsForCnaMap.size()); + // Assert the profiled counts for mutations without panel data (WES) + assertEquals(6, sampleProfiledCountsForMutationsWithoutPanelDataMap); + // Assert the profiled counts for CNA without panel data (WES) + assertEquals(11, sampleProfiledCountsForCnaWithoutPanelDataMap); + + // Assert the profiled counts for AKT2 mutations + // AKT2 is on testpanel2 in STUDY_TCGA_PUB + var akt2TotalProfiledCountsForMutations = totalProfiledCountsForMutationsMap.stream().filter(c -> c.getHugoGeneSymbol().equals("AKT2")).findFirst(); + assertTrue(akt2TotalProfiledCountsForMutations.isPresent()); + assertEquals(4, akt2TotalProfiledCountsForMutations.get().getNumberOfProfiledCases().intValue()); + // Assert the profiled counts for BRCA1 mutations + // BRCA1 is on testpanel1 in STUDY_TCGA_PUB + var brca1TotalProfiledCountsForMutations = totalProfiledCountsForMutationsMap.stream().filter(c -> c.getHugoGeneSymbol().equals("BRCA1")).findFirst(); + assertTrue(brca1TotalProfiledCountsForMutations.isPresent()); + assertEquals(1, brca1TotalProfiledCountsForMutations.get().getNumberOfProfiledCases().intValue()); + // Assert the profiled counts for AKT1 mutations + // AKT1 is on both testpanel1 and testpanel2 in STUDY_TCGA_PUB + var akt1TotalProfiledCountsForMutations = totalProfiledCountsForMutationsMap.stream().filter(c -> c.getHugoGeneSymbol().equals("AKT1")).findFirst(); + assertTrue(akt1TotalProfiledCountsForMutations.isPresent()); + assertEquals(5, akt1TotalProfiledCountsForMutations.get().getNumberOfProfiledCases().intValue()); + + // Assert the profiled counts for AKT2 CNA + // AKT2 is on testpanel2 in STUDY_TCGA_PUB + var akt2TotalProfiledCountsForCna = totalProfiledCountsForCnaMap.stream().filter(c -> c.getHugoGeneSymbol().equals("AKT2")).findFirst(); + assertTrue(akt2TotalProfiledCountsForCna.isPresent()); + assertEquals(6, akt2TotalProfiledCountsForCna.get().getNumberOfProfiledCases().intValue()); + // Assert the profiled counts for BRCA1 CNA + // BRCA1 is on testpanel1 in STUDY_TCGA_PUB + var brca1TotalProfiledCountsForCna = totalProfiledCountsForCnaMap.stream().filter(c -> c.getHugoGeneSymbol().equals("BRCA1")).findFirst(); + assertTrue(brca1TotalProfiledCountsForCna.isPresent()); + assertEquals(2, brca1TotalProfiledCountsForCna.get().getNumberOfProfiledCases().intValue()); + // Assert the profiled counts for AKT1 CNA + // AKT1 is on both testpanel1 and testpanel2 in STUDY_TCGA_PUB + var akt1TotalProfiledCountsForCna = totalProfiledCountsForCnaMap.stream().filter(c -> c.getHugoGeneSymbol().equals("AKT1")).findFirst(); + assertTrue(akt1TotalProfiledCountsForCna.isPresent()); + assertEquals(8, akt1TotalProfiledCountsForCna.get().getNumberOfProfiledCases().intValue()); + + // Testing profiled counts on combined studies + studyViewFilter.setStudyIds(List.of(STUDY_TCGA_PUB, STUDY_GENIE_PUB)); + + // Testing profiled counts on samples with gene panel data and WES for a combined study + var totalProfiledCountsForMutationsMap1 = mapper.getTotalProfiledCounts(StudyViewFilterFactory.make(studyViewFilter, null, studyViewFilter.getStudyIds(), null), + "MUTATION_EXTENDED", List.of()); + var totalProfiledCountsForCnaMap1 = mapper.getTotalProfiledCounts(StudyViewFilterFactory.make(studyViewFilter, null, studyViewFilter.getStudyIds(), null), + "COPY_NUMBER_ALTERATION", List.of()); + var sampleProfiledCountsForMutationsWithoutPanelDataMap1 = mapper.getSampleProfileCountWithoutPanelData(StudyViewFilterFactory.make(studyViewFilter, null, studyViewFilter.getStudyIds(), null), + "MUTATION_EXTENDED"); + var sampleProfiledCountsForCnaWithoutPanelDataMap1 = mapper.getSampleProfileCountWithoutPanelData(StudyViewFilterFactory.make(studyViewFilter, null, studyViewFilter.getStudyIds(), null), + "COPY_NUMBER_ALTERATION"); + + // Assert the count of genes with profiled cases for mutations in a combined study + assertEquals(8, totalProfiledCountsForMutationsMap1.size()); + // Assert the count of genes with profiled cases for CNA in a combined study + assertEquals(8, totalProfiledCountsForCnaMap1.size()); + // Assert the profiled counts for mutations without panel data (WES) in a combined study + assertEquals(8, sampleProfiledCountsForMutationsWithoutPanelDataMap1); + // Assert the profiled counts for CNA without panel data (WES) in a combined study + assertEquals(12, sampleProfiledCountsForCnaWithoutPanelDataMap1); + + // Assert the profiled counts for BRCA1 mutations + // BRCA1 is on testpanel1 in STUDY_TCGA_PUB + var brca1TotalProfiledCountsForMutations1 = totalProfiledCountsForMutationsMap1.stream().filter(c -> c.getHugoGeneSymbol().equals("BRCA1")).findFirst(); + assertTrue(brca1TotalProfiledCountsForMutations1.isPresent()); + assertEquals(1, brca1TotalProfiledCountsForMutations1.get().getNumberOfProfiledCases().intValue()); + // Assert the profiled counts for BRCA2 mutations + // BRCA2 is on testpanel3 and testpanel4 in STUDY_GENIE_PUB + var brca2TotalProfiledCountsForMutations1 = totalProfiledCountsForMutationsMap1.stream().filter(c -> c.getHugoGeneSymbol().equals("BRCA2")).findFirst(); + assertTrue(brca2TotalProfiledCountsForMutations1.isPresent()); + assertEquals(2, brca2TotalProfiledCountsForMutations1.get().getNumberOfProfiledCases().intValue()); + // Assert the profiled counts for AKT2 mutations + // AKT2 is on testpanel2 in STUDY_TCGA_PUB and testpanel4 in STUDY_GENIE_PUB + var akt2TotalProfiledCountsForMutations1 = totalProfiledCountsForMutationsMap1.stream().filter(c -> c.getHugoGeneSymbol().equals("AKT2")).findFirst(); + assertTrue(akt2TotalProfiledCountsForMutations1.isPresent()); + assertEquals(4, akt2TotalProfiledCountsForMutations1.get().getNumberOfProfiledCases().intValue()); + + // Assert the profiled counts for BRCA1 CNA + // BRCA1 is on testpanel1 in STUDY_TCGA_PUB + var brca1TotalProfiledCountsForCna1 = totalProfiledCountsForCnaMap1.stream().filter(c -> c.getHugoGeneSymbol().equals("BRCA1")).findFirst(); + assertTrue(brca1TotalProfiledCountsForCna1.isPresent()); + assertEquals(2, brca1TotalProfiledCountsForCna1.get().getNumberOfProfiledCases().intValue()); + // Assert the profiled counts for BRCA2 CNA + // BRCA2 is on testpanel3 and testpanel4 in STUDY_GENIE_PUB + var brca2TotalProfiledCountsForCna1 = totalProfiledCountsForCnaMap1.stream().filter(c -> c.getHugoGeneSymbol().equals("BRCA2")).findFirst(); + assertTrue(brca2TotalProfiledCountsForCna1.isPresent()); + assertEquals(3, brca2TotalProfiledCountsForCna1.get().getNumberOfProfiledCases().intValue()); + // Assert the profiled counts for AKT2 CNA + // AKT2 is on testpanel2 in STUDY_TCGA_PUB and testpanel4 in STUDY_GENIE_PUB + var akt2TotalProfiledCountsForCna1 = totalProfiledCountsForCnaMap1.stream().filter(c -> c.getHugoGeneSymbol().equals("AKT2")).findFirst(); + assertTrue(akt2TotalProfiledCountsForCna1.isPresent()); + assertEquals(7, akt2TotalProfiledCountsForCna1.get().getNumberOfProfiledCases().intValue()); + } +} \ No newline at end of file diff --git a/src/test/java/org/cbioportal/legacy/persistence/mybatisclickhouse/StudyViewMapperClinicalDataCountTest.java b/src/test/java/org/cbioportal/infrastructure/repository/clickhouse/clinical_data/ClickhouseClinicalDataMapperTest.java similarity index 76% rename from src/test/java/org/cbioportal/legacy/persistence/mybatisclickhouse/StudyViewMapperClinicalDataCountTest.java rename to src/test/java/org/cbioportal/infrastructure/repository/clickhouse/clinical_data/ClickhouseClinicalDataMapperTest.java index a7d74ae3b3d..a0cc83be843 100644 --- a/src/test/java/org/cbioportal/legacy/persistence/mybatisclickhouse/StudyViewMapperClinicalDataCountTest.java +++ b/src/test/java/org/cbioportal/infrastructure/repository/clickhouse/clinical_data/ClickhouseClinicalDataMapperTest.java @@ -1,8 +1,9 @@ -package org.cbioportal.legacy.persistence.mybatisclickhouse; +package org.cbioportal.infrastructure.repository.clickhouse.clinical_data; +import org.cbioportal.domain.studyview.StudyViewFilterFactory; +import org.cbioportal.infrastructure.repository.clickhouse.AbstractTestcontainers; +import org.cbioportal.infrastructure.repository.clickhouse.config.MyBatisConfig; import org.cbioportal.legacy.model.ClinicalDataCount; -import org.cbioportal.legacy.persistence.helper.StudyViewFilterHelper; -import org.cbioportal.legacy.persistence.mybatisclickhouse.config.MyBatisConfig; import org.cbioportal.legacy.web.parameter.ClinicalDataFilter; import org.cbioportal.legacy.web.parameter.DataFilterValue; import org.cbioportal.legacy.web.parameter.StudyViewFilter; @@ -20,39 +21,38 @@ import java.util.Collections; import java.util.List; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; +import static org.junit.Assert.*; @RunWith(SpringRunner.class) @Import(MyBatisConfig.class) @DataJpaTest @DirtiesContext -@AutoConfigureTestDatabase(replace= AutoConfigureTestDatabase.Replace.NONE) +@AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE) @ContextConfiguration(initializers = AbstractTestcontainers.Initializer.class) -public class StudyViewMapperClinicalDataCountTest extends AbstractTestcontainers { +public class ClickhouseClinicalDataMapperTest { private static final String STUDY_ACC_TCGA = "acc_tcga"; - private static final String STUDY_GENIE_PUB = "study_genie_pub"; - - @Autowired - private StudyViewMapper studyViewMapper; + private static final String STUDY_GENIE_PUB = "study_genie_pub"; + @Autowired + private ClickhouseClinicalDataMapper mapper; + @Test public void getMutationCounts() { StudyViewFilter studyViewFilter = new StudyViewFilter(); studyViewFilter.setStudyIds(List.of(STUDY_GENIE_PUB)); - var clinicalDataCountItems = studyViewMapper.getClinicalDataCounts( - StudyViewFilterHelper.build(studyViewFilter, null, null, studyViewFilter.getStudyIds()), - List.of("mutation_count"), - Collections.emptyList() + var clinicalDataCountItems = mapper.getClinicalDataCounts( + StudyViewFilterFactory.make(studyViewFilter, null, studyViewFilter.getStudyIds(), null), + List.of("mutation_count"), + Collections.emptyList() ); - + var mutationsCountsOptional = clinicalDataCountItems.stream() - .filter(c -> c.getAttributeId().equals("mutation_count")).findFirst(); - + .filter(c -> c.getAttributeId().equals("mutation_count")).findFirst(); + assertTrue(mutationsCountsOptional.isPresent()); var mutationsCounts = mutationsCountsOptional.get().getCounts(); - + assertEquals(6, mutationsCounts.size()); assertEquals(1, findClinicaDataCount(mutationsCounts, "11")); assertEquals(1, findClinicaDataCount(mutationsCounts, "6")); @@ -62,20 +62,20 @@ public void getMutationCounts() { // 1 empty string + 1 'NAN' + 15 samples with no data assertEquals(17, findClinicaDataCount(mutationsCounts, "NA")); } - + @Test public void getCenterCounts() { StudyViewFilter studyViewFilter = new StudyViewFilter(); studyViewFilter.setStudyIds(List.of(STUDY_GENIE_PUB)); - var clinicalDataCounts = studyViewMapper.getClinicalDataCounts( - StudyViewFilterHelper.build(studyViewFilter, null, null, studyViewFilter.getStudyIds()), - List.of("center"), - Collections.emptyList() + var clinicalDataCounts = mapper.getClinicalDataCounts( + StudyViewFilterFactory.make(studyViewFilter, null, studyViewFilter.getStudyIds(), null), + List.of("center"), + Collections.emptyList() ); var categoricalClinicalDataCountsOptional = clinicalDataCounts.stream() - .filter(c -> c.getAttributeId().equals("center")).findFirst(); + .filter(c -> c.getAttributeId().equals("center")).findFirst(); assertTrue(categoricalClinicalDataCountsOptional.isPresent()); var categoricalClinicalDataCounts = categoricalClinicalDataCountsOptional.get().getCounts(); @@ -96,14 +96,14 @@ public void getDeadCounts() { StudyViewFilter studyViewFilter = new StudyViewFilter(); studyViewFilter.setStudyIds(List.of(STUDY_GENIE_PUB)); - var clinicalDataCounts = studyViewMapper.getClinicalDataCounts( - StudyViewFilterHelper.build(studyViewFilter, null, null, studyViewFilter.getStudyIds()), - List.of("dead"), - Collections.emptyList() + var clinicalDataCounts = mapper.getClinicalDataCounts( + StudyViewFilterFactory.make(studyViewFilter, null, studyViewFilter.getStudyIds(), null), + List.of("dead"), + Collections.emptyList() ); var categoricalClinicalDataCountsOptional = clinicalDataCounts.stream() - .filter(c -> c.getAttributeId().equals("dead")).findFirst(); + .filter(c -> c.getAttributeId().equals("dead")).findFirst(); assertTrue(categoricalClinicalDataCountsOptional.isPresent()); var categoricalClinicalDataCounts = categoricalClinicalDataCountsOptional.get().getCounts(); @@ -127,10 +127,10 @@ public void getMutationAndCenterCounts() { StudyViewFilter studyViewFilter = new StudyViewFilter(); studyViewFilter.setStudyIds(List.of(STUDY_GENIE_PUB)); - var combinedClinicalDataCounts = studyViewMapper.getClinicalDataCounts( - StudyViewFilterHelper.build(studyViewFilter, null, null, studyViewFilter.getStudyIds()), - List.of("mutation_count", "center"), - Collections.emptyList() + var combinedClinicalDataCounts = mapper.getClinicalDataCounts( + StudyViewFilterFactory.make(studyViewFilter, null, studyViewFilter.getStudyIds(), null), + List.of("mutation_count", "center"), + Collections.emptyList() ); assertEquals(2, combinedClinicalDataCounts.size()); @@ -141,20 +141,20 @@ public void getAgeCounts() { StudyViewFilter studyViewFilter = new StudyViewFilter(); studyViewFilter.setStudyIds(List.of(STUDY_GENIE_PUB)); - var clinicalDataCountItems = studyViewMapper.getClinicalDataCounts( - StudyViewFilterHelper.build(studyViewFilter, null, null, studyViewFilter.getStudyIds()), - List.of("age"), - Collections.emptyList() + var clinicalDataCountItems = mapper.getClinicalDataCounts( + StudyViewFilterFactory.make(studyViewFilter, null, studyViewFilter.getStudyIds(), null), + List.of("age"), + Collections.emptyList() ); var ageCountsOptional = clinicalDataCountItems.stream() - .filter(c -> c.getAttributeId().equals("age")).findFirst(); + .filter(c -> c.getAttributeId().equals("age")).findFirst(); assertTrue(ageCountsOptional.isPresent()); - var ageCounts = ageCountsOptional.get().getCounts(); + var ageCounts = ageCountsOptional.get().getCounts(); assertAgeCounts(ageCounts); - + // 1 empty string + 1 'NAN' + 1 'N/A' + 1 patient without data assertEquals(4, findClinicaDataCount(ageCounts, "NA")); } @@ -164,18 +164,18 @@ public void getAgeCountsForMultipleStudies() { StudyViewFilter studyViewFilter = new StudyViewFilter(); studyViewFilter.setStudyIds(List.of(STUDY_GENIE_PUB, STUDY_ACC_TCGA)); - var clinicalDataCountItems = studyViewMapper.getClinicalDataCounts( - StudyViewFilterHelper.build(studyViewFilter, null, null, studyViewFilter.getStudyIds()), - List.of("age"), - Collections.emptyList() + var clinicalDataCountItems = mapper.getClinicalDataCounts( + StudyViewFilterFactory.make(studyViewFilter, null, studyViewFilter.getStudyIds(), null), + List.of("age"), + Collections.emptyList() ); var ageCountsOptional = clinicalDataCountItems.stream() - .filter(c -> c.getAttributeId().equals("age")).findFirst(); + .filter(c -> c.getAttributeId().equals("age")).findFirst(); assertTrue(ageCountsOptional.isPresent()); var ageCounts = ageCountsOptional.get().getCounts(); - + // everything should be exactly the same as single study (STUDY_GENIE_PUB) filter // except NA counts assertAgeCounts(ageCounts); @@ -183,10 +183,10 @@ public void getAgeCountsForMultipleStudies() { // 1 empty string + 1 'NAN' + 1 'N/A' + 1 GENIE_PUB patient without data + 4 ACC_TCGA data without data assertEquals(8, findClinicaDataCount(ageCounts, "NA")); } - + private void assertAgeCounts(List ageCounts) { assertEquals(15, ageCounts.size()); - + assertEquals(3, findClinicaDataCount(ageCounts, "<18")); assertEquals(1, findClinicaDataCount(ageCounts, "18")); assertEquals(1, findClinicaDataCount(ageCounts, "22")); @@ -203,25 +203,25 @@ private void assertAgeCounts(List ageCounts) { assertEquals(2, findClinicaDataCount(ageCounts, ">89")); assertEquals(1, findClinicaDataCount(ageCounts, "UNKNOWN")); } - + @Test public void getMutationCountsFilteredByAge() { StudyViewFilter studyViewFilter = new StudyViewFilter(); studyViewFilter.setStudyIds(List.of(STUDY_GENIE_PUB)); - + // filter patients with age between 20 and 70 // (there are 5 patients within this range, which are 307..311) ClinicalDataFilter filter = buildClinicalDataFilter("age", 20, 70); studyViewFilter.setClinicalDataFilters(List.of(filter)); - - var clinicalDataCountItems = studyViewMapper.getClinicalDataCounts( - StudyViewFilterHelper.build(studyViewFilter, null, null, studyViewFilter.getStudyIds()), - List.of("mutation_count"), - Collections.emptyList() + + var clinicalDataCountItems = mapper.getClinicalDataCounts( + StudyViewFilterFactory.make(studyViewFilter, null, studyViewFilter.getStudyIds(), null), + List.of("mutation_count"), + Collections.emptyList() ); var mutationsCountsOptional = clinicalDataCountItems.stream() - .filter(c -> c.getAttributeId().equals("mutation_count")).findFirst(); + .filter(c -> c.getAttributeId().equals("mutation_count")).findFirst(); assertTrue(mutationsCountsOptional.isPresent()); var mutationCountsFiltered = mutationsCountsOptional.get().getCounts(); @@ -242,18 +242,18 @@ public void getMutationCountsFilteredByAgeWithOpenStartValues() { ClinicalDataFilter filter = buildClinicalDataFilter("age", null, 20); studyViewFilter.setClinicalDataFilters(List.of(filter)); - var clinicalDataCountItems = studyViewMapper.getClinicalDataCounts( - StudyViewFilterHelper.build(studyViewFilter, null, null, studyViewFilter.getStudyIds()), - List.of("mutation_count"), - Collections.emptyList() + var clinicalDataCountItems = mapper.getClinicalDataCounts( + StudyViewFilterFactory.make(studyViewFilter, null, studyViewFilter.getStudyIds(), null), + List.of("mutation_count"), + Collections.emptyList() ); var mutationsCountsOptional = clinicalDataCountItems.stream() - .filter(c -> c.getAttributeId().equals("mutation_count")).findFirst(); + .filter(c -> c.getAttributeId().equals("mutation_count")).findFirst(); assertTrue(mutationsCountsOptional.isPresent()); var mutationCountsFiltered = mutationsCountsOptional.get().getCounts(); - + assertEquals(4, mutationCountsFiltered.size()); assertEquals(1, findClinicaDataCount(mutationCountsFiltered, "11")); // patient 301 assertEquals(1, findClinicaDataCount(mutationCountsFiltered, "6")); // patient 302 @@ -261,7 +261,7 @@ public void getMutationCountsFilteredByAgeWithOpenStartValues() { assertEquals(1, findClinicaDataCount(mutationCountsFiltered, "2")); // patient 306 // no patients/samples with NA - assertEquals(0, findClinicaDataCount(mutationCountsFiltered, "NA")); + assertEquals(0, findClinicaDataCount(mutationCountsFiltered, "NA")); } @Test @@ -274,14 +274,14 @@ public void getMutationCountsFilteredByAgeWithOpenEndValues() { ClinicalDataFilter filter = buildClinicalDataFilter("age", 80, null); studyViewFilter.setClinicalDataFilters(List.of(filter)); - var clinicalDataCountItems = studyViewMapper.getClinicalDataCounts( - StudyViewFilterHelper.build(studyViewFilter, null, null, studyViewFilter.getStudyIds()), - List.of("mutation_count"), - Collections.emptyList() + var clinicalDataCountItems = mapper.getClinicalDataCounts( + StudyViewFilterFactory.make(studyViewFilter, null, studyViewFilter.getStudyIds(), null), + List.of("mutation_count"), + Collections.emptyList() ); var mutationsCountsOptional = clinicalDataCountItems.stream() - .filter(c -> c.getAttributeId().equals("mutation_count")).findFirst(); + .filter(c -> c.getAttributeId().equals("mutation_count")).findFirst(); assertTrue(mutationsCountsOptional.isPresent()); var mutationCountsFiltered = mutationsCountsOptional.get().getCounts(); @@ -293,7 +293,7 @@ public void getMutationCountsFilteredByAgeWithOpenEndValues() { // patients/samples with NA data: 317, 318, and 319 assertEquals(3, findClinicaDataCount(mutationCountsFiltered, "NA")); } - + private ClinicalDataFilter buildClinicalDataFilter(String attributeId, Integer start, Integer end) { DataFilterValue value = new DataFilterValue(); if (start != null) { @@ -306,13 +306,14 @@ private ClinicalDataFilter buildClinicalDataFilter(String attributeId, Integer s ClinicalDataFilter filter = new ClinicalDataFilter(); filter.setAttributeId(attributeId); filter.setValues(List.of(value)); - + return filter; } - + private int findClinicaDataCount(List counts, String attrValue) { var count = counts.stream().filter(c -> c.getValue().equals(attrValue)).findAny().orElse(null); return count == null ? 0 : count.getCount(); } -} + +} \ No newline at end of file diff --git a/src/test/java/org/cbioportal/legacy/persistence/mybatisclickhouse/ClinicalEventTypeCountsTest.java b/src/test/java/org/cbioportal/infrastructure/repository/clickhouse/clinical_event/ClickhouseClinicalEventMapperTest.java similarity index 67% rename from src/test/java/org/cbioportal/legacy/persistence/mybatisclickhouse/ClinicalEventTypeCountsTest.java rename to src/test/java/org/cbioportal/infrastructure/repository/clickhouse/clinical_event/ClickhouseClinicalEventMapperTest.java index 24684b768dc..10773030c07 100644 --- a/src/test/java/org/cbioportal/legacy/persistence/mybatisclickhouse/ClinicalEventTypeCountsTest.java +++ b/src/test/java/org/cbioportal/infrastructure/repository/clickhouse/clinical_event/ClickhouseClinicalEventMapperTest.java @@ -1,7 +1,9 @@ -package org.cbioportal.legacy.persistence.mybatisclickhouse; +package org.cbioportal.infrastructure.repository.clickhouse.clinical_event; -import org.cbioportal.legacy.persistence.helper.StudyViewFilterHelper; -import org.cbioportal.legacy.persistence.mybatisclickhouse.config.MyBatisConfig; +import org.cbioportal.domain.studyview.StudyViewFilterContext; +import org.cbioportal.domain.studyview.StudyViewFilterFactory; +import org.cbioportal.infrastructure.repository.clickhouse.AbstractTestcontainers; +import org.cbioportal.infrastructure.repository.clickhouse.config.MyBatisConfig; import org.cbioportal.legacy.web.parameter.DataFilter; import org.cbioportal.legacy.web.parameter.DataFilterValue; import org.cbioportal.legacy.web.parameter.StudyViewFilter; @@ -13,39 +15,37 @@ import org.springframework.context.annotation.Import; import org.springframework.test.annotation.DirtiesContext; import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.TestPropertySource; import org.springframework.test.context.junit4.SpringRunner; import java.util.List; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertTrue; - +import static org.junit.Assert.*; @RunWith(SpringRunner.class) @Import(MyBatisConfig.class) @DataJpaTest @DirtiesContext @AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE) @ContextConfiguration(initializers = AbstractTestcontainers.Initializer.class) -public class ClinicalEventTypeCountsTest extends AbstractTestcontainers { - +public class ClickhouseClinicalEventMapperTest { private static final String STUDY_TCGA_PUB = "study_tcga_pub"; @Autowired - private StudyViewMapper studyViewMapper; + private ClickhouseClinicalEventMapper mapper; @Test public void getClinicalEventTypeCounts() { StudyViewFilter studyViewFilter = new StudyViewFilter(); studyViewFilter.setStudyIds(List.of(STUDY_TCGA_PUB)); - var clinicalEventTypeCounts = studyViewMapper.getClinicalEventTypeCounts(StudyViewFilterHelper.build(studyViewFilter, null, null, studyViewFilter.getStudyIds())); + StudyViewFilterContext studyViewFilterContext = StudyViewFilterFactory.make(studyViewFilter, null, + studyViewFilter.getStudyIds(), null ); + + var clinicalEventTypeCounts = mapper.getClinicalEventTypeCounts(studyViewFilterContext); assertEquals(4, clinicalEventTypeCounts.size()); var clinicalEventTypeCountOptional = clinicalEventTypeCounts.stream().filter(ce -> ce.getEventType().equals("Treatment")) - .findFirst(); + .findFirst(); assertTrue(clinicalEventTypeCountOptional.isPresent()); assertEquals(1, clinicalEventTypeCountOptional.get().getCount().intValue()); @@ -56,13 +56,15 @@ public void getClinicalEventTypeCounts() { dataFilter.setValues(List.of(dataFilterValue)); studyViewFilter.setClinicalEventFilters(List.of(dataFilter)); - clinicalEventTypeCounts = studyViewMapper.getClinicalEventTypeCounts(StudyViewFilterHelper.build(studyViewFilter, null, null, studyViewFilter.getStudyIds())); + clinicalEventTypeCounts = mapper.getClinicalEventTypeCounts( + StudyViewFilterFactory.make(studyViewFilter, null, + studyViewFilter.getStudyIds(), null )); assertEquals(3, clinicalEventTypeCounts.size()); clinicalEventTypeCountOptional = clinicalEventTypeCounts.stream().filter(ce -> ce.getEventType().equals("status")) - .findFirst(); + .findFirst(); assertFalse(clinicalEventTypeCountOptional.isPresent()); } -} +} \ No newline at end of file diff --git a/src/test/java/org/cbioportal/legacy/persistence/mybatisclickhouse/config/MyBatisConfig.java b/src/test/java/org/cbioportal/infrastructure/repository/clickhouse/config/MyBatisConfig.java similarity index 54% rename from src/test/java/org/cbioportal/legacy/persistence/mybatisclickhouse/config/MyBatisConfig.java rename to src/test/java/org/cbioportal/infrastructure/repository/clickhouse/config/MyBatisConfig.java index 174c55207ff..6eaf0973089 100644 --- a/src/test/java/org/cbioportal/legacy/persistence/mybatisclickhouse/config/MyBatisConfig.java +++ b/src/test/java/org/cbioportal/infrastructure/repository/clickhouse/config/MyBatisConfig.java @@ -1,10 +1,11 @@ -package org.cbioportal.legacy.persistence.mybatisclickhouse.config; +package org.cbioportal.infrastructure.repository.clickhouse.config; import org.mybatis.spring.SqlSessionFactoryBean; import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.autoconfigure.jdbc.DataSourceProperties; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.boot.test.context.TestConfiguration; +import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.Bean; import org.springframework.core.io.ResourceLoader; @@ -12,7 +13,7 @@ import java.io.IOException; @TestConfiguration -@MapperScan("org.cbioportal.legacy.persistence.mybatisclickhouse") +@MapperScan(value= "org.cbioportal.infrastructure.repository.clickhouse") public class MyBatisConfig { @Bean @@ -24,25 +25,18 @@ public DataSourceProperties clickhouseDatSourceProperties() { @Bean public DataSource dataSource() { return clickhouseDatSourceProperties() - .initializeDataSourceBuilder() - .build(); + .initializeDataSourceBuilder() + .build(); } @Bean - public SqlSessionFactoryBean sqlColumnarSessionFactory(ResourceLoader resourceLoader, DataSource dataSource) throws IOException { + public SqlSessionFactoryBean sqlColumnarSessionFactory(ResourceLoader resourceLoader, DataSource dataSource, + ApplicationContext context) throws IOException { SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean(); sessionFactory.setDataSource(dataSource); - var studyViewMapperResource = resourceLoader.getResource("classpath:org/cbioportal/persistence/mybatisclickhouse/StudyViewMapper.xml") ; - var studyViewFilterMapperResource = resourceLoader.getResource("classpath:org/cbioportal/persistence/mybatisclickhouse/StudyViewFilterMapper.xml"); - var alterationFilterMapperResource = resourceLoader.getResource("classpath:org/cbioportal/persistence/mybatisclickhouse/StudyViewAlterationFilterMapper.xml"); - sessionFactory.setMapperLocations( - studyViewMapperResource,studyViewFilterMapperResource, alterationFilterMapperResource - ); + sessionFactory.addMapperLocations( + context.getResources("classpath:mappers/clickhouse/**/*.xml")); return sessionFactory; } - - - - - } + diff --git a/src/test/java/org/cbioportal/legacy/persistence/mybatisclickhouse/GenericAssayDataCountsTest.java b/src/test/java/org/cbioportal/infrastructure/repository/clickhouse/generic_assay/ClickhouseGenericAssayMapperTest.java similarity index 53% rename from src/test/java/org/cbioportal/legacy/persistence/mybatisclickhouse/GenericAssayDataCountsTest.java rename to src/test/java/org/cbioportal/infrastructure/repository/clickhouse/generic_assay/ClickhouseGenericAssayMapperTest.java index d1e5165ab86..2468cfb37e0 100644 --- a/src/test/java/org/cbioportal/legacy/persistence/mybatisclickhouse/GenericAssayDataCountsTest.java +++ b/src/test/java/org/cbioportal/infrastructure/repository/clickhouse/generic_assay/ClickhouseGenericAssayMapperTest.java @@ -1,9 +1,10 @@ -package org.cbioportal.legacy.persistence.mybatisclickhouse; +package org.cbioportal.infrastructure.repository.clickhouse.generic_assay; +import org.cbioportal.domain.studyview.StudyViewFilterFactory; +import org.cbioportal.infrastructure.repository.clickhouse.AbstractTestcontainers; +import org.cbioportal.infrastructure.repository.clickhouse.config.MyBatisConfig; import org.cbioportal.legacy.model.GenericAssayDataCount; import org.cbioportal.legacy.model.GenericAssayDataCountItem; -import org.cbioportal.legacy.persistence.helper.StudyViewFilterHelper; -import org.cbioportal.legacy.persistence.mybatisclickhouse.config.MyBatisConfig; import org.cbioportal.legacy.web.parameter.GenericAssayDataFilter; import org.cbioportal.legacy.web.parameter.StudyViewFilter; import org.junit.Test; @@ -24,15 +25,16 @@ @Import(MyBatisConfig.class) @DataJpaTest @DirtiesContext -@AutoConfigureTestDatabase(replace= AutoConfigureTestDatabase.Replace.NONE) +@AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE) @ContextConfiguration(initializers = AbstractTestcontainers.Initializer.class) -public class GenericAssayDataCountsTest extends AbstractTestcontainers { +public class ClickhouseGenericAssayMapperTest { + private static final String ACC_TCGA = "acc_tcga"; private static final String STUDY_GENIE_PUB = "study_genie_pub"; @Autowired - private StudyViewMapper studyViewMapper; + private ClickhouseGenericAssayMapper mapper; @Test public void getSampleCategoricalGenericAssayDataCounts() { @@ -40,24 +42,24 @@ public void getSampleCategoricalGenericAssayDataCounts() { studyViewFilter.setStudyIds(List.of(ACC_TCGA)); GenericAssayDataFilter genericAssayDataFilter = new GenericAssayDataFilter("1p_status", "armlevel_cna"); - List actualCounts = studyViewMapper.getGenericAssayDataCounts( - StudyViewFilterHelper.build(studyViewFilter, null, null, studyViewFilter.getStudyIds()), - List.of(genericAssayDataFilter) + List actualCounts = mapper.getGenericAssayDataCounts( + StudyViewFilterFactory.make(studyViewFilter, null, studyViewFilter.getStudyIds(), null), + List.of(genericAssayDataFilter) ); List expectedCounts = List.of( - new GenericAssayDataCountItem("1p_status", List.of( - new GenericAssayDataCount("Loss", 1), - new GenericAssayDataCount("Gain", 1), - new GenericAssayDataCount("Unchanged", 1), - new GenericAssayDataCount("NA", 1) - )) + new GenericAssayDataCountItem("1p_status", List.of( + new GenericAssayDataCount("Loss", 1), + new GenericAssayDataCount("Gain", 1), + new GenericAssayDataCount("Unchanged", 1), + new GenericAssayDataCount("NA", 1) + )) ); assertThat(actualCounts) - .usingRecursiveComparison() - .ignoringCollectionOrder() - .isEqualTo(expectedCounts); + .usingRecursiveComparison() + .ignoringCollectionOrder() + .isEqualTo(expectedCounts); } @Test @@ -66,22 +68,23 @@ public void getPatientCategoricalGenericAssayDataCounts() { studyViewFilter.setStudyIds(List.of(STUDY_GENIE_PUB)); GenericAssayDataFilter genericAssayDataFilter = new GenericAssayDataFilter("DMETS_DX_ADRENAL", "distant_mets"); - List actualCounts = studyViewMapper.getGenericAssayDataCounts( - StudyViewFilterHelper.build(studyViewFilter, null, null, studyViewFilter.getStudyIds()), - List.of(genericAssayDataFilter) + List actualCounts = mapper.getGenericAssayDataCounts( + StudyViewFilterFactory.make(studyViewFilter, null, studyViewFilter.getStudyIds(), null), + List.of(genericAssayDataFilter) ); List expectedCounts = List.of( - new GenericAssayDataCountItem("DMETS_DX_ADRENAL", List.of( - new GenericAssayDataCount("No", 9), - new GenericAssayDataCount("Yes", 1), - new GenericAssayDataCount("NA", 14) - )) + new GenericAssayDataCountItem("DMETS_DX_ADRENAL", List.of( + new GenericAssayDataCount("No", 9), + new GenericAssayDataCount("Yes", 1), + new GenericAssayDataCount("NA", 14) + )) ); assertThat(actualCounts) - .usingRecursiveComparison() - .ignoringCollectionOrder() - .isEqualTo(expectedCounts); + .usingRecursiveComparison() + .ignoringCollectionOrder() + .isEqualTo(expectedCounts); } + } \ No newline at end of file diff --git a/src/test/java/org/cbioportal/infrastructure/repository/clickhouse/genomic_data/ClickhouseGenomicDataMapperTest.java b/src/test/java/org/cbioportal/infrastructure/repository/clickhouse/genomic_data/ClickhouseGenomicDataMapperTest.java new file mode 100644 index 00000000000..ffc3e72ced0 --- /dev/null +++ b/src/test/java/org/cbioportal/infrastructure/repository/clickhouse/genomic_data/ClickhouseGenomicDataMapperTest.java @@ -0,0 +1,267 @@ +package org.cbioportal.infrastructure.repository.clickhouse.genomic_data; + +import org.cbioportal.domain.studyview.StudyViewFilterFactory; +import org.cbioportal.infrastructure.repository.clickhouse.AbstractTestcontainers; +import org.cbioportal.infrastructure.repository.clickhouse.config.MyBatisConfig; +import org.cbioportal.legacy.model.ClinicalDataCount; +import org.cbioportal.legacy.model.GenomicDataCount; +import org.cbioportal.legacy.model.GenomicDataCountItem; +import org.cbioportal.legacy.web.parameter.DataFilterValue; +import org.cbioportal.legacy.web.parameter.GenomicDataBinFilter; +import org.cbioportal.legacy.web.parameter.GenomicDataFilter; +import org.cbioportal.legacy.web.parameter.StudyViewFilter; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.autoconfigure.jdbc.AutoConfigureTestDatabase; +import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest; +import org.springframework.context.annotation.Import; +import org.springframework.test.annotation.DirtiesContext; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringRunner; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.Assert.assertEquals; + +@RunWith(SpringRunner.class) +@Import(MyBatisConfig.class) +@DataJpaTest +@DirtiesContext +@AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE) +@ContextConfiguration(initializers = AbstractTestcontainers.Initializer.class) +public class ClickhouseGenomicDataMapperTest { + private static final String STUDY_TCGA_PUB = "study_tcga_pub"; + private static final String STUDY_ACC_TCGA = "acc_tcga"; + + @Autowired + private ClickhouseGenomicDataMapper mapper; + + @Test + public void getCNACounts() { + StudyViewFilter studyViewFilter = new StudyViewFilter(); + studyViewFilter.setStudyIds(List.of(STUDY_TCGA_PUB)); + + GenomicDataFilter genomicDataFilterCNA = new GenomicDataFilter("AKT1", "cna"); + List actualCountsCNA = mapper.getCNACounts(StudyViewFilterFactory.make(studyViewFilter, + null, studyViewFilter.getStudyIds(),null), List.of(genomicDataFilterCNA)); + List expectedCountsCNA = List.of( + new GenomicDataCountItem("AKT1", "cna", List.of( + new GenomicDataCount("Homozygously deleted", "-2", 2), + new GenomicDataCount("Heterozygously deleted", "-1", 2), + new GenomicDataCount("Diploid", "0", 2), + new GenomicDataCount("Gained", "1", 2), + new GenomicDataCount("Amplified", "2", 2), + new GenomicDataCount("NA", "NA", 5) + ))); + assertThat(actualCountsCNA) + .usingRecursiveComparison() + .ignoringCollectionOrder() + .isEqualTo(expectedCountsCNA); + + GenomicDataFilter genomicDataFilterGISTIC = new GenomicDataFilter("AKT1", "gistic"); + List actualCountsGISTIC = + mapper.getCNACounts(StudyViewFilterFactory.make(studyViewFilter, null, studyViewFilter.getStudyIds() + , null), List.of(genomicDataFilterGISTIC)); + List expectedCountsGISTIC = List.of( + new GenomicDataCountItem("AKT1", "gistic", List.of( + new GenomicDataCount("Homozygously deleted", "-2", 2), + new GenomicDataCount("Heterozygously deleted", "-1", 3), + new GenomicDataCount("Diploid", "0", 3), + new GenomicDataCount("Gained", "1", 3), + new GenomicDataCount("Amplified", "2", 3), + new GenomicDataCount("NA", "NA", 1) + ))); + assertThat(actualCountsGISTIC) + .usingRecursiveComparison() + .ignoringCollectionOrder() + .isEqualTo(expectedCountsGISTIC); + } + + @Test + public void getMutationCounts() { + StudyViewFilter studyViewFilter = new StudyViewFilter(); + studyViewFilter.setStudyIds(List.of(STUDY_TCGA_PUB)); + + GenomicDataFilter genomicDataFilterMutation = new GenomicDataFilter("AKT1", "cna"); + Map actualMutationCounts = mapper.getMutationCounts(StudyViewFilterFactory.make(studyViewFilter, null, studyViewFilter.getStudyIds(), null), genomicDataFilterMutation); + Map expectedMutationCounts = new HashMap<>(); + expectedMutationCounts.put("mutatedCount", 2); + expectedMutationCounts.put("notMutatedCount", 8); + expectedMutationCounts.put("notProfiledCount", 5); + assertThat(actualMutationCounts) + .usingRecursiveComparison() + .ignoringCollectionOrder() + .isEqualTo(expectedMutationCounts); + } + + @Test + public void getMutationCountsByType() { + StudyViewFilter studyViewFilter = new StudyViewFilter(); + studyViewFilter.setStudyIds(List.of(STUDY_TCGA_PUB)); + + GenomicDataFilter genomicDataFilterMutation = new GenomicDataFilter("AKT1", "mutation"); + List actualMutationCountsByType = mapper.getMutationCountsByType(StudyViewFilterFactory.make(studyViewFilter, null, studyViewFilter.getStudyIds(), null), List.of(genomicDataFilterMutation)); + List expectedMutationCountsByType = List.of( + new GenomicDataCountItem("AKT1", "mutations", List.of( + new GenomicDataCount("nonsense mutation", "nonsense_mutation", 2, 1), + new GenomicDataCount("missense mutation", "missense_mutation", 1, 1) + ))); + assertThat(actualMutationCountsByType) + .usingRecursiveComparison() + .ignoringCollectionOrder() + .isEqualTo(expectedMutationCountsByType); + } + + @Test + public void getProteinExpressionCounts() { + // Testing combined study missing samples when one lacks a relevant genomic profile + StudyViewFilter studyViewFilter = new StudyViewFilter(); + studyViewFilter.setStudyIds(List.of(STUDY_TCGA_PUB, STUDY_ACC_TCGA)); + + GenomicDataBinFilter genomicDataBinFilterRPPA = new GenomicDataBinFilter(); + genomicDataBinFilterRPPA.setHugoGeneSymbol("AKT1"); + genomicDataBinFilterRPPA.setProfileType("rppa"); + + List actualRPPACounts1 = + mapper.getGenomicDataBinCounts(StudyViewFilterFactory.make(studyViewFilter, null, + studyViewFilter.getStudyIds(), null), List.of(genomicDataBinFilterRPPA)); + + ClinicalDataCount expectedRPPACount1 = new ClinicalDataCount(); + expectedRPPACount1.setAttributeId("AKT1rppa"); + expectedRPPACount1.setValue("0.7360"); + expectedRPPACount1.setCount(1); + ClinicalDataCount expectedRPPACount2 = new ClinicalDataCount(); + expectedRPPACount2.setAttributeId("AKT1rppa"); + expectedRPPACount2.setValue("-0.8097"); + expectedRPPACount2.setCount(1); + ClinicalDataCount expectedRPPACount3 = new ClinicalDataCount(); + expectedRPPACount3.setAttributeId("AKT1rppa"); + expectedRPPACount3.setValue("-0.1260"); + expectedRPPACount3.setCount(1); + ClinicalDataCount expectedRPPACountNA = new ClinicalDataCount(); + expectedRPPACountNA.setAttributeId("AKT1rppa"); + expectedRPPACountNA.setValue("NA"); + expectedRPPACountNA.setCount(16); + + List expectedRPPACounts1 = List.of( + expectedRPPACount1, expectedRPPACount2, expectedRPPACount3, expectedRPPACountNA + ); + assertThat(actualRPPACounts1) + .usingRecursiveComparison() + .ignoringCollectionOrder() + .isEqualTo(expectedRPPACounts1); + + + // Testing NA filtering on combined study missing samples when one lacks a relevant genomic profile + // Make genomic data filter to put in study view filter + GenomicDataFilter genomicDataFilterRPPA = new GenomicDataFilter("AKT1", "rppa"); + DataFilterValue dataFilterValue = new DataFilterValue(); + dataFilterValue.setValue("NA"); + genomicDataFilterRPPA.setValues(List.of(dataFilterValue)); + studyViewFilter.setGenomicDataFilters(List.of(genomicDataFilterRPPA)); + + List actualRPPACounts2 = + mapper.getGenomicDataBinCounts(StudyViewFilterFactory.make(studyViewFilter, null, + studyViewFilter.getStudyIds(), null), List.of(genomicDataBinFilterRPPA)); + + ClinicalDataCount expectedRPPACount = new ClinicalDataCount(); + expectedRPPACount.setAttributeId("AKT1rppa"); + expectedRPPACount.setValue("NA"); + expectedRPPACount.setCount(16); + + List expectedRPPACounts2 = List.of( + expectedRPPACount + ); + assertThat(actualRPPACounts2) + .usingRecursiveComparison() + .ignoringCollectionOrder() + .isEqualTo(expectedRPPACounts2); + } + + @Test + public void getMolecularProfileCounts() { + StudyViewFilter studyViewFilter = new StudyViewFilter(); + studyViewFilter.setStudyIds(List.of(STUDY_TCGA_PUB)); + + var profiles = new ArrayList(Arrays.asList("mutations")); + var profileGroups = new ArrayList>(Arrays.asList(profiles)); + + studyViewFilter.setGenomicProfiles(profileGroups); + + var molecularProfileCounts = + mapper.getMolecularProfileSampleCounts(StudyViewFilterFactory.make(studyViewFilter, null, studyViewFilter.getStudyIds(), null)); + + var size = molecularProfileCounts.stream().filter(gc->gc.getValue().equals("mutations")) + .findFirst().get().getCount().intValue(); + assertEquals(11, size); + + } + + @Test + public void getMolecularProfileCountsMultipleStudies() { + StudyViewFilter studyViewFilter = new StudyViewFilter(); + studyViewFilter.setStudyIds(List.of(STUDY_TCGA_PUB, STUDY_ACC_TCGA)); + + var profiles = new ArrayList(Arrays.asList("mutations")); + var profileGroups = new ArrayList>(Arrays.asList(profiles)); + + studyViewFilter.setGenomicProfiles(profileGroups); + + var molecularProfileCounts = + mapper.getMolecularProfileSampleCounts(StudyViewFilterFactory.make(studyViewFilter, null, studyViewFilter.getStudyIds(), null)); + + var size = molecularProfileCounts.stream().filter(gc->gc.getValue().equals("mutations")) + .findFirst().get().getCount().intValue(); + assertEquals(11, size); + + } + + @Test + public void getMolecularProfileCountsMultipleProfilesUnion() { + StudyViewFilter studyViewFilter = new StudyViewFilter(); + studyViewFilter.setStudyIds(List.of(STUDY_TCGA_PUB)); + + var profiles = new ArrayList(Arrays.asList("mutations","mrna")); + var profileGroups = new ArrayList>(Arrays.asList(profiles)); + + studyViewFilter.setGenomicProfiles(profileGroups); + + var molecularProfileCounts = + mapper.getMolecularProfileSampleCounts(StudyViewFilterFactory.make(studyViewFilter, null, studyViewFilter.getStudyIds(), null)); + + var sizeMutations = molecularProfileCounts.stream().filter(gc->gc.getValue().equals("mutations")) + .findFirst().get().getCount().intValue(); + assertEquals(11, sizeMutations); + + var sizeMrna = molecularProfileCounts.stream().filter(gc->gc.getValue().equals("mrna")) + .findFirst().get().getCount().intValue(); + assertEquals(9, sizeMrna); + + } + + @Test + public void getMolecularProfileCountsMultipleProfilesIntersect() { + StudyViewFilter studyViewFilter = new StudyViewFilter(); + studyViewFilter.setStudyIds(List.of(STUDY_TCGA_PUB)); + + var profile1 = new ArrayList(Arrays.asList("mutations")); + var profile2 = new ArrayList(Arrays.asList("mrna")); + var profileGroups = new ArrayList>(Arrays.asList(profile1, profile2)); + + studyViewFilter.setGenomicProfiles(profileGroups); + + var molecularProfileCounts = + mapper.getMolecularProfileSampleCounts(StudyViewFilterFactory.make(studyViewFilter, null, studyViewFilter.getStudyIds(), null)); + + var sizeMutations = molecularProfileCounts.stream().filter(gc->gc.getValue().equals("mutations")) + .findFirst().get().getCount().intValue(); + assertEquals(10, sizeMutations); + + } +} \ No newline at end of file diff --git a/src/test/java/org/cbioportal/legacy/persistence/mybatisclickhouse/StudyViewCaseListSamplesCountsTest.java b/src/test/java/org/cbioportal/infrastructure/repository/clickhouse/patient/ClickhousePatientMapperTest.java similarity index 70% rename from src/test/java/org/cbioportal/legacy/persistence/mybatisclickhouse/StudyViewCaseListSamplesCountsTest.java rename to src/test/java/org/cbioportal/infrastructure/repository/clickhouse/patient/ClickhousePatientMapperTest.java index 4ec4993d5e2..3abe20fee9c 100644 --- a/src/test/java/org/cbioportal/legacy/persistence/mybatisclickhouse/StudyViewCaseListSamplesCountsTest.java +++ b/src/test/java/org/cbioportal/infrastructure/repository/clickhouse/patient/ClickhousePatientMapperTest.java @@ -1,8 +1,8 @@ -package org.cbioportal.legacy.persistence.mybatisclickhouse; - -import org.cbioportal.legacy.persistence.helper.StudyViewFilterHelper; -import org.cbioportal.legacy.persistence.mybatisclickhouse.config.MyBatisConfig; +package org.cbioportal.infrastructure.repository.clickhouse.patient; +import org.cbioportal.domain.studyview.StudyViewFilterFactory; +import org.cbioportal.infrastructure.repository.clickhouse.AbstractTestcontainers; +import org.cbioportal.infrastructure.repository.clickhouse.config.MyBatisConfig; import org.cbioportal.legacy.service.util.StudyViewColumnarServiceUtil; import org.cbioportal.legacy.web.parameter.StudyViewFilter; import org.junit.Test; @@ -19,22 +19,23 @@ import java.util.Arrays; import java.util.List; -import static org.junit.Assert.assertEquals; +import static org.junit.Assert.*; @RunWith(SpringRunner.class) @Import(MyBatisConfig.class) @DataJpaTest @DirtiesContext -@AutoConfigureTestDatabase(replace= AutoConfigureTestDatabase.Replace.NONE) +@AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE) @ContextConfiguration(initializers = AbstractTestcontainers.Initializer.class) -public class StudyViewCaseListSamplesCountsTest extends AbstractTestcontainers { - +public class ClickhousePatientMapperTest { + private static final String STUDY_TCGA_PUB = "study_tcga_pub"; private static final String STUDY_ACC_TCGA = "acc_tcga"; - @Autowired - private StudyViewMapper studyViewMapper; + @Autowired + private ClickhousePatientMapper mapper; + @Test public void getMolecularProfileCounts() { StudyViewFilter studyViewFilter = new StudyViewFilter(); @@ -44,13 +45,13 @@ public void getMolecularProfileCounts() { var caseListGroups = new ArrayList(Arrays.asList(caseList)); studyViewFilter.setCaseLists(caseListGroups); - - var sampleListCounts = studyViewMapper.getCaseListDataCountsPerStudy(StudyViewFilterHelper.build(studyViewFilter, null, null, studyViewFilter.getStudyIds()) ); + + var sampleListCounts = mapper.getCaseListDataCounts(StudyViewFilterFactory.make(studyViewFilter, null, studyViewFilter.getStudyIds(), null) ); var size = sampleListCounts.stream().filter(gc->gc.getValue().equals("mrna")) - .findFirst().get().getCount().intValue(); + .findFirst().get().getCount().intValue(); assertEquals(7, size); - + } @Test @@ -63,10 +64,10 @@ public void getMolecularProfileCountsMultipleListsOr() { studyViewFilter.setCaseLists(caseListGroups); - var sampleListCounts = studyViewMapper.getCaseListDataCountsPerStudy(StudyViewFilterHelper.build(studyViewFilter, null, null, studyViewFilter.getStudyIds()) ); + var sampleListCounts = mapper.getCaseListDataCounts(StudyViewFilterFactory.make(studyViewFilter, null, studyViewFilter.getStudyIds(), null) ); var size = sampleListCounts.stream().filter(gc->gc.getValue().equals("mrna")) - .findFirst().get().getCount().intValue(); + .findFirst().get().getCount().intValue(); assertEquals(8, size); } @@ -82,10 +83,10 @@ public void getMolecularProfileCountsMultipleListsAnd() { studyViewFilter.setCaseLists(caseListGroups); - var sampleListCounts = studyViewMapper.getCaseListDataCountsPerStudy(StudyViewFilterHelper.build(studyViewFilter, null, null, studyViewFilter.getStudyIds()) ); + var sampleListCounts = mapper.getCaseListDataCounts(StudyViewFilterFactory.make(studyViewFilter, null, studyViewFilter.getStudyIds(), null) ); var size = sampleListCounts.stream().filter(gc->gc.getValue().equals("mrna")) - .findFirst().get().getCount().intValue(); + .findFirst().get().getCount().intValue(); assertEquals(7, size); } @@ -100,21 +101,20 @@ public void getMolecularProfileCountsAcrossStudies() { studyViewFilter.setCaseLists(caseListGroups); - var unMergedCounts = studyViewMapper.getCaseListDataCountsPerStudy(StudyViewFilterHelper.build(studyViewFilter, null, null, studyViewFilter.getStudyIds()) ); - + var unMergedCounts = mapper.getCaseListDataCounts(StudyViewFilterFactory.make(studyViewFilter, null, studyViewFilter.getStudyIds(), null) ); + var caseListCountsMerged = StudyViewColumnarServiceUtil.mergeCaseListCounts( - unMergedCounts + unMergedCounts ); var sizeUnmerged = unMergedCounts.stream().filter(gc->gc.getValue().equals("all")) - .findFirst().get().getCount().intValue(); + .findFirst().get().getCount().intValue(); assertEquals(14, sizeUnmerged); - + // now we've combined the "all" from the two studies var sizeMerged = caseListCountsMerged.stream().filter(gc->gc.getValue().equals("all")) - .findFirst().get().getCount().intValue(); + .findFirst().get().getCount().intValue(); assertEquals(15, sizeMerged); } - } \ No newline at end of file diff --git a/src/test/java/org/cbioportal/legacy/persistence/mybatisclickhouse/FilteredSamplesTest.java b/src/test/java/org/cbioportal/infrastructure/repository/clickhouse/sample/ClickhouseSampleMapperTest.java similarity index 54% rename from src/test/java/org/cbioportal/legacy/persistence/mybatisclickhouse/FilteredSamplesTest.java rename to src/test/java/org/cbioportal/infrastructure/repository/clickhouse/sample/ClickhouseSampleMapperTest.java index 6d95950fafc..f4c609b0c2c 100644 --- a/src/test/java/org/cbioportal/legacy/persistence/mybatisclickhouse/FilteredSamplesTest.java +++ b/src/test/java/org/cbioportal/infrastructure/repository/clickhouse/sample/ClickhouseSampleMapperTest.java @@ -1,7 +1,9 @@ -package org.cbioportal.legacy.persistence.mybatisclickhouse; +package org.cbioportal.infrastructure.repository.clickhouse.sample; +import org.cbioportal.domain.studyview.StudyViewFilterFactory; +import org.cbioportal.infrastructure.repository.clickhouse.AbstractTestcontainers; +import org.cbioportal.infrastructure.repository.clickhouse.config.MyBatisConfig; import org.cbioportal.legacy.persistence.helper.StudyViewFilterHelper; -import org.cbioportal.legacy.persistence.mybatisclickhouse.config.MyBatisConfig; import org.cbioportal.legacy.web.parameter.ClinicalDataFilter; import org.cbioportal.legacy.web.parameter.CustomSampleIdentifier; import org.cbioportal.legacy.web.parameter.DataFilterValue; @@ -21,7 +23,7 @@ import java.util.Arrays; import java.util.List; -import static org.junit.Assert.assertEquals; +import static org.junit.Assert.*; @RunWith(SpringRunner.class) @Import(MyBatisConfig.class) @@ -29,20 +31,21 @@ @DirtiesContext @AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE) @ContextConfiguration(initializers = AbstractTestcontainers.Initializer.class) -public class FilteredSamplesTest extends AbstractTestcontainers { - +public class ClickhouseSampleMapperTest { private static final String STUDY_TCGA_PUB = "study_tcga_pub"; private static final String STUDY_ACC_TCGA = "acc_tcga"; private static final String STUDY_GENIE_PUB = "study_genie_pub"; - @Autowired - private StudyViewMapper studyViewMapper; + @Autowired + private ClickhouseSampleMapper mapper; + @Test public void getFilteredSamples() { StudyViewFilter studyViewFilter = new StudyViewFilter(); studyViewFilter.setStudyIds(Arrays.asList(STUDY_TCGA_PUB, STUDY_ACC_TCGA)); - var filteredSamples = studyViewMapper.getFilteredSamples(StudyViewFilterHelper.build(studyViewFilter, null, null, studyViewFilter.getStudyIds())); + var filteredSamples = mapper.getFilteredSamples(StudyViewFilterFactory.make(studyViewFilter, null, + studyViewFilter.getStudyIds(), null )); assertEquals(19, filteredSamples.size()); ClinicalDataFilter customDataFilter = new ClinicalDataFilter(); @@ -50,16 +53,17 @@ public void getFilteredSamples() { DataFilterValue value = new DataFilterValue(); customDataFilter.setValues(List.of(value)); studyViewFilter.setCustomDataFilters(List.of(customDataFilter)); - var filteredSamples1 = studyViewMapper.getFilteredSamples(StudyViewFilterHelper.build(studyViewFilter, null, new ArrayList<>(), studyViewFilter.getStudyIds())); + var filteredSamples1 = mapper.getFilteredSamples(StudyViewFilterFactory.make(studyViewFilter, List.of(), + studyViewFilter.getStudyIds(), null )); assertEquals(0, filteredSamples1.size()); CustomSampleIdentifier customSampleIdentifier = new CustomSampleIdentifier(); customSampleIdentifier.setStudyId("acc_tcga"); customSampleIdentifier.setSampleId("tcga-a1-a0sb-01"); - var filteredSamples2 = studyViewMapper.getFilteredSamples(StudyViewFilterHelper.build(studyViewFilter, null, Arrays.asList(customSampleIdentifier), studyViewFilter.getStudyIds())); + var filteredSamples2 = mapper.getFilteredSamples(StudyViewFilterFactory.make(studyViewFilter, + List.of(customSampleIdentifier), studyViewFilter.getStudyIds(), null )); assertEquals(1, filteredSamples2.size()); } - @Test public void getSamplesFilteredByClinicalData() { StudyViewFilter studyViewFilter = new StudyViewFilter(); @@ -67,106 +71,112 @@ public void getSamplesFilteredByClinicalData() { // samples of patients with AGE <= 20.0 studyViewFilter.setClinicalDataFilters( - List.of( - newClinicalDataFilter( - "age", List.of( - newDataFilterValue(null, 20.0, null) - ) + List.of( + newClinicalDataFilter( + "age", List.of( + newDataFilterValue(null, 20.0, null) + ) + ) ) - ) ); - var filteredSamples1 = studyViewMapper.getFilteredSamples(StudyViewFilterHelper.build(studyViewFilter, null, new ArrayList<>(), studyViewFilter.getStudyIds())); + var filteredSamples1 = mapper.getFilteredSamples(StudyViewFilterFactory.make(studyViewFilter, + List.of(),studyViewFilter.getStudyIds(), null)); assertEquals(4, filteredSamples1.size()); // samples of patients with AGE <= 20.0 or (80.0, 82.0] studyViewFilter.setClinicalDataFilters( - List.of( - newClinicalDataFilter( - "age", List.of( - newDataFilterValue(null, 20.0, null), - newDataFilterValue(80.0, 82.0, null) - ) + List.of( + newClinicalDataFilter( + "age", List.of( + newDataFilterValue(null, 20.0, null), + newDataFilterValue(80.0, 82.0, null) + ) + ) ) - ) ); - var filteredSamples2 = studyViewMapper.getFilteredSamples(StudyViewFilterHelper.build(studyViewFilter, null, new ArrayList<>(), studyViewFilter.getStudyIds())); + var filteredSamples2 = mapper.getFilteredSamples(StudyViewFilterFactory.make(studyViewFilter, + List.of(), studyViewFilter.getStudyIds(), null)); assertEquals(6, filteredSamples2.size()); // samples of patients with UNKNOWN AGE studyViewFilter.setClinicalDataFilters( - List.of( - newClinicalDataFilter( - "age", List.of( - newDataFilterValue(null, null, "Unknown") - ) + List.of( + newClinicalDataFilter( + "age", List.of( + newDataFilterValue(null, null, "Unknown") + ) + ) ) - ) ); - var filteredSamples3 = studyViewMapper.getFilteredSamples(StudyViewFilterHelper.build(studyViewFilter, null, new ArrayList<>(), studyViewFilter.getStudyIds())); + var filteredSamples3 = mapper.getFilteredSamples(StudyViewFilterFactory.make(studyViewFilter, + List.of(), studyViewFilter.getStudyIds(), null)); assertEquals(1, filteredSamples3.size()); // samples of patients with AGE <= 20.0 or (80.0, 82.0] or UNKNOWN // this is a mixed list of filters of both numerical and non-numerical values studyViewFilter.setClinicalDataFilters( - List.of( - newClinicalDataFilter( - "age", List.of( - newDataFilterValue(null, 20.0, null), - newDataFilterValue(80.0, 82.0, null), - newDataFilterValue(null, null, "unknown") - ) + List.of( + newClinicalDataFilter( + "age", List.of( + newDataFilterValue(null, 20.0, null), + newDataFilterValue(80.0, 82.0, null), + newDataFilterValue(null, null, "unknown") + ) + ) ) - ) ); - var filteredSamples4 = studyViewMapper.getFilteredSamples(StudyViewFilterHelper.build(studyViewFilter, null, new ArrayList<>(), studyViewFilter.getStudyIds())); + var filteredSamples4 = mapper.getFilteredSamples(StudyViewFilterFactory.make(studyViewFilter, + List.of(), studyViewFilter.getStudyIds(),null)); assertEquals(7, filteredSamples4.size()); - + // NA filter studyViewFilter.setClinicalDataFilters( - List.of( - newClinicalDataFilter( - "age", List.of( - newDataFilterValue(null, null, "NA") - ) + List.of( + newClinicalDataFilter( + "age", List.of( + newDataFilterValue(null, null, "NA") + ) + ) ) - ) ); - var filteredSamples5 = studyViewMapper.getFilteredSamples(StudyViewFilterHelper.build(studyViewFilter, null, new ArrayList<>(), studyViewFilter.getStudyIds())); + var filteredSamples5 = mapper.getFilteredSamples(StudyViewFilterFactory.make(studyViewFilter, + List.of(), studyViewFilter.getStudyIds(), null)); // 4 acc_tcga + 7 study_genie_pub samples with "NA" AGE data or no AGE data assertEquals(11, filteredSamples5.size()); - + // NA + UNKNOWN studyViewFilter.setClinicalDataFilters( - List.of( - newClinicalDataFilter( - "age", List.of( - newDataFilterValue(null, null, "NA"), - newDataFilterValue(null, null, "UNKNOWN") - ) + List.of( + newClinicalDataFilter( + "age", List.of( + newDataFilterValue(null, null, "NA"), + newDataFilterValue(null, null, "UNKNOWN") + ) + ) ) - ) ); - var filteredSamples6 = studyViewMapper.getFilteredSamples(StudyViewFilterHelper.build(studyViewFilter, null, new ArrayList<>(), studyViewFilter.getStudyIds())); + var filteredSamples6 = mapper.getFilteredSamples(StudyViewFilterFactory.make(studyViewFilter, + List.of(), studyViewFilter.getStudyIds(), null)); // 11 NA + 1 UNKNOWN assertEquals(12, filteredSamples6.size()); } - + private DataFilterValue newDataFilterValue(Double start, Double end, String value) { DataFilterValue dataFilterValue = new DataFilterValue(); - + dataFilterValue.setStart(start == null ? null : new BigDecimal(start)); dataFilterValue.setEnd(end == null ? null: new BigDecimal(end)); dataFilterValue.setValue(value); - + return dataFilterValue; } private ClinicalDataFilter newClinicalDataFilter(String attributeId, List values) { ClinicalDataFilter clinicalDataFilter = new ClinicalDataFilter(); - + clinicalDataFilter.setAttributeId(attributeId); clinicalDataFilter.setValues(values); - + return clinicalDataFilter; } -} +} \ No newline at end of file diff --git a/src/test/java/org/cbioportal/infrastructure/repository/clickhouse/treatment/ClickhouseTreatmentMapperTest.java b/src/test/java/org/cbioportal/infrastructure/repository/clickhouse/treatment/ClickhouseTreatmentMapperTest.java new file mode 100644 index 00000000000..1ba97f1c0ed --- /dev/null +++ b/src/test/java/org/cbioportal/infrastructure/repository/clickhouse/treatment/ClickhouseTreatmentMapperTest.java @@ -0,0 +1,106 @@ +package org.cbioportal.infrastructure.repository.clickhouse.treatment; + +import org.cbioportal.domain.studyview.StudyViewFilterFactory; +import org.cbioportal.infrastructure.repository.clickhouse.AbstractTestcontainers; +import org.cbioportal.infrastructure.repository.clickhouse.config.MyBatisConfig; +import org.cbioportal.legacy.model.TemporalRelation; +import org.cbioportal.legacy.web.parameter.StudyViewFilter; +import org.cbioportal.legacy.web.parameter.filter.AndedPatientTreatmentFilters; +import org.cbioportal.legacy.web.parameter.filter.AndedSampleTreatmentFilters; +import org.cbioportal.legacy.web.parameter.filter.OredPatientTreatmentFilters; +import org.cbioportal.legacy.web.parameter.filter.OredSampleTreatmentFilters; +import org.cbioportal.legacy.web.parameter.filter.PatientTreatmentFilter; +import org.cbioportal.legacy.web.parameter.filter.SampleTreatmentFilter; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.autoconfigure.jdbc.AutoConfigureTestDatabase; +import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest; +import org.springframework.context.annotation.Import; +import org.springframework.test.annotation.DirtiesContext; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringRunner; + +import java.util.List; + +import static org.junit.Assert.assertEquals; + +@RunWith(SpringRunner.class) +@Import(MyBatisConfig.class) +@DataJpaTest +@DirtiesContext +@AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE) +@ContextConfiguration(initializers = AbstractTestcontainers.Initializer.class) +public class ClickhouseTreatmentMapperTest { + private static final String STUDY_TCGA_PUB = "study_tcga_pub"; + + @Autowired + private ClickhouseTreatmentMapper mapper; + + @Test + public void getPatientTreatments() { + + StudyViewFilter studyViewFilter = new StudyViewFilter(); + studyViewFilter.setStudyIds(List.of(STUDY_TCGA_PUB)); + + + var patientTreatmentCounts = mapper.getPatientTreatmentCounts(StudyViewFilterFactory.make(studyViewFilter, null, studyViewFilter.getStudyIds(), null)); + + var patientTreatments = mapper.getPatientTreatments(StudyViewFilterFactory.make(studyViewFilter, null, studyViewFilter.getStudyIds(), null)); + + assertEquals(1, patientTreatmentCounts); + assertEquals("madeupanib", patientTreatments.getFirst().treatment()); + + PatientTreatmentFilter filter = new PatientTreatmentFilter(); + filter.setTreatment("madeupanib"); + + OredPatientTreatmentFilters oredPatientTreatmentFilters = new OredPatientTreatmentFilters(); + oredPatientTreatmentFilters.setFilters(List.of(filter)); + + AndedPatientTreatmentFilters andedPatientTreatmentFilters = new AndedPatientTreatmentFilters(); + andedPatientTreatmentFilters.setFilters(List.of(oredPatientTreatmentFilters)); + studyViewFilter.setPatientTreatmentFilters(andedPatientTreatmentFilters); + + patientTreatmentCounts = mapper.getPatientTreatmentCounts(StudyViewFilterFactory.make(studyViewFilter, null, studyViewFilter.getStudyIds(), null)); + + patientTreatments = mapper.getPatientTreatments(StudyViewFilterFactory.make(studyViewFilter, null, studyViewFilter.getStudyIds(), null)); + + assertEquals(1, patientTreatmentCounts); + assertEquals("madeupanib", patientTreatments.getFirst().treatment()); + + } + + @Test + public void getTotalSampleTreatmentCounts() { + StudyViewFilter studyViewFilter = new StudyViewFilter(); + studyViewFilter.setStudyIds(List.of(STUDY_TCGA_PUB)); + + + var totalSampleTreatmentCount = mapper.getTotalSampleTreatmentCounts(StudyViewFilterFactory.make(studyViewFilter, null, studyViewFilter.getStudyIds(), null)); + + var sampleTreatmentCounts = mapper.getSampleTreatmentCounts(StudyViewFilterFactory.make(studyViewFilter, null, studyViewFilter.getStudyIds(), null)); + + assertEquals(1, totalSampleTreatmentCount); + assertEquals("madeupanib", sampleTreatmentCounts.getFirst().treatment()); + assertEquals(1, sampleTreatmentCounts.getFirst().postSampleCount()); + assertEquals(0, sampleTreatmentCounts.getFirst().preSampleCount()); + + SampleTreatmentFilter filter = new SampleTreatmentFilter(); + filter.setTreatment("madeupanib"); + filter.setTime(TemporalRelation.Pre); + + OredSampleTreatmentFilters oredSampleTreatmentFilters = new OredSampleTreatmentFilters(); + oredSampleTreatmentFilters.setFilters(List.of(filter)); + + AndedSampleTreatmentFilters andedSampleTreatmentFilters = new AndedSampleTreatmentFilters(); + andedSampleTreatmentFilters.setFilters(List.of(oredSampleTreatmentFilters)); + studyViewFilter.setSampleTreatmentFilters(andedSampleTreatmentFilters); + + totalSampleTreatmentCount = mapper.getTotalSampleTreatmentCounts(StudyViewFilterFactory.make(studyViewFilter, null, studyViewFilter.getStudyIds(), null)); + + sampleTreatmentCounts = mapper.getSampleTreatmentCounts(StudyViewFilterFactory.make(studyViewFilter, null, studyViewFilter.getStudyIds(), null)); + + assertEquals(0, totalSampleTreatmentCount); + assertEquals(0, sampleTreatmentCounts.size()); + } +} \ No newline at end of file diff --git a/src/test/java/org/cbioportal/legacy/persistence/mybatisclickhouse/CNAGenesTest.java b/src/test/java/org/cbioportal/legacy/persistence/mybatisclickhouse/CNAGenesTest.java deleted file mode 100644 index 210d448534c..00000000000 --- a/src/test/java/org/cbioportal/legacy/persistence/mybatisclickhouse/CNAGenesTest.java +++ /dev/null @@ -1,76 +0,0 @@ -package org.cbioportal.legacy.persistence.mybatisclickhouse; - -import org.cbioportal.legacy.model.AlterationFilter; -import org.cbioportal.legacy.model.CNA; -import org.cbioportal.legacy.persistence.helper.AlterationFilterHelper; -import org.cbioportal.legacy.persistence.helper.StudyViewFilterHelper; -import org.cbioportal.legacy.persistence.mybatisclickhouse.config.MyBatisConfig; -import org.cbioportal.legacy.web.parameter.StudyViewFilter; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.autoconfigure.jdbc.AutoConfigureTestDatabase; -import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest; -import org.springframework.context.annotation.Import; -import org.springframework.test.annotation.DirtiesContext; -import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.junit4.SpringRunner; - -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Objects; - -import static org.junit.Assert.assertEquals; - -@RunWith(SpringRunner.class) -@Import(MyBatisConfig.class) -@DataJpaTest -@DirtiesContext -@AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE) -@ContextConfiguration(initializers = AbstractTestcontainers.Initializer.class) -public class CNAGenesTest extends AbstractTestcontainers { - - private static final String STUDY_TCGA_PUB = "study_tcga_pub"; - - @Autowired - private StudyViewMapper studyViewMapper; - - @Test - public void getCnaGenes() { - StudyViewFilter studyViewFilter = new StudyViewFilter(); - studyViewFilter.setStudyIds(List.of(STUDY_TCGA_PUB)); - var alterationCountByGenes = studyViewMapper.getCnaGenes(StudyViewFilterHelper.build(studyViewFilter, null, null, studyViewFilter.getStudyIds()), - AlterationFilterHelper.build(studyViewFilter.getAlterationFilter())); - assertEquals(3, alterationCountByGenes.size()); - - // Test cna count for akt1 - var testAKT1AlterationCount = alterationCountByGenes.stream().filter(a -> Objects.equals(a.getHugoGeneSymbol(), "AKT1")) - .mapToInt(c -> c.getTotalCount().intValue()) - .sum(); - assertEquals(3, testAKT1AlterationCount); - } - - @Test - public void getCnaGenesWithAlterationFilter() { - StudyViewFilter studyViewFilter = new StudyViewFilter(); - studyViewFilter.setStudyIds(List.of(STUDY_TCGA_PUB)); - - // Create AlterationFilter - AlterationFilter alterationFilter = new AlterationFilter(); - Map cnaEventTypeFilterMap = new HashMap<>(); - cnaEventTypeFilterMap.put(CNA.HOMDEL, false); - cnaEventTypeFilterMap.put(CNA.AMP, true); - alterationFilter.setCopyNumberAlterationEventTypes(cnaEventTypeFilterMap); - - var alterationCountByGenes = studyViewMapper.getCnaGenes(StudyViewFilterHelper.build(studyViewFilter, null, null, studyViewFilter.getStudyIds()), - AlterationFilterHelper.build(alterationFilter)); - assertEquals(2, alterationCountByGenes.size()); - - // Test cna count for akt1 filtering for AMP - var testAKT1AlterationCount = alterationCountByGenes.stream().filter(a -> Objects.equals(a.getHugoGeneSymbol(), "AKT1")) - .mapToInt(c -> c.getTotalCount().intValue()) - .sum(); - assertEquals(2, testAKT1AlterationCount); - } -} diff --git a/src/test/java/org/cbioportal/legacy/persistence/mybatisclickhouse/GenomicDataCountsTest.java b/src/test/java/org/cbioportal/legacy/persistence/mybatisclickhouse/GenomicDataCountsTest.java deleted file mode 100644 index c2594b589a9..00000000000 --- a/src/test/java/org/cbioportal/legacy/persistence/mybatisclickhouse/GenomicDataCountsTest.java +++ /dev/null @@ -1,73 +0,0 @@ -package org.cbioportal.legacy.persistence.mybatisclickhouse; - -import org.cbioportal.legacy.model.GenomicDataCount; -import org.cbioportal.legacy.model.GenomicDataCountItem; -import org.cbioportal.legacy.persistence.helper.StudyViewFilterHelper; -import org.cbioportal.legacy.persistence.mybatisclickhouse.config.MyBatisConfig; -import org.cbioportal.legacy.web.parameter.GenomicDataFilter; -import org.cbioportal.legacy.web.parameter.StudyViewFilter; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.autoconfigure.jdbc.AutoConfigureTestDatabase; -import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest; -import org.springframework.context.annotation.Import; -import org.springframework.test.annotation.DirtiesContext; -import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.junit4.SpringRunner; - -import java.util.List; - -import static org.assertj.core.api.Assertions.assertThat; - -@RunWith(SpringRunner.class) -@Import(MyBatisConfig.class) -@DataJpaTest -@DirtiesContext -@AutoConfigureTestDatabase(replace= AutoConfigureTestDatabase.Replace.NONE) -@ContextConfiguration(initializers = AbstractTestcontainers.Initializer.class) -public class GenomicDataCountsTest extends AbstractTestcontainers { - - private static final String STUDY_TCGA_PUB = "study_tcga_pub"; - - @Autowired - private StudyViewMapper studyViewMapper; - - @Test - public void getCNACounts() { - StudyViewFilter studyViewFilter = new StudyViewFilter(); - studyViewFilter.setStudyIds(List.of(STUDY_TCGA_PUB)); - - GenomicDataFilter genomicDataFilterCNA = new GenomicDataFilter("AKT1", "cna"); - List actualCountsCNA = studyViewMapper.getCNACounts(StudyViewFilterHelper.build(studyViewFilter, null, null, studyViewFilter.getStudyIds()), List.of(genomicDataFilterCNA)); - List expectedCountsCNA = List.of( - new GenomicDataCountItem("AKT1", "cna", List.of( - new GenomicDataCount("Homozygously deleted", "-2", 2), - new GenomicDataCount("Heterozygously deleted", "-1", 2), - new GenomicDataCount("Diploid", "0", 2), - new GenomicDataCount("Gained", "1", 2), - new GenomicDataCount("Amplified", "2", 2), - new GenomicDataCount("NA", "NA", 5) - ))); - assertThat(actualCountsCNA) - .usingRecursiveComparison() - .ignoringCollectionOrder() - .isEqualTo(expectedCountsCNA); - - GenomicDataFilter genomicDataFilterGISTIC = new GenomicDataFilter("AKT1", "gistic"); - List actualCountsGISTIC = studyViewMapper.getCNACounts(StudyViewFilterHelper.build(studyViewFilter, null, null, studyViewFilter.getStudyIds()), List.of(genomicDataFilterGISTIC)); - List expectedCountsGISTIC = List.of( - new GenomicDataCountItem("AKT1", "gistic", List.of( - new GenomicDataCount("Homozygously deleted", "-2", 2), - new GenomicDataCount("Heterozygously deleted", "-1", 3), - new GenomicDataCount("Diploid", "0", 3), - new GenomicDataCount("Gained", "1", 3), - new GenomicDataCount("Amplified", "2", 3), - new GenomicDataCount("NA", "NA", 1) - ))); - assertThat(actualCountsGISTIC) - .usingRecursiveComparison() - .ignoringCollectionOrder() - .isEqualTo(expectedCountsGISTIC); - } -} diff --git a/src/test/java/org/cbioportal/legacy/persistence/mybatisclickhouse/MolecularProfileCountTest.java b/src/test/java/org/cbioportal/legacy/persistence/mybatisclickhouse/MolecularProfileCountTest.java deleted file mode 100644 index b46492bf09a..00000000000 --- a/src/test/java/org/cbioportal/legacy/persistence/mybatisclickhouse/MolecularProfileCountTest.java +++ /dev/null @@ -1,119 +0,0 @@ -package org.cbioportal.legacy.persistence.mybatisclickhouse; - -import org.cbioportal.legacy.persistence.helper.StudyViewFilterHelper; -import org.cbioportal.legacy.persistence.mybatisclickhouse.config.MyBatisConfig; - -import org.cbioportal.legacy.web.parameter.StudyViewFilter; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.autoconfigure.jdbc.AutoConfigureTestDatabase; -import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest; -import org.springframework.context.annotation.Import; -import org.springframework.test.annotation.DirtiesContext; -import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.junit4.SpringRunner; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; - -import static org.junit.Assert.assertEquals; - -@RunWith(SpringRunner.class) -@Import(MyBatisConfig.class) -@DataJpaTest -@DirtiesContext -@AutoConfigureTestDatabase(replace= AutoConfigureTestDatabase.Replace.NONE) -@ContextConfiguration(initializers = AbstractTestcontainers.Initializer.class) -public class MolecularProfileCountTest extends AbstractTestcontainers { - - private static final String STUDY_TCGA_PUB = "study_tcga_pub"; - private static final String STUDY_ACC_TCGA = "acc_tcga"; - - @Autowired - private StudyViewMapper studyViewMapper; - - @Test - public void getMolecularProfileCounts() { - StudyViewFilter studyViewFilter = new StudyViewFilter(); - studyViewFilter.setStudyIds(List.of(STUDY_TCGA_PUB)); - - var profiles = new ArrayList(Arrays.asList("mutations")); - var profileGroups = new ArrayList>(Arrays.asList(profiles)); - - studyViewFilter.setGenomicProfiles(profileGroups); - - var molecularProfileCounts = studyViewMapper.getMolecularProfileSampleCounts(StudyViewFilterHelper.build(studyViewFilter, null, null, studyViewFilter.getStudyIds())); - - var size = molecularProfileCounts.stream().filter(gc->gc.getValue().equals("mutations")) - .findFirst().get().getCount().intValue(); - assertEquals(11, size); - - } - - @Test - public void getMolecularProfileCountsMultipleStudies() { - StudyViewFilter studyViewFilter = new StudyViewFilter(); - studyViewFilter.setStudyIds(List.of(STUDY_TCGA_PUB, STUDY_ACC_TCGA)); - - var profiles = new ArrayList(Arrays.asList("mutations")); - var profileGroups = new ArrayList>(Arrays.asList(profiles)); - - studyViewFilter.setGenomicProfiles(profileGroups); - - var molecularProfileCounts = studyViewMapper.getMolecularProfileSampleCounts(StudyViewFilterHelper.build(studyViewFilter, null, null, studyViewFilter.getStudyIds())); - - var size = molecularProfileCounts.stream().filter(gc->gc.getValue().equals("mutations")) - .findFirst().get().getCount().intValue(); - assertEquals(11, size); - - } - - @Test - public void getMolecularProfileCountsMultipleProfilesUnion() { - StudyViewFilter studyViewFilter = new StudyViewFilter(); - studyViewFilter.setStudyIds(List.of(STUDY_TCGA_PUB)); - - var profiles = new ArrayList(Arrays.asList("mutations","mrna")); - var profileGroups = new ArrayList>(Arrays.asList(profiles)); - - studyViewFilter.setGenomicProfiles(profileGroups); - - var molecularProfileCounts = studyViewMapper.getMolecularProfileSampleCounts(StudyViewFilterHelper.build(studyViewFilter, null, null, studyViewFilter.getStudyIds())); - - var sizeMutations = molecularProfileCounts.stream().filter(gc->gc.getValue().equals("mutations")) - .findFirst().get().getCount().intValue(); - assertEquals(11, sizeMutations); - - var sizeMrna = molecularProfileCounts.stream().filter(gc->gc.getValue().equals("mrna")) - .findFirst().get().getCount().intValue(); - assertEquals(9, sizeMrna); - - } - - @Test - public void getMolecularProfileCountsMultipleProfilesIntersect() { - StudyViewFilter studyViewFilter = new StudyViewFilter(); - studyViewFilter.setStudyIds(List.of(STUDY_TCGA_PUB)); - - var profile1 = new ArrayList(Arrays.asList("mutations")); - var profile2 = new ArrayList(Arrays.asList("mrna")); - var profileGroups = new ArrayList>(Arrays.asList(profile1, profile2)); - - studyViewFilter.setGenomicProfiles(profileGroups); - - var molecularProfileCounts = studyViewMapper.getMolecularProfileSampleCounts(StudyViewFilterHelper.build(studyViewFilter, null, null, studyViewFilter.getStudyIds())); - - var sizeMutations = molecularProfileCounts.stream().filter(gc->gc.getValue().equals("mutations")) - .findFirst().get().getCount().intValue(); - assertEquals(10, sizeMutations); - - - - } - - - - -} \ No newline at end of file diff --git a/src/test/java/org/cbioportal/legacy/persistence/mybatisclickhouse/MutatedGenesTest.java b/src/test/java/org/cbioportal/legacy/persistence/mybatisclickhouse/MutatedGenesTest.java deleted file mode 100644 index 86658bc8dfb..00000000000 --- a/src/test/java/org/cbioportal/legacy/persistence/mybatisclickhouse/MutatedGenesTest.java +++ /dev/null @@ -1,89 +0,0 @@ -package org.cbioportal.legacy.persistence.mybatisclickhouse; - -import org.cbioportal.legacy.model.AlterationFilter; -import org.cbioportal.legacy.model.MutationEventType; -import org.cbioportal.legacy.persistence.helper.AlterationFilterHelper; -import org.cbioportal.legacy.persistence.helper.StudyViewFilterHelper; -import org.cbioportal.legacy.persistence.mybatisclickhouse.config.MyBatisConfig; -import org.cbioportal.legacy.web.parameter.StudyViewFilter; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.autoconfigure.jdbc.AutoConfigureTestDatabase; -import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest; -import org.springframework.context.annotation.Import; -import org.springframework.test.annotation.DirtiesContext; -import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.junit4.SpringRunner; - -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Objects; - -import static org.junit.Assert.assertEquals; - -@RunWith(SpringRunner.class) -@Import(MyBatisConfig.class) -@DataJpaTest -@DirtiesContext -@AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE) -@ContextConfiguration(initializers = AbstractTestcontainers.Initializer.class) -public class MutatedGenesTest extends AbstractTestcontainers { - - private static final String STUDY_TCGA_PUB = "study_tcga_pub"; - - @Autowired - private StudyViewMapper studyViewMapper; - - @Test - public void getMutatedGenes() { - StudyViewFilter studyViewFilter = new StudyViewFilter(); - studyViewFilter.setStudyIds(List.of(STUDY_TCGA_PUB)); - var alterationCountByGenes = studyViewMapper.getMutatedGenes(StudyViewFilterHelper.build(studyViewFilter, null, null, studyViewFilter.getStudyIds()), - AlterationFilterHelper.build(studyViewFilter.getAlterationFilter())); - assertEquals(3, alterationCountByGenes.size()); - - var testBrca1AlterationCount = alterationCountByGenes.stream().filter(a -> Objects.equals(a.getHugoGeneSymbol(), "BRCA1")).findFirst(); - assert (testBrca1AlterationCount.isPresent()); - assertEquals(Integer.valueOf(5), testBrca1AlterationCount.get().getTotalCount()); - } - - @Test - public void getMutatedGenesWithAlterationFilter() { - StudyViewFilter studyViewFilter = new StudyViewFilter(); - studyViewFilter.setStudyIds(List.of(STUDY_TCGA_PUB)); - - // Create AlterationFilter - AlterationFilter alterationFilter = new AlterationFilter(); - Map mutationEventTypeFilterMap = new HashMap<>(); - mutationEventTypeFilterMap.put(MutationEventType.nonsense_mutation, Boolean.TRUE); - mutationEventTypeFilterMap.put(MutationEventType.other, Boolean.FALSE); - alterationFilter.setMutationEventTypes(mutationEventTypeFilterMap); - - var alterationCountByGenes = studyViewMapper.getMutatedGenes(StudyViewFilterHelper.build(studyViewFilter, null, null, studyViewFilter.getStudyIds()), - AlterationFilterHelper.build(alterationFilter)); - assertEquals(2, alterationCountByGenes.size()); - - AlterationFilter onlyMutationStatusFilter = new AlterationFilter(); - onlyMutationStatusFilter.setMutationEventTypes(new HashMap<>()); - onlyMutationStatusFilter.setIncludeGermline(false); - onlyMutationStatusFilter.setIncludeSomatic(false); - onlyMutationStatusFilter.setIncludeUnknownStatus(true); - - var alterationCountByGenes1 = studyViewMapper.getMutatedGenes(StudyViewFilterHelper.build(studyViewFilter, null, null, studyViewFilter.getStudyIds()), - AlterationFilterHelper.build(onlyMutationStatusFilter)); - assertEquals(1, alterationCountByGenes1.size()); - - AlterationFilter mutationTypeAndStatusFilter = new AlterationFilter(); - mutationTypeAndStatusFilter.setMutationEventTypes(mutationEventTypeFilterMap); - mutationTypeAndStatusFilter.setMutationEventTypes(new HashMap<>()); - mutationTypeAndStatusFilter.setIncludeGermline(false); - mutationTypeAndStatusFilter.setIncludeSomatic(false); - mutationTypeAndStatusFilter.setIncludeUnknownStatus(true); - - var alterationCountByGenes2 = studyViewMapper.getMutatedGenes(StudyViewFilterHelper.build(studyViewFilter, null, null, studyViewFilter.getStudyIds()), - AlterationFilterHelper.build(onlyMutationStatusFilter)); - assertEquals(1, alterationCountByGenes2.size()); - } -} diff --git a/src/test/java/org/cbioportal/legacy/persistence/mybatisclickhouse/MutationDataCountsTest.java b/src/test/java/org/cbioportal/legacy/persistence/mybatisclickhouse/MutationDataCountsTest.java deleted file mode 100644 index a7c7959a0b4..00000000000 --- a/src/test/java/org/cbioportal/legacy/persistence/mybatisclickhouse/MutationDataCountsTest.java +++ /dev/null @@ -1,72 +0,0 @@ -package org.cbioportal.legacy.persistence.mybatisclickhouse; - -import org.cbioportal.legacy.model.GenomicDataCount; -import org.cbioportal.legacy.model.GenomicDataCountItem; -import org.cbioportal.legacy.persistence.helper.StudyViewFilterHelper; -import org.cbioportal.legacy.persistence.mybatisclickhouse.config.MyBatisConfig; -import org.cbioportal.legacy.web.parameter.GenomicDataFilter; -import org.cbioportal.legacy.web.parameter.StudyViewFilter; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.autoconfigure.jdbc.AutoConfigureTestDatabase; -import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest; -import org.springframework.context.annotation.Import; -import org.springframework.test.annotation.DirtiesContext; -import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.junit4.SpringRunner; - -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import static org.assertj.core.api.Assertions.assertThat; - -@RunWith(SpringRunner.class) -@Import(MyBatisConfig.class) -@DataJpaTest -@DirtiesContext -@AutoConfigureTestDatabase(replace= AutoConfigureTestDatabase.Replace.NONE) -@ContextConfiguration(initializers = AbstractTestcontainers.Initializer.class) -public class MutationDataCountsTest extends AbstractTestcontainers { - - private static final String STUDY_TCGA_PUB = "study_tcga_pub"; - - @Autowired - private StudyViewMapper studyViewMapper; - - @Test - public void getMutationCounts() { - StudyViewFilter studyViewFilter = new StudyViewFilter(); - studyViewFilter.setStudyIds(List.of(STUDY_TCGA_PUB)); - - GenomicDataFilter genomicDataFilterMutation = new GenomicDataFilter("AKT1", "cna"); - Map actualMutationCounts = studyViewMapper.getMutationCounts(StudyViewFilterHelper.build(studyViewFilter, null, null, studyViewFilter.getStudyIds()), genomicDataFilterMutation); - Map expectedMutationCounts = new HashMap<>(); - expectedMutationCounts.put("mutatedCount", 2); - expectedMutationCounts.put("notMutatedCount", 8); - expectedMutationCounts.put("notProfiledCount", 5); - assertThat(actualMutationCounts) - .usingRecursiveComparison() - .ignoringCollectionOrder() - .isEqualTo(expectedMutationCounts); - } - - @Test - public void getMutationCountsByType() { - StudyViewFilter studyViewFilter = new StudyViewFilter(); - studyViewFilter.setStudyIds(List.of(STUDY_TCGA_PUB)); - - GenomicDataFilter genomicDataFilterMutation = new GenomicDataFilter("AKT1", "mutation"); - List actualMutationCountsByType = studyViewMapper.getMutationCountsByType(StudyViewFilterHelper.build(studyViewFilter, null, null, studyViewFilter.getStudyIds()), List.of(genomicDataFilterMutation)); - List expectedMutationCountsByType = List.of( - new GenomicDataCountItem("AKT1", "mutations", List.of( - new GenomicDataCount("nonsense mutation", "nonsense_mutation", 2, 1), - new GenomicDataCount("missense mutation", "missense_mutation", 1, 1) - ))); - assertThat(actualMutationCountsByType) - .usingRecursiveComparison() - .ignoringCollectionOrder() - .isEqualTo(expectedMutationCountsByType); - } -} diff --git a/src/test/java/org/cbioportal/legacy/persistence/mybatisclickhouse/PatientTreatmentCountsTest.java b/src/test/java/org/cbioportal/legacy/persistence/mybatisclickhouse/PatientTreatmentCountsTest.java deleted file mode 100644 index f83ea3f263a..00000000000 --- a/src/test/java/org/cbioportal/legacy/persistence/mybatisclickhouse/PatientTreatmentCountsTest.java +++ /dev/null @@ -1,67 +0,0 @@ -package org.cbioportal.legacy.persistence.mybatisclickhouse; - -import org.cbioportal.legacy.persistence.helper.StudyViewFilterHelper; -import org.cbioportal.legacy.persistence.mybatisclickhouse.config.MyBatisConfig; -import org.cbioportal.legacy.web.parameter.StudyViewFilter; -import org.cbioportal.legacy.web.parameter.filter.AndedPatientTreatmentFilters; -import org.cbioportal.legacy.web.parameter.filter.OredPatientTreatmentFilters; -import org.cbioportal.legacy.web.parameter.filter.PatientTreatmentFilter; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.autoconfigure.jdbc.AutoConfigureTestDatabase; -import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest; -import org.springframework.context.annotation.Import; -import org.springframework.test.annotation.DirtiesContext; -import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.junit4.SpringRunner; - -import java.util.List; - -import static org.junit.Assert.assertEquals; - -@RunWith(SpringRunner.class) -@Import(MyBatisConfig.class) -@DataJpaTest -@DirtiesContext -@AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE) -@ContextConfiguration(initializers = AbstractTestcontainers.Initializer.class) -public class PatientTreatmentCountsTest extends AbstractTestcontainers { - - private static final String STUDY_TCGA_PUB = "study_tcga_pub"; - - @Autowired - private StudyViewMapper studyViewMapper; - - @Test - public void getPatientTreatmentReportCounts() { - StudyViewFilter studyViewFilter = new StudyViewFilter(); - studyViewFilter.setStudyIds(List.of(STUDY_TCGA_PUB)); - - - var patientTreatmentCounts = studyViewMapper.getPatientTreatmentCounts(StudyViewFilterHelper.build(studyViewFilter, null, null, studyViewFilter.getStudyIds())); - - var patientTreatments = studyViewMapper.getPatientTreatments(StudyViewFilterHelper.build(studyViewFilter, null, null, studyViewFilter.getStudyIds())); - - assertEquals(1, patientTreatmentCounts); - assertEquals("madeupanib", patientTreatments.getFirst().treatment()); - - PatientTreatmentFilter filter = new PatientTreatmentFilter(); - filter.setTreatment("madeupanib"); - - OredPatientTreatmentFilters oredPatientTreatmentFilters = new OredPatientTreatmentFilters(); - oredPatientTreatmentFilters.setFilters(List.of(filter)); - - AndedPatientTreatmentFilters andedPatientTreatmentFilters = new AndedPatientTreatmentFilters(); - andedPatientTreatmentFilters.setFilters(List.of(oredPatientTreatmentFilters)); - studyViewFilter.setPatientTreatmentFilters(andedPatientTreatmentFilters); - - patientTreatmentCounts = studyViewMapper.getPatientTreatmentCounts(StudyViewFilterHelper.build(studyViewFilter, null, null, studyViewFilter.getStudyIds())); - - patientTreatments = studyViewMapper.getPatientTreatments(StudyViewFilterHelper.build(studyViewFilter, null, null, studyViewFilter.getStudyIds())); - - assertEquals(1, patientTreatmentCounts); - assertEquals("madeupanib", patientTreatments.getFirst().treatment()); - - } -} diff --git a/src/test/java/org/cbioportal/legacy/persistence/mybatisclickhouse/ProfiledCountsTest.java b/src/test/java/org/cbioportal/legacy/persistence/mybatisclickhouse/ProfiledCountsTest.java deleted file mode 100644 index 6edfada6bec..00000000000 --- a/src/test/java/org/cbioportal/legacy/persistence/mybatisclickhouse/ProfiledCountsTest.java +++ /dev/null @@ -1,145 +0,0 @@ -package org.cbioportal.legacy.persistence.mybatisclickhouse; - -import org.cbioportal.legacy.persistence.helper.StudyViewFilterHelper; -import org.cbioportal.legacy.persistence.mybatisclickhouse.config.MyBatisConfig; -import org.cbioportal.legacy.web.parameter.StudyViewFilter; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.autoconfigure.jdbc.AutoConfigureTestDatabase; -import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest; -import org.springframework.context.annotation.Import; -import org.springframework.test.annotation.DirtiesContext; -import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.junit4.SpringRunner; - -import java.util.List; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; - -@RunWith(SpringRunner.class) -@Import(MyBatisConfig.class) -@DataJpaTest -@DirtiesContext -@AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE) -@ContextConfiguration(initializers = AbstractTestcontainers.Initializer.class) -public class ProfiledCountsTest extends AbstractTestcontainers { - - private static final String STUDY_TCGA_PUB = "study_tcga_pub"; - private static final String STUDY_GENIE_PUB = "study_genie_pub"; - - @Autowired - private StudyViewMapper studyViewMapper; - - @Test - public void getTotalProfiledCountsByGene() { - StudyViewFilter studyViewFilter = new StudyViewFilter(); - studyViewFilter.setStudyIds(List.of(STUDY_TCGA_PUB)); - - // Testing profiled counts on samples with gene panel data and WES for one study - var totalProfiledCountsForMutationsMap = studyViewMapper.getTotalProfiledCounts(StudyViewFilterHelper.build(studyViewFilter, null, null, studyViewFilter.getStudyIds()), - "MUTATION_EXTENDED", List.of()); - var totalProfiledCountsForCnaMap = studyViewMapper.getTotalProfiledCounts(StudyViewFilterHelper.build(studyViewFilter, null, null, studyViewFilter.getStudyIds()), - "COPY_NUMBER_ALTERATION", List.of()); - var sampleProfiledCountsForMutationsWithoutPanelDataMap = studyViewMapper.getSampleProfileCountWithoutPanelData(StudyViewFilterHelper.build(studyViewFilter, null, null, studyViewFilter.getStudyIds()), - "MUTATION_EXTENDED"); - var sampleProfiledCountsForCnaWithoutPanelDataMap = studyViewMapper.getSampleProfileCountWithoutPanelData(StudyViewFilterHelper.build(studyViewFilter, null, null, studyViewFilter.getStudyIds()), - "COPY_NUMBER_ALTERATION"); - - // Assert the count of genes with profiled cases for mutations - assertEquals(5, totalProfiledCountsForMutationsMap.size()); - // Assert the count of genes with profiled cases for CNA - assertEquals(5, totalProfiledCountsForCnaMap.size()); - // Assert the profiled counts for mutations without panel data (WES) - assertEquals(6, sampleProfiledCountsForMutationsWithoutPanelDataMap); - // Assert the profiled counts for CNA without panel data (WES) - assertEquals(11, sampleProfiledCountsForCnaWithoutPanelDataMap); - - // Assert the profiled counts for AKT2 mutations - // AKT2 is on testpanel2 in STUDY_TCGA_PUB - var akt2TotalProfiledCountsForMutations = totalProfiledCountsForMutationsMap.stream().filter(c -> c.getHugoGeneSymbol().equals("AKT2")).findFirst(); - assertTrue(akt2TotalProfiledCountsForMutations.isPresent()); - assertEquals(4, akt2TotalProfiledCountsForMutations.get().getNumberOfProfiledCases().intValue()); - // Assert the profiled counts for BRCA1 mutations - // BRCA1 is on testpanel1 in STUDY_TCGA_PUB - var brca1TotalProfiledCountsForMutations = totalProfiledCountsForMutationsMap.stream().filter(c -> c.getHugoGeneSymbol().equals("BRCA1")).findFirst(); - assertTrue(brca1TotalProfiledCountsForMutations.isPresent()); - assertEquals(1, brca1TotalProfiledCountsForMutations.get().getNumberOfProfiledCases().intValue()); - // Assert the profiled counts for AKT1 mutations - // AKT1 is on both testpanel1 and testpanel2 in STUDY_TCGA_PUB - var akt1TotalProfiledCountsForMutations = totalProfiledCountsForMutationsMap.stream().filter(c -> c.getHugoGeneSymbol().equals("AKT1")).findFirst(); - assertTrue(akt1TotalProfiledCountsForMutations.isPresent()); - assertEquals(5, akt1TotalProfiledCountsForMutations.get().getNumberOfProfiledCases().intValue()); - - // Assert the profiled counts for AKT2 CNA - // AKT2 is on testpanel2 in STUDY_TCGA_PUB - var akt2TotalProfiledCountsForCna = totalProfiledCountsForCnaMap.stream().filter(c -> c.getHugoGeneSymbol().equals("AKT2")).findFirst(); - assertTrue(akt2TotalProfiledCountsForCna.isPresent()); - assertEquals(6, akt2TotalProfiledCountsForCna.get().getNumberOfProfiledCases().intValue()); - // Assert the profiled counts for BRCA1 CNA - // BRCA1 is on testpanel1 in STUDY_TCGA_PUB - var brca1TotalProfiledCountsForCna = totalProfiledCountsForCnaMap.stream().filter(c -> c.getHugoGeneSymbol().equals("BRCA1")).findFirst(); - assertTrue(brca1TotalProfiledCountsForCna.isPresent()); - assertEquals(2, brca1TotalProfiledCountsForCna.get().getNumberOfProfiledCases().intValue()); - // Assert the profiled counts for AKT1 CNA - // AKT1 is on both testpanel1 and testpanel2 in STUDY_TCGA_PUB - var akt1TotalProfiledCountsForCna = totalProfiledCountsForCnaMap.stream().filter(c -> c.getHugoGeneSymbol().equals("AKT1")).findFirst(); - assertTrue(akt1TotalProfiledCountsForCna.isPresent()); - assertEquals(8, akt1TotalProfiledCountsForCna.get().getNumberOfProfiledCases().intValue()); - - // Testing profiled counts on combined studies - studyViewFilter.setStudyIds(List.of(STUDY_TCGA_PUB, STUDY_GENIE_PUB)); - - // Testing profiled counts on samples with gene panel data and WES for a combined study - var totalProfiledCountsForMutationsMap1 = studyViewMapper.getTotalProfiledCounts(StudyViewFilterHelper.build(studyViewFilter, null, null, studyViewFilter.getStudyIds()), - "MUTATION_EXTENDED", List.of()); - var totalProfiledCountsForCnaMap1 = studyViewMapper.getTotalProfiledCounts(StudyViewFilterHelper.build(studyViewFilter, null, null, studyViewFilter.getStudyIds()), - "COPY_NUMBER_ALTERATION", List.of()); - var sampleProfiledCountsForMutationsWithoutPanelDataMap1 = studyViewMapper.getSampleProfileCountWithoutPanelData(StudyViewFilterHelper.build(studyViewFilter, null, null, studyViewFilter.getStudyIds()), - "MUTATION_EXTENDED"); - var sampleProfiledCountsForCnaWithoutPanelDataMap1 = studyViewMapper.getSampleProfileCountWithoutPanelData(StudyViewFilterHelper.build(studyViewFilter, null, null, studyViewFilter.getStudyIds()), - "COPY_NUMBER_ALTERATION"); - - // Assert the count of genes with profiled cases for mutations in a combined study - assertEquals(8, totalProfiledCountsForMutationsMap1.size()); - // Assert the count of genes with profiled cases for CNA in a combined study - assertEquals(8, totalProfiledCountsForCnaMap1.size()); - // Assert the profiled counts for mutations without panel data (WES) in a combined study - assertEquals(8, sampleProfiledCountsForMutationsWithoutPanelDataMap1); - // Assert the profiled counts for CNA without panel data (WES) in a combined study - assertEquals(12, sampleProfiledCountsForCnaWithoutPanelDataMap1); - - // Assert the profiled counts for BRCA1 mutations - // BRCA1 is on testpanel1 in STUDY_TCGA_PUB - var brca1TotalProfiledCountsForMutations1 = totalProfiledCountsForMutationsMap1.stream().filter(c -> c.getHugoGeneSymbol().equals("BRCA1")).findFirst(); - assertTrue(brca1TotalProfiledCountsForMutations1.isPresent()); - assertEquals(1, brca1TotalProfiledCountsForMutations1.get().getNumberOfProfiledCases().intValue()); - // Assert the profiled counts for BRCA2 mutations - // BRCA2 is on testpanel3 and testpanel4 in STUDY_GENIE_PUB - var brca2TotalProfiledCountsForMutations1 = totalProfiledCountsForMutationsMap1.stream().filter(c -> c.getHugoGeneSymbol().equals("BRCA2")).findFirst(); - assertTrue(brca2TotalProfiledCountsForMutations1.isPresent()); - assertEquals(2, brca2TotalProfiledCountsForMutations1.get().getNumberOfProfiledCases().intValue()); - // Assert the profiled counts for AKT2 mutations - // AKT2 is on testpanel2 in STUDY_TCGA_PUB and testpanel4 in STUDY_GENIE_PUB - var akt2TotalProfiledCountsForMutations1 = totalProfiledCountsForMutationsMap1.stream().filter(c -> c.getHugoGeneSymbol().equals("AKT2")).findFirst(); - assertTrue(akt2TotalProfiledCountsForMutations1.isPresent()); - assertEquals(4, akt2TotalProfiledCountsForMutations1.get().getNumberOfProfiledCases().intValue()); - - // Assert the profiled counts for BRCA1 CNA - // BRCA1 is on testpanel1 in STUDY_TCGA_PUB - var brca1TotalProfiledCountsForCna1 = totalProfiledCountsForCnaMap1.stream().filter(c -> c.getHugoGeneSymbol().equals("BRCA1")).findFirst(); - assertTrue(brca1TotalProfiledCountsForCna1.isPresent()); - assertEquals(2, brca1TotalProfiledCountsForCna1.get().getNumberOfProfiledCases().intValue()); - // Assert the profiled counts for BRCA2 CNA - // BRCA2 is on testpanel3 and testpanel4 in STUDY_GENIE_PUB - var brca2TotalProfiledCountsForCna1 = totalProfiledCountsForCnaMap1.stream().filter(c -> c.getHugoGeneSymbol().equals("BRCA2")).findFirst(); - assertTrue(brca2TotalProfiledCountsForCna1.isPresent()); - assertEquals(3, brca2TotalProfiledCountsForCna1.get().getNumberOfProfiledCases().intValue()); - // Assert the profiled counts for AKT2 CNA - // AKT2 is on testpanel2 in STUDY_TCGA_PUB and testpanel4 in STUDY_GENIE_PUB - var akt2TotalProfiledCountsForCna1 = totalProfiledCountsForCnaMap1.stream().filter(c -> c.getHugoGeneSymbol().equals("AKT2")).findFirst(); - assertTrue(akt2TotalProfiledCountsForCna1.isPresent()); - assertEquals(7, akt2TotalProfiledCountsForCna1.get().getNumberOfProfiledCases().intValue()); - } -} diff --git a/src/test/java/org/cbioportal/legacy/persistence/mybatisclickhouse/ProteinExpressionCountsTest.java b/src/test/java/org/cbioportal/legacy/persistence/mybatisclickhouse/ProteinExpressionCountsTest.java deleted file mode 100644 index 9d352d15b0e..00000000000 --- a/src/test/java/org/cbioportal/legacy/persistence/mybatisclickhouse/ProteinExpressionCountsTest.java +++ /dev/null @@ -1,99 +0,0 @@ -package org.cbioportal.legacy.persistence.mybatisclickhouse; - -import org.cbioportal.legacy.model.ClinicalDataCount; -import org.cbioportal.legacy.persistence.helper.StudyViewFilterHelper; -import org.cbioportal.legacy.persistence.mybatisclickhouse.config.MyBatisConfig; -import org.cbioportal.legacy.web.parameter.DataFilterValue; -import org.cbioportal.legacy.web.parameter.GenomicDataBinFilter; -import org.cbioportal.legacy.web.parameter.GenomicDataFilter; -import org.cbioportal.legacy.web.parameter.StudyViewFilter; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.autoconfigure.jdbc.AutoConfigureTestDatabase; -import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest; -import org.springframework.context.annotation.Import; -import org.springframework.test.annotation.DirtiesContext; -import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.junit4.SpringRunner; - -import java.util.List; - -import static org.assertj.core.api.Assertions.assertThat; - -@RunWith(SpringRunner.class) -@Import(MyBatisConfig.class) -@DataJpaTest -@DirtiesContext -@AutoConfigureTestDatabase(replace= AutoConfigureTestDatabase.Replace.NONE) -@ContextConfiguration(initializers = AbstractTestcontainers.Initializer.class) -public class ProteinExpressionCountsTest extends AbstractTestcontainers { - - private static final String STUDY_TCGA_PUB = "study_tcga_pub"; - private static final String STUDY_ACC_TCGA = "acc_tcga"; - - @Autowired - private StudyViewMapper studyViewMapper; - - @Test - public void getProteinExpressionCounts() { - // Testing combined study missing samples when one lacks a relevant genomic profile - StudyViewFilter studyViewFilter = new StudyViewFilter(); - studyViewFilter.setStudyIds(List.of(STUDY_TCGA_PUB, STUDY_ACC_TCGA)); - - GenomicDataBinFilter genomicDataBinFilterRPPA = new GenomicDataBinFilter(); - genomicDataBinFilterRPPA.setHugoGeneSymbol("AKT1"); - genomicDataBinFilterRPPA.setProfileType("rppa"); - - List actualRPPACounts1 = studyViewMapper.getGenomicDataBinCounts(StudyViewFilterHelper.build(studyViewFilter, null, null, studyViewFilter.getStudyIds()), List.of(genomicDataBinFilterRPPA)); - - ClinicalDataCount expectedRPPACount1 = new ClinicalDataCount(); - expectedRPPACount1.setAttributeId("AKT1rppa"); - expectedRPPACount1.setValue("0.7360"); - expectedRPPACount1.setCount(1); - ClinicalDataCount expectedRPPACount2 = new ClinicalDataCount(); - expectedRPPACount2.setAttributeId("AKT1rppa"); - expectedRPPACount2.setValue("-0.8097"); - expectedRPPACount2.setCount(1); - ClinicalDataCount expectedRPPACount3 = new ClinicalDataCount(); - expectedRPPACount3.setAttributeId("AKT1rppa"); - expectedRPPACount3.setValue("-0.1260"); - expectedRPPACount3.setCount(1); - ClinicalDataCount expectedRPPACountNA = new ClinicalDataCount(); - expectedRPPACountNA.setAttributeId("AKT1rppa"); - expectedRPPACountNA.setValue("NA"); - expectedRPPACountNA.setCount(16); - - List expectedRPPACounts1 = List.of( - expectedRPPACount1, expectedRPPACount2, expectedRPPACount3, expectedRPPACountNA - ); - assertThat(actualRPPACounts1) - .usingRecursiveComparison() - .ignoringCollectionOrder() - .isEqualTo(expectedRPPACounts1); - - - // Testing NA filtering on combined study missing samples when one lacks a relevant genomic profile - // Make genomic data filter to put in study view filter - GenomicDataFilter genomicDataFilterRPPA = new GenomicDataFilter("AKT1", "rppa"); - DataFilterValue dataFilterValue = new DataFilterValue(); - dataFilterValue.setValue("NA"); - genomicDataFilterRPPA.setValues(List.of(dataFilterValue)); - studyViewFilter.setGenomicDataFilters(List.of(genomicDataFilterRPPA)); - - List actualRPPACounts2 = studyViewMapper.getGenomicDataBinCounts(StudyViewFilterHelper.build(studyViewFilter, null, null, studyViewFilter.getStudyIds()), List.of(genomicDataBinFilterRPPA)); - - ClinicalDataCount expectedRPPACount = new ClinicalDataCount(); - expectedRPPACount.setAttributeId("AKT1rppa"); - expectedRPPACount.setValue("NA"); - expectedRPPACount.setCount(16); - - List expectedRPPACounts2 = List.of( - expectedRPPACount - ); - assertThat(actualRPPACounts2) - .usingRecursiveComparison() - .ignoringCollectionOrder() - .isEqualTo(expectedRPPACounts2); - } -} diff --git a/src/test/java/org/cbioportal/legacy/persistence/mybatisclickhouse/SampleTreatmentCountsTest.java b/src/test/java/org/cbioportal/legacy/persistence/mybatisclickhouse/SampleTreatmentCountsTest.java deleted file mode 100644 index 8cfd8977da4..00000000000 --- a/src/test/java/org/cbioportal/legacy/persistence/mybatisclickhouse/SampleTreatmentCountsTest.java +++ /dev/null @@ -1,71 +0,0 @@ -package org.cbioportal.legacy.persistence.mybatisclickhouse; - -import org.cbioportal.legacy.model.TemporalRelation; -import org.cbioportal.legacy.persistence.helper.StudyViewFilterHelper; -import org.cbioportal.legacy.persistence.mybatisclickhouse.config.MyBatisConfig; -import org.cbioportal.legacy.web.parameter.StudyViewFilter; -import org.cbioportal.legacy.web.parameter.filter.AndedSampleTreatmentFilters; -import org.cbioportal.legacy.web.parameter.filter.OredSampleTreatmentFilters; -import org.cbioportal.legacy.web.parameter.filter.SampleTreatmentFilter; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.autoconfigure.jdbc.AutoConfigureTestDatabase; -import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest; -import org.springframework.context.annotation.Import; -import org.springframework.test.annotation.DirtiesContext; -import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.junit4.SpringRunner; - -import java.util.List; - -import static org.junit.Assert.assertEquals; - -@RunWith(SpringRunner.class) -@Import(MyBatisConfig.class) -@DataJpaTest -@DirtiesContext -@AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE) -@ContextConfiguration(initializers = AbstractTestcontainers.Initializer.class) -public class SampleTreatmentCountsTest extends AbstractTestcontainers { - - private static final String STUDY_TCGA_PUB = "study_tcga_pub"; - - @Autowired - private StudyViewMapper studyViewMapper; - - @Test - public void getSampleTreatmentCounts() { - StudyViewFilter studyViewFilter = new StudyViewFilter(); - studyViewFilter.setStudyIds(List.of(STUDY_TCGA_PUB)); - - - var totalSampleTreatmentCount = studyViewMapper.getTotalSampleTreatmentCounts(StudyViewFilterHelper.build(studyViewFilter, null, null, studyViewFilter.getStudyIds())); - - var sampleTreatmentCounts = studyViewMapper.getSampleTreatmentCounts(StudyViewFilterHelper.build(studyViewFilter, null, null, studyViewFilter.getStudyIds())); - - assertEquals(1, totalSampleTreatmentCount); - assertEquals("madeupanib", sampleTreatmentCounts.getFirst().treatment()); - assertEquals(1, sampleTreatmentCounts.getFirst().postSampleCount()); - assertEquals(0, sampleTreatmentCounts.getFirst().preSampleCount()); - - SampleTreatmentFilter filter = new SampleTreatmentFilter(); - filter.setTreatment("madeupanib"); - filter.setTime(TemporalRelation.Pre); - - OredSampleTreatmentFilters oredSampleTreatmentFilters = new OredSampleTreatmentFilters(); - oredSampleTreatmentFilters.setFilters(List.of(filter)); - - AndedSampleTreatmentFilters andedSampleTreatmentFilters = new AndedSampleTreatmentFilters(); - andedSampleTreatmentFilters.setFilters(List.of(oredSampleTreatmentFilters)); - studyViewFilter.setSampleTreatmentFilters(andedSampleTreatmentFilters); - - totalSampleTreatmentCount = studyViewMapper.getTotalSampleTreatmentCounts(StudyViewFilterHelper.build(studyViewFilter, null, null, studyViewFilter.getStudyIds())); - - sampleTreatmentCounts = studyViewMapper.getSampleTreatmentCounts(StudyViewFilterHelper.build(studyViewFilter, null, null, studyViewFilter.getStudyIds())); - - assertEquals(0, totalSampleTreatmentCount); - assertEquals(0, sampleTreatmentCounts.size()); - - } -} diff --git a/src/test/java/org/cbioportal/legacy/persistence/mybatisclickhouse/StructuralVariantGenesTest.java b/src/test/java/org/cbioportal/legacy/persistence/mybatisclickhouse/StructuralVariantGenesTest.java deleted file mode 100644 index f5abdcb578f..00000000000 --- a/src/test/java/org/cbioportal/legacy/persistence/mybatisclickhouse/StructuralVariantGenesTest.java +++ /dev/null @@ -1,56 +0,0 @@ -package org.cbioportal.legacy.persistence.mybatisclickhouse; - -import org.cbioportal.legacy.persistence.helper.AlterationFilterHelper; -import org.cbioportal.legacy.persistence.helper.StudyViewFilterHelper; -import org.cbioportal.legacy.persistence.mybatisclickhouse.config.MyBatisConfig; -import org.cbioportal.legacy.web.parameter.StudyViewFilter; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.autoconfigure.jdbc.AutoConfigureTestDatabase; -import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest; -import org.springframework.context.annotation.Import; -import org.springframework.test.annotation.DirtiesContext; -import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.junit4.SpringRunner; - -import java.util.List; -import java.util.Objects; - -import static org.junit.Assert.assertEquals; - -@RunWith(SpringRunner.class) -@Import(MyBatisConfig.class) -@DataJpaTest -@DirtiesContext -@AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE) -@ContextConfiguration(initializers = AbstractTestcontainers.Initializer.class) -public class StructuralVariantGenesTest extends AbstractTestcontainers { - - private static final String STUDY_TCGA_PUB = "study_tcga_pub"; - private static final String STUDY_ACC_TCGA = "acc_tcga"; - - @Autowired - private StudyViewMapper studyViewMapper; - - @Test - public void getStructuralVariantGenes() { - StudyViewFilter studyViewFilter = new StudyViewFilter(); - studyViewFilter.setStudyIds(List.of(STUDY_TCGA_PUB, STUDY_ACC_TCGA)); - var alterationCountByGenes = studyViewMapper.getStructuralVariantGenes(StudyViewFilterHelper.build(studyViewFilter, null, null, studyViewFilter.getStudyIds()), - AlterationFilterHelper.build(studyViewFilter.getAlterationFilter())); - assertEquals(8, alterationCountByGenes.size()); - - // Test sv count for eml4 which is in one study - var testeml4AlterationCount = alterationCountByGenes.stream().filter(a -> Objects.equals(a.getHugoGeneSymbol(), "eml4")) - .mapToInt(c -> c.getTotalCount().intValue()) - .sum(); - assertEquals(1, testeml4AlterationCount); - - // Test sv count for ncoa4 which is in both studies - var testncoa4AlterationCount = alterationCountByGenes.stream().filter(a -> Objects.equals(a.getHugoGeneSymbol(), "ncoa4")) - .mapToInt(c -> c.getTotalCount().intValue()) - .sum(); - assertEquals(3, testncoa4AlterationCount); - } -}