diff --git a/persistence/persistence-mybatis/src/main/resources/org/cbioportal/persistence/mybatiscolumnstore/StudyViewMapper.xml b/persistence/persistence-mybatis/src/main/resources/org/cbioportal/persistence/mybatiscolumnstore/StudyViewMapper.xml index 8140ffc3916..e16ee120811 100644 --- a/persistence/persistence-mybatis/src/main/resources/org/cbioportal/persistence/mybatiscolumnstore/StudyViewMapper.xml +++ b/persistence/persistence-mybatis/src/main/resources/org/cbioportal/persistence/mybatiscolumnstore/StudyViewMapper.xml @@ -126,7 +126,7 @@ #{sampleIdentifier.getStudyId()}_#{sampleIdentifier.getSampleId()} - + INTERSECT SELECT sample_unique_id FROM genomic_event @@ -137,12 +137,13 @@ #{molecularProfileId} - AND hugo_gene_symbol IN - - + AND hugo_gene_symbol IN ( + + #{geneFilterQuery.hugoGeneSymbol} + ) diff --git a/persistence/persistence-mybatis/src/test/java/org/cbioportal/persistence/mybatiscolumnstore/StudyViewMyBatisRepositoryTest.java b/persistence/persistence-mybatis/src/test/java/org/cbioportal/persistence/mybatiscolumnstore/StudyViewMyBatisRepositoryTest.java index cfa82a84a4a..fe72ed27380 100644 --- a/persistence/persistence-mybatis/src/test/java/org/cbioportal/persistence/mybatiscolumnstore/StudyViewMyBatisRepositoryTest.java +++ b/persistence/persistence-mybatis/src/test/java/org/cbioportal/persistence/mybatiscolumnstore/StudyViewMyBatisRepositoryTest.java @@ -3,12 +3,10 @@ import org.cbioportal.model.AlterationCountByGene; import org.cbioportal.model.ClinicalDataCount; import org.cbioportal.model.Sample; +import org.cbioportal.model.util.Select; import org.cbioportal.persistence.enums.ClinicalAttributeDataSource; import org.cbioportal.persistence.enums.ClinicalAttributeDataType; -import org.cbioportal.webparam.CategorizedClinicalDataCountFilter; -import org.cbioportal.webparam.ClinicalDataFilter; -import org.cbioportal.webparam.DataFilterValue; -import org.cbioportal.webparam.StudyViewFilter; +import org.cbioportal.webparam.*; import org.junit.Assert; import org.junit.Ignore; import org.junit.Test; @@ -19,13 +17,12 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import java.math.BigDecimal; +import java.util.*; import java.util.Arrays; import java.util.Collections; import java.util.Comparator; import java.util.function.Function; import java.util.stream.Collectors; -import java.util.ArrayList; -import java.util.List; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration("/testContextDatabaseClickhouse.xml") @@ -63,6 +60,24 @@ public void getMutatedGenes() { Assert.assertEquals(2, mutations.size()); } + @Test + public void getMutatedGenesFiltered() { + StudyViewFilter studyViewFilter = generateStudyViewFilter(new String[]{"msk_impact_2017"}, null); + + List studyViewGeneFilters = new ArrayList<>(); + StudyViewGeneFilter mutationStudyViewGeneFilter = new StudyViewGeneFilter(); + mutationStudyViewGeneFilter.setMolecularProfileIds(new HashSet<>(Arrays.asList("msk_impact_2017_mutations"))); + + mutationStudyViewGeneFilter.setGeneQueries(getFilters.apply("moo")); + + studyViewGeneFilters.add(mutationStudyViewGeneFilter); + + studyViewFilter.setGeneFilters(studyViewGeneFilters); + + List mutations = studyViewMyBatisRepository.getMutatedGenes(studyViewFilter, CategorizedClinicalDataCountFilter.getBuilder().build()); + Assert.assertEquals(414, mutations.size()); + } + private StudyViewFilter generateStudyViewFilter( String[] studyIds, List clinicalDataFilters @@ -98,6 +113,38 @@ private ClinicalDataFilter generateClinicalDataFilter(String attributeId, String return dataFilterValue; }; + private final Function>> getFilters = v -> { + + boolean includeDriver = true; + boolean includeVUS = true; + boolean includeUnknownOncogenicity = true; + boolean includeGermline = true; + boolean includeSomatic = true; + boolean includeUnknownStatus = true; + Select selectedTiers = Select.none(); + boolean includeUnknownTier = true; + + GeneFilterQuery geneFilterQuery1 = new GeneFilterQuery("SMARCD1", null, + null, includeDriver, includeVUS, includeUnknownOncogenicity, selectedTiers, includeUnknownTier, + includeGermline, includeSomatic, includeUnknownStatus); + + GeneFilterQuery geneFilterQuery2 = new GeneFilterQuery("TP53", null, + null, includeDriver, includeVUS, includeUnknownOncogenicity, selectedTiers, includeUnknownTier, + includeGermline, includeSomatic, includeUnknownStatus); + + List> q1 = new ArrayList<>(); + List q2 = new ArrayList<>(); + List q3 = new ArrayList<>(); + + q2.add(geneFilterQuery1); + q3.add(geneFilterQuery2); + q1.add(q2); + q1.add(q3); + return q1; + + }; + + private final Function mapNumericalValues = v -> { DataFilterValue dataFilterValue = new DataFilterValue();